Thanks Mike for your earlier help with private assemblies. We've dropped 
the idea of doing anything special with them but as expected we've moved 
on to shared assemblies so I've got some more questions for anyone who can 
help.

I've taken one of our old COM dlls and added an AssemblyInfo.cpp with what 
I hope is the right Assembly values. The debug version still builds as a 
normal dll which I then use to generate the manifest for the release 
version (I'm unsure if there's anyway around this.)

There's a warning that embedding the manifest invalidates the signature, 
but resigning it sn works, as does adding it to the GAC directly with 
gacutil.

When I ran heat on the dll it generates a a file id line and a whole lof 
of Interface Id lines. I modified them to fit the merge module slightly as 
follows:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="Assembly" Name="Assembly">
    <Component Id="MyModuleComponent" 
    Guid="6C291D26-C78D-45e4-B05E-27EC5EEA97A7">
      <File Id="SO80.dll" Name="SO80.dll" Assembly=".net" 
      KeyPath="yes" 
      Source="..\..\libs\SO\Build\$(var.PLATFORM)\Release\SO80.dll">
        <TypeLib Id="{DC37D6AD-1489-45B9-8F1E-162CF65E1FB2}" 
        Description="Server 
        Objects 8.0" HelpDirectory="Assembly" Language="0" 
        MajorVersion="1" MinorVersion="0">
          <Interface Id="{0118AF21-A6C1-44EE-9AAE-2C48E634DE17}" 
          Name="IAnnotation" 
          ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" 
          ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
etc.

If I use that then upon instalation I get "Could not register type library 
for file C:\Assembly\SO80.dll."

If I remove the Interface lines it seems to install fine and it shows up 
in the GAC when I check with .Net Framework 2.0 Configuration. However 
when I try to use the assembly in VBS with the line "set s = 
CreateObject("SO80.Application") (which worked with the old dll) I get 
"ActiveX Component can't create object: 'SO80.Application' Code: 800A01AD"

I know that if you're dealing with a .Net assembly you have to make a COM 
interop, but I thought that was what the manifest was for in an assembly 
that was already COM. I had the initial impression that the purpose of the 
GAC was to eliminate storing information in the registry, but I've been 
informed that in order for COM objects to be accessible there still needs 
to be information in the registry which isn't currently showing up when I 
run the installation. Is gacutil/msi supposed to have done the 
registration, meaning that my assembly is just broken, or was that 
something I needed to include in wix? If it's the Interface stuff that I 
had to remove then how can I include it without getting the above error?

Thanks for any help!


-------------------------------------------------------------------------
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-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to