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