Re: [WiX-users] Installing shared assemblies

2006-10-27 Thread Wilson, Phil
Maybe I'm misunderstanding here, but I was assuming you had managed
code.  It sounds like you have a conventional C++ COM Dll, so it's just
the Win32 COM DllRegisterServer variety of registration, using Wix
registry entries for class, interface, ProgId and type library
registration.  What's throwing me a curve is that you're addding a
manifest, signing it and putting it in the GAC. I don't know if Win32
COM can instantiate a COM class from a GAC location (or extract type
library data). Have I got this right? If so, why the GAC? Did this topic
come up before? (Can't find it in the archives..) 

Phil Wilson 


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Geoff
Finger
Sent: Friday, October 27, 2006 3:24 PM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Installing shared assemblies

On Fri, 27 Oct 2006, Phil Wilson wrote:

> If you have a .NET assembly exposing COM interfaces you don't need an 
> interop Dll, but you need it registering in the same general way that 
> Regasm does (there's Tallow). Gacutil just puts it in the GAC. What 
> you get for a registered .NET assembly are CLSID/{Guid} entries that 
> show mscoree.dll as the COM server, and assemblyname data (and maybe
> codebase) that says which assembly and class to instantiate. You can't

> mark an assembly for type library registration, just Win32 files. If 
> you really need a type library, tlbexp will generate one from your
assembly.
> I'm not sure whether Wix prefers type library registration with the 
> Registry table or with the TypeLib table.
> 
> Phil Wilson

It started out as a COM dll, all I changed was embedding the manifest
and adding the assembly info, that doesn't in itself make it a .NET
assembly does it?

I didn't realize that I had to use regasm along with gacutil, but when I
tried using it I got the following error:

RegAsm : error RA : Could not load file or assembly 'SO80,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=a239c3af9cfd6278' or
one of its dependencies.
This application has failed to start because the application
configuration is incorrect. Reinstalling the application may fix this
problem. 
(Exception from HRESULT: 0x800736B1)

I checked depends and it doesn't show any missing dependencies so I'm
not sure what's wrong. And although heat shows all the Intermediate Ids
tallow just gives:


  

Does that mean the assembly I've created is just broken or is there
something else I'm not understanding?

Thanks again!



-
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



-
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


Re: [WiX-users] Installing shared assemblies

2006-10-27 Thread Geoff Finger
On Fri, 27 Oct 2006, Phil Wilson wrote:

> If you have a .NET assembly exposing COM interfaces you don't need an
> interop Dll, but you need it registering in the same general way that
> Regasm does (there's Tallow). Gacutil just puts it in the GAC. What you
> get for a registered .NET assembly are CLSID/{Guid} entries that show
> mscoree.dll as the COM server, and assemblyname data (and maybe
> codebase) that says which assembly and class to instantiate. You can't
> mark an assembly for type library registration, just Win32 files. If you
> really need a type library, tlbexp will generate one from your assembly.
> I'm not sure whether Wix prefers type library registration with the
> Registry table or with the TypeLib table.
> 
> Phil Wilson

It started out as a COM dll, all I changed was embedding the manifest and 
adding the assembly info, that doesn't in itself make it a .NET assembly 
does it?

I didn't realize that I had to use regasm along with gacutil, but when I 
tried using it I got the following error:

RegAsm : error RA : Could not load file or assembly 'SO80, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=a239c3af9cfd6278' or one 
of its dependencies.
This application has failed to start because the application configuration 
is incorrect. Reinstalling the application may fix this problem. 
(Exception from HRESULT: 0x800736B1)

I checked depends and it doesn't show any missing dependencies so I'm not 
sure what's wrong. And although heat shows all the Intermediate Ids tallow 
just gives:


  

Does that mean the assembly I've created is just broken or is there 
something else I'm not understanding?

Thanks again!


-
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


Re: [WiX-users] Installing shared assemblies

2006-10-27 Thread Mike Dimmick








The TypeLib table is officially deprecated
– see http://windowssdk.msdn.microsoft.com/en-us/library/aa372092.aspx.

 

-- 

Mike Dimmick

 









From:
[EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of John Watson
Sent: 27 October 2006 20:05
To: Wilson, Phil
Cc:
wix-users@lists.sourceforge.net
Subject: Re: [WiX-users]
Installing shared assemblies



 

I'm pretty sure you get a
bunch of ICE 33 warnings with the typelib registry entries over the TypeLib
table. I can vouch that the Registry Table route works. It is, I believe, the
generally (arguably?) preferred way so msiexec can track the registry entries
and uninstall them. But I needn't tell you that having read your book!



On 10/27/06, Wilson, Phil <[EMAIL PROTECTED]>
wrote: 

If you have a .NET assembly exposing COM interfaces you don't need an
interop Dll, but you need it registering in the same general way that 
Regasm does (there's Tallow). Gacutil just puts it in the GAC. What you
get for a registered .NET assembly are CLSID/{Guid} entries that show
mscoree.dll as the COM server, and assemblyname data (and maybe
codebase) that says which assembly and class to instantiate. You can't 
mark an assembly for type library registration, just Win32 files. If you
really need a type library, tlbexp will generate one from your assembly.
I'm not sure whether Wix prefers type library registration with the 
Registry table or with the TypeLib table.

Phil Wilson


-Original Message-
From: [EMAIL PROTECTED]
[mailto: [EMAIL PROTECTED]]
On Behalf Of Geoff
Finger
Sent: Friday, October 27, 2006 10:55 AM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Installing shared assemblies


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:

 

   
   Guid="6C291D26-C78D-45e4-B05E-27EC5EEA97A7">
 
 KeyPath="yes"

Source="..\..\libs\SO\Build\$(var.PLATFORM)\Release\SO80.dll">
   
   Description="Server
   Objects 8.0"
HelpDirectory="Assembly" Language="0"
   MajorVersion="1"
MinorVersion="0">
 
 Name="IAnnotation"

ProxyStubClassId="{00020424---C000-0046}"

ProxyStubClassId32="{00020424---C000-0046}" />
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




Re: [WiX-users] Installing shared assemblies

2006-10-27 Thread Bob Arnson
Wilson, Phil wrote:
> I'm not sure whether Wix prefers type library registration with the
> Registry table or with the TypeLib table. 
>   

WiX turns TypeLib (et al) authoring into Registry rows unless Advertise 
is explicitly set to Yes.

-- 
sig://boB
http://bobs.org


-
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


Re: [WiX-users] Installing shared assemblies

2006-10-27 Thread John Watson
I'm pretty sure you get a bunch of ICE 33 warnings with the typelib registry entries over the TypeLib table. I can vouch that the Registry Table route works. It is, I believe, the generally (arguably?) preferred way so msiexec can track the registry entries and uninstall them. But I needn't tell you that having read your 
book!
On 10/27/06, Wilson, Phil <[EMAIL PROTECTED]> wrote:
If you have a .NET assembly exposing COM interfaces you don't need aninterop Dll, but you need it registering in the same general way that
Regasm does (there's Tallow). Gacutil just puts it in the GAC. What youget for a registered .NET assembly are CLSID/{Guid} entries that showmscoree.dll as the COM server, and assemblyname data (and maybecodebase) that says which assembly and class to instantiate. You can't
mark an assembly for type library registration, just Win32 files. If youreally need a type library, tlbexp will generate one from your assembly.I'm not sure whether Wix prefers type library registration with the
Registry table or with the TypeLib table.Phil Wilson-Original Message-From: [EMAIL PROTECTED][mailto:
[EMAIL PROTECTED]] On Behalf Of GeoffFingerSent: Friday, October 27, 2006 10:55 AMTo: 
wix-users@lists.sourceforge.netSubject: [WiX-users] Installing shared assembliesThanks Mike for your earlier help with private assemblies. We've droppedthe 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 whocan help.I've taken one of our old COM dlls and added an AssemblyInfo.cpp withwhat 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 therelease 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 lofof Interface Id lines. I modified them to fit the merge module slightlyasfollows:
      Guid="6C291D26-C78D-45e4-B05E-27EC5EEA97A7">  KeyPath="yes" Source="..\..\libs\SO\Build\$(var.PLATFORM)\Release\SO80.dll">      Description="Server   Objects 8.0" HelpDirectory="Assembly" Language="0"   MajorVersion="1" MinorVersion="0">  Name="IAnnotation" ProxyStubClassId="{00020424---C000-0046}" ProxyStubClassId32="{00020424---C000-0046}" />etc.
If I use that then upon instalation I get "Could not register typelibrary for file C:\Assembly\SO80.dll."If I remove the Interface lines it seems to install fine and it shows upin the GAC when I check with .Net Framework 
2.0 Configuration. Howeverwhen 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 aCOM interop, but I thought that was what the manifest was for in anassembly 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 accessiblethere still needs to be information in the registry which isn'tcurrently showing up when I run the installation. Is gacutil/msi
supposed to have done the registration, meaning that my assembly is justbroken, or was that something I needed to include in wix? If it's theInterface 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 jobeasier Download IBM WebSphere Application Server v.1.0.1 based on ApacheGeronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642___WiX-users mailing listWiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users-
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 easierDownload 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 listWiX-users@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/wix-users

-
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 IB

Re: [WiX-users] Installing shared assemblies

2006-10-27 Thread Wilson, Phil
If you have a .NET assembly exposing COM interfaces you don't need an
interop Dll, but you need it registering in the same general way that
Regasm does (there's Tallow). Gacutil just puts it in the GAC. What you
get for a registered .NET assembly are CLSID/{Guid} entries that show
mscoree.dll as the COM server, and assemblyname data (and maybe
codebase) that says which assembly and class to instantiate. You can't
mark an assembly for type library registration, just Win32 files. If you
really need a type library, tlbexp will generate one from your assembly.
I'm not sure whether Wix prefers type library registration with the
Registry table or with the TypeLib table. 

Phil Wilson 


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Geoff
Finger
Sent: Friday, October 27, 2006 10:55 AM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Installing shared assemblies


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:


  

  

  
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



-
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


[WiX-users] Installing shared assemblies

2006-10-27 Thread Geoff Finger

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:


  

  

  
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