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
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to