Automatic generation cannot pick up the intent of your settings, only the raw registry values. Often you'll find that self-registration will register many more settings than should really be made - for example, I have a COM DLL written in VB6, and its self-registration (as captured by tallow) registers all of VB6's settings as well! This is bad because Windows Installer will then most likely remove VB6's settings when my component is uninstalled.
Tallow v2 also didn't translate the path registered into a [#mydll.dll] reference, it left it as the raw path registered by the DLL, which could break on the end-user's machine depending on where it's captured from or where it's installed to. This DLL's self-registration actually failed when run as a limited user even when called by tallow (which gives proxy keys which should be writable by the calling user). I don't imagine that heat.exe is going to be any better at just capturing those changes that should be made, because it's a problem in the self-registration code, not in tallow or heat themselves. There are a number of 'bugs' on SourceForge entered against tallow or heat where it's actually the DLL's DllRegisterServer that isn't working properly when it doesn't find other registry entries (the proxy keys that the harvester tools create are empty). We recently had a case where the Windows Side-by-Side Win32 Assemblies technology couldn't find MSVCR80.DLL because its registry keys that record which assemblies are installed weren't present in the proxy keys. Basically I'm starting from a position that DllRegisterServer can't be trusted to do the right thing. I'm only going to use tallow or heat when I can't rely on knowing in advance what GUIDs are going to be generated by the development tool, which I don't with VB6 in any of its compatibility modes (when extending an interface), then I'm going to edit the resulting .wxs to eliminate anything that shouldn't be in there. -- Mike Dimmick -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Johan Appelgren Sent: 26 September 2006 09:58 To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Installing COM components Thank you for your response. In what way would automatic generation be more fragile? Isn't all the information available for an automated approach? When it comes to converting one format to another the computer is usually better than me at getting it right. /Johan On 9/22/06, Mike Dimmick <[EMAIL PROTECTED]> wrote: > If you're writing regular COM components in C++, you should manually > edit the .wxs to maintain it. You know what is being created, you > should replicate it. Reverse-engineering is fragile. Heat is intended > for one-off use to generate an initial template .wxs file. > > You can use the Class table to take away some of the pain of creating > the registry entries, although Rob Mensching has some reservations > with this apparently. I'm not quite sure why. The SDK currently calls > out the Typelib table as having problems with rollback. Using the > Class table creates an _advertised_ class, which I believe will > potentially run repair when instantiated if the component's > dependencies are the wrong versions (it also allows an administrator > to advertise the package; when the class is instantiated it will be > installed if only advertised, not yet installed - install-on-first-use). > > If registering .NET assemblies for COM Interop, use regasm to generate > a .reg file and convert that to .wxs code. I don't think the Class > table can be made to register a .NET assembly properly. If strong-name > signing the assembly, install it to the GAC with the Assembly='.net' > parameter; if not strong-name signing, use the /codebase option to > regasm and set the CodeBase registry value in your .wxs file to the > path you installed the DLL to. (This isn't really supported by the > .NET Framework team for deployment but it does work). > > The .NET Framework will generate GUIDs based on a hash of the assembly > identity and class or interface name, but you can control the GUIDs > used with a [Guid] attribute, and this is better for keeping binary > compatibility for COM. It may be better to avoid auto-generated class > interfaces and actually define your interfaces yourself, applying a > [Guid] attribute - I can't see a way to control the GUID of an > auto-generated class interface. Use the [ClassInterface] attribute to > turn off the automatic generation of a class interface. > > Alternatively you can use the [ComCompatibleVersion] attribute at the > assembly level to indicate that all the classes and interfaces in the > assembly are compatible with those in an earlier version of the > assembly. This causes the Framework to use that version number when > computing the GUIDs and therefore the GUIDs are stable across versions. > > -- > Mike Dimmick > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Johan > Appelgren > Sent: 22 September 2006 13:03 > To: wix-users@lists.sourceforge.net > Subject: [WiX-users] Installing COM components > > Hi, > > I'm looking at using wix to create an installer for an application > that consists of both .NET assemblies and COM. As far as I can tell if > I want to try wix3 I'm supposed to use heat to generate wxs files for > the COM components and their primary interop assemblies. > > During the development there's probably going to be changes the the > COM interfaces, mainly additions, how do I best capture those changes > after the initial heat harvesting? Manually editing the wxs files > seems very errorprone. Is there a better/recommended way to keep the > wxs and COM interfaces in sync? > > > /Johan > > ---------------------------------------------------------------------- > -- > - > Take Surveys. Earn Cash. Influence the Future of IT Join > SourceForge.net's Techsay panel and you'll get the chance to share > your opinions on IT & business topics through brief surveys -- and > earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEV > DE > V > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------ - Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDE V _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users