Pregunta

¿Es posible implementar una aplicación Delphi nativa con ClickOnce sin un stub C# exe que se usaría para iniciar la aplicación Delphi?

La misma pregunta se aplica a VB6, C++ y otras aplicaciones nativas de Windows.

¿Fue útil?

Solución

Personalmente, creo mi propio mecanismo para iniciar el proceso de actualización automática cuando la marca de tiempo de mi aplicación no está sincronizada con el servidor.No es demasiado difícil, pero no es una tarea sencilla.

Por cierto, para Delphi puedes utilizar ayuda de terceros:

http://www.tmssoftware.com/site/wupdate.asp

ACTUALIZADO:

Para mi implementación:

MyApp.EXE se ejecutará en 3 modos diferentes

  1. MyApp.EXE sin ningún argumento.Esto iniciará la aplicación normalmente.

    1.1 Lo primero que hace es validar su propio tiempo de archivo con el servidor.

    1.2 Si se requiere una actualización, descargará el archivo actualizado al archivo llamado "MyApp-AAAA-MM-DD-HH-MM-SS.exe"

    1.3 Luego invoca "MyApp-YYYY-MM-DD-HH-MM-SS.exe" con el argumento del comando

    MyApp-YYYY-MM-DD-HH-MM-SS.exe  --update MyApp.EXE
    

    1.4 Terminar esta aplicación.

    1.5 Si no se requiere ninguna actualización, la aplicación se iniciará normalmente desde 1.1

  2. MyApp.EXE: actualiza "NOMBRE DE ARCHIVO".

    2.1 Intente copiarse en "NOMBRE DE ARCHIVO" cada 100 ms hasta que tenga éxito.

    2.2 Invocar "NOMBRE DE ARCHIVO" cuando tenga éxito

    2.3 Invoque "FILNAME --delete MyApp-AAAA-MM-DD-HH-MM-SS.exe" para eliminarse.

    2.4 Terminar

  3. MyApp.EXE: eliminar "NOMBRE DE ARCHIVO"

    3.1 Intente eliminar el archivo "NOMBRE DE ARCHIVO" cada 500 ms hasta que tenga éxito.

    3.2 Terminar

Ya he estado usando este esquema para mi aplicación durante 7 años y funciona bien.Puede resultar bastante complicado depurar cuando algo sale mal, ya que los pasos implican muchos procesos.Le sugiero que realice muchos registros de seguimiento para permitir una solución de problemas más sencilla.

Buena suerte

Otros consejos

No, el punto de entrada a su aplicación debe ser un código administrado.

Esto es de un entrada en el blog por Brian Noyes, una de las principales autoridades en ClickOnce y autor de Implementación de cliente inteligente con ClickOnce.

Si su aplicación es REALMENTE heredada (es decir,VB6, MFC, ATL, etc.), como en un ejecutable de código no administrado, entonces no, no puede implementarlo como ejecutable a través de ClickOnce.

La solución aceptada parece ser un archivo ejecutable de código administrado que inicia el archivo ejecutable principal.

No estoy 100% seguro de si esto se puede lograr sin el código auxiliar, pero este artículo puede proporcionar alguna idea:

Cómo:Implementación de ClickOnce para una aplicación no administrada con componente COM en un ensamblado administrado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top