Question

J'ai livré la version 1.0 de mon logiciel avec un installateur généré WiX, et maintenant je veux livrer / version 1.1 disseminate. Si possible, je voudrais éviter la situation de dire aux gens de retirer manuellement 1.0 avant d'installer la première 1.1.

Cependant, j'ai dû modifier le InstallScope, changer de perUser à perMachine pour diverses raisons techniques. Pas un gros problème, sauf qu'il fait la mise à niveau d'un tracas.

Ce que je vois arriver est la même chose que travail approprié pour mettre en œuvre une mise à niveau, quand il est fait, vous voyez deux entrées différentes sur la liste des programmes installés, l'un est de 1,0 et l'autre 1.1. Et cela est à l'origine des problèmes dans le logiciel.

Il semblerait que la base « supprimer la version précédente » logique ne, donc je ne travaille pas nécessairement ici une autre méthode d'avoir la version précédente désinstallée. J'ai essayé d'aller sur le chemin de tir hors de la commande msiexec /x appropriée supprimer la version précédente par un ShellExecute CustomAction, mais à moins que je manque quelque chose il n'y a pas de place dans la séquence où cela fonctionnerait parce que vous êtes mise à feu hors une commande msiexec dans la milieu d'une autre course.

Alors je suis tombé sur cette page qui détaille une méthode documentée peu de "enchaînant" l'ensemble de MSI:

setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe

Ça a l'air grand - tout ce que je besoin est maintenant une MSI dont la seule fonction est de supprimer la version 1.0 et je peux chaîne qui, avec l'ancien.

Sauf que je ne suis pas trouver sur un grand nombre de documents que vous pouvez faire. En fait, étant donné que cela pourrait en théorie être potentiellement utilisée pour supprimer le logiciel que vous avez installé pas à l'origine, je ne suis pas sûr que cela est techniquement possible, même pour des raisons de sécurité.

Quelqu'un sait comment créer un MSI à l'aide WiX dont le seul but est de désinstaller le logiciel? Ou suis-je attaquais ce problème tout à fait tort?

Était-ce utile?

La solution

Utilisez cette Wix pour désinstaller la version précédente dans le cadre de votre version 1.1. Je ne sais pas pourquoi vous avez besoin d'enchaîner le MSIs ensemble.

Comment mettre en œuvre la mise à niveau de l'installateur WiX?

EDIT: J'ai raté le changement de condition InstallScope. Alors qu'est-ce qui est vraiment nécessaire est un programme d'amorçage.

J'affiché comment créer un BootStrapper ici: J'ai besoin d'un projet qui installe WIX Bootstrapper mon logiciel et pré-requis

Autres conseils

Une solution est d'utiliser une action personnalisée qui exécute la commande « msiexec.exe / x ». Assurez-vous qu'il est prévu après InstallFinalize InstallExecuteSequence. En outre, il est retour devrait être asyncNoWait (exécution asynchrone, ne pas attendre le retour).

Avec ces paramètres la désinstallation utilise un autre processus asynchrone, ce qui évite le conflit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top