J'ai un produit principal qui est installé à l'aide Wix et a sa propre UpgradeCodeFaire Wix désinstaller un vieux plug-in lorsque vous effectuez une mise à niveau
Entre les deux versions du produit principal, nous libérons parfois des plug-ins qui ajoutent ou corrigez certaines fonctionnalités. Les plug-ins sont empaquetés dans leurs propres fichiers .msi générés par Wix avec leur propre UpgradeCodes et généralement installer des fichiers supplémentaires est un dossier distinct du produit principal.
Je souhaite créer une nouvelle version du produit principal qui inclut la fonctionnalité précédemment disponible dans un plug-in. Un utilisateur effectuant une mise à niveau vers la nouvelle version n'aura plus besoin du plug-in, il serait donc utile de le désinstaller dans le cadre de la mise à niveau.
Existe-t-il un moyen de désinstaller Wix d'un produit avec UpgradeCode2 lors de la mise à niveau du produit avec UpgradeCode1?
Mise à jour === après la réponse de Bob ===
J'ai essayé plusieurs éléments de mise à niveau et le code Wix compile ok, mais le programme d'installation ne fonctionne pas
Lorsque je double cliquez sur le .msi je reçois immédiatement une Selon la boîte de dialogue d'erreur "Erreur inattendue ... Le code d'erreur est 2711"
Selon la page Messages d'erreur de Windows Installer de Microsoft, l'erreur 2711 signifie "Le nom de fonction spécifié ('[2]') introuvable dans le tableau des fonctions." L'afficheur d'événements répertorie une erreur pour MsiInstaller: "Le programme d'installation a rencontré une erreur inattendue lors de l'installation de ce package, ce qui peut indiquer un problème avec ce package Le code d'erreur est 2711. Les arguments sont: {6BEC2276-3211- 4E5F-9EF0-2E64B92DE3F4},, "
Le guid est le ProductCode correct pour le produit que je veux désinstaller. Msiexec/uninstall {6BEC2276-3211-4E5F-9EF0-2E64B92DE3F4} effectue la désinstallation avec succès.
Je suppose que l'espace entre les deux virgules après le guid est le "Nom de l'entité ('[2]')" qui n'a pas pu être trouvé. J'ai essayé de mettre cela manuellement en ajoutant l'attribut RemoveFeatures = "PlugInFeatureId" à l'élément mais toujours obtenir le même résultat.
Il me manque quelque chose pour que le programme d'installation construise la liste des fonctionnalités qu'il doit supprimer?
...
<!--Upgrade the main application-->
<Upgrade Id='$(var.UpgradeCode)'>
<UpgradeVersion OnlyDetect='no' Property='PATCHFOUND'
IncludeMinimum='yes' Minimum='1.0.1' Maximum='$(var.BuildVersion)' IncludeMaximum='no'/>
</Upgrade>
<!--Remove the old plugin-->
<Upgrade Id='$(var.PluginUpgradeCode)'>
<UpgradeVersion OnlyDetect='no' Property='REMOVE' IncludeMinimum='yes' Minimum='1.0.0' Maximum='15.0.0' IncludeMaximum='yes'/>
</Upgrade>
<UIRef Id="WixUI_ErrorProgressText" />
<InstallExecuteSequence>
<FindRelatedProducts Before="LaunchConditions" />
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>
Merci Bob, j'ai essayé cela et ai toujours eu des problèmes, j'ai mis à jour ma question originale avec plus de détails – IanM
Créer un journal détaillé tout en exécutant la mise à niveau et vous serez capable de voir ce qui se passe quand RemoveExistingProducts est appelé. –
Pensez que j'ai trouvé le problème, il utilisait Property = 'REMOVE'. Si je change ceci en propriété = 'ANYTHINGBUTREMOVE "alors cela fonctionne comme prévu Merci pour votre aide Ian – IanM