Register a .NET DLL in a COM+ Application - Could not install type library...

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Register a .NET DLL in a COM+ Application - Could not install type library...

Davide Acquadro
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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

Davide Acquadro
Sorry for this repost... but does anyone have a solution for this?
I'm close to write my own CA...

Cheers,

Davide


2014-04-04 8:22 GMT+02:00 Davide <[hidden email]>:

> 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
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

Neil Sleightholm
Is there anything here that helps
http://wix.tramontana.co.hu/tutorial/com-expression-syntax-miscellanea/com-
applications - I wrote it a long time ago and am not sure if it is still
valid but it might be a good starting point.

Neil


>Sorry for this repost... but does anyone have a solution for this?
>I'm close to write my own CA...
>
>Cheers,
>
>Davide
>
>
>2014-04-04 8:22 GMT+02:00 Davide <[hidden email]>:
>
>> 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-7f
>>fbab9b)
>> 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
>>
>--------------------------------------------------------------------------
>----
>Put Bad Developers to Shame
>Dominate Development with Jenkins Continuous Integration
>Continuously Automate Build, Test & Deployment
>Start a new project now. Try Jenkins in the cloud.
>http://p.sf.net/sfu/13600_Cloudbees
>_______________________________________________
>WiX-users mailing list
>[hidden email]
>https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

Davide Acquadro
Hi Neil,

thanks for your reply.
All in all my code is from your tutorial and it works fine for native
assemblys... but not for COM+ assemblys.

Any ideas why? Something wrong in my code? Does anyone have a working
example?

Regards,

Davide



2014-04-10 14:44 GMT+02:00 Neil Sleightholm <[hidden email]>:

> Is there anything here that helps
> http://wix.tramontana.co.hu/tutorial/com-expression-syntax-miscellanea/com-
> applications - I wrote it a long time ago and am not sure if it is still
> valid but it might be a good starting point.
>
> Neil
>
>
> >Sorry for this repost... but does anyone have a solution for this?
> >I'm close to write my own CA...
> >
> >Cheers,
> >
> >Davide
> >
> >
> >2014-04-04 8:22 GMT+02:00 Davide <[hidden email]>:
> >
> >> 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-7f
> >>fbab9b)
> >> 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
> >>
> >--------------------------------------------------------------------------
> >----
> >Put Bad Developers to Shame
> >Dominate Development with Jenkins Continuous Integration
> >Continuously Automate Build, Test & Deployment
> >Start a new project now. Try Jenkins in the cloud.
> >http://p.sf.net/sfu/13600_Cloudbees
> >_______________________________________________
> >WiX-users mailing list
> >[hidden email]
> >https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
>
> ------------------------------------------------------------------------------
> Put Bad Developers to Shame
> Dominate Development with Jenkins Continuous Integration
> Continuously Automate Build, Test & Deployment
> Start a new project now. Try Jenkins in the cloud.
> http://p.sf.net/sfu/13600_Cloudbees
> _______________________________________________
> WiX-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

Neil Sleightholm
Is your code .NET 4.0? If so I was able to reproduce the problem, it appears that the COM+ CA doesn't work with .NET 4.0 assemblies. Can you use .NET 3.5? Have you tried manually installing a .NET 4.0 assembly into COM+?

Neil

-----Original Message-----
From: Davide [mailto:[hidden email]]
Sent: 10 April 2014 15:13
To: General discussion about the WiX toolset.
Subject: Re: [WiX-users] Register a .NET DLL in a COM+ Application - Could not install type library...

Hi Neil,

thanks for your reply.
All in all my code is from your tutorial and it works fine for native assemblys... but not for COM+ assemblys.

Any ideas why? Something wrong in my code? Does anyone have a working example?

Regards,

Davide



2014-04-10 14:44 GMT+02:00 Neil Sleightholm <[hidden email]>:

> Is there anything here that helps
> http://wix.tramontana.co.hu/tutorial/com-expression-syntax-miscellanea
> /com- applications - I wrote it a long time ago and am not sure if it
> is still valid but it might be a good starting point.
>
> Neil
>
>
> >Sorry for this repost... but does anyone have a solution for this?
> >I'm close to write my own CA...
> >
> >Cheers,
> >
> >Davide
> >
> >
> >2014-04-04 8:22 GMT+02:00 Davide <[hidden email]>:
> >
> >> 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
> -7f
> >>fbab9b)
> >> 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
> >>
> >---------------------------------------------------------------------
> >-----
> >----
> >Put Bad Developers to Shame
> >Dominate Development with Jenkins Continuous Integration Continuously
> >Automate Build, Test & Deployment Start a new project now. Try
> >Jenkins in the cloud.
> >http://p.sf.net/sfu/13600_Cloudbees
> >_______________________________________________
> >WiX-users mailing list
> >[hidden email]
> >https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
>
> ----------------------------------------------------------------------
> --------
> Put Bad Developers to Shame
> Dominate Development with Jenkins Continuous Integration Continuously
> Automate Build, Test & Deployment Start a new project now. Try Jenkins
> in the cloud.
> http://p.sf.net/sfu/13600_Cloudbees
> _______________________________________________
> WiX-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

wixon
In reply to this post by Davide Acquadro
Yes, you need to define custom action "Execute". Here is what works for me:

(1)define custom action that executes RegAsm.exe; example:
<CustomAction Id="ca_RegAsm_myDotNETassembly" Return="check" Execute="deferred" Directory="TARGETDIR" ExeCommand="&quot;[WindowsFolder]Microsoft.NET\Framework\v4.0.30319\RegAsm.exe&quot; &quot;[MY_APP_FOLDER]myDotNETassembly.dll&quot; /codebase" />

(2)schedule the action (1) in your <InstallExecuteSequence>, something like this:
      <Custom Action=" ca_RegAsm_myDotNETassembly" Before="InstallFinalize">
        <![CDATA[(&FeatureName = 3)]]>
      </Custom>

Few notes:
(a)the example uses RegAsm from framework v4 but you can modify to whatever you need
(b)if you are registering your assembly in GAC you should remove /codebase from calling RegAsm
(c)the example includes condition <![CDATA[(&FeatureName = 3)]]> which causes the action to be executed
only when FeatureName is being installed. You can remove that if you do not need it.

Thanks - hopefully it helps


-----Original Message-----
From: Davide [mailto:[hidden email]]
Sent: Thursday, April 10, 2014 7:58 AM
To: [hidden email]
Subject: Re: [WiX-users] Register a .NET DLL in a COM+ Application - Could not install type library...

Sorry for this repost... but does anyone have a solution for this?
I'm close to write my own CA...

Cheers,

Davide


2014-04-04 8:22 GMT+02:00 Davide <[hidden email]>:

> 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
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

Neil Sleightholm
I believe RegAsm registers for COM not COM+ I believe. Also, I wouldn't recommend registering COM that way, it is better to use the built-in COM elements (Class, ProgId etc.) or write the registry keys directly.

-----Original Message-----
From: Marek Mielcarek [mailto:[hidden email]]
Sent: 10 April 2014 20:34
To: General discussion about the WiX toolset.
Subject: Re: [WiX-users] Register a .NET DLL in a COM+ Application - Could not install type library...

Yes, you need to define custom action "Execute". Here is what works for me:

(1)define custom action that executes RegAsm.exe; example:
<CustomAction Id="ca_RegAsm_myDotNETassembly" Return="check" Execute="deferred" Directory="TARGETDIR" ExeCommand="&quot;[WindowsFolder]Microsoft.NET\Framework\v4.0.30319\RegAsm.exe&quot; &quot;[MY_APP_FOLDER]myDotNETassembly.dll&quot; /codebase" />

(2)schedule the action (1) in your <InstallExecuteSequence>, something like this:
      <Custom Action=" ca_RegAsm_myDotNETassembly" Before="InstallFinalize">
        <![CDATA[(&FeatureName = 3)]]>
      </Custom>

Few notes:
(a)the example uses RegAsm from framework v4 but you can modify to whatever you need (b)if you are registering your assembly in GAC you should remove /codebase from calling RegAsm (c)the example includes condition <![CDATA[(&FeatureName = 3)]]> which causes the action to be executed only when FeatureName is being installed. You can remove that if you do not need it.

Thanks - hopefully it helps


-----Original Message-----
From: Davide [mailto:[hidden email]]
Sent: Thursday, April 10, 2014 7:58 AM
To: [hidden email]
Subject: Re: [WiX-users] Register a .NET DLL in a COM+ Application - Could not install type library...

Sorry for this repost... but does anyone have a solution for this?
I'm close to write my own CA...

Cheers,

Davide


2014-04-04 8:22 GMT+02:00 Davide <[hidden email]>:

> 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
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

Hoover, Jacob
Use the built in registry elements, they are far more robust than RegAsm.  As long as the component rules are followed, you can have two applications installing this same COM object and the registry keys will be properly reference counted.  In your existing install, if you installed two instances and then uninstalled one of them (you do have an uninstall CA, right?) it would break COM because RegAsm does not do any ref-counting.

If this COM component is only for a single application, I would highly recommend using registration free COM and avoid the registry keys altogether.

-----Original Message-----
From: Neil Sleightholm [mailto:[hidden email]]
Sent: Thursday, April 10, 2014 3:29 PM
To: General discussion about the WiX toolset.
Subject: Re: [WiX-users] Register a .NET DLL in a COM+ Application - Could not install type library...

I believe RegAsm registers for COM not COM+ I believe. Also, I wouldn't recommend registering COM that way, it is better to use the built-in COM elements (Class, ProgId etc.) or write the registry keys directly.

-----Original Message-----
From: Marek Mielcarek [mailto:[hidden email]]
Sent: 10 April 2014 20:34
To: General discussion about the WiX toolset.
Subject: Re: [WiX-users] Register a .NET DLL in a COM+ Application - Could not install type library...

Yes, you need to define custom action "Execute". Here is what works for me:

(1)define custom action that executes RegAsm.exe; example:
<CustomAction Id="ca_RegAsm_myDotNETassembly" Return="check" Execute="deferred" Directory="TARGETDIR" ExeCommand="&quot;[WindowsFolder]Microsoft.NET\Framework\v4.0.30319\RegAsm.exe&quot; &quot;[MY_APP_FOLDER]myDotNETassembly.dll&quot; /codebase" />

(2)schedule the action (1) in your <InstallExecuteSequence>, something like this:
      <Custom Action=" ca_RegAsm_myDotNETassembly" Before="InstallFinalize">
        <![CDATA[(&FeatureName = 3)]]>
      </Custom>

Few notes:
(a)the example uses RegAsm from framework v4 but you can modify to whatever you need (b)if you are registering your assembly in GAC you should remove /codebase from calling RegAsm (c)the example includes condition <![CDATA[(&FeatureName = 3)]]> which causes the action to be executed only when FeatureName is being installed. You can remove that if you do not need it.

Thanks - hopefully it helps


-----Original Message-----
From: Davide [mailto:[hidden email]]
Sent: Thursday, April 10, 2014 7:58 AM
To: [hidden email]
Subject: Re: [WiX-users] Register a .NET DLL in a COM+ Application - Could not install type library...

Sorry for this repost... but does anyone have a solution for this?
I'm close to write my own CA...

Cheers,

Davide


2014-04-04 8:22 GMT+02:00 Davide <[hidden email]>:

> 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
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Reply | Threaded
Open this post in threaded view
|

Re: Register a .NET DLL in a COM+ Application - Could not install type library...

mapusoft
This post has NOT been accepted by the mailing list yet.
In reply to this post by Davide Acquadro
I have the same, problem

I used to develop and deply com+ artifacs done in VB6 in the past
Now when i tried with .net 4.0, i ha v the same issue
Problem is that i i will not have enough time to solve it for a while, so i am giving up until i may again
I spent a whole day too, and am tired as to seek the solution so far, for now

Is disapointing that ms, has not enough documements regarding this issue