2010-08-04 8 views
2

J'utilise le bouclier d'installation pour mettre à jour l'application.Installer le bouclier ne peut pas remplacer le fichier verrouillé

J'ai un serveur ws2003, plusieurs utilisateurs peuvent accéder en même temps. Lorsque d'autres utilisateurs exécutent mon application, je peux exécuter le processus de mise à niveau, installer le bouclier reconnaître que les fichiers sont verrouillés et créer une version temporaire de nouveaux fichiers (app.configs, générés automatiquement lors de l'installation) dans le répertoire de l'application. Il devrait remplacer ces fichiers après le redémarrage de l'ordinateur, mais lorsque je réexécute l'ordinateur, les fichiers temporaires disparaissent et la nouvelle version des fichiers est vide, ce qui fait que mon application tombe en panne.

Il est étrange car il y a quelque temps j'ai essayé ce mécanisme dans d'autres applications mais là j'ai remplacé le fichier simple dll et cela a fonctionné. Que puis-je faire pour résoudre ce problème?

Répondre

1

Une solution très simple consiste à utiliser deux exécutables (ou un fichier batch et un exécutable). Le premier exe/batch recherche les nouvelles versions des fichiers et les renomme, puis démarre le véritable exe.

+0

Merci pour votre réponse, mais j'ai une question. Quel est exactement le processus suggéré: Je comprends que je devrais utiliser deux exécutables lors de la mise à niveau, mais que devrait faire exactement la première version? – Darqer

+0

Le premier exe remplace les fichiers qui sont verrouillés par le second exe. Vous pouvez donc les télécharger dans le second exe, recommencer le premier et quitter. Il va remplacer les fichiers (maintenant déverrouillés) et démarrer le second exe. Notez que le second exe peut mettre à jour le premier exe car il n'est plus utilisé lorsque vous démarrez une mise à jour. Si vous utilisez un fichier BAT, utilisez 'start' pour exécuter le second exe en arrière-plan. –

Questions connexes