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

Reply via email to