Since there were no takers on this one the first time around, let me
simplify the question:

1. How can I override parts of a wixlib included by a Wix extension, or
do I have to rebuild the extension? Specifically, I want to use the
DIFxAppExtension and its difxapp*.wixlib, but I want to modify several
of the CustomAction attributes. I tried simply duplicating the entries
with the modified attribute in my wxs, but I get "LGHT0091 : Duplicate
symbol 'CustomAction:MsiProcessDrivers' found." It looks like I can
build my own wixlib (duplicating the source from the extension's wixlib)
and use the rest of the extension as is. Or is there another way?

More details on what I'm trying to do are given below, but I'd be happy
with an answer to just this specific question.

--Quinton

-----Original Message-----
From: Quinton Tormanen [mailto:quint...@deltamotion.com] 
Sent: Monday, December 06, 2010 9:41 AM
To: General discussion for Windows Installer XML toolset.
Subject: [WiX-users] Ignoring DIFxApp Return Codes

Related to the stability problems with DIFxApp (see
http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg42659.htm
l for example), I had an idea on how to bypass it's finickiness.

To summarize briefly, the problem that DIFxApp gets into is that in some
cases the registry entries it relies on get messed up (I was able to
reproduce this by having a failed major update (caused by a goof on my
part) and after the rollback, the driver store registry entries were not
restored). Once in this state, attempts to uninstall the application
fails, as do major updates (since they do an uninstall as part of the
update). (Attempts for help from the DIFxApp team have got me nowhere,
which is why I'm now looking at working around instead of fixing.)

What I was considering was setting the @Return attribute for the
DIFxAppExtension's CAs to "ignore" since I'm more concerned about
getting my application updated successfully than DIFxApp giving up
prematurely on registry entries that it messed up itself. That is, it
appears to work to force the uninstall (using the msicuu2.exe util) and
then reinstall--the drivers are made available correctly--so I am
willing to ignore the error it has when uninstalling.

So, here are my specific questions:

1. Is there a way to override the custom actions included by the
DIFxAppExtension without modifying the extension? For example, the wxs
from the DIFxAppExtension source, includes the following lines:

      <CustomAction Id='MsiProcessDrivers'   BinaryKey='DIFxApp.dll'
DllEntry='ProcessDriverPackages'   SuppressModularization='yes'
Execute='immediate' />
      <CustomAction Id='MsiInstallDrivers'   BinaryKey='DIFxAppA.dll'
DllEntry='InstallDriverPackages'   SuppressModularization='yes'
Execute='deferred' Impersonate='no' />
      <CustomAction Id='MsiUninstallDrivers' BinaryKey='DIFxAppA.dll'
DllEntry='UninstallDriverPackages' SuppressModularization='yes'
Execute='deferred' Impersonate='no' />
      <CustomAction Id='MsiRollbackInstall'  BinaryKey='DIFxAppA.dll'
DllEntry='RollbackInstall'         SuppressModularization='yes'
Execute='rollback' Impersonate='no' />
      <CustomAction Id='MsiCleanupOnSuccess' BinaryKey='DIFxApp.dll'
DllEntry='CleanupOnSuccess'        SuppressModularization='yes'
Execute='immediate' />

I'd like to replace some of them with CustomActions that have
@Return="ignore" but are otherwise equivalent. Can I just add these same
items to my project's WXS and they will automatically override the ones
in the DIFxAppExtension? Obviously, I could skip the extension and just
do it myself--which is what I did before the extension was added in
v3.0--but it'd be easier to use the extension.

2. Is there as way to ignore the return code only on uninstall? Notice
that I can't change the CA IDs since they call each other, which seems
to rule out making two CAs--one with and one without--and giving them
different conditions.

3. What are some reasons why I shouldn't do this hack?

4. Does anyone (particularly at MSFT) have an inside track to getting
the DIFxApp team to fix this long-standing issue? It seems to me that
the uninstall should gracefully handle mangled driver store records
(cleaning them up), and rollbacks on major updates shouldn't mess up the
install.

Quinton Tormanen
Software Engineer
Delta Computer Systems, Inc.
http://www.deltamotion.com


------------------------------------------------------------------------------
This SF Dev2Dev email is sponsored by:

WikiLeaks The End of the Free Internet
http://p.sf.net/sfu/therealnews-com
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to