Question

J'ai un installateur qui ne semble pas suivre les règles de composant MSI au moment de l'installation. Voici le scénario:

OS: Windows 7 x64

produit A Installe un ensemble de fichiers connecté à un composant avec le GUID "123ABC" dans c: \ Fichiers de programme \ Fichiers communs \ FOO \ FOO. Le composant a les fichiers suivants:
foo.dll, version 1.0.0.0, (clavier)
Foo.sys, version 1.0.0.0
foo.inf, pas de version
foo.cat, aucune version

produit B installe le même ensemble de fichiers connectés au même GUID de composant "123ABC" dans le même chemin C: \ Program Files \ Fichiers courants \ FOO. Le composant a les fichiers suivants:
foo.dll, version 1.0.0.1, (clavier)
Foo.sys, version 1.0.0.0
foo.inf, pas de version
foo.cat, aucune version

Le produit A est installé en premier et le produit B n'effectue pas de mise à niveau de produit A, ils partagent simplement un MSM commun qui contient le composant "123ABC". Mon attente est que lorsque le produit B est installé, MSI comparera les versions du clavier de FOO.DLL et déterminera que le produit FOO.DLL est plus récent. Ensuite, les quatre fichiers associés au composant "123ABC" écraseront les fichiers existants sur le disque installé par produit A. Cela ne se produit pas :( à la place, c'est le fichier de fichiers résultant:
C: \ Fichiers de programme \ Fichiers communs \ FOO
foo.dll, version 1.0.0.1 (du produit b)
Foo.sys, version 1.0.0.0 (du produit A)
foo.inf, pas de version (du produit A)
foo.cat, aucune version (du produit B)

Seuls la DLL et le fichier CAT sont écrasés. Dans le fichier journal MSI, je peux voir les éléments suivants:

MSI (s) (4C:F0) [17:29:24:227]: File: C:\Program Files\Common Files\Foo\foo.dll;    Overwrite;  Won't patch;    Existing file is a lower version
MSI (s) (4C:F0) [17:29:24:305]: File: C:\Program Files\Common Files\Foo\foo.sys;    Won't Overwrite;    Won't patch;    Existing file is of an equal version
MSI (s) (4C:F0) [17:29:24:305]: File: C:\Program Files\Common Files\Foo\foo.inf;    Won't Overwrite;    Won't patch;    Existing file is unversioned and unmodified - hash matches source file
MSI (s) (4C:F0) [17:29:24:335]: File: C:\Program Files\Common Files\Foo\foo.cat;    Overwrite;  Won't patch;    Existing file is unversioned and unmodified - hash doesn't match source file

Je pensais que les composants MSI ont installé tous les fichiers associés en fonction de l'installation du clavier ou non. Qu'est-ce qui pourrait causer chaque fichier associé au même composant à comparer individuellement?

Était-ce utile?

La solution

L'état du clavier détermine si un composant sera agi.Ressources dans le composant suivez ensuite leurs règles: par exemple, les fichiers suivent le Règles de version de fichier .

Autres conseils

En supposant que chaque produit utilise des modules de fusion par défaut des règles de coûts (OMUS) contenant des composants partagés devrait fonctionner.FWIW, vous voudrez peut-être envisager de faire un MSI qui consomme ce module de fusion, puis l'ajoutez à une bootstrapper pour les deux produits.L'entretien des correctifs peut être plus propre de cette façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top