web-dev-qa-db-fra.com

Comment obtenir InstallShield LE pour désinstaller automatiquement l'installation existante?

Est-ce possible?

Tout ce que je peux voir autour de la recherche, c'est que j'ai besoin d'utiliser des outils tiers (par exemple Orca) pour obtenir des GUID à partir de mes MSI existants et configurer InstallShield avec ceux-ci pour désinstaller la version existante. J'ai essayé un ou deux de ces ensembles d'instructions mais rien n'a fonctionné jusqu'à présent. Probablement parce que je fais quelque chose de mal, mais il semble que je saute à travers de nombreux cerceaux pour faire quelque chose que je pense devrait être relativement simple. Ce problème n'a-t-il pas été résolu auparavant?

Le meilleur résultat dans Google pointe vers cette réponse :

  • ouvrez votre ancien MSI avec Orca et obtenez son UpgradeCode dans la table des propriétés
  • dans votre projet InstallShield LE, accédez à "Informations générales" dans l'Explorateur de solutions
  • assurez-vous que le champ "Code de mise à niveau" est défini sur votre ancien code de mise à niveau MSI

Est-ce à dire que je dois ouvrir mon "ancien MSI avec Orca et obtenir son UpgradeCode" chaque fois que je souhaite déployer une nouvelle version?

Cela semble un peu hack, et c'est certainement quelque chose que je ne veux pas avoir à faire à chaque fois que je déploie une nouvelle version. Existe-t-il un moyen d'automatiser cela? Cette fonctionnalité est-elle disponible dans les versions plus avancées d'InstallShield (à l'esprit que je suis sur LE - je mettrai à niveau si nécessaire)

25
DaveDev

InstallShield LE, comme le projet de configuration précédent, permet l'installation d'une nouvelle version du produit qui remplacera la version précédemment installée. Quant à savoir s'il s'agit techniquement d'une désinstallation de l'ancien produit ou d'une mise à niveau sur place, cela semble peu important.

La clé réside dans la différence entre Code produit et Code de mise à niveau:

  • Code produit: Étant donné que ce code identifie de manière unique votre produit, il n'est pas recommandé de modifier le code produit après avoir distribué votre version.

  • Code de mise à niveau: Le code de mise à niveau, stocké dans la propriété UpgradeCode, doit rester le même pour toutes les versions d'un produit.

(Ce texte provient directement de la bibliothèque d'aide InstallShield LE.)

Il n'est pas exactement simple d'utiliser ces codes pour déployer des produits et des mises à jour de version du même produit.

InstallShield LE General Information

Le texte d'aide donne l'impression que vous ne devez jamais modifier le code produit. Ce n'est pas le cas. Il devrait probablement être écrit plus clairement pour dire "Puisque ce code identifie de manière unique votre produit version, changer le code du produit après avoir déjà distribué un particulier la libération n'est pas recommandée. " ... ou quelque chose comme ça.

Fondamentalement, vous devez changer le code produit lors de la création d'une nouvelle version à publier. Laissez le code de mise à niveau seul! Pour modifier le code produit, cliquez sur {..} à droite du code. InstallShield LE va générer un nouveau code.

Ma procédure standard consiste à modifier les versions de mes projets, à générer un nouveau code produit et à créer le projet d'installation InstallShield.

Lors de l'installation du produit sur une machine avec une version antérieure déjà installée, le projet d'installation le mettra à jour et ne laissera qu'une seule version (la plus récente) du programme installée sur la machine cible.

62
JYelton

Pour autant que je comprends, la réponse de YJelton est correcte, mais si vous voulez vous assurer que l'ancien produit est supprimé, vous devez ajouter un élément MajorUpgrade à la table de mise à niveau - si vous conservez le même code de mise à niveau (comme cela a été recommandé), vous pouvez sélectionnez l'option "Produits partageant mon code de mise à niveau" et pour la version du produit, vous pouvez sélectionner "Toute version antérieure".

De cette façon, si le code de mise à niveau est le même que votre ancien produit et que votre nouveau produit a un numéro de version ultérieur, l'ancien produit sera supprimé.

Si vous souhaitez modifier le code de mise à niveau, vous pouvez ajouter un élément MajorUpgrade avec l'option "Produits ayant un autre code de mise à niveau" sélectionnée. Collez ensuite votre ancien code de mise à niveau.

3
ksun