How do YOU deploy/install production drivers?

I’ve used WiX w/ difxapp in the past, but am looking to entertain other means for doing installation/updates/removals of device drivers. I realize use cases vary and often drivers are bundled with a larger package. That’s fine. I’d like to hear about that too. I’m just curious how others are managing their driver installs and maintenance.

xxxxx@hotmail.com wrote:

I’ve used WiX w/ difxapp in the past, but am looking to entertain other means for doing installation/updates/removals of device drivers. I realize use cases vary and often drivers are bundled with a larger package. That’s fine. I’d like to hear about that too. I’m just curious how others are managing their driver installs and maintenance.

The drivers I send out are fairly self-contained, usually with a driver
package and a couple of sample applications. I have an affinity for
simpler solutions, so I use NSIS to create an installer that copies the
files (including the driver package) into place and creates the
shortcuts, then fires up DPInst to pre-install the driver package. That
also puts me in the Uninstall Programs list, although I can’t convince
my users to use that before an upgrade…


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

NSIS with helper apps.

NSIS with custom plugins.

NSIS with DIFxAPI

WIX/MSI with Custom Actions

WIX/MSI with DIFxAPP

Self-extracting archive with help apps.

I try to use DIFxAPP with WIX generated MSIs and add in Custom Actions to
assist in corner cases.

What sort of driver (sets) are you specifically trying to install? That
plays a big role in determining the ‘path of least resistance / likely
robust success’.

Good Luck,
Dave Cattley

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@hotmail.com
Sent: Thursday, August 25, 2011 5:06 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] How do YOU deploy/install production drivers?

I’ve used WiX w/ difxapp in the past, but am looking to entertain other
means for doing installation/updates/removals of device drivers. I realize
use cases vary and often drivers are bundled with a larger package. That’s
fine. I’d like to hear about that too. I’m just curious how others are
managing their driver installs and maintenance.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

NSIS works for me too, although its scripting language is frequently a bit
cryptic. I rely on dpinst to do the heavy lifting, invoked through NSIS.

Mark Roddy

On Thu, Aug 25, 2011 at 5:37 PM, Tim Roberts wrote:

> xxxxx@hotmail.com wrote:
> > I’ve used WiX w/ difxapp in the past, but am looking to entertain other
> means for doing installation/updates/removals of device drivers. I realize
> use cases vary and often drivers are bundled with a larger package. That’s
> fine. I’d like to hear about that too. I’m just curious how others are
> managing their driver installs and maintenance.
>
> The drivers I send out are fairly self-contained, usually with a driver
> package and a couple of sample applications. I have an affinity for
> simpler solutions, so I use NSIS to create an installer that copies the
> files (including the driver package) into place and creates the
> shortcuts, then fires up DPInst to pre-install the driver package. That
> also puts me in the Uninstall Programs list, although I can’t convince
> my users to use that before an upgrade…
>
> –
> Tim Roberts, xxxxx@probo.com
> Providenza & Boekelheide, Inc.
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

On 25/08/2011 22:37, Tim Roberts wrote:

The drivers I send out are fairly self-contained, usually with a
driver package and a couple of sample applications. I have an affinity
for simpler solutions, so I use NSIS to create an installer that
copies the files (including the driver package) into place and creates
the shortcuts, then fires up DPInst to pre-install the driver package.
That also puts me in the Uninstall Programs list, although I can’t
convince my users to use that before an upgrade…

I use WiX for all but the simplest of projects. If I need to create a
simple distribution for internal use or demo that does more than just
unpack files - for example adding a couple of registry entries and
registering DLLs I might use NSIS, but I think there are alternatives
which are simpler which would avoid having to use its assembly-like
syntax (IntCmp $0 5 is5 lt5label gt5label - and StrCmp $0 “a string” 0 +3).

The problem with NSIS is it may be simpler for developers, but I’ve
found it can create quite a mess on end-users computers unless you’re
really careful. For example in NSIS you use RegDLL to register COM dlls,
whereas Microsoft recommend against selfreg because it runs arbitrary
code. Also, NSIS creates additional complications by requiring the
developer to ensure all the files etc. are deleted during
uninstallation, which MSI handles for you. You also have to create your
own method for detecting upgrades, since I don’t think there’s a way by
default for it to identify different versions of the same product.

In addition its diagnostics seem rather poor: if you get something wrong
in the .nsi file I’ve found that makensis tends to crash instead of
producing a useful error message.


Bruce Cran

@Bruce Cran:
You don’t have to use IntCmp and StrCmp directly:
!include LogicLib.nsh
${If} $0 <> 5
;…
${Else}
;…
${EndIf}

Also, if you get crashes, report it: sourceforge.net/tracker/?group_id=22049&atid=373085

I wrote my own C command-line install app, based on DevCon ideas and calling SetupAPI.

The installer of the whole product just runs my app.


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com

wrote in message news:xxxxx@ntdev…
> I’ve used WiX w/ difxapp in the past, but am looking to entertain other means for doing installation/updates/removals of device drivers. I realize use cases vary and often drivers are bundled with a larger package. That’s fine. I’d like to hear about that too. I’m just curious how others are managing their driver installs and maintenance.
>

For the most part I just want a single executable that I can run time after time and upgrades are done properly.

Like I said I’m using WiX, but have had issues in the past with the upgrade procedure. It always seems more reliable to do a uninstall before an installation of the new release (in my experience).

Before posting this question I had just ran into another case where I didn’t handle the upgrade properly, and was curious what others were doing for deployment.

On 30/08/2011 22:19, xxxxx@hotmail.com wrote:

For the most part I just want a single executable that I can run time after time and upgrades are done properly.

Like I said I’m using WiX, but have had issues in the past with the upgrade procedure. It always seems more reliable to do a uninstall before an installation of the new release (in my experience).

Before posting this question I had just ran into another case where I didn’t handle the upgrade properly, and was curious what others were doing for deployment.

I’d recommend asking on wix-users mailing list - switching to NSIS is
likely to just bring more problems if my experience is anything to go
by, since you’ll have to detect an upgrade scenario and manually run
msiexec /x. With WiX you can tell Windows Installer when to uninstall
the previous version when upgrading using a ‘major upgrade’. There are
two places: one before InstallExecute where the entire product gets
uninstalled then the new copy installed - and after InstallExecute where
the new files get written and components (i.e. files, since you only
have one file per component) which have been removed finally get
deleted. To avoid problems I’d probably use the first way. Personally I
use dotNetInstaller to bootstrap the MSI and pass any flags (e.g.
REINSTALLMODE=vamus), but I know people have been starting to use Burn
since it’s bundled with WiX 3.6.


Bruce Cran