Question

j'ai un InstallShield InstallScript MSI projet qui contient le Connexion FLEXnet sans module de fusion Software Manager.La version de ce produit est 6.0.32.J'ai créé un deuxième programme d'installation pour la version 6.1 qui contient également le Connexion FLEXnet sans module de fusion Software Manager.Lorsque j'effectue une mise à niveau majeure sur un système contenant la version 6.0.32, je reçois un message dans le journal MSI indiquant :

Disallowing installation of component: {FF970098-B748-427B-B946-AA8E1A1F82AD} since the same component with higher versioned keyfile exists

Le composant fait référence au isusweb.dll fichier situé dans le Dossier FLEXnet Connect.

Il semble que cette vérification ait lieu avant le 6.0.32 produit en cours de retrait.L'installation procède à la suppression du 6.0.32 produit qui élimine isusweb.dll.Pendant le 6.1 installer le isusweb.dll n'est pas remis en raison de la vérification de la version du composant.

La mise à niveau réussit.Lorsque j'essaie d'exécuter l'application à partir d'un raccourci, elle vérifie les composants.Depuis le isusweb.dll S'il manque le MSI, il tente une réparation, puis ne trouve pas le MSI et ne permet pas à l'application de s'ouvrir.

Existe-t-il un moyen de toujours écraser le module de fusion ?

Était-ce utile?

La solution

Cela ressemble étrangement à ce bug :

http://support.microsoft.com/kb/905238/en-us

et j'ai rencontré ce bug et vous voyez ce message de journal, et RemoveExistingProducts est au début de l'installation.Il décide de ne pas installer le fichier en fonction de la présence de la version supérieure, mais ne réévalue pas cette décision une fois que le REP l'a supprimé.Ensuite une réparation le restaure lorsque vous utilisez un raccourci.Le bug ne devrait s'appliquer qu'aux fichiers du GAC ou du SxS, c'est donc un peu déroutant.

Si vous pouvez planifier REP à la fin de la séquence de transaction (InstallExecute, REP, InstallFinalize), cela devrait résoudre le problème - cela vaut peut-être la peine d'essayer, tous les autres effets du déplacement étant ok.

Autres conseils

Les modules de fusion ne sont pas installés, ils sont fusionnés.Le produit MSI est installé.L'un des problèmes liés à l'utilisation de modules de fusion tiers est que s'ils présentent un bogue, vous ne pouvez pas y faire grand-chose.

J'envisagerais de créer un MSI uniquement dans le but d'encapsuler ce MSM.Ensuite, je créerais un prérequis d'installation ou un programme d'installation de suite pour installer ce MSI en dehors de votre produit MSI.

Vous avez déjà deux très bonnes réponses, mais pour essayer de synthétiser :

Cela ressemble vraiment à un module de fusion bogué. Phil suggère de corriger votre placement REP dans InstallExecuteSequence pour contourner le bogue. Chris suggère de placer le module de fusion défectueux dans sa propre configuration.Je suis d'accord avec les deux et pense que vous devriez suivre les deux suggestions :

  • Supprimez le module de fusion de votre configuration principale.
  • Créez une nouvelle configuration, ajoutez le module de fusion défectueux et assurez-vous du bon séquençage REP.

Pour que le correctif REP fonctionne, le référencement de vos composants doit être correct à 100 % - maintenant et à l'avenir.Pour éliminer ce problème en créant un configuration séparée vous permet de contenir le module buggy dans son propre MSI.Cela vous aidera à éviter de réactiver le bug par erreur ou en modifiant la conception à l'avenir - et cette dernière situation n'est jamais improbable.

Comme le dit Chris :un module de fusion n'est pas livré, il est fusionné.Un module de fusion mis à jour peut être disponible pour autant que je sache, mais même dans ce cas, il est sage de le contenir.Surtout lorsque vous avez affaire au GAC (Global Assembly Cache).

Une autre solution que j'ai appliquée lorsque j'ai rencontré ce bug était de configurer la mise à jour de la colonne "Version" de la table Fichier, dans le module de fusion, à l'aide d'Orca.Réglez-le au maximum 65535.65535.65535.65535, cela forcera la mise à niveau à toujours installer la DLL à partir du module de fusion.

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