Hi all,

I spent a whole day with this problem now and would appreciate any help!

To make it really easy I picked a sample COM+ Application from the MSDN (
http://code.msdn.microsoft.com/windowsdesktop/Creating-a-COM-Component-7ffbab9b)
and tried to register it in a COM+ application through WIX - without
success :(

Here is my code:

    <ComponentGroup Id="BinFileGroup">
      <Component Id="MydotNet_dll" DiskId="1"
Guid="082B553D-C3D1-4D10-BA4F-8048C84C9C99" Directory="DIR_Bin">
        <Class Id="1F2642C4-BDE1-3B50-9DDE-F95747078F71"
Context="InprocServer32" Description="COMPlusServicesExample.Customers"
ThreadingModel="both" ForeignServer="mscoree.dll">
          <ProgId Id="COMPlusServicesExample.Customers"
Description="COMPlusServicesExample.Customers" />
        </Class>
        <Class Id="94464148-E1E2-3F84-BEE9-7C72F0D0E01D"
Context="InprocServer32" Description="COMPlusServicesExample.CustomersDB"
ThreadingModel="both" ForeignServer="mscoree.dll">
          <ProgId Id="COMPlusServicesExample.CustomersDB"
Description="COMPlusServicesExample.CustomersDB" />
        </Class>
        <File Id="COMPlusDotNet" Name="COMPlusDotNet.dll"
Source="$(var.BinDir)\COMPlusDotNet.dll" KeyPath="yes" Assembly="no" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\Implemented
Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32\1.0.5206.28472"
Name="Class" Value="COMPlusServicesExample.Customers" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32\1.0.5206.28472"
Name="Assembly" Value="COMPlusDotNet, Version=1.0.5206.28472,
Culture=neutral, PublicKeyToken=2cda2eca579c96b4" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32\1.0.5206.28472"
Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32\1.0.5206.28472"
Name="CodeBase" Value="file:///[#COMPlusDotNet]" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32"
Name="Class" Value="COMPlusServicesExample.Customers" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32"
Name="Assembly" Value="COMPlusDotNet, Version=1.0.5206.28472,
Culture=neutral, PublicKeyToken=2cda2eca579c96b4" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32"
Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{1F2642C4-BDE1-3B50-9DDE-F95747078F71}\InprocServer32"
Name="CodeBase" Value="file:///[#COMPlusDotNet]" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\Implemented
Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32\1.0.5206.28472"
Name="Class" Value="COMPlusServicesExample.CustomersDB" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32\1.0.5206.28472"
Name="Assembly" Value="COMPlusDotNet, Version=1.0.5206.28472,
Culture=neutral, PublicKeyToken=2cda2eca579c96b4" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32\1.0.5206.28472"
Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32\1.0.5206.28472"
Name="CodeBase" Value="file:///[#COMPlusDotNet]" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32"
Name="Class" Value="COMPlusServicesExample.CustomersDB" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32"
Name="Assembly" Value="COMPlusDotNet, Version=1.0.5206.28472,
Culture=neutral, PublicKeyToken=2cda2eca579c96b4" Type="string"
Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32"
Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
        <RegistryValue Root="HKCR"
Key="CLSID\{94464148-E1E2-3F84-BEE9-7C72F0D0E01D}\InprocServer32"
Name="CodeBase" Value="file:///[#COMPlusDotNet]" Type="string"
Action="write" />
        <complus:ComPlusApplication  Id="MydotNet" Name="COM Plus Services
Example">
          <complus:ComPlusAssembly Id="COMPlusDotNet"
TlbPath="[#COMPlusDotNetTlb]" Type=".net" DllPath="[#COMPlusDotNet]">
            <complus:ComPlusComponent Id="CheckInterface"
CLSID="1F2642C4-BDE1-3B50-9DDE-F95747078F71"/>
            <complus:ComPlusComponent Id="CheckInterface2"
CLSID="94464148-E1E2-3F84-BEE9-7C72F0D0E01D"/>
          </complus:ComPlusAssembly>
        </complus:ComPlusApplication>
      </Component>
      <Component Id="MydotNet_tlb" DiskId="1"
Guid="82E37437-9A85-4D93-985A-930AE8B5562B" Directory="DIR_Bin">
        <File Id="COMPlusDotNetTlb" Name="COMPlusDotNet.tlb"
Source="$(var.BinDir)\COMPlusDotNet.tlb" KeyPath="yes" >
          <TypeLib Id="{382C73BF-1243-3749-ABFC-EE2FF15CC160}"
Description="This is an example for creating COM+ Serviced applications in
.NET" HelpDirectory="DIR_Bin" Language="0" MajorVersion="1"
MinorVersion="0">
            <Interface Id="{4F36FC57-4D0A-38BF-9A0D-ECDD5C8E29A4}"
Name="_Customers" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}"
ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
            <Interface Id="{68D25731-3207-39B0-AE21-CE6AD66A2F8A}"
Name="_CustomersDB"
ProxyStubClassId="{00020424-0000-0000-C000-000000000046}"
ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
          </TypeLib>
        </File>
      </Component>
    </ComponentGroup>

The error message I get:

ComPlusInstallExecute:  ExceptionInfo: Code='0',
Source='System.EnterpriseServices', Description='Could not install type
library 'C:\ApplDir\COMPlusDotNet.tlb' into application COM Plus Services
Example', 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:
COMPlusDotNet
ComPlusInstallExecute:  Error 0x80020009: Failed to register assemblies

When I comment out this part:

          <complus:ComPlusAssembly Id="COMPlusDotNet"
TlbPath="[#COMPlusDotNetTlb]" Type=".net" DllPath="[#COMPlusDotNet]">
            <complus:ComPlusComponent Id="CheckInterface"
CLSID="1F2642C4-BDE1-3B50-9DDE-F95747078F71"/>
            <complus:ComPlusComponent Id="CheckInterface2"
CLSID="94464148-E1E2-3F84-BEE9-7C72F0D0E01D"/>
          </complus:ComPlusAssembly>

An empty ComPlusApplication is created successfully. When I then manually
install the tlb (or the dll) via MMC snap-in into this COM+ application it
works fine.

I also tried the DllPathFromGAC attribute and register the DLL in GAC, but
it also failed with an error message, that the assembly name could not be
found in the GAC.

Thank you in advance!

Best regards,

Davide
------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to