2009-08-19 3 views
8

Je peux trouver beaucoup d'informations sur la façon dont les mises à jour msi. Par exemple. des informations sur la mise à niveau mineure, la petite mise à niveau, la mise à jour majeure, ainsi que leur utilisation et leurs limites. Cependant, je ne peux pas trouver des informations sur le comportement de mise à niveau du module de fusion, tels que:Comment fusionner les mises à jour du module?

  1. Il semble que msm n'a pas de moyen de spécifier mise à jour mineure, petit ou majeur. De quelle façon se comporte-t-il? Désinstalle-t-il d'abord la première version de ou seulement les fichiers modifiés?
  2. Y a-t-il un moyen de spécifier à partir de quelle version il peut être mis à jour comme msi? Puis-je ajouter/supprimer/renommer les composants pour la nouvelle version?
  3. Si une version plus récente de ce msm est déjà installé et le conteneur msi décide d'installer, il sera remplacer cette ancienne version de msm?

Répondre

7

Il existe deux scénarios de mise à niveau auxquels un module de fusion peut prendre part. Le premier est lorsque le programme d'installation procède à la mise à niveau et qu'il met à niveau un fichier .msm. Cela se produit dans des cas comme le Service Pack Visual Studio où ils fournissent des modules de fusion mis à jour pour que vous puissiez utiliser. Cela peut poser problème car les fichiers .msm ne possèdent pas de version de fichier (même s'ils ont une version de module de fusion), les règles de gestion de versions de fichiers ne s'appliquent donc pas correctement. Vous ne posez probablement pas de question sur ce cas.

L'autre scénario est lorsque le module de fusion a été fusionné dans un programme d'installation qui sera mis à niveau. Ce n'est plus un module de fusion, mais ses fichiers et autres enregistrements font partie du programme d'installation consommateur. Dans ce cas, le .msi dans lequel il a été fusionné contrôle les étapes de mise à niveau. Les deux interagissent, informant vos réponses à vos trois premières questions. Si le module de fusion a des modifications qui ne respectent pas les règles de mise à niveau mineures, le programme d'installation consommateur ne pourra pas utiliser une mise à niveau mineure et devra recourir à des mises à niveau majeures. En conséquence, si vous souhaitez utiliser (ou autoriser) des mises à niveau mineures dans le programme d'installation consommateur, vous devez faire attention à vos composants. Cela peut être plus difficile que dans un .msi puisque vous ne pouvez pas ajouter de nouvelles fonctionnalités à l'intérieur d'un module de fusion. Les règles de gestion des versions de fichiers s'appliqueront comme dans toutes les installations Windows Installer; Ainsi, la réponse à votre quatrième question est déterminée fichier par fichier, composant par composant au lieu d'une réponse de groupe pour tout le contenu du module.

+0

Bonne réponse. Ce sera le deuxième scénario. L'image d'installation de Windows devient plus claire pour moi ... – Dudu

0

Question: Je crois que j'ai besoin de savoir comment mettre à jour le module de fusion comme décrit dans le deuxième scénario de la réponse.

Situation:

J'ai de nombreux produits qui installent tout le même module de fusion.

Si un produit installe une version plus récente du module de fusion, je ne souhaite pas qu'une ancienne version d'un autre produit écrase le module de fusion le plus récent. Est-ce que quelqu'un peut décrire si c'est possible et si oui, comment?

+0

Ceci devrait vraiment être sa propre question autonome (se référer à celui-ci si nécessaire). Si le module de fusion et sa version plus récente sont bien écrits, cela devrait fonctionner. Les versions les plus récentes remplaceront les plus anciennes mais pas l'inverse.Les codes de composants partagés référenceront correctement le compte, donc la désinstallation même de l'utilisateur unique des fichiers les plus récents ne supprimera pas les fichiers partagés. En un mot: assurez-vous de suivre les règles de versionnement des composants et des fichiers, et idéalement juste de mettre à jour les fichiers existants, lors de la mise à niveau de la conception de ce module de fusion. Alors tout devrait bien fonctionner. –

+1

J'ai eu du mal à trouver une documentation détaillée à ce sujet, alors voici ce que j'ai confirmé par expérimentation: Étant donné: 2 versions d'un module de fusion, appelez-les MMv1.msm & MMv2.msm; chaque fichier .msm contient 1 fichier MyFile.dll; MMv1.msm a v1.0 de MyFile.dll; MMv2.msm a v2.0 de MyFile.dll; MMv1.msm est consommé par le programme d'installation pour l'application A1; MMv2.msm est utilisé pour l'application A2. Alors, que se passe-t-il quand ... 1) L'application A1 est installée, puis A2? MyFile se termine à la v2.0; 2) A1, puis A2, sont installés, alors que A2 est désinstallé? MyFile reste à v2.0. 3) A2 est installé, puis A1? MyFile démarre à la version 2.0 et reste à la version 2.0. –

Questions connexes