I emailed difxt...@microsoft.com and received this response.
"AFAIK, Difx doesn’t do anything to explicitly support RemoveExistingProducts.  
The scenario 
described on that page would require it to rollback a partial install of a new 
driver and the 
previous uninstall of the old driver.  The limited functionality in the 
rollback mechanism of DIFx 
does not support that."

So it looks like there isn't going to be a fix for this.

Rob

On 11/03/2011 14:00, Rob Hamflett wrote:
> I appear to be looking at the same problem.  I was able to reproduce it by 
> hitting 'cancel' near the
> end of an uninstall and letting it rollback.  After that uninstallation 
> failed.  Performing a repair
> fixed things.  Did you email the difx team at the email address Quinton 
> suggested, and if so, did
> you ever hear anything back.
>
> Thanks,
> Rob
>
> On 10/12/2010 20:37, James Johnston wrote:
>> Seeing as how this seems to be a fundamental problem with DIFxApp not
>> handling all the upgrade possibilities well, I was curious to see how other
>> products do things and so I ripped apart some MSIs in Orca.  I was looking
>> to see if DIFxApp was set up the same way (CustomAction table).  I also
>> inspected the placement of the RemoveExistingProducts action since after my
>> previous e-mail I believe that this plays a critical role in whether this
>> corrupted system state may occur.  Since I haven't seen any other indication
>> or documentation on the Internet (a Google search for RemoveExistingProducts
>> and DIFxApp reveals little), I thought it would be useful to report my
>> findings so others can see what some commercial software is doing.  My
>> findings:
>>
>> All products using DIFxApp place MsiProcessDrivers and MsiCleanupOnSuccess
>> actions in the normal places.  CustomAction types are always the same.  I
>> identified the program used to compile the MSI by looking at the self-named
>> custom actions each install tool tends to create (e.g. InstallShield has its
>> own DLL with tons of custom actions).
>>
>> Refer to
>> http://jpassing.com/2007/06/16/where-to-place-removeexistingproducts-in-a-ma
>> jor-msi-upgrade/ to better understand the placement of
>> RemoveExistingProducts action.  Examining this table leads me to believe
>> that placement between InstallInitialize and InstallFinalize is the best
>> place, since a canceled setup will always leave the old version on the
>> computer, no matter what.  But this doesn't seem to work with DIFxApp due to
>> its bug, as previously noted.
>>
>> My product (with the rollback problem):  Compiled with WiX and uses DIFxApp.
>> RemoveExistingProducts is placed after InstallInitialize.  According to the
>> previous link, a failure at any time (uninstall or reinstall) results in
>> only the old version remaining: leaving system state exactly as it was
>> found.  Unfortunately, as previously noted, a bug in DIFxApp prevents this
>> from happening.
>>
>> Apple Mobile Device Support (included with iTunes; presumably their iPod
>> drivers, etc.).  Compiled with WiX and uses DIFxApp.  RemoveExistingProducts
>> is placed after InstallFinalize.  Probably the DIFxApp bug is not a problem
>> here, because the new version is installed before the old version is
>> uninstalled.  An error in the new version setup (from DIFx or other source)
>> would still leave the old version and its drivers untouched.  An error in
>> the old version uninstall would leave the new version&   its drivers
>> untouched.  According to the table at the above link, the pitfall is that if
>> the uninstall fails, then BOTH versions of the product remain installed on
>> the computer.  This seems like a very inconsistent, illogical state to be
>> in; I can imagine that there could be some issues with a lot of products
>> (including mine) if this were to happen.  (Perhaps an MSI expert can
>> convince me otherwise?  Otherwise, I wonder if Apple's software can get
>> itself in a bad way if I click Cancel at just the right moment.)
>>
>> Microsoft LifeCam (webcam driver).  Don't know what compiled this; I didn't
>> see any obvious indications.  It uses DIFxApp.  RemoveExistingProducts is
>> placed after InstallInitialize.  It therefore appears to be in a very
>> similar configuration as with my product, and I believe it would leave the
>> user's DIFxApp state inconsistent if the upgrade was canceled at just the
>> right moment.  It is interesting to note that the MSI file is wrapped by a
>> bootstrapper: the MSI itself throws no UI.  The bootstrapper does NOT
>> present the user with a Cancel button.  Perhaps this is a reason why?
>>
>> Oracle VirtualBox (virtual network drivers).  Compiled with WiX and uses
>> DIFxApp.  RemoveExistingProducts is placed between InstallValidate and
>> InstallInitialize.  This seems like the best place to put it.  Uninstall
>> happens first, so there's no possibility of having both versions at the same
>> time.  If the uninstall fails, then the old version remains.  If the install
>> fails, then nothing remains on the computer (i.e. the old version is not
>> reinstalled).  I don't see how this DIFxApp bug would be a problem in this
>> scenario since the old version isn't reinstalled.
>>
>> Western Digital SmartWare (some proprietary driver for external hard drive).
>> Compiled with Advanced Installer and uses DIFxApp.  RemoveExistingProducts
>> is placed between InstallValidate and InstallInitialize, like with
>> VirtualBox.
>>
>> HP OfficeJet 8500.  Compiled with WiX.  RemoveExistingProducts is placed
>> after InstallInitialize so I suspect their installer has the same bug.
>>
>> Intel Network Connections driver, MS Virtual PC 2007, and VMware Workstation
>> 7:  these products use Windows Installer but have proprietary, non-DIFxApp
>> custom actions for installing drivers.
>>
>> Logitech webcam driver, Dell V310 printer driver, NVIDIA graphics drivers,
>> ATI Radeon graphics driver, Intel HD graphics driver, Intel DH55HC drivers,
>> Intel HD Audio drivers:  these products did not appear to use Windows
>> Installer for installing the drivers.  (Some drivers had MSI files for
>> helper/utility programs but did not have the MsiDriverPackages table so I
>> conclude they do something else).
>>
>> Best regards,
>>
>> James Johnston
>>
>> -----Original Message-----
>> From: Quinton Tormanen [mailto:quint...@deltamotion.com]
>> Sent: Friday, December 10, 2010 17:53
>> To: General discussion for Windows Installer XML toolset.
>> Subject: Re: [WiX-users] DIFxApp does not properly rollback to the old
>> driverwhen doing a major upgrade
>>
>> Thanks for digging into this further. The support e-mail for DIFx Tools is
>> difxt...@microsoft.com. I have received responses over the years from
>> different people, but never any resolution to my problems. If that e-mail
>> address is no longer valid, then I can give you the addresses of the
>> specific people that replied. Please keep me posted on what you find out.
>>
>> --Quinton
>>
>> -----Original Message-----
>> From: James Johnston [mailto:johnst...@inn-soft.com]
>> Sent: Thursday, December 09, 2010 3:46 PM
>> To: wix-users@lists.sourceforge.net
>> Subject: [WiX-users] DIFxApp does not properly rollback to the old
>> driverwhen doing a major upgrade
>>
>>> Hi,
>>>
>>> As some of you have probably noticed, there has been some discussion
>>> recently regarding problems with DIFxApp causing rollbacks.  I did
>> some more
>>> investigation and was able to reliably reproduce the issue and come up
>> with
>>> a very good idea on what is causing the problem.  All investigation
>> was done
>>> with the version of DIFxApp included with Windows DDK version
>> 7600.16385.1;
>>> note that this will also reproduce with the version included with WiX
>> 3.0 /
>>> 3.5.  It was done on a clean Windows XP SP2 virtual machine with .NET
>>> Framework 2.0; however we have observed the same problems on Windows
>> 7.
>>>
>>> As far as I can tell, this is a bug in the DIFxApp DLLs and/or the WiX
>>> extension for DIFxApp.  If anyone knows some good workarounds, or how
>> to
>>> report this to the proper channels and get it fixed it would be much
>>> appreciated!  From what I can tell, there exist situations in any
>> DIFxApp
>>> setup program doing an upgrade where if the user cancels the setup at
>> a
>>> certain point (or there is an error in the installation of the new
>> product)
>>> then the user's system will be hosed and they would be unable to
>> uninstall
>>> the product without some involved technical support.
>>>
>>> If the bug can't be fixed or worked around, I don't see how DIFxApp is
>>> suitable for use in a commercial product that needs to support
>> upgrades
>>> (i.e. all products).  And since DIFxApp isn't open source, I can't go
>> in and
>>> just fix the problem.  Very frustrating!
>>>
>>> ...
>>
>> ----------------------------------------------------------------------------
>> --
>> Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
>> new data types, scalar functions, improved concurrency, built-in packages,
>> OCI, SQL*Plus, data movement tools, best practices and more.
>> http://p.sf.net/sfu/oracle-sfdev2dev
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>>
>> ------------------------------------------------------------------------------
>> Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
>> new data types, scalar functions, improved concurrency, built-in packages,
>> OCI, SQL*Plus, data movement tools, best practices and more.
>> http://p.sf.net/sfu/oracle-sfdev2dev
>
>
> ------------------------------------------------------------------------------
> Colocation vs. Managed Hosting
> A question and answer guide to determining the best fit
> for your organization - today and in the future.
> http://p.sf.net/sfu/internap-sfd2d


------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to