J'ai livré la version 1.0 de mon logiciel avec un installateur généré par WiX, et maintenant je veux livrer/diffuser la version 1.1. Si possible, je voudrais éviter la situation de dire aux gens d'enlever 1.0 manuellement d'abord avant d'installer 1.1.Puis-je utiliser WiX pour créer un MSI dont le seul but est de désinstaller le logiciel?
Cependant, j'ai dû modifier le InstallScope
, en le changeant de perUser
en perMachine
pour diverses raisons techniques. Pas une grosse affaire, sauf que cela rend la mise à niveau d'un tracas. Ce que je vois se produire est la même chose que this post mentionne, dans lequel même si vous avez fait tous les proper work pour implémenter une mise à niveau, quand c'est fait, vous voyez deux entrées différentes sur la liste des programmes installés, l'un est 1,0 et l'autre est 1,1. Et cela provoque des problèmes dans le logiciel. Donc, il semblerait que la logique de base "supprimer la version précédente" ne fonctionne pas ici, donc j'ai besoin d'une autre méthode de désinstallation de la version précédente. J'ai essayé de descendre la commande msiexec /x
pour supprimer la version précédente via un ShellExecute CustomAction
, mais à moins que je ne manque quelque chose, il n'y a pas de place dans la séquence où cela fonctionnerait parce que vous déclenchez une commande msiexec
dans le au milieu d'un autre courant.
Puis je suis tombé sur this page qui détaille une méthode peu documenté de « enchaînant » l'ensemble de MSI:
setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe
sonne bien - tout ce que je besoin est maintenant une MSI dont la seule fonction est de supprimer la version 1.0 et Je peux enchaîner cela avec l'ancien. Sauf que je ne trouve pas beaucoup de documentation sur la façon dont vous pourriez faire cela. En fait, puisque cela pourrait théoriquement être utilisé pour supprimer des logiciels que vous n'avez pas installés à l'origine, je ne suis pas sûr que cela soit techniquement possible pour des raisons de sécurité.
Est-ce que quelqu'un sait comment créer un MSI en utilisant WiX dont le seul but est de désinstaller le logiciel? Ou est-ce que j'attaque complètement ce problème?
Bien que ce soit habituellement un bon conseil, la modification dans InstallScope empêche la désinstallation de la version précédente des entrées de la table de mise à niveau, comme indiqué au début de la question de Schnapple. –
Je ne sais pas pourquoi j'ai raté cette partie de la question. Doh! – DarrellNorton
Quelque chose que j'ai oublié de mentionner est que le logiciel impliqué dans mon message n'est pas lié à .NET (ie, il n'utilise pas ou n'a pas besoin de .NET), donc je ne peux pas exiger que .NET soit une condition préalable pour exécuter le programme d'installation (une incarnation antérieure à 1.0 de ce logiciel avait besoin .NET et boy howdy avons-nous découvert combien d'utilisateurs de XP ne l'avaient pas installé). En un coup d'œil je ne peux pas dire - le projet DotNetBootstrapper mentionné dans votre question liée nécessite .NET pour exécuter le programme d'installation? Ou juste. NET pour exécuter l'interface graphique pour le concevoir? –