[wix-users] Driver uninstallation

Christopher Painter chrpai at iswix.com
Sat May 16 05:41:34 PDT 2020


BTW, since the approach I mentioned in my last message probably won't happen, perhaps it's time to break the rules intentionally.

You could install the files to your own directory and then just use a custom action to install your version of the driver if the driver is not present or older.   MSI wouldn't know about this so the component rules could be ignored.    The intent of the component rules would have to be honored by your custom action though.  Don't go overwriting newer versions of the driver with your driver.

________________________________
From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of Matthias Reuss via wix-users <wix-users at lists.wixtoolset.org>
Sent: Friday, May 15, 2020 11:32 AM
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Cc: Matthias Reuss <matthias.mr.reuss at wsa.com>
Subject: Re: [wix-users] Driver uninstallation

Yes, a shared *component* should look identical in all products.

Here, the situation is a bit more complex:

The applications sharing that driver are from different manufacturers, none of which is the manufacturer of the driver. Of course, each of these applications has its own target directory. We (and some others) do install a “local copy” of the driver to a subfolder of our target directory. This copied INF file is the key path of the INF component (code shown below) that then also contains the driver installation call.
So the component (and in particular its key file) is not shared, but the driver is.
I agree that this is not good installer design, but for an alternative, all manufacturers deploying that driver would have to agree on a common location to install the driver files, which does not sound practicable.

In general, I do not think that component referencing logic is suitable for shared drivers, since a driver is not just part of an application software, but also belongs to one ore more devices that may exist and may have to be functional regardless of the application(s) that first installed the driver.

So I would rather consider it dangerous to remove a driver, and rather default to not removing it on application uninstall.

DIFX – at least the MSI adaptation of DIFX – seems not to supply this flexibility.

BTW: Is there still a need to tie driver installation to a local copy of the driver? There is the copy in the DriverStore, an IMHO that should be enough.

--

Matthias Reuss

Von: Edwin Castro <egcastr at gmail.com>
Gesendet: Donnerstag, 14. Mai 2020 23:30
An: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Cc: Matthias Reuss <matthias.mr.reuss at wsa.com>
Betreff: Re: [wix-users] Driver uninstallation

A shared component should look identical in all products. Same component guid and same keypath (which implies files should be installed to the same common shared directory, perhaps under C:\Program Files\Common Files\MyCompany\Drivers) and same resources in the component. Wixlibs can be useful in ensuring shared components are identical between products.

Alternatively, you could have a product that installs the shared component and use a burn bundle to install the shared driver msi and the application msi package.

No matter how you fix this into the future for systems that haven't had any of the applications installed you will still need a strategy to fix up already installed systems. You may need to uninstall all old applications and replace them with new fixed applications. Didn't think through that too much.

--
Edwin G. Castro


On Thu, May 14, 2020 at 6:05 AM Matthias Reuss via wix-users <wix-users at lists.wixtoolset.org<mailto:wix-users at lists.wixtoolset.org>> wrote:
Hello,

we are installing some drivers with our software that are shared with other applications, i.e. there are some other installation packages that contain the same drivers.

We use the DifXApp extension to install the drivers, using components like the following:

<Component Id="SharedDriver_INF" Guid="{ANY-GUID}">
    <File Id="SharedDriver.inf" Name="SharedDriver.inf" KeyPath="yes" Source="$(var.DriverSourcePath)\SharedDriver.inf" />
    <File Id="SharedDriver.cat" Name="SharedDriver.cat" Source="$(var.DriverSourcePath)\SharedDriver.cat" />
    <DifxApp:Driver AddRemovePrograms="no" PlugAndPlayPrompt="no" Sequence="12" />
</Component>

Where the target directory of the component is c:\Program Files\MyCompany\Drivers\SharedDriver, i.e. a subfolder of the installation directory.

On uninstall, this does not only remove the "private" copy of the driver from that target directory, but also calls the driver uninstallation, which in turn may affect other software.

How do I alter this behaviour, i.e. remove the files that installation copied to the installation directory, but not uninstall the driver, so that the device can still be used?
I have not seen a matching attribute to DifxApp:Driver.

Best regards

Matthias Reuss

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/<https://eur02.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.firegiant.com%2F&data=02%7C01%7Cmatthias.mr.reuss%40wsa.com%7Cc078c693fbd2477d999308d7f84df79a%7C1a41b96d457d41ac94ef22d1901a7556%7C0%7C0%7C637250886061058606&sdata=ozxtdTz8MsoJIretWaRMFpxIYwxr%2Fv91%2Fsnq%2FwZQ3m0%3D&reserved=0>

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/



More information about the wix-users mailing list