2008-09-09 13 views

Respuesta

6

Personalmente, construyo mi propio mecanismo para iniciar el proceso de auto actualización cuando la marca de tiempo de mi aplicación no está sincronizada con el servidor. No es muy difícil, pero no es una tarea simple.

Por cierto, para Delphi puede utilizar un poco de ayuda thirdparty:

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

ACTUALIZADO:

Por mi aplicación:

MyApp.EXE se ejecutará en 3 modos diferentes

  1. MyApp.EXE sin cualquier argumento Esto iniciará la aplicación típicamente.

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

    1.2 Si se requiere la actualización a continuación, se descargará el archivo actualizado en el archivo llamado "MiApl-AAAA-MM-DD-HH-MM-SS.EXE"

    1.3 A continuación se invocan "MiApl-AAAA MM-DD-HH-MM-SS.exe "con comando argumento

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

    1.4 Finalice esta aplicación.

    1.5 Si no hay una actualización requiere entonces la aplicación se iniciará normalmente de 1,1

  2. MyApp.EXE "Nombre de archivo" --update.

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

    2.2 Invoque "FILENAME" cuando sea exitoso

    2.3 Invoque "FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe" para eliminarlo.

    2.4 Terminar

  3. MyApp.EXE --delete "Nombre de archivo"

    3.1 Prueba a borrar el archivo "FILENAME" cada 500ms hasta el éxito.

    3.2 Terminar

ya he estado usando este esquema para mi aplicación durante 7 años y funciona bien. Puede ser bastante doloroso depurar cuando las cosas van mal ya que los pasos implican muchos procesos. Sugiero que haga un montón de registro de rastreo para permitir una solución de problemas más simple.

buena suerte

+0

Eso es exactamente lo que terminé haciendo. – Branko

+0

No me molestará un voto a favor entonces;) – Sake

3

No, el punto de entrada a su aplicación necesita ser gestionado código .

Esto es de blog post por Brian Noyes, una de las principales autoridades de ClickOnce y autor de Smart Client Deployment with ClickOnce.

Si la aplicación es realmente herencia (es decir, VB6, MFC, ATL, etc.), como en un archivo ejecutable código no administrado, entonces no, no se puede implementar como un ejecutable a través de ClickOnce.

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

Cuestiones relacionadas