É possível implantar uma aplicação Delphi nativa com ClickOnce
-
09-06-2019 - |
Pergunta
É possível implantar um aplicativo Delphi nativo com ClickOnce sem um exe stub C# que seria usado para iniciar o aplicativo Delphi?
A mesma pergunta se aplica ao VB6, C++ e outros aplicativos nativos do Windows.
Solução
Pessoalmente, construo meu próprio mecanismo para iniciar o processo de autoatualização quando o carimbo de data/hora do meu aplicativo está fora de sincronia com o servidor.Não é muito difícil, mas não é uma tarefa simples.
A propósito, para Delphi você pode usar a ajuda de terceiros:
http://www.tmssoftware.com/site/wupdate.asp
ATUALIZADA:
Para minha implementação:
MyApp.EXE será executado em 3 modos diferentes
MyApp.EXE sem qualquer argumento.Isso iniciará o aplicativo normalmente.
1.1 A primeira coisa que ele faz é validar seu próprio horário de arquivo com o servidor.
1.2 Se a atualização for necessária, ele fará o download do arquivo atualizado para o arquivo chamado "MyApp-YYYY-MM-DD-HH-MM-SS.exe"
1.3 Em seguida, invoque "MyApp-YYYY-MM-DD-HH-MM-SS.exe" com argumento de comando
MyApp-YYYY-MM-DD-HH-MM-SS.exe --update MyApp.EXE
1.4 Encerre este aplicativo.
1.5 Se não houver necessidade de atualização, o aplicativo iniciará normalmente a partir de 1.1
MyApp.EXE --update "NOME DO ARQUIVO".
2.1 Tente copiar-se para "FILENAME" a cada 100 ms até obter sucesso.
2.2 Invoque "FILENAME" quando tiver sucesso
2.3 Invoque "FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe" para se excluir.
2.4 Rescisão
MyApp.EXE --delete "NOME DO ARQUIVO"
3.1 Tente deletar o arquivo "FILENAME" a cada 500ms até obter sucesso.
3.2 Rescisão
Já uso esse esquema para minha aplicação há 7 anos e funciona bem.Pode ser muito doloroso depurar quando algo dá errado, pois as etapas envolvem muitos processos.Eu sugiro que você faça muitos registros de rastreamento para permitir uma solução de problemas mais simples.
Boa sorte
Outras dicas
Não, o ponto de entrada do seu aplicativo precisa ser um código gerenciado.
Isto é de um postagem no blog por Brian Noyes, uma das principais autoridades em ClickOnce e autor de Implantação de cliente inteligente com ClickOnce.
Se seu aplicativo for REALMENTE legado (ou seja,VB6, MFC, ATL, etc.), como em um código executável não gerenciado, então não, você não pode implantá-lo como um executável por meio do ClickOnce.
A solução alternativa aceita parece ser um exe stub de código gerenciado que inicia o exe principal.
Não tenho 100% de certeza se isso pode ser feito sem o esboço, mas este artigo pode fornecer algumas dicas:
Como:Implantação ClickOnce para aplicativo não gerenciado com componente COM em assembly gerenciado