RSS Feed

Drivers Kit

Posted on Thursday, May 7, 2009 in Uncategorized

Thanks for visiting our site!
We hope you will find the Drivers Kit information that you seek.
We welcome you to browse our website and use the search feature if there is something in particular you are looking for.


We"ve included some information on each page for your reading.

Check Ebay for Drivers Kit products.

1x DIY Kit 10W White High Power LED + Lens + Driver + Heat Sink
1x DIY Kit 10W White High Power LED + Lens + Driver + Heat Sink
Paypal   US $13.99
20W White High Power Led Light + AC Driver + Lens + Heat Sink DIY Kit
20W White High Power Led Light + AC Driver + Lens + Heat Sink DIY Kit
Paypal   US $27.99
ECONOLINE VAN FORD 03-07 DRIVER+PASSENGER HEADLIGHTS+CORNER LAMPS COMBO KIT PAIR
ECONOLINE VAN FORD 03-07 DRIVER+PASSENGER HEADLIGHTS+CORNER LAMPS COMBO KIT PAIR
Paypal   US $86.90
95-99 CHEVY SUBURBAN SUV EXTERIOR DOOR HANDLE KIT DRIVER+PASSENGER SIDE C/K C10
95-99 CHEVY SUBURBAN SUV EXTERIOR DOOR HANDLE KIT DRIVER+PASSENGER SIDE C/K C10
Paypal   US $66.95
MAKITA 9.6V IMPACT DRIVER KIT
MAKITA 9.6V IMPACT DRIVER KIT
Paypal   US $35.00
Makita 6011D 3/8
Makita 6011D 3/8" Cordless Drill/Driver kit
Paypal   US $35.00
8 x 65mm Nut Setter Driver Hex Socket Bits Kit 5 Pcs
8 x 65mm Nut Setter Driver Hex Socket Bits Kit 5 Pcs
Paypal   US $8.34
Universal Camshaft Bearing Driver Kit Removal Installation with Case Proform
Universal Camshaft Bearing Driver Kit Removal Installation with Case Proform
Paypal   US $6.52
Electronic Kit -Touch Sense Switch - 8 Ch - 12V Drivers
Electronic Kit -Touch Sense Switch - 8 Ch - 12V Drivers
Paypal   US $56.00
DEWALT DC725KA 1/2
DEWALT DC725KA 1/2" HAMMERDRILL / DRIVER KIT (NEW IN BOX)
Paypal   US $149.00
NEW ROADPRO PROFESSIONAL DRIVER SERIES RP63052 BLOW GUN KIT AIR TOOL HOSE 90PSI
NEW ROADPRO PROFESSIONAL DRIVER SERIES RP63052 BLOW GUN KIT AIR TOOL HOSE 90PSI
Paypal   US $9.99
New! Dewalt 18V Cordless 1/2
New! Dewalt 18V Cordless 1/2" Compact Drill Driver Kit DC970K-2
Paypal   US $78.00
PORTER-CABLE 18V 3-Tool NiCD Combo Kit- Drill/Driver, Impact Driver & Flashlight
PORTER-CABLE 18V 3-Tool NiCD Combo Kit- Drill/Driver, Impact Driver & Flashlight
Paypal   US $33.88
Tool Set Screw Drivers Screwdrivers Kit for Sony Laptop
Tool Set Screw Drivers Screwdrivers Kit for Sony Laptop
Paypal   US $5.20
15 Tools Set Screw Drivers Screwdrivers Kit Dell Laptop
15 Tools Set Screw Drivers Screwdrivers Kit Dell Laptop
Paypal   US $5.20
Full Kit 06-08 Toyota Yaris 4D Sedan OE Style Clear Lens Fog Lights+Switch+Bulb
Full Kit 06-08 Toyota Yaris 4D Sedan OE Style Clear Lens Fog Lights+Switch+Bulb
Paypal   US $45.99
Full Kit 06-07 Accord 4DR Sedan Clear Lens Driving/Bumper Fog Lights w/Switch
Full Kit 06-07 Accord 4DR Sedan Clear Lens Driving/Bumper Fog Lights w/Switch
Paypal   US $46.20
Hitachi DS14DVF3 14.4V 3/8in. Driver Drill Kit w/ Light
Hitachi DS14DVF3 14.4V 3/8in. Driver Drill Kit w/ Light
Paypal   US $20.00
Hex 4pcs Screw Driver Tools Kit Set for RC Helicopter
Hex 4pcs Screw Driver Tools Kit Set for RC Helicopter
Paypal   US $9.99
BRAND NEW DeWalt 20v Lithium Ion Compact 1/2
BRAND NEW DeWalt 20v Lithium Ion Compact 1/2" Drill / Driver Kit DCD780C2
Paypal   US $105.00
BRAND NEW DeWalt 20v Lithium Ion Compact 1/2
BRAND NEW DeWalt 20v Lithium Ion Compact 1/2" Drill / Driver Kit DCD780C2
Paypal   US $107.55
G 26  HO Scale Farm Cart with (2) Shire Horses and Driver KIT
G 26 HO Scale Farm Cart with (2) Shire Horses and Driver KIT
Paypal   US $24.25
G 10  HO Scale Hansom Cab with Driver KIT
G 10 HO Scale Hansom Cab with Driver KIT
Paypal   US $14.95
TAYLORMADE R9 SUPERTRI DRIVER ACCESSORY KIT / WRENCH ~ NEW
TAYLORMADE R9 SUPERTRI DRIVER ACCESSORY KIT / WRENCH ~ NEW
Paypal   US $4.99
Peavey RX 22 Replacement Diaphragm Kit High Frequency Professional Driver
Peavey RX 22 Replacement Diaphragm Kit High Frequency Professional Driver
Paypal   US $49.99
10T Hydraulic Knockout Punch Hand Pump 6 Dies Hole Tool Driver Kit w/ Metal Case
10T Hydraulic Knockout Punch Hand Pump 6 Dies Hole Tool Driver Kit w/ Metal Case
Paypal   US $100.90
8 x 65mm Nut Setter Driver Hex Socket Bits Kit 5 Pcs
8 x 65mm Nut Setter Driver Hex Socket Bits Kit 5 Pcs
Paypal   US $8.66
MILWAUKEE Compact Drill/Driver Kit, 18.0 VDC.1/2 In
MILWAUKEE Compact Drill/Driver Kit, 18.0 VDC.1/2 In
Paypal   US $139.99
5Pcs 7 x 65mm Nut Setter Driver Hex Socket Bits Kit
5Pcs 7 x 65mm Nut Setter Driver Hex Socket Bits Kit
Paypal   US $7.05
125pc Power Tools Drill Bit and Driver Set w/ Case Multi-Bit Sets Tool Kit
125pc Power Tools Drill Bit and Driver Set w/ Case Multi-Bit Sets Tool Kit
Paypal   US $29.95
New Triangle Screw Driver Repair Open Tool Kit for iRobot Roomba Battery ZWSR051
New Triangle Screw Driver Repair Open Tool Kit for iRobot Roomba Battery ZWSR051
Paypal   US $3.99
NEW DeWalt DC720KA 18V 1/2
NEW DeWalt DC720KA 18V 1/2" Cordless Variable Speed Drill/ Driver Kit
Paypal   US $80.00
32 in 1 Screw Driver Tool Kit Mobile Phone Laptop B336
32 in 1 Screw Driver Tool Kit Mobile Phone Laptop B336
Paypal   US $9.70
Milwaukee M18 Red Lithium Cordless Hammer Drill and Impact Driver KIT
Milwaukee M18 Red Lithium Cordless Hammer Drill and Impact Driver KIT
Paypal   US $180.49
NEW Adams Speedline FAST 12 LS Driver 8.5° w/ Kit, Fubuki Alpha Shaft Stiff-Flex
NEW Adams Speedline FAST 12 LS Driver 8.5° w/ Kit, Fubuki Alpha Shaft Stiff-Flex
Paypal   US $399.99
NEW Adams Speedline FAST 12 LS Driver 9.5° w/ Kit, Fubuki Alpha Shaft Stiff-Flex
NEW Adams Speedline FAST 12 LS Driver 9.5° w/ Kit, Fubuki Alpha Shaft Stiff-Flex
Paypal   US $399.99
TaylorMade R11  Driver Wrench Tool Kit w/manual New in package  TaylorMade Golf
TaylorMade R11 Driver Wrench Tool Kit w/manual New in package TaylorMade Golf
Paypal   US $8.99
New Triangle Screw Driver Repair Open Tool Kit for iRobot Roomba Battery ZVSR051
New Triangle Screw Driver Repair Open Tool Kit for iRobot Roomba Battery ZVSR051
Paypal   US $3.99
Brand New DeWalt Lithium Ion Drill Impact Driver Kit 12v Max DCK211S2 NIB
Brand New DeWalt Lithium Ion Drill Impact Driver Kit 12v Max DCK211S2 NIB
Paypal   US $137.50
TOP END KIT FORD 289 302 CUSTOM  PERFORMANCE STREET- STRIP-DAILY DRIVER
TOP END KIT FORD 289 302 CUSTOM PERFORMANCE STREET- STRIP-DAILY DRIVER
   US $1,450.00
2002 2003 2004 JEEP LIBERTY HALO PROJECTOR FOG LIGHT DRIVER+PASSENGER SIDE KIT
2002 2003 2004 JEEP LIBERTY HALO PROJECTOR FOG LIGHT DRIVER+PASSENGER SIDE KIT
Paypal   US $80.25
New Dewalt 18V Cordless 1/2
New Dewalt 18V Cordless 1/2" Compact Drill Driver Kit DC970K-2
Paypal   US $76.00
Emergency REPAIR KIT for Sunglass / Eyeglass screw driver, nose piece, nuts
Emergency REPAIR KIT for Sunglass / Eyeglass screw driver, nose piece, nuts
Paypal   US $5.99
Porter-Cable PCL180DRK-2 18 Volt Lithium Drill/ Driver Kit
Porter-Cable PCL180DRK-2 18 Volt Lithium Drill/ Driver Kit
Paypal   US $49.99
TP TAYLORMADE WEIGHT TOOL KIT DRIVER MWT FCT R9 R11 RED GREY
TP TAYLORMADE WEIGHT TOOL KIT DRIVER MWT FCT R9 R11 RED GREY
Paypal   US $32.00
TP TAYLORMADE WEIGHT TOOL KIT DRIVER MWT FCT R9 R11 BLACK WHITE
TP TAYLORMADE WEIGHT TOOL KIT DRIVER MWT FCT R9 R11 BLACK WHITE
Paypal   US $33.50
MILWAUKEE 18 VOLT CORDLESS 1/2
MILWAUKEE 18 VOLT CORDLESS 1/2" DRIVER/DRILL KIT /ALL METAL CHUCK (NEW IN BOX)
Paypal   US $111.59
98-00 COROLLA CE/LE/VE NEW SPLASH SHIELD COVER L/H DRIVER INNER FENDER LINER KIT
98-00 COROLLA CE/LE/VE NEW SPLASH SHIELD COVER L/H DRIVER INNER FENDER LINER KIT
Paypal   US $22.14
Timing IC Kit with Output Drivers & PCB (#1710)
Timing IC Kit with Output Drivers & PCB (#1710)
Paypal   US $11.99
1/20 TAMIYA Wolf WR1 Ford F1 GP RACE CAR MODEL KIT W/ DRIVER MIB GC-2001
1/20 TAMIYA Wolf WR1 Ford F1 GP RACE CAR MODEL KIT W/ DRIVER MIB GC-2001
Paypal   US $44.00
Powered by phpBay Pro

Another great place to shop for Drivers Kit products is Amazon. They have more than just books!

KitchenAid Blender Coupling 9704230 KitchenAid Blender Coupling 9704230
List Price: $14.99
Sale Price: $0.50

This is a brand new coupler to replace your worn out one in your KitchenAid Blender. Fits all colors and configurations of the following models: KSB3 KSB5 Note that this will fit your blender if it begins with either "KSB3" or "KSB5"...

KITCHENAID BLENDER RUBBER COUPLER 9704230 WITH REMOVAL TOOL KITCHENAID BLENDER RUBBER COUPLER 9704230 WITH REMOVAL TOOL
Sale Price: $13.95

KITCHENAID BLENDER COUPLER WITH UNIQUE REMOVAL TOOL! REMOVAL TOOL IS EASY TO USE AND WILL NOT SCRATCH OR HARM YOUR BLENDER!

Vitamix Drive Socket Kit Vitamix Drive Socket Kit
Sale Price: $11.89

Replace your worn out drive socket in any type of Vitamix machine with this replacement kit.

Big Funny Big Funny
List Price: $9.98
Sale Price: $2.91

I can't authenticate the autograph, but it was obtained from a Dreamworks employee. Stickered: "featuring Marty Stuart" on one track. Small hole in barcode art.

Uncorked [Original Motion Picture Soundtrack] Uncorked [Original Motion Picture Soundtrack]
List Price: $16.98
Sale Price: $9.41

Pass the CDL Exam Video [VHS] Pass the CDL Exam Video [VHS]
List Price: $63.95
Sale Price: $65.84

For exam preparation or other courses at community colleges or private driving schools that culminate with students taking the CDL exam, this preparation manual offers extensive learning aids, vocabulary listings, glossary of terms, and sample quizzes to reinforce the topics presented in the text...

Drivers, Drugs, & Drinking Training Kit [VHS] Drivers, Drugs, & Drinking Training Kit [VHS]

Drivers, Drugs & Drinking Training Kit (184-K) 17-minute video includes: devastating effects drugs & alcohol have on the driver and driver's career, often tragic consequences of abuse, DOT regulations that affect drivers, and how to comply.

SE 3 Pc. Power Extension Socket Bits for Drills SE 3 Pc. Power Extension Socket Bits for Drills
List Price: $5.12
Sale Price: $1.50

Add versatility to your power drills. 3pc Power Extension Socket Adaptor has Hex bit for all power drill chucks. Comes in 3 Sizes : 1/4 in. , 3/8 in. & 1/2 in.for your full range of sockets.

Silverhill 20 Piece Tool Kit for Apple Products Silverhill 20 Piece Tool Kit for Apple Products
List Price: $9.99
Sale Price: $11.95

New from Silverhill Tools is a useful kit that helps with doing many of the routine tasks associated with Mac ownership, including accessing memory slots or opening housings. Includes 5 screwdrivers: Pentalobe size 1, Pentalobe size 5, flat, phillips, and Triwing...

8pc T6 T5 iPhone pentalobe, cross Opener Screwdriver Tool Kit for Opening BlackBerry Phones PDA MP3 Palm Treo Pocket PC Laptop iPhone Blackberry universal cell phone repair tool 8pc T6 T5 iPhone pentalobe, cross Opener Screwdriver Tool Kit for Opening BlackBerry Phones PDA MP3 Palm Treo Pocket PC Laptop iPhone Blackberry universal cell phone repair tool
Sale Price: $0.01

8pc T6 T5 Opener Screwdriver Tool Kit for Opening BlackBerry Phones PDA MP3 Palm Treo Pocket PC Laptop Blackberry universal cell phone repair tool

Wounded Hearts Wounded Hearts
List Price: $14.98
Sale Price: $4.94

Following the tragic death of his wife, Houston-based jazz musician and part-time cab driver Jay attempts to get on with his life while raising a young daughter and struggling with the temptations of alcohol...

Budget TJ Jeep Part III Budget TJ Jeep Part III
Sale Price: $1.99

"Nominate a Hero" UTV Giveaway
Sale Price: $1.99

Omron BP791IT 10+ Series Upper Arm Blood Pressure Monitor, Black/white, Large Omron BP791IT 10+ Series Upper Arm Blood Pressure Monitor, Black/white, Large
List Price: $109.99
Sale Price: $78.00

The Omron 10+ SERIES upper arm home blood pressure monitor has advanced features that provide users with detailed information to better manage their heart health. With a touch of a button, you can learn all you need to know about your blood pressure and be reassured you're getting an accurate reading, thanks to the Calibration Check System and the Cuff Wrap Guide...


Here are some more information for Drivers Kit:
Drivers Kit

Drivers Installation With WiX

Written by:

Yuri Maxutenko,
Junior Software Developer of Device Team

Apriorit Inc.

Table of Contents

Signed and Unsigned Drivers Installation and Uninstallation Using WiX

How does DPInst work?

DPInst and System Restore

The Issues With the Unsigned Drivers

Windows Installer Packages Installation and Uninstallation Using  WiX

Summary

Bibliography

Signed and Unsigned Drivers Installation and Uninstallation Using WiX

Very often the driver package is represented by the folder containing INF, SYS, CAT, DLL, and other files. In this case the driver installation description is located in the INF files. To install or uninstall such drivers you can use Microsoft DPInst utility. It is the part of the Microsoft Windows Driver Kit (you can download it from Microsoft site - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=2105564e-1a9a-4bf4-8d74-ec5b52da3d00). Please note, that WDK distribution contains DPInst versions for both x86 and x64 platforms.

For example, we have extracted DPInst.exe versions for x86 and x64 platforms from Windows Driver Kit and placed them to the “C:DPInstx32” and “C:DPInstx64” folders correspondingly.

Let’s define the appropriate WiX components:

 

<Component Id="DPInst_x32" Guid="PLACE-YOUR-GUID-HERE">

<File Id="DPInst.exe_x32" Name="DPInst.exe" LongName="DPInst.exe"

Vital="yes" DiskId="1" src="C:DPInstx32DPInst.exe" />

<Condition>NOT VersionNT64</Condition>

</Component>

 

<Component Id="DPInst_x64" Guid="PLACE-YOUR-GUID-HERE">

<File Id="DPInst.exe_x64" Name="DPInst.exe" LongName="DPInst.exe"

Vital="yes" DiskId="1" src="C:DPInstx64DPInst.exe" />

<Condition>VersionNT64</Condition>

</Component>

and features:

 

<Feature Id='DPInst_x32' Level='0' AllowAdvertise="no"

Absent="disallow" Display="hidden">

<ComponentRef Id='DPInst_x32' />

<Condition Level="1">NOT VersionNT64</Condition>

</Feature>

<Feature Id='DPInst_x64' Level='0' AllowAdvertise="no"

Absent="disallow" Display="hidden">

<ComponentRef Id='DPInst_x64' />

<Condition Level="1">VersionNT64</Condition>

</Feature>

Please note, that the GUIDs of the components  provided in all examples in this article are not real. You must generate your own GUIDs to use given parts of code in your projects.

Also let’s add two driver components: Signed_driver and Unsigned_driver. For example, their files are located in “C:DriversSigned_driver” and “C:DriversUnsigned_driver” folders correspondingly.

The components:

 

<Directory Id="Signed_driver" Name="SIGNED_1"

LongName="Signed_driver">

<Component Id="Signed_driver" DiskId="1" Guid="PLACE-YOUR-GUID-

HERE">

<File Id="driver1.cat" Name="driver1.cat"

src="C:DriversSigned_driverdriver1.cat" />

<File Id="driver1.inf" Name="driver1.inf"

src="C:DriversSigned_driverdriver1.inf" />

<File Id="driver1.sys" Name="driver1.sys"

src="C:DriversSigned_driverdriver1.sys" />

</Component>

</Directory>

<Directory Id="Unsigned_driver" Name="UNSIGN_1"

LongName="Unsigned_driver">

<Component Id="Unsigned_driver" DiskId="1" Guid="PLACE-YOUR-GUID-

HERE">

<File Id="driver2.inf" Name="driver2.inf"

src="C:DriversUnsigned_driverdriver2.inf" />

<File Id="driver2.sys" Name="driver2.sys"

src="C:DriversUnsigned_driverdriver2.sys" />

</Component>

</Directory>

And the feature for them:

 

<Feature Id="RootFeature" Level="1" ConfigurableDirectory="TARGETDIR"

Description="Sample" Display="expand" Title="Sample"

AllowAdvertise="no" TypicalDefault="install">

<Feature Id="Drivers" Level="1" AllowAdvertise="no"

ConfigurableDirectory="TARGETDIR" Description="Drivers"

Display="collapse" Title="Drivers" >

<ComponentRef Id='Signed_driver' />

<ComponentRef Id='Unsigned_driver' />

</Feature>

</Feature>

Installation

To install all INF files from the specified directory you can use the following DPInst command line:

 

DPInst.exe [/LM] [/SW] [/Q] [/SA] /PATH "Path to the drivers folder"

The /LM key allows you to launch the utility in ‘legacy’ mode (obsolete on Windows Vista and higher). In such case DPInst will install even unsigned drivers and those drivers which miss some of the files described in their INF files.

The /SW key turns off the displaying of the DPInst GUI. Note, that the operating system still will be able to display dialogs (such as the unsigned driver installation warnings, for example).

The /Q key turns off both the displaying of the DPInst GUI and the displaying of the operating system dialogs. In this case, if DPInst meets an unsigned driver, the operating system will not display the installation prompt for it and such driver will be skipped.

The /SA key turns off the creation of the ‘Add/Remove Programs’ entry for each installed INF file (otherwise DPInst will create it by default).

After the /PATH key you should specify the path to the folder containing driver package.

Now let’s see how this stuff works inside the WiX script.

We will use the installation custom actions to install signed and unsigned drivers with DPInst.

The custom actions definitions for both packages look as follows:

 

<CustomAction Id='Install_Signed_Driver' Execute='deferred'

Directory='Drivers' ExeCommand='&amp;quot;[Drivers]DPinst.exe&amp;quot; /SW

/SA /PATH &amp;quot;[Signed_driver]' Return='ignore' />

<CustomAction Id='Install_Unsigned_Driver' Execute='deferred'

Directory='Drivers' ExeCommand='&amp;quot;[Drivers]DPinst.exe&amp;quot; /LM

/SW /SA /PATH &amp;quot;[Unsigned_driver]' Return='ignore' />

Now we should schedule these actions for execution. We will do it in the InstallExecuteSequence. To setup drivers correctly we must be sure that all required files were unpacked. So theoretically we should schedule the execution of the custom actions somewhere after InstallFiles standard action. Practically we should set Execute='deferred' for each custom action if we want it to be executed between InstallFiles and InstallFinalize. Or we should schedule it after InstallFinalize standard action. In this case the deferred execution is not necessary.

So, the installation sequence will look as follows:

 

<InstallExecuteSequence>

<Custom Action="Install_Signed_Driver" After="InstallFiles">NOT

Installed</Custom>

<Custom Action="Install_Unsigned_Driver" After="Install_Signed_Driver">NOT

Installed</Custom>

</InstallExecuteSequence>

Uninstallation

To uninstall specified INF file you can use the following DPInst command line:

 

DPInst.exe /U "Path to the INF file" [/SW] [/D]

The /U key tells DPInst to perform the uninstallation. It should be followed by the path to the target INF file. Please note, that DPInst supports only the uninstallation of one file at a time (as opposed to the installation). So the wildcards are not supported here.

The /D key tells DPInst to remove not only the driver registry settings but its binaries as well from the system.

Again, the parts of the WiX script.

The custom actions definition for the Signed_driver and Unsigned_driver components:

 

<CustomAction Id='Uninstall_Signed_Driver' Directory='Drivers'

ExeCommand='&amp;quot;[Drivers]DPinst.exe&amp;quot; /U

&amp;quot;[Signed_driver]driver1.inf&amp;quot; /SW /D' Return='ignore' />

<CustomAction Id='Uninstall_Unsigned_Driver' Directory='Drivers'

ExeCommand='&amp;quot;[Drivers]DPinst.exe&amp;quot; /U

&amp;quot;[Unsigned_driver]driver2.inf&amp;quot; /SW /D' Return='ignore' />

The execution of these custom actions should be scheduled somewhere before the RemoveFiles standard action (we will use the same INF files for both drivers installation and uninstallation so these files should be present on the hard drive when we run uninstallation custom actions). For example, the scheduling of these actions after the RemoveRegistryValues standard action would be a good idea:

 

<Custom Action="Uninstall_Signed_Driver"

After="RemoveRegistryValues">Installed</Custom>

<Custom Action="Uninstall_Unsigned_Driver"

After="Uninstall_Signed_Driver">Installed</Custom>

How does DPInst work?

In general, DPInst is simply the wrapper on two Windows API functions: DriverPackagePreinstall for driver installation and DriverPackageUninstall for uninstallation. Header files and libraries which are  necessary for using them are the part of the Windows Driver Kit. If you don’t want to use Microsoft utility, you can use these functions in your application instead.

DriverPackagePreinstall function receives two parameters: the path to the driver INF file and the flags configuring the way of driver installation (legacy mode, silent installation, repair mode, etc. – all these options could be mentioned here).

For example, to install the Signed_driver package from the example above you can use DriverPackagePreinstall function:

 

DriverPackagePreinstall(L"C:DriversSigned_driverdriver1.inf",

DRIVER_PACKAGE_SILENT);

And to install Unsigned_driver package you can use the following code:

 

DriverPackagePreinstall(L"C:DriversUnsigned_driverdriver2.inf",

DRIVER_PACKAGE_LEGACY_MODE);

You can read the detailed information about this function on MSDN: http://msdn.microsoft.com/en-us/library/ms793500.aspx.

DriverPackageUninstall function receives four parameters:

  1. path to the driver INF file
  2. configuration flags (silent uninstallation, delete the binary files, etc.)
  3. pointer to the constant INSTALLERINFO structure supplying the information about an application associated with the driver (an optional parameter)
  4. pointer to BOOL variable which indicates on return whether the system is to be restarted.

To uninstall the Signed_driver package from the example above you can use DriverPackageUninstall function:

 

BOOL needReboot = false;

DriverPackageUninstall(L"C:DriversSigned_driverdriver1.inf",

DRIVER_PACKAGE_DELETE_FILES, NULL, &amp;needReboot);

The detailed information on this function you can find, as well, on MSDN: http://msdn.microsoft.com/en-us/library/ms793508.aspx.

Please note, that you must place difxapi.dll library from Windows Driver Kit to your application’s directory to make it work correctly.

DPInst and System Restore

Another interesting peculiarity of DPInst functioning is that it automatically creates System Restore Point before each driver installation (if the corresponding feature is enabled on the target OS). It takes some time, so, if you plan to install big amount of drivers using DPInst, your installation could be a very long process (in particular, on Windows Vista).

If you want to speed up your installation and don’t want to disable Windows System Restore, you can use transactional restore points. When the creation of the transactional restore point starts, the operating system forbids the creation of other restore points before the end of the transaction. So, if you start the transaction before the drivers installation and finish  it after the installation completes, only one restore point will be created and the whole process will require much less time.

To create such restore points you can use the CreateRestorePoint method of SystemRestore WMI class. You can find the detailed information about it in MSDN: http://msdn.microsoft.com/en-us/library/aa378847(VS.85).aspx.

This method obtains 3 parameters: the string with the restore point description, the restore point type and the event type. For our installation restore point type you can use 0 (APPLICATION_INSTALL) or 10 (DEVICE_DRIVER_INSTALL) value. And the event type is the most important parameter. In our case it will represent the information about the transactional action. Before the beginning of the drivers installation you should invoke CreateRestorePoint with 102 (BEGIN_NESTED_SYSTEM_CHANGE) value as the event type. This will start the transaction. It can look as follows:

 

CreateRestorePoint(“Drivers Installation”, 10, 102);

And after the drivers installation is completedyou should call CreateRestorePoint with 103 (END_NESTED_SYSTEM_CHANGE) value to end the transaction. It can look as follows:

 

CreateRestorePoint(“Drivers Installation”, 10, 103);

Also you should remember that the target machine may have System Restore feature disabled. Or the CreateRestorePoint function may fail for some reason. You should handle these situations in your code.

To access CreateRestorePoint method you can use C++, VBScript or Jscript. In the example below we will use Jscript implementation. It is more simple than C++ one and more flexible in handling the errors than VBScript one.

So, the function for the restore point creation can look as follows:

 

function CreateRestorePoint(name, type, event)

{

try

{

var srObject = GetObject("winmgmts:.rootdefault:Systemrestore");

if (srObject == null)

{

//Cannot get System Restore service WMI object

return 0;

}

var srStatus = srObject.CreateRestorePoint(name, type, event);

return srStatus;

}

catch (e)

{

//Exception during the restore point creation

return -1;

}

}

And the functions to begin and complete the transaction:

 

function BeginDriverInstallation()

{

var srPointName = "Drivers Installation";

var DEVICE_DRIVER_INSTALL = 10;

var BEGIN_NESTED_SYSTEM_CHANGE = 102;

CreateRestorePoint(srPointName, DEVICE_DRIVER_INSTALL,

BEGIN_NESTED_SYSTEM_CHANGE);

return 0;

}

 

function EndDriverInstallation()

{

var srPointName = "Drivers Installation";

var DEVICE_DRIVER_INSTALL = 10;

var END_NESTED_SYSTEM_CHANGE = 103;

CreateRestorePoint(srPointName, DEVICE_DRIVER_INSTALL,

END_NESTED_SYSTEM_CHANGE);

return 0;

}

Please note, that in our examples we simply skip the errors that may appear during the restore point creation. So, if we have been unable to create the transactional restore point for some reason we just skip this step and continue with the installation. But if you need it you can add more detailed error handling.

Let’s save these three functions, for example, to “C:ScriptsSystemRestore.js”. Then to use them in our WiX script we should add the following Binary tag to it:

 

<Binary Id="SystemRestore" src=".ScriptsSystemRestore.js" />

After this let’s add two custom actions to begin and complete the transaction:

 

<CustomAction Id='BeginDriverInstallation' BinaryKey='SystemRestore'

JScriptCall='BeginDriverInstallation' Execute='deferred'

Return='ignore' />

<CustomAction Id='EndDriverInstallation' BinaryKey='SystemRestore'

JScriptCall='EndDriverInstallation' Execute='deferred'

Return='ignore' />

Then we should insert them into InstallExecuteSequence. It will look in the following way:

 

<InstallExecuteSequence>

<Custom Action="BeginDriverInstallation" After="InstallFiles">NOT

Installed</Custom>

<Custom Action="Install_Signed_Driver"

After="BeginDriverInstallation">NOT Installed</Custom>

<Custom Action="Install_Unsigned_Driver"

After="Install_Signed_Driver">NOT Installed</Custom>

<Custom Action="EndDriverInstallation"

After="Install_Unsigned_Driver">NOT Installed</Custom>

</InstallExecuteSequence>

The Issues With the Unsigned Drivers

As it was mentioned above, to install the unsigned drivers with DPInst you should use its ‘legacy mode’ - the /LM key (it is not necessary on Windows Vista and higher). But this method has several problems.

By default Windows XP and more recent operating systems will display the unsigned driver installation warning on every attempt to install the unsigned driver. It is not very uncomfortable if you are installing one or two drivers. But if your setup includes, for example, dozens of unsigned drivers the installation would be quite annoying.

Windows XP has the local policy setting concerning the system behavior when there is an attempt to install the unsigned driver. You can access this setting in System Properties->Hardware->Driver Signing:

If you choose ‘Ignore’ the setup will install the unsigned drivers without warning.

Programmatically this setting is accessible via the registry. It is stored in HKEY_LOCAL_MACHINESoftwareMicrosoftDriver Signing. To disable the unsigned driver installation warning the Policy value must be set to 0.

But this task is not as simple. The operating system protects this value from the manual modification. And if you edit it directly from your application there will be no effect.

The working C++ solution which allows to temporary disable the unsigned driver warning on Windows XP is proposed here: http://openvpn.net/archive/openvpn-users/2004-11/msg00341.html.

Windows Vista and above do not have the setting described above. So the mentioned solution will not work there. To disable the unsigned driver installation warning on these operating systems you should write some solution to locate the warning window and press the Install Anyway button, or some kind of redirecting driver, or something else. All these tasks are not quite simple. Beside this, Windows Vista x64 and Windows 7 could allow you to install the unsigned drivers but might not allow you to load them.

So, the simplest way to solve the problem with the unsigned drivers installation is to sign them. By passing the Windows Logo test or by buying the Authenticode certificate - http://technet.microsoft.com/en-us/library/cc750035.aspx.

Windows Installer Packages Installation and Uninstallation Using  WiX

Sometimes the driver packages are packed into the MSI installers. It is handy when the driver requires some additional actions for correct functioning – like installing system services, copying files to system directories, etc. In this section we will review some peculiarities of the installation and uninstallation of the MSI packages from the running Windows Installer setup.

First of all, let’s add two MSI components to our WiX script. For example, their files are located in “C:DriversMSI1” and “C:DriversMSI2”. Then the component definition will look as follows:

 

<Directory Id="MSI" Name="MSI">

<Directory Id="MSI_1" Name="1">

<Component Id="MSI_1" DiskId="1" Guid="PLACE-YOUR-GUID-HERE">

<File Id="sample1.msi" Name="sample1.msi"

src="C:DriversMSI1sample1.msi" />

</Component>

</Directory>

<Directory Id="MSI_2" Name="2">

<Component Id="MSI_2" DiskId="1" Guid="PLACE-YOUR-GUID-HERE">

<File Id="sample2.msi" Name="sample2.msi"

src="C:DriversMSI2sample2.msi" />

</Component>

</Directory>

</Directory>

And the feature for them:

 

<Feature Id="RootFeature" Level="1" ConfigurableDirectory="TARGETDIR"

Description="Sample" Display="expand" Title="Sample"

AllowAdvertise="no" TypicalDefault="install">

<Feature Id="Drivers" Level="1" AllowAdvertise="no"

ConfigurableDirectory="TARGETDIR" Description="Drivers"

Display="collapse" Title="Drivers" >

<ComponentRef Id='MSI_1' />

<ComponentRef Id='MSI_2' />

</Feature>

</Feature>

Installation

We will install these packages with standard Microsoft utility msiexec. In our example we will use “quite” type of the installation (the /qn key) and the maximal verbose logging (/L*v). Here is the corresponding custom actions definition:

 

<CustomAction Id='Install_MSI_1' Return="ignore"

Directory="SystemFolder" ExeCommand="msiexec /i

&amp;quot;[MSI_1]sample1.msi&amp;quot; /qn /L*v

&amp;quot;[TempFolder]sample1.log&amp;quot; ALLUSERS=1 REBOOT=ReallySuppress

ARPSYSTEMCOMPONENT=1" />

<CustomAction Id='Install_MSI_2' Return="ignore"

Directory="SystemFolder" ExeCommand="msiexec /i

&amp;quot;[MSI_2]sample2.msi&amp;quot; /qn /L*v

&amp;quot;[TempFolder]sample2.log&amp;quot; ALLUSERS=1 REBOOT=ReallySuppress

ARPSYSTEMCOMPONENT=1" />

Now the main question is when to execute these custom actions.

Generally speaking, the Windows Installer technology supports the installation of only one MSI package at a time. The installation grabs the execution mutex at the beginning and the next installation doesn’t start until it is free. If we try to schedule Install_MSI_1 or  Install_MSI_2 like we did it earlier with DPInst custom actions the installation will fail.

There are two possible things to do about it.

The first one is described here: http://www.advancedinstaller.com/user-guide/qa-uninstall-msi.html. We should modify the installation custom action definition to match the option “Asynchronous Execution, do not wait for return” and make it immediate:

 

<CustomAction Id='Install_MSI_1' Execute=”immediate”

Return="asyncNoWait" Directory="SystemFolder" ExeCommand="msiexec /i

&amp;quot;[MSI_1]sample1.msi&amp;quot; /qn /L*v

&amp;quot;[TempFolder]sample1.log&amp;quot; ALLUSERS=1 REBOOT=ReallySuppress

ARPSYSTEMCOMPONENT=1" />

Also we should schedule it after InstallFinalize:

 

<InstallExecuteSequence>

<Custom Action="Install_MSI_1" After="InstallFinalize">NOT

Installed</Custom>

</InstallExecuteSequence>

Thus the custom action will be launched right after the main installer finishes. In this case two installations will not interfere.

Probably, this method is good for one additional MSI setup. But if you want to start two or more MSI packages installations during the running of the main installer, you’ll be unable to do it in the described way.

The second method does not have this disadvantage. It is about the scheduling of  the MSI installation custom actions not in the InstallExecuteSequence, but in the InstallUISequence after the ExecuteAction standard action. Roughly speaking, the ExecuteAction is the whole InstallUISequence. When it completes, the execution mutex is released. So if we schedule some Windows Installer custom actions after it we will be able to execute as many MSI installations as we want before the actual finish of the main installation. Also we don’t need to modify the custom actions definitions.

Thus the InstallUISequence for two sample actions will look as follows:

 

<InstallUISequence>

<Custom Action="Install_MSI_1" After="ExecuteAction">NOT

Installed</Custom>

<Custom Action="Install_MSI_2" After="Install_MSI_1">NOT

Installed</Custom>

</InstallUISequence>

Please note that for the correct work of this method the main installation must be launched in full UI mode. Otherwise the actions from InstallUISequence will be skipped.

Uninstallation

Again we will use msiexec to uninstall the MSI packages. In our examples we will perform the uninstallation with the package GUID. The corresponding custom actions for Install_MSI_1 and Install_MSI_2 components will look as follows:

 

<CustomAction Id='Uninstall_MSI_1' Execute='deferred' Return="ignore"

Directory="SystemFolder" ExeCommand="msiexec /x {MSI-1-GUID} /qn /L*v

&amp;quot;[TempFolder]sample1.log&amp;quot; ALLUSERS=1 REBOOT=ReallySuppress"

/>

<CustomAction Id='Uninstall_MSI_2' Execute='deferred' Return="ignore"

Directory="SystemFolder" ExeCommand="msiexec /x {MSI-2-GUID} /qn /L*v

&amp;quot;[TempFolder]sample2.log&amp;quot; ALLUSERS=1 REBOOT=ReallySuppress"

/>

As usual, you should replace MSI-1-GUID and MSI-2-GUID with real GUIDs to use this code in your projects.

The uninstallation of the MSI package from the running Windows Installer package setup has the same problem with execution mutex as the installation.

So, the first possible solution (acceptable only for the single additional MSI package uninstallation) is to modify the corresponding custom action definition to match the option “Asynchronous Execution, do not wait for return” and make it immediate:

 

<CustomAction Id='Uninstall_MSI_1' Execute=”immediate”

Return="asyncNoWait" Directory="SystemFolder" ExeCommand="msiexec /x

{MSI-1-GUID} /qn /L*v &amp;quot;[TempFolder]sample1.log&amp;quot; ALLUSERS=1

REBOOT=ReallySuppress" />

And then schedule it after InstallFinalize:

 

<InstallExecuteSequence>

<Custom Action="Uninstall_MSI_1" After="InstallFinalize">Installed</Custom>

</InstallExecuteSequence>

The more universal solution which allows multiple MSI uninstallations during the main package setup is to schedule the uninstallation custom actions after the ExecuteAction standard action of the InstallUISequence:

 

<InstallUISequence>

<Custom Action="Uninstall_MSI_1"

After="ExecuteAction">Installed</Custom>

<Custom Action="Uninstall_MSI_2"

After="Uninstall_MSI_1">Installed</Custom>

</InstallUISequence>

Yet again please note that for the correct work of this method the main installation must be launched in full UI mode. Otherwise the actions from InstallUISequence will be skipped.

Summary

The topic of the driver installation using Windows Installer is very wide. This article is not supposed to describe it all. The author has tried to collect the main problems which he has met working on the driver installer and describe the solutions which he has found. He hopes that this article would be useful :) .

Attached sample installer contains the implementation of the most of things described in the article - see at the Ariorit site.

Bibliography

DPinst

  1. http://msdn.microsoft.com/en-us/library/ms790308.aspx - Driver Package Installer (DPInst)
  2. http://msdn.microsoft.com/en-us/library/ms790806.aspx - DPInst command line switches

Driver Installation Windows API

  1. http://msdn.microsoft.com/en-us/library/ms793500.aspx - DriverPackagePreinstall function
  2. http://msdn.microsoft.com/en-us/library/ms793508.aspx - DriverPackageUninstall function

System Restore Points Creation

  1. http://msdn.microsoft.com/en-us/library/aa378847(VS.85).aspx - CreateRestorePoint Method of the SystemRestore Class
  2. http://support.microsoft.com/default.aspx?scid=KB;en-us;295299 – VBScript code samples for working with System Restore
  3. http://msdn.microsoft.com/en-us/library/aa378987(VS.85).aspx – C++ code samples for working with System Restore

Unsigned Drivers and Signing

  1. http://openvpn.net/archive/openvpn-users/2004-11/msg00341.html - C++ solution for disabling and enabling of the unsigned driver installation warning on Windows XP
  2. http://technet.microsoft.com/en-us/library/cc750035.aspx - Authenticode

MSI-from-MSI Installation

  1. http://www.advancedinstaller.com/user-guide/qa-uninstall-msi.html - launching of the MSI installation from already running MSI setup

WiX

  1. http://www.tramontana.co.hu/wix/ - WiX Tutorial
  2. http://wix.sourceforge.net/manual-wix2/wix_index.htm - WiX 2.0 manual
  3. http://wix.sourceforge.net/manual-wix3/main.htm - WiX 3.0 manual
  4. http://blogs.technet.com/alexshev/default.aspx - TechNet blog of Alex Shevchuk (a lot of useful information about WiX)

About the Author

ApriorIT is a company that unites professionals in development and management of software projects in knowledge-intensive scopes.

Truck drivers and frequent RV'ers help! Travel kit question...?

I'm riding shotgun with my steady who's a big rig truck driver. In his cab he has 2 full size bunk beds, a small fridge and lockers. I'll be with him for about 2 weeks. As a showers-twice-a-day chick, what are the absolute necessities for this trip? I need a fairly well rounded travel kit. What do you never leave home without? What item(s) have more than one use. I know my baby wipes and powder are a definite.

I don't know about your absolute musts, but if I was on the road for even the weekend, I'd have my wi-fi enabled laptop with the slingbox on it. (for the downtime, then I could get on the internet and/or watch tv) I'd way over pack. what does your steady say to bring? what about towels? DVDs? what about lotion, haircare products, make-up, clothes (for different stops and stuff) lip balm, fingernail clippers, tweezers, a mirror, reading material, Cd's, meds - ie aspirin product, Advil for sinus, tums..just in case. snacks. dental floss, toothbrush, toothpaste...deodorant, perfume, eye drops(just in case), sewing stuff. pillow with a small blanket too, in case you sleep while he's driving. tampons...just in case. I might even do laundry soap and dryer sheets. Personally - I try to buy any items in the small size that i might need, in my town where I pay taxes. At the very least - my tax will benefit my town. I still forget things and buy them on the road too. That's all I can think of now. I'll probably think of more once I submit this. but at least it's a start. OH---a camera to capture your adventure. band-aids and neosporin. just have a lot of fun on your trip! be safe.

2,068 rural Colo. drivers belted with tickets
DENVER — A week-long Click It or Ticket enforcement in rural Colorado left 224 local drivers with tickets for failing to buckle up. The enforcement from Feb. 18-24, concentrated in 30 counties of rural Colorado where statistics have shown seat belt usage to be below the state average.

Thanks for visiting!

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay

Be the first to comment.

Leave a Reply