Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Dlls necessárias / ficheiros

Mensagens Recomendadas

bioshock

Para uma actualização da aplicação, sem ter que desinstalar a aplicação actual e voltar a instala-la, gostaria de saber quais são os ficheiros que são necessários de uma aplicação para fazer um replace?

Por exemplo, se um novo form é actualizado, quais os ficheiros para actualizar esse form?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Todo o executável ou dependência (caso o executável as carregue @runtime).

Terás de acrescentar as dependências novas, se tiveres entretanto adicionado algumas.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

O que é para ti "Todo o executável" ?

Estou a criar uma aplicação, em que estou a debate-la aqui: http://www.portugal-a-programar.pt/index.php?showtopic=34887, para fazer automaticamente as actualizações da aplicação.

Após aqui uns testes no meu PC, criei alguns processos que funcionam perfeitamente e criei o executável da aplicação (com o INNOSETUP), adicionei-lhe a dll necessária, testei e funcionou tudo perfeitamente.

Agora, experimentei correr aqui num portátil ao lado, a aplicação corre perfeitamente, mas ele dá erro quando tento fazer download de um ficheiro do FTP para o PC. Bem, os dados de authenticação vão no código..

Eu apenas utilizo para authenticação

ftp.Hostname = "ftp"
ftp.Username = "user"
ftp.Password = "pass"

Mas secalhar tem alguma coisa haver com o AUTH SSL, não?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Pode ser "n" coisas.

Para começar, que erro é devolvido?

Quando digo "Todo o executável" refiro-me ao ficheiro .EXE


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Pois, foi o que eu sempre pus.

Eu quer-me parecer que a DLL não é instalada no PC do cliente. Digo isto, pois é única lógica que chego. Entrei no FTP pelo PC do cliente e funciona tudo bem, mas na aplicação não funciona.

E o erro que dá é: "Failed to create key in registry"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Que raio de DLL estás a usar para uploads e downloads, tão bera que precise de ter chaves no registo?

A .NET tem métodos nativos para download e upload de ficheiros.

Alternativamente, se o host environment for WinVista/7, tenta correr com direitos de administrador.

O erro descreve nitidamente uma tentativa de escrita no registo falhada, que pode ou não ter sido despoletada por a tal DLL.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Acreditas que o problema estava mesmo nos direitos de administrador? Nem me tinha lembrado disso.

Mas não existe forma de contornar isto? Se a aplicação rodar em 100 pc's em cada um tenho que ir lá e executar como administrador?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Primeiro despista o problema.

Se com admin correr, vais ter de descobrir onde e porque razão se está a tentar escrever no registo.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Bem, eu estou a usar a biblioteca chilkat..

Creio que existem métodos para resolver este problema, assim por alto apanhei este exemplo na net:

Dim securePass As New Security.SecureString()
Dim pass As String = "password"

For Each c As Char In pass
        securePass.AppendChar(c)
Next

' If there isn't a domain, set the argument to 'Nothing', as demonstrated below.
Process.Start("testsoftware\WinKBSel\WinKBSel1003.exe", "username", pass, Nothing)

Tenho que experimentar.

Outro ponto: Em relação ao que tu disseste:

Todo o executável ou dependência (caso o executável as carregue @runtime).

Terás de acrescentar as dependências novas, se tiveres entretanto adicionado algumas.

Vamos supor que existe uma alteração no FormClientes (por exemplo). Para actualizar o FormClientes, eu vou ter que uppar para o FTP o executável, correcto?

Porque se eu for à pasta onde está instalada a aplicação, os ficheiros que apenas aparecem são: O desinstalador, as dll's e o executável.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Sim. Os forms estão "contidos no ficheiro EXE".

Não tenho experiência com a biblioteca, não te posso ser grande ajuda.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Eu fiz aqui uma experiência rápida e pareceu-me funcionar bem!

Mas vou para casa e vou dar uma olhadela nisto mais pormenorizado e logo digo algo.

A biblioteca é muito porreira, simplifica os comandos.

Obrigado pela ajuda ribeiro :thumbsup:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.