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


------------------------------------------------------------------------------
What happens now with your Lotus Notes apps - do you make another costly 
upgrade, or settle for being marooned without product support? Time to move
off Lotus Notes and onto the cloud with Force.com, apps are easier to build,
use, and manage than apps on traditional platforms. Sign up for the Lotus 
Notes Migration Kit to learn more. http://p.sf.net/sfu/salesforce-d2d
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to