Scénario:Mise à niveau de l'installation VS MSI MSI à Wix être traités comme désinstaller
Nous avons utilisé VS 2010 projet d'installation jusqu'à présent. Migration de nouvelles générations vers Wix.
Problème:
Msiexec
est le traitement de la mise à niveau comme non installer + frais installer au lieu de simplement mettre à jour.
Détails:
- J'ai utilisé la même
UpgradeCode
Guid pour la nouvelle configuration WIX - J'ai ajouté
MajorUpgrade
tag au besoin - J'ai aussi essayé d'utiliser
Upgrade
etUpgradeVersion
place deMajorUpgrade
- Le numéro de version est mis à jour
- J'ai restructuré WXS pour voir si elle est le problème et ce n'est pas
Remarque - système reconnaît correctement à la fois comme produit et même lors de l'installation supprime automatiquement l'ancienne.
Le problème est que l'ancien produit est en cours de désinstallation plutôt que de mise à niveau. J'ai une action personnalisée définie pour s'exécuter pendant la désinstallation, ce qui va supprimer les données utilisateur. Maintenant, le problème est, cette action personnalisée est déclenchée pendant la mise à niveau pour une raison quelconque.
Ce problème ne se produit pas si c'est 2010 to 2010
ou Wix to Wix
, seulement si elle est 2010 to Wix
.
Scénarios
- 1,0 (construit en utilisant 2010) -> 1.1 (construit en utilisant 2010) - Aucune action personnalisée déclenchée
- 1.0 (construit en utilisant 2010) -> 1.1 (construit en utilisant Wix) - Désinstaller action personnalisée
- 1,1 (construit en utilisant Wix) -> 1.2 (construit en utilisant Wix) - Aucune action personnalisée déclenchée
La seule différence que je l'ai remarqué dans les journaux -
Pour VS 2010 à 2010
Action ended: MsiUnpublishAssemblies. Return value 1.
MSI (s) (90:A4) : Skipping action: _[guid].uninstall.SetProperty (condition is false)
MSI (s) (90:A4): Skipping action: _[guid].uninstall (condition is false)
MSI (s) (90:A4) [21:54:10:299]: Doing action: UnpublishComponents
Action start 21:54:10: UnpublishComponents.
Pour 2010 à Wix -
MsiUnpublishAssemblies. Return value 1.
Doing action: [guid].uninstall.SetProperty
Action start : [guid].uninstall.SetProperty.
MSI (s) (90:D4) :
Note:
1: 2235
2:
3: ExtendedType
4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = '[guid].uninstall.SetProperty'
MSI (s) (90:D4) : PROPERTY CHANGE: Adding [guid].uninstall property. Its value is '/installtype=notransaction /action=uninstall /LogFile= ... "[custom-action].exe" "oldmsi.tmp"'.
Action ended _[guid].SetProperty. Return value 1.
MSI (s) (90:D4) : Doing action: _[guid].uninstall
Action start : _[guid].uninstall.
MSI (s) (90:D4):
Note:
1: 2235
2:
3: ExtendedType
4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = '_[guid].uninstall'
Action ended: _[guid].uninstall. Return value 1.
MSI (s) (90:D4): Doing action: UnpublishComponents
Action start : UnpublishComponents.
Je suis désemparés pourquoi cette désinstallation est en cours. Toute aide est appréciée.
Ok. Je vais voir si je peux faire correspondre les identifiants en utilisant Wix's Dark et voir si ça va aider. Savez-vous d'une solution de contournement où je peux empêcher l'exécution de l'action personnalisée de désinstallation dans le msi déjà installé? – Makubex
Si vous utilisez "NOT UPGRADINGPRODUCTCODE" dans les conditions de l'action personnalisée de désinstallation, il ne sera pas exécuté lors de la désinstallation suite à une mise à niveau, mais uniquement lors de la désinstallation complète du produit. –
La logique de désinstallation est "codée en dur" lors de la désinstallation de ce produit plus ancien, vous ne pouvez donc pas le modifier à moins de patcher cet ancien produit. La condition "NOT UPGRADINGPRODUCTCODE" s'applique à l'ancien produit en cours de désinstallation/mise à niveau. Vous ne pouvez donc pas l'ajouter à l'ancien produit sans le corriger. – PhilDW