2009-08-28 15 views
0

J'utilise Inno Setup pour installer/désinstaller mon produit. Mon logiciel a des capacités de mise à jour automatique au cours desquelles il peut non seulement changer les binaires existants, mais aussi en ajouter de nouveaux. Ce sont des fichiers de produits supplémentaires qui sont placés dans le répertoire d'installation du produit - et non des fichiers de données.Désinstallation de fichiers non installés à l'origine par le programme de configuration INNO

Le programme de désinstallation d'Inno Setup ne sait que désinstaller les fichiers par leur nom d'origine lors de l'installation. Étant donné qu'une mise à jour automatique ne modifie pas les fichiers unins000.exe ou unins000.dat qui constituent le programme de désinstallation, quel serait le moyen approprié pour supprimer ces nouveaux fichiers au moment de la désinstallation?

Répondre

2

La meilleure façon que je vois est d'avoir un fichier batch dans votre programme dir qui supprime tous les fichiers qui ont été ajoutés après l'installation et est exécuté lors de la désinstallation:

[UninstallRun] 
Filename: cleanup.cmd; WorkingDir: {app}; Flags: shellexec runminimized 

UninstallRun commandes sont exécutées comme première étape de la désinstallation, donc cela devrait fonctionner correctement. Si vous êtes dérangé par l'idée d'exécuter un script batch, vous pouvez facilement créer votre propre fichier cleanup.exe qui supprime les fichiers.

Lorsque vous effectuez la mise à jour automatique, vous devez également mettre à jour le fichier de nettoyage afin qu'il inclue tous les fichiers ajoutés avec la mise à jour en cours.

+1

Je suis allé avec une solution similaire. J'ai une DLL personnalisée les appels de désinstallation et l'exportation de. Je peux modifier le contenu de cette DLL exportée comme temps de mise à jour tout en maintenant le prototype. Le code supprime tous les fichiers ajoutés par la mise à jour. – Charles