Comment faire pour désinstaller la version précédente dans le cadre de msi installer?

J'ai un produit qui est emballé comme un MSI. Lorsque mes clients d'installer une nouvelle version de mon produit sur le sommet d'une version existante, il ne fonctionne pas bien à cause d'une coutume VBS action, comme expliqué ci-dessous. Ma question est: comment je peux changer mon MSI ainsi que l'installation sur le dessus sera toujours de faire une désinstallation complète de la version existante à l'avance?

Le détail est:

J'ai un produit avec une variété de versions déployées à différentes entreprises. Environ une fois par an, chacun de mes clients de recevoir une nouvelle version de mon produit et de déployer de leurs postes de travail. Les personnes responsables de déploiement préfère qu'ils peuvent installer la nouvelle version par dessus l'ancienne version, au lieu d'avoir à inclure une désinstallation étape dans leur package d'installation.

La msi installer crée et écrit des fichiers [CommonApplicationData]\Monappli dossier. Au cours de l'exécution de l'application qui crée le plus de fichiers [CommonApplicationData]\Monappli dossier. Lors de la désinstallation j'ai besoin de supprimer tous ces fichiers. Depuis qu'ils ne sont pas installés par le msi, ils ne sont pas automatiquement désinstallé, j'ai donc créé un script vbs qui supprime ce dossier et rien d'autre. J'ai mis une commande à exécuter que vbs dans ExecuteDeferred:

...
RemoveFiles
RemoveFolders
CreateFolders
MoveFiles
InstallFiles
PatchFiles
If REMOVE="ALL" Then
    REM line below is my custom script
    call VBScript From Installation (MyApp_UninstallCleanup)  
End
DuplicateFiles
BindImage
CreateShortcuts
...

C'est très bien et il fonctionne très bien lors de l'installation de & désinstallation. Cependant, si j'installe une nouvelle version de mon produit sur le sommet d'une version existante, il semble en passe des choses dans cet ordre:
a) installer la nouvelle version, la création de divers fichiers [CommonApplicationData]\Monappli dossier, et dans [Program Files]\Monappli..., d'écraser les fichiers de l'ancienne version
b) exécuter mon vbs, la suppression de la [CommonApplicationData]\Monappli dossier

J'ai le Guid pour les anciennes versions énumérées dans la table de Mise à niveau dans mon nouveau MSI, et en dehors de ce script personnalisé le processus de mise à niveau semble fonctionner ok.

Le produit lui-même est assez petit, donc il serait bien si le programme d'installation de supprimer les versions précédentes entièrement avant d'installer la nouvelle version. Il n'existe pas de paramètres de l'utilisateur sur le poste de travail qui doivent être conservés et les tailles de fichier ne sont pas grandes. Donc pour des raisons de simplicité, je veux les versions précédentes d'être désinstallé plutôt que mis à jour avec seulement les bits qui ont changé.

Est-il une manière que je peux changer mon nouveau MSI de sorte qu'il va désinstaller les versions précédentes?

Notamment, j'ai beaucoup de compagnies qui ont la version existante de la MSI installé qui contient la coutume vbs. Donc, la solution doit vraiment être celui qui peut faire face à l'installation de msi.

J'ai utilisé Sage d'Installation d'Express 7.0 pour créer le fichier MSI.

merci!!

(cross-posté ici)

OriginalL'auteur Rory | 2012-07-04