L'installation MSI échoue car "Une autre version de ce produit est déjà installée"
Nous installer une application (MSI) à l'aide de MSIEXEC avec la ligne de commande suivante option:
MsiExec.exe /x{code} /qn /liwearucmopvx+ C:\Log\UnInstall.tra
MsiExec.exe /iC:\Source\App.msi /qn TARGETDIR=C:\Install ALLUSERS=1 /liwearucmopvx+ %C:\Log\Install.tra
La plupart du temps cela fonctionne, mais parfois la désinstallation échoue (je ne sais pas pourquoi et pourtant, en regardant dans l'erreur). De toute façon quand cela arrive, je reçois l'erreur suivante lors de la re-installer:
Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel
Est-il un moyen de contourner cela? Sens pour s'assurer que nous avons toujours re-installer (si elle existe, nous pouvons simplement automatiquement l'emporter?)
source d'informationauteur Shaitan00
Vous devez vous connecter pour publier un commentaire.
Découvrez la La Documentation MSDN sur la Mise à niveau de la Tablefondamentalement, vous devez définir la msidbUpgradeAttributesVersionMaxinclusive peu.
Vous n'avez pas état de ce que vous utilisez pour construire votre installation, si vous utilisez WiX 3.5 ou plus tard, vous pouvez utiliser
MajorUpgrade/@AllowSameVersionUpgrades="yes"
pour prendre soin de cela pour vous.Notez qu'au lieu d'avoir à vous rappeler le code de package (une vraie douleur si vous êtes à l'aide de l'auto-package généré codes d'Intégration Continue) le VBScript suivant va retirer le paquet en nom par la recherche de la liste des produits installés et de trouver le code du package lui-même.
Si la désinstallation échoue, le produit sera encore enregistré sur le système - selon l'endroit où la panne se produit, la désinstallation en arrière, laissant le produit est encore installé.
Si vous essayez de réinstaller un produit avec le même code de produit mais version différente sur le dessus d'une installation existante MSI va se plaindre, à juste titre, que le produit est encore en place. Si vous souhaitez obtenir une mise à niveau comportement, alors vous devez changer le code produit et écrire des entrées dans la table de mise à niveau, de sorte que MSI peut faire la différence entre les anciens et les nouveaux produits et l'utilisation de la RemoveExistingProducts action d'enlever l'ancien produit avant ou après la nouvelle version est prévue.
Si vous voulez comprendre pourquoi l'échec de la désinstallation, vous avez besoin de regarder les journaux, habituellement pour la "valeur de retour de 3" qui est la signature d'un échec de l'installation d'action.
La question est assez vieux, mais les questions /réponses sont manquantes à l'essence du problème et de la solution tout en étant utile pour d'autres scénarios:
Si la désinstallation échouevous avez un sérieux problème, et il n'y a pas de meilleur moyen que l'analyse de celle- sinon, vous pourriez avoir plus de difficulté plus tard.
Au moins, je voudrais écrire un petit script/programme, qui utilise la valeur de retour de la désinstallation ou, encore plus puissant, les tests, si le MSI est encore en place - AVANT d'essayer d'installer la nouvelle MSI.
Je donnerais plus d'informations comment faire, si il y a un intérêt à cela, mais il est déjà de l'information sur d'autres questions.
Certains autres réponses recommandons, que vous devez utiliser les mises à niveau Majeures (chaque nouvelle version peut/doit être une bonne Mise à jour Majeure dans ce scénario, au moins comme une recommandation). C'est une bonne recommandation, mais n'aide pas, si désinstalle sont un échec "parfois".
En outre, il est important de préciser, que le plus souvent, l'erreur que vous mentionnez, montre que vous n'êtes pas à l'aide de mises à jour Majeures déjà.
Si vous avez vraiment un problème avec la désinstalle, puis une Mise à jour Majeure pourrait augmenter de problèmes, car dépend de la configuration, il est possible d'installer le produit dans un deuxième temps MSI-sage, et vous avez deux MSI références sur ce sujet, ce qui est encore un produit pour vous. Plus de détails conduirait trop loin. Rappelez-vous juste, un (toujours) de travail désinstaller ou au moins un test pour cela doit être assurée avant toute autre opération de mise à jour.
Le script de saschabeaumont est vraiment court et agréable. Ce qu'il fait, est de s'assurer que vous êtes vraiment en utilisant la bonne valeur ProductCode. Le principal besoin est, parce qu'il faut le changer à chaque fois que vous produisez une Mise à jour Majeure...
Dans votre cas: Ce ne résout qu'UN scénario, pourquoi votre désinstaller pourrait avoir échoué...