Configurer InstallShield LE pour supprimer les versions précédentes construites en utilisant les projets de configuration de Visual Studio

en utilisant Visual Studio 2010, j'aimerais passer à L'utilisation D'InstallShield LE au lieu du projet D'installation de Visual Studio.

dans le projet de Setup, il existait une option RemovePreviousVersions qui était idéale pour faire un installateur qui ferait essentiellement une mise à jour en place lorsqu'une nouvelle version est publiée.

maintenant avec InstallShield LE, j'ai mis à jour la version et généré un nouveau Code produit, mais après avoir lancé l'installateur, le précédent la version est toujours présent.

Que dois-je faire pour que le projet InstallShield-built puisse supprimer la version précédente qui a été construite avec le projet VS Setup?

11
demandé sur Christopher Painter 2011-06-23 02:40:08

4 réponses

Vous pouvez essayer ceci:

  • ouvrez votre ancien MSI avec Orca et obtenez son code de mise à niveau de la table de propriété
  • dans votre projet InstallShield le aller à "Informations générales" dans Solution explorer
  • assurez-vous que le champ "code de mise à niveau" est défini à votre ancien code de mise à niveau MSI

vous devez également vous assurer que la propriété ALLUSERS a la même valeur pour les deux versions (c'est la même approche). Vous pouvez en savoir plus sur les mises à jour ici: http://msdn.microsoft.com/en-us/library/aa369786 (VS.85).aspx

8
répondu user527987 2011-06-23 06:17:11

Cela m'a rendu fou quand j'ai commencé avec un projet dans Visual 2012. J'ai continué à recevoir des copies en double dans les programmes add/remove, et l'ancienne version n'a pas été mise à jour. Voici ce que j'ai constaté que je devais faire.

sous les chemins de mise à niveau, créez un nouveau chemin. Laisser la version min vierge (sauf si vous en avez besoin), inclure la version min oui, la version Max doit être réglée sur la version que vous installez maintenant. Inclure la version max à Oui.

à chaque fois vous installez une mise à jour, avancez la version produit dans la section Informations générales. Cliquez sur un nouveau Code produit dans la section Informations générales Ne pas modifier le code de mise à niveau

retournez sur le chemin de mise à jour, et réglez la version Max sur la même version que vous déployez maintenant. C'était la clé pour que ça marche pour moi.

Ce processus désinstalle la version précédente, et installe la dernière. Pas de doublons dans ajout/suppression de programmes.

Espérons que cette aide.

41
répondu user2321103 2013-04-25 18:40:19

user2321103 la réponse est excellente, la création de la nouvelle entrée de mise à niveau dans les chemins de mise à niveau est la chose clé. Il est regrettable que cette option soit cachée car elle est nécessaire afin de produire ce que la plupart des gens s'attendrait naturellement à être le comportement normal par défaut pour un programme de configuration.

la raison de cette nouvelle réponse est que j'ai trouvé que je pouvais régler la Version Max dans l'entrée de mise à niveau à un nombre plus élevé plutôt que la version actuelle. Cela signifie que je ne vais pas n'oubliez pas de le mettre à jour pour chaque nouvelle version. Ma version actuelle est 2.1.8 donc j'ai mis la Version Max à 2.1.9999. Dans le cas peu probable où je voudrais un comportement différent dans une future version, je peux monter ma version à 2.2.x

le projet de configuration de Microsoft mettrait automatiquement à jour le Code du produit chaque fois que vous modifiez le numéro de version, mais Installshield LE ne le fait pas, il faudra donc se rappeler de le faire à chaque fois.

comme les autres réponses state, il est important que L'entrée de mise à niveau utilise le code de mise à niveau des versions précédentes installées. Je n'ai pas essayé cela, mais probablement si pour une raison quelconque vous avez plus d'une version précédente avec des codes de mise à niveau différents, alors vous pouvez créer une entrée de mise à niveau séparée pour chacun.

Je ne comprends pas pourquoi vous ne pouvez pas définir à la fois Include Min Version et Include Max Version à No, mais cela ne semble pas fonctionner. Je n'ai pas essayé toutes les combinaisons de ces différentes paramètres mais comme indiqué dans la réponse à l'un des paramètres suivants semblent faire l'affaire:

  • Min Version: blank
  • Inclure Min Version: Oui
  • Version Max: > = version actuelle
  • Inclure Max Version: Oui

Il semble également important de ne pas changer Lang Critère de Recherche à Exclure. J'ai aussi mis Ignorer supprimer l'échec de Oui. J'ai Migrate Feature States réglé à non, mais je ne pense pas que ce soit pertinent pour l'édition LE de toute façon.

4
répondu Phil Preen 2014-12-16 11:27:17

si je peux ajouter une réponse dans le chapeau, j'ai pu faire un chemin de mise à niveau qui ne nécessite pas de définir/mettre à jour un Code de mise à niveau spécifique, Version Min ou Max basée sur le chemin de mise à niveau générique ISPreventDowngrade . Selon la mise en garde dans la description de la Version Max, You must specify a value for at least one of the version settings: Min Version, Max Version, or both. , j'ai donc placé la version Max dans un paramètre générique. Ceci fait, je ne suis pas obligé de mettre une Version Max. Ma configuration est donc la suivante:

  • Code De Mise À Niveau: {00000000-0000-0000-0000-000000000000} (identificateur générique qui sera remplacé par le code de mise à niveau de l'installateur actuel)
  • Min Version: blank
  • Inclure Min Version: Pas De
  • Max Version: ***ALL_VERSIONS*** (version de l'espace réservé)
  • Inclure Max Version: Oui

tous les autres champs sont restés inchangés. Voir http://helpnet.flexerasoftware.com/installshield23helplib/helplibrary/PreventingDowngrades.htm pour plus d'informations, mais attention aux fautes de frappe. Les deux paramètres ci-dessus sont Mal orthographiés; je les ai obtenus à partir des données utilisées dans le chemin de mise à niveau ISPreventDowngrade .

0
répondu NargothBond 2018-07-05 13:26:38