Personally I use InstallShield for this type of stuff.  It's pretty simple to 
create a merge module project, dump the components into it and do a COM extract 
at build.  Then just dark the resultant MSI and refactor into a fragment.

Oh, and I recently saw an MSDN email go out talking about InstallShield's free 
download eval version.... :-)

Regards,
Chris

Christopher Painter, Author of Deployment Engineering Blog
Have a hot tip, know a secret or read a really good thread that deserves 
attention? E-Mail Me


--- On Thu, 4/16/09, Jose Enrique Bolanos <j...@glaxstar.com> wrote:

> From: Jose Enrique Bolanos <j...@glaxstar.com>
> Subject: [WiX-users] Problem installing COM components
> To: wix-users@lists.sourceforge.net
> Date: Thursday, April 16, 2009, 7:34 PM
> Hello,
> 
> I have a problem trying to register some COM components
> using WiX. Hopefully
> you can help me find the correct solution
> 
> We need to create an MSI with WiX for Windows Vista and XP
> which, aside from
> installing some files, must register:
> 1- a COM dll
> 2- a COM server (.exe),
> 3- and a Windows service.
> 
> These three components are built in ATL C++. So they are
> normally registered
> like so:
> 1- regsvr32.exe THE_COM_DLL.dll
> 2- THE_COM_SERVER.exe /RegServer
> 3- THE_WIN_SERVICE.exe /Service
> 
> According to our research, there are a number of ways in
> which we can deploy
> and register these components with a WiX generated MSI, all
> of which have
> failed for us:
> 
> *1- Call the previously mentioned commands explicitly as
> custom actions,
> setting them in the ExeCommand with a relative path to the
> installation
> folder.*
> 
> In Vista these actions must run with elevated privileges,
> which is
> supposedly achieved by making the action deferred and with
> the
> no-impersonate flag set.
> 
> We have tried making the custom actions deferred and not
> deferred, set the
> Impersonate flag to both "yes" and "no", and so on, but the
> custom actions
> fail with code 1721 and a result value of 3.
> 
> *2- Create custom actions using the FileKey attribute and
> passing the
> argument (e.g. "/RegServer") in the ExeCommand attribute.*
> 
> Same result, code 1721 and result value 3. Seems like the
> commands need to
> run with elevated privileges, but as we mentioned we have
> marked them as
> deferred and no impersonate and the result is the same.
> 
> *3- Set the SelfRegCost flag to 1 in each File tags in the
> WiX file for each
> component.*
> 
> This only applies to the COM dll, but it does not work
> either. We set the
> KeyPath="yes" attribute and tried some other attribute
> combinations but the
> result is the same.
> 
> In addition, seems like self-registration is strongly
> discouraged by
> Microsoft.
> *
> 4- For the service, use the ServiceInstall and
> ServiceControl tags in WiX.*
> 
> This way we were able to register the service, but it fails
> to start because
> of permissions.
> 
> *5- Lastly, a solution was to use tallow/heat to recreate
> the registry
> entries.*
> 
> Neither heat nor tallow alone are able to determine all the
> registry entries
> necessary to register the services. Supposedly it does work
> for the COM dll.
> 
> So we tried the following, based on a recommendation we
> found:
> - Monitored registry modifications after each component's
> registration with
> a tool called RegSpy2, which generates a list of registry
> entries, and saved
> each one to a .reg file.
> - Using tallow we created a WiX fragment for each component
> which has all
> the detected registry entries.
> - Using WixCop we converted the Registry tags to
> RegistryKey and
> RegistryValue tags, because we are using WiX 3.
> - Then we replaced the hardcoded paths with [INSTALLDIR],
> which points to
> the installation folder in the target machine.
> 
> The installation runs fine with this procedure, but the
> components do not
> work: the service does not appear in the services list, and
> the com objects
> cannot be instantiated.
> 
> 
> Given this scenario, which would be the correct way to
> register these
> components using WiX 2/3?
> 
> Thanks in advance
> 
> -- 
> Jose Enrique BolaƱos G.
> Software Developer
> Glaxstar Ltd.
> ------------------------------------------------------------------------------
> Stay on top of everything new and different, both inside
> and 
> around Java (TM) technology - register by April 22, and
> save
> $200 on the JavaOne (SM) conference, June 2-5, 2009, San
> Francisco.
> 300 plus technical and hands-on sessions. Register today. 
> Use priority code J9JMT32. http://p.sf.net/sfu/p
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
> 


      

------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to