Bugs item #1487586, was opened at 2006-05-12 22:12
Message generated for change (Comment added) made by alexbirk
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=642714&aid=1487586&group_id=105970

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: extensions
Group: v2.0
Status: Open
Resolution: None
Priority: 5
Submitted By: Neil Sleightholm (nsleigh)
Assigned to: Fredrik Grohn (fregro)
Summary: Adding component to COM+ if it is in the GAC

Initial Comment:
As requested by Fredrik Grohn I have raised a bug 
report for this "I think this is a bug that somehow 
relates to the .NET 2.0 framework".

I still have a problem adding a component to COM+ if 
it is in the GAC. I can install the same component if 
I don't put it in the GAC and if I remove the COM+ 
code the component can be installed into the GAC. The 
errors in the log are:

MSI (s) (C4:F4) [22:09:48:936]: Invoking remote 
custom action. DLL: C:\WINDOWS\Installer\MSI130.tmp, 
Entrypoint: ComPlusInstallExecuteCommit
ComPlusInstallExecuteCommit:  Error 0x80131047: 
Failed to get assembly info
ComPlusInstallExecuteCommit:  Error 0x80131047: 
Failed to get path for assembly from GAC
ComPlusInstallExecuteCommit:  Error 0x80131047: 
Failed to register assembly, key: MyComPlusAssembly
ComPlusInstallExecuteCommit:  Error 0x80131047: 
Failed to register assemblies

Here is my code fragment:

<Wix 
xmlns="http://schemas.microsoft.com/wix/2003/01/wi"; 
 
xmlns:pca="http://schemas.microsoft.com/wix/2005/02/pu
bca">
 <Fragment Id="Files">
 <DirectoryRef Id="INSTALLDIR">
  <Component Id="SupportDotNet_dll" DiskId="1" 
Guid="7F82F78D-39D4-4651-AD36-F0642A6552DA">
   <File 
    Id="SupportDotNet_dll" 
    Name="SUPP.DLL" 
    LongName="SupportDotNet.dll" 
    Source="Files\SupportDotNet.dll" 
    KeyPath="yes"
    Assembly=".net"
   />
   <pca:ComPlusApplication Id="SupportDotNet" 
Name="My COM+ Application">
    <pca:ComPlusAssembly 
     Id="MyComPlusAssembly" 
     TlbPath="[#SupportDotNet_tlb]" 
     Type=".net" 
     DllPathFromGAC="yes" 
     RegisterInCommit="yes"
    >
     <pca:ComPlusComponent Id="CheckInterface" 
CLSID="21E72DE4-241E-4472-8C71-61A22BAF9914"/>
    </pca:ComPlusAssembly>
   </pca:ComPlusApplication> 
  </Component>
  <Component Id="SupportDotNet_tlb" DiskId="1" 
Guid="FD850F44-6EE3-4af0-8ED6-E29B0F3A1E64"> 
   <File 
    Id="SupportDotNet_tlb" 
    Name="SUPP.TLB" 
    LongName="SupportDotNet.tlb" 
    Source="Files\SupportDotNet.tlb" 
    KeyPath="yes" /> 
  </Component> 
  </DirectoryRef>
 </Fragment>
</Wix>



----------------------------------------------------------------------

Comment By: Alexander Biryukov (alexbirk)
Date: 2006-08-16 02:04

Message:
Logged In: YES 
user_id=955147

Supplement to previous message:
Patch tested on wix version 2.0.4409.0

----------------------------------------------------------------------

Comment By: Alexander Biryukov (alexbirk)
Date: 2006-08-16 01:39

Message:
Logged In: YES 
user_id=955147

I found solution of this bug. See comments in code.
This tested on WinXP SP2 with installed .Net 1.1 and 2.0 
simultaneously. 

File src\ca\pubca\pcaexec\cpiasmexec.cpp
...
Line 843:  hr = pAssemblyCache->QueryAssemblyInfo(0, 
pwzAssemblyName, &assemblyInfo);

// ------------------ [Begin of new code] ------------------
        if(hr == 0x80131047) // 0x80131047 - The given 
assembly name or code-base is invalid
        {
                // In .Net 1.x and .Net 2.0 AssemblyName will 
be different
                //   .Net 1.x format: "MyAssembly, 
Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=A6C259C05F51723A, 
ProcessorArchitecture=MSIL, Language=Neutral"
                //   .Net 2.0 format: "MyAssembly, 
Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=A6C259C05F51723A"
                //
                // Trying to get assembly info by reformatted 
assembly name string in .Net 2.0 format.

                // Cuting off a tail of assambly name string 
(from "ProcessorArchitecture" to end)
                LPWSTR pwzSubStr = wcsstr(pwzAssemblyName, L", 
ProcessorArchitecture");
                size_t foundPos = pwzSubStr ? pwzSubStr-
pwzAssemblyName : -1;
                if(foundPos > 0)
                {
                        LPWSTR pwzAssemblyName2 = new 
WCHAR[foundPos+1];
                        StringCchCopyW(pwzAssemblyName2, 
foundPos+1, pwzAssemblyName);

                        WcaLog(LOGMSG_STANDARD, "Alternative 
assembly name: %S", pwzAssemblyName2);

                        // Trying to get assembly info in 
alternative format
                        hr = pAssemblyCache->QueryAssemblyInfo(0, 
pwzAssemblyName2, &assemblyInfo);
                        delete [] pwzAssemblyName2;
                }
        }
// ------------------ [End of new code] ------------------

Line 844:  if (HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) == 
hr)
...

----------------------------------------------------------------------

Comment By: Derek (derekc)
Date: 2006-05-13 01:46

Message:
Logged In: YES 
user_id=518766

Not Scott's bug.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=642714&aid=1487586&group_id=105970

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-devs

Reply via email to