1. We see the exact same problems with DIFxApp on major upgrades (which is the only type of upgrade we do). I would love to be able to track down the cause and have a better solution. If anyone has anything approaching a solution, please let us know! I realize that this issue is probably DIFxApp-specific and not really WiX related, but it would be great if someone in this community has some insight.
2. I do not see the second problem at all with our driver install. Any devices that are plugged in are "immediately" available with the new drivers after the install completes. In rare cases the user will be asked to restart the PC. Are your drivers digitally signed? Here is what our WiX looks like for the DifxAppExtension component. I did have to play around with the the DIFxApp options (now encoded in the difxns:Driver element) back when we first developed the driver to get the behavior I wanted. <Directory Id="USBDriver.ftdiport" Name="ftdiport"> <Component Id="WNT.FTDIPort.Driver" Guid="C8F98A76-DCE5-4d18-9989-1D7A82208E16" Win64="no"> <difxns:Driver ForceInstall="yes" AddRemovePrograms="no" PlugAndPlayPrompt="no" Sequence="1" /> <File Source="Image\USBDriver\ftdiport.inf" Checksum="yes" KeyPath="yes" /> <File Source="Image\USBDriver\ftdiport.cat" Checksum="yes" /> </Component> <Directory Id="USBDriver.ftdiport.amd64" Name="amd64"> <Component Id="WNT.FTDIPort.amd64.files" Guid="E22A2D10-3730-4e06-8DB6-9EF49A419D93" Win64="no"> <File Id="WNT.amd64.ftcserco.dll" Source="Image\USBDriver\amd64\ftcserco.dll" Checksum="yes" KeyPath="yes" /> <File Id="WNT.amd64.ftser2k.sys" Source="Image\USBDriver\amd64\ftser2k.sys" Checksum="yes" /> <File Id="WNT.amd64.ftserui2.dll" Source="Image\USBDriver\amd64\ftserui2.dll" Checksum="yes" /> </Component> </Directory> <Directory Id="USBDriver.ftdiport.i386" Name="i386"> <Component Id="WNT.FTDIPort.i386.files" Guid="78EB1DD1-A16E-4b26-9D36-B4A2D91ADAF8" Win64="no"> <File Id="WNT.i386.ftcserco.dll" Source="Image\USBDriver\i386\ftcserco.dll" Checksum="yes" KeyPath="yes" /> <File Id="WNT.i386.ftser2k.sys" Source="Image\USBDriver\i386\ftser2k.sys" Checksum="yes" /> <File Id="WNT.i386.ftserui2.dll" Source="Image\USBDriver\i386\ftserui2.dll" Checksum="yes" /> </Component> </Directory> </Directory> --Quinton -----Original Message----- From: James Johnston [mailto:johnst...@inn-soft.com] Sent: Monday, November 29, 2010 1:24 PM To: wix-users@lists.sourceforge.net Subject: [WiX-users] DIFxApp and upgrades Hi, A couple questions, both regarding DIFxApp. (We use it to install three drivers for three plug-and-play USB devices for a hardware product that we ship.) 1. Some time ago Rob Mensching mentioned the following on this list: "Yeah, there are some design issues in the DIFxApp code around Upgrades I'm still trying to figure out what to do with DIFx since we don't have the code to fix it here. I'll try to find someone to forward this thread to see if we can't get some movement (not that it has worked yet)." http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg35219.htm l I am very interested in knowing whether anybody here knows what some of these design issues might be? Can DIFxApp be used when an application must be serviced in the future? I looked through MSDN and did not find any mention one way or the other regarding DIFxApp and upgrades. If upgrades are not supported (which would seem like a serious deficiency!), what is the recommended way of servicing an app that uses DIFxApp? Just what, exactly, are the caveats involved with upgrades and DIFx? The reason I ask is that upgrades are not going as well as we would like. Currently we service our application very simply. Every new version is a major upgrade: new product code, new version number. We have always scheduled RemoveExistingProducts immediately after InstallInitialize. We have tested this in-house on just about every computer at our (small) company without any issue: the upgrades generally go very smoothly. Additionally, most of our customers have also done upgrades without issue. However, there have been a few customers (i.e. about 10: enough for us to not consider it to be an isolated incident) where they were unable to upgrade. The setup program will roll back and fail when upgrading. Also, they are then unable to uninstall the software: again, the setup program rolls back when attempting to remove the product. The MSI logs always point to DIFx as the problem, with DIFx indicating that key DIFx information in the registry is missing. Searching Google seems to indicate that we may not be the only people experiencing this issue. The problem has been observed on both Windows XP SP3 and Windows 7 (few customers use Vista). Every setup package uses the version of DIFx included with WiX 3.0 (I believe it's version 2.1.1). In order to get the customer working again, we have successfully used the following workaround in every case: (1) delete the key file as specified by the driver component, (2) do a repair of the existing product; the absence of the key file triggers MSI/DIFx to successfully install the driver again, (3) we can now uninstall the old product/MSI, (4) the new product/MSI can be installed. Unfortunately, we have not been able to reproduce the problem locally. That also means that we (obviously) haven't identified what it is about the customer computer that causes problems. 2. The second question is also related to upgrades. This one is easily reproducible. The problem is that the connected USB device is completely removed from Device Manager after the upgrade, and does not reappear until the "Scan for hardware changes" button in Device Manager is clicked. What seems to happen is the following: a. As part of the major upgrade, the old driver is uninstalled. At this time, the device is completely removed from Device Manager (like if I right-clicked it and said to uninstall it). b. The new driver is installed, but does not install/upgrade any driver for the connected device because it is no longer enumerated in Device Manager. (i.e. DIFx does not think any such device is connected & needs setup). c. Of course, the user proceeds to use our application, and wonders why the hardware device is no longer found. d. Clicking the "Scan for hardware changes" button in Device Manager (or rebooting) will enumerate the USB device and load the appropriate drivers from DIFx. At this point, our application will work again. It seems like this must be an extremely common occurrence with other plug-and-play widgets that use DIFxApp and need upgrading. I can easily enough add a custom action at the end of setup that calls the CM_Reenumerate_DevNode API (see http://support.microsoft.com/kb/259697). But given the fact that this seems like it should be a common situation: is this the recommended way to handle this? What is the best practice to use in this scenario? Does a custom action already exist for this? Am I doing something wrong with DIFx (i.e. do I need to change my usage of DIFx instead of write a custom action)? If anyone has so much as even heard of either of the issues above, I would be grateful for some advice or pointers in the right direction. Best regards, James Johnston ------------------------------------------------------------------------ ------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users