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.

Foi útil?

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

  1. 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

  2. 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

  3. 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top