2008-09-09 22 views

Répondre

6

Personnellement, je construis mon propre mécanisme pour démarrer le processus de mise à jour automatique lorsque l'horodatage de l'application n'est pas synchronisé avec le serveur. Pas trop difficile, mais ce n'est pas une tâche simple.

Par ailleurs, pour Delphi, vous pouvez utiliser l'aide thirdparty:

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

MISE À JOUR:

Pour ma mise en œuvre:

MyApp.exe se déroulera dans 3 modes différents

  1. MyApp.EXE sans aucun argument. Cela va démarrer l'application généralement.

    1.1 La première chose à faire est de valider son propre fichier avec le serveur.

    1.2 Si la mise à jour est nécessaire, il va télécharger le fichier mis à jour le fichier nommé "MyApp-AAAA-MM-JJ-HH-MM-SS.exe"

    1.3 Ensuite, il invoque « MyApp-AAAA MM-DD-HH-MM-SS.exe "avec l'argument de commande

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

    1.4 Terminez cette application.

    1.5 S'il n'y a pas mise à jour nécessaire, alors l'application démarrera normalement de 1,1

  2. MyApp.exe --update "FILENAME".

    2.1 Essayez de vous copier dans "FILENAME" toutes les 100ms jusqu'à la réussite.

    2.2 Appelez "FILENAME" en cas de succès

    2.3 Appelez "FILNAME - supprimez MyApp-YYYY-MM-DD-HH-MM-SS.exe" pour le supprimer.

    2.4 Terminate

  3. MyApp.exe --delete "FILENAME"

    3.1 Essayez de supprimer le fichier "FILENAME" toutes les 500ms jusqu'à succès.

    3.2 Terminate

Je l'ai déjà utilisé ce système pour ma demande de 7 ans et il fonctionne bien. Il peut être assez pénible de déboguer lorsque les choses tournent mal puisque les étapes impliquent de nombreux processus. Je vous suggère de faire beaucoup d'enregistrement de trace pour permettre un dépannage plus simple.

Bonne chance

+0

C'est exactement ce que j'ai fini par faire. – Branko

+0

Je ne vais pas déranger certains upvote alors;) – Sake

3

Non, le point d'entrée à votre application doit être le code managé .

Ceci provient d'un blog post de Brian Noyes, l'un des principaux auteurs sur ClickOnce et auteur de Smart Client Deployment with ClickOnce.

Si vous est vraiment héritage application (à savoir VB6, MFC, ATL, etc.), comme dans un fichier exécutable de code non managé, alors non, vous ne pouvez pas déployer comme un exécutable par ClickOnce.

La solution de contournement acceptée semble être un stub exe de code managé qui lance l'exe principal.