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
Vous devez vous connecter pour publier un commentaire.
Annexe
RemoveExistingProducts
action avantInstallInitialize
action:OriginalL'auteur Alexey Ivanov
Réponse à partir d'EdT sur Symantec forums
Si vous avez utilisé la norme Sage de modèle pour votre installe, puis la RemoveExistingProducts action est séquencé à la fin de la InstallExecute séquence. Bien que, techniquement, c'est la plus "efficace" de placement, sauf si vous avez très soigneusement exécuter UpgradeSync lors de la création de votre nouveau paquet de mise à niveau de l'ancienne, le résultat final est généralement l'un des fichiers manquants ou d'autres aberrations.
La solution est de ré-requence la RemoveExistingProducts action de sorte qu'il s'exécute entre InstallValidate et InstallInitialize. Qui assure que l'ancienne application est entièrement supprimés avant que la nouvelle version est installée.
Rechercher "RemoveExistingProducts" dans le fichier d'aide de MSI.CHM pour une explication plus détaillée des options pour le positionnement de cette action.
OriginalL'auteur Rory