2010-02-01 4 views
3

Je suis nouveau sur Wix et j'ai rencontré un problème que je ne suis évidemment pas capable de résoudre seul, donc toute aide sera très appréciée. Arrière-plan: Je représente un fournisseur de logiciels qui conçoit une suite complète d'applications SOA à déployer dans les grandes entreprises. Notre architecture se compose de plusieurs couches qui peuvent être installées/mises à niveau indépendamment, je construis donc plusieurs installateurs, à partir de zéro (comme: plateforme, composants de base, couche de service, couche de gestion, couche d'application, etc.).Wix - ComPlusAssembly - Impossible d'installer la bibliothèque de type

versions du logiciel:
-Wix 3.5.1309.0 (wix.dll)
- Visual Studio 2008, .Net 3.5
- Construire OS: Windows 2008 R2 Standard 64 bits
- Déploiement: Windows 2008 Standard 32 bits

Mon problème concerne l'installation des assemblys .Net dans les applications COM +. Je continue à obtenir l'erreur "Impossible d'installer la bibliothèque de types". J'ai lu toute la documentation que je peux trouver, et je google'ing depuis plusieurs jours maintenant. Je trouve plusieurs articles sur le sujet, mais je ne suis toujours pas en mesure de résoudre le problème.

Pour isoler le problème, j'ai extrait le problème dans un programme d'installation distinct. D'abord, je lance l'installateur principal:
1. Installe tous les assemblages dans le GAC, y compris celui qui doit être installé dans COM +.
2. Créez des utilisateurs et des groupes locaux.
3. Créer l'application COM + cible, y compris les rôles, etc.
4. Installe l'ensemble cible, et le typelib compagnon, dans un dossier (pour éliminer les problèmes de consultation GAC)

Ce programme d'installation, je peux installer/réparation/désinstaller, tout fonctionne bien.

Ensuite, je lance le programme d'installation minimum ne contenant que la question, qui cherche à:
1. Installez l'ensemble dans une COM + application existante (serveur), faisant référence à la .dll pré-installé et .tlb.

L'installation échoue et le journal est l'affiche:

MSI (s) (AC:64) [19:16:01:127]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI1BAB.tmp, Entrypoint: ComPlusInstallExecute 
ComPlusInstallExecute: ExceptionInfo: Code='0', Source='System.EnterpriseServices', Description='Could not install type library 'c:\Program Files\MyManufacturer\ComPlus\WDA.ServiceProviders.Update.11.tlb' into application 'WDA.ServiceProviders.Update.11'.', HelpFile='', HelpContext='0' 
ComPlusInstallExecute: Error 0x80020009: Failed to invoke RegistrationHelper.InstallAssembly() method 
ComPlusInstallExecute: Error 0x80020009: Failed to register .NET assembly 
ComPlusInstallExecute: Error 0x80020009: Failed to register assembly, key: MyAssembly 
ComPlusInstallExecute: Error 0x80020009: Failed to register assemblies 
Action ended 19:16:02: InstallFinalize. Return value 3. 

Je remarque aussi que le rollback supprime l'application COM +, même si elle n'a pas été créé par l'installateur.
Je peux installer l'assembly manuellement, à l'aide du Gestionnaire de serveur, à partir du même fichier physique que celui référencé par le programme d'installation. Après avoir retiré manuellement le composant de l'application COM +, le programme d'installation fonctionne!

En outre, pourquoi dois-je fournir une typelib en premier lieu? EnterpriseServices.RegistrationHelper génère quand même la typelib à la volée.

Ceci est le programme d'installation de test minimum qui échoue:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:complus="http://schemas.microsoft.com/wix/ComPlusExtension" 
> 
    <Product Id="48EDB258-BD84-47EF-94A2-B4950EE48139" 
      UpgradeCode="F29B8EBD-DFD1-4B7E-96FF-86842CAAE4A4" 
      Name="ComPlusInstalls" 
      Language="1033" 
      Version="1.0.0" 
      Manufacturer="MyManufacturer">  
    <Package Id="ABA41719-BC28-4A57-BA9A-58F4F3B2194F" InstallerVersion="200" Compressed="yes" /> 
    <Media Id="1" Cabinet="WixTest.cab" EmbedCab="yes" /> 
    <complus:ComPlusApplication Id="MyApplication" ApplicationId="1FCF220A-A1FE-44FE-BE91-B37341BA6D4A" /> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="MyManufacturer" Name="MyManufacturer"> 
      <Directory Id="INSTALLLOCATION" Name="ComPlus"> 
      <Component Id="MyComponent" Guid="6D46A007-6669-487B-BAA0-DFA7314C141D" KeyPath="yes"> 
       <complus:ComPlusAssembly Id="MyAssembly" Type=".net" Application="MyApplication" 
             RegisterInCommit="no" DllPathFromGAC="no" 
             DllPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.dll" 
             TlbPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.tlb"/> 
      </Component> 
      </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 
    <Feature Id="MainFeature" Title="WixTest" Level="1" Absent="disallow" InstallDefault="local"> 
     <ComponentRef Id="MyComponent" /> 
    </Feature> 
    </Product> 
</Wix> 

Cheers,
-Nils

+0

Avez-vous trouvé une solution? – sventevit

Répondre

0

D'abord, vous pouvez essayer de passer à la dernière version de WiX v3.5. Il y avait quelques corrections de bogues dans COM + à la fin. Si ça ne marche pas, jetez un oeil au open bugs around COM+.Il y a quelques problèmes connus avec le code d'installation en raison des complexités dans COM +.

Si l'un de ces bugs semble applicable, vous pouvez peut-être les aider à résoudre le problème avec la communauté?

1

J'ai le même problème. J'ai essayé Wix 3.5 et 3.6.2012.0 et il n'a pas travaillé avec non plus. Il fonctionne si

  1. J'utilise regsvcs premier
  2. Supprimer le composant
  3. Exécutez le msi et cliquez sur Ignorer lorsqu'un message apparaît sur l'application déjà existante

Avez-vous réussi à trouver une solution?