Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage...

57

Transcript of Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage...

Page 1: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.
Page 2: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Creating Deployable Driver Packages

Eugene LinPrincipal Program Manager LeadDevice & Storage Technologies [email protected]

Page 3: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Key Takeaways

• Create device driver packages that can be deployed via any Windows-supported mechanism

• Understand how Windows handles your driver packages in install, update, and uninstall scenarios

• Express dependencies between multiple driver packages for multifunction devices

• Trigger application installation from your driver package in a deployment-friendly way

Page 4: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Creating Driver Packages

Page 5: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

What Is a Driver Package?

• A driver package is a self-describing collection of files defined by a declarative manifest.

• The INF file is the manifest. It defines entire contents of the package via the SourceDisksFiles section and CopyFiles directives.

• The INF file is the only source of information that Windows uses to identify which files are necessary to install the package.

• If a file is not listed in the INF, Windows does not guarantee it will be present during device installation!

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

[SourceDisksFiles]MyFile1.sys= …MyFile2.dll=…

[MyDDInstall][email protected][email protected]

Live Search

site:msdn.microsoft.com "summary of INF sections"

Page 6: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Avoid Common Mistakes

• Do not assume anything about any files not listed and copied by your INF

• To make your package deployment-ready:

• DO NOT put resource files outside your package. Include them in your package or gracefully handle their absence.

• DO NOT depend on files copied by other packages. Include them in your package or gracefully handle their absence.

• DO NOT depend on files copied by apps. Include them in your package or gracefully handle their absence.

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

OemConfig.dat

OtherDriver.dll

Depends on

Depends on

Page 7: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Include All Files in Your Package

• One solution is to include all dependencies within your package.

• Yes, this means all the files are signed with the package.

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

OemConfig.dat

OtherDriver.dll

Depends on

Depends on

[SourceDisksFiles]MyFile1.sys= …MyFile2.dll=…OemConfig.dat=…OtherDriver.dll=…

[MyDDInstall][email protected][email protected][email protected][email protected]

Page 8: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Overview of Driver Package Deployment

1. Windows copies driver package to Driver Store.2. Time passes. The world changes.3. Windows installs driver package on device.

Page 9: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

1. Windows copies driver package to Driver Store.2. Time passes. The world changes.3. Windows installs driver package on device.

Overview of Driver Package Deployment

This is the hard part!

Page 10: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

1. Windows copies driver package to Driver Store.2. Time passes. The world changes.3. Windows installs driver package on device.

Overview of Driver Package Deployment

Some examples of installation environment changes:• CD/DVD install CD/DVD no longer in drive• OEM preinstall OEM customized bits gone• Windows XP Windows Vista• Windows Vista RTM Windows Vista SP1• Windows Vista Home Basic Windows Vista Ultimate• Windows Home Server machine recovery• Windows Update deployment

Windows treats your driver package as a time capsule and survival pod. Windows will preserve the contents of your driver package.

Page 11: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Store

Driver Package

Driver Package

Step 1: Driver package copied to Driver Store

• Windows builds a list of files from the INF:• MyFile1.sys• MyFile2.dll

• Windows copies those files (and the INF) into the Driver Store.

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

OemConfig.dat

OtherDriver.dll

Driver Package

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dllThe Driver Store isolates driver packagesside-by-side in a private database.

Page 12: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Store

Driver Package

Driver Package

Step 2: The world changes

• Windows treats driver packages in the Driver Store as atomic entities.

• Windows protects the Driver Store as one of its own components.

• The Driver Store always contains all installable driver packages, including inbox drivers.

Driver Package

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

Windows Resource Protection

CesspoolDriver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

OemConfig.dat

OtherDriver.dll

Remove media

Upgrade OS

Transfer to new PC

Install service pack

Restore backup image

Page 13: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Store

Driver Package

Driver Package

Step 3: Driver installed on device

• Windows performs file and registry operations as directed by the INF.

• The driver package remains in the Driver Store for repair, reinstallation, verification, and migration operations.

Driver Package

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

Windows Resource Protection

MyFile1.sys

MyFile2.dll

Destinationdir\

Page 14: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Include All Files in Your Package

• One solution is to include all dependencies within your package.

• Yes, this means all the files are signed with the package.

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

OemConfig.dat

OtherDriver.dll

Depends on

Depends on

[SourceDisksFiles]MyFile1.sys= …MyFile2.dll=…OemConfig.dat=…OtherDriver.dll=…

[MyDDInstall][email protected][email protected][email protected][email protected]

Page 15: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

… Or Handle Their Absence

• Treat the “missing file” case as a possible path.

• Gracefully handle it• Allow admins to

override config, but provide a default if missing.

• Check for presence of plug-ins, etc. before attempting to load them.

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

OemConfig.dat

OtherDriver.dll

Optional

Optional

Missing OK

Missing OK

Page 16: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Creating Multiple Driver Packages for a Multifunction Device

Page 17: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

• Definition• A device that enumerates as multiple devnodes

• Problem• Need to install multiple drivers from media without multiple prompts• Need to install multiple drivers from Windows Update (WU) in a single

submission

• Solution• CopyInf

Multifunction Devices

Printer DriverPackage

Scanner DriverPackage

Page 18: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction Devices

• CopyInf directive• Links multiple INFs together, so when one gets copied into the

Driver Store, the other gets copied also

• Parsed by Windows when a driver package is copied to the Driver Store

• If a driver package referenced in a CopyINF directive is already in the Driver Store, Windows will not attempt to re-copy the package

…[DDInstall]CopyINF=myinf1.inf[,myinf2.inf]...…

Page 19: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction Devices: Parent device uses your driver

Parent device

Child device #1 Child device #2

Parent.inf

Child1.inf Child2.inf

CopyINF = child1.inf, child2.inf

Page 20: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction Devices: Parent device uses inbox driver

Parent device

Child device #1 Child device #2

Usb.inf(inbox)

Child1.inf Child2.inf

CopyINF = child1.inf

Since you don’t know which child will enumerate first, put the matching CopyINF entries in each child driver package

CopyINF = child2.inf

Page 21: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

CopyInf Walkthrough

Driver Store

Parent device

Usb.inf(inbox)Usb.inf(inbox)

Child device #1

Child device #2

Windows Update

DevicePath

Found New Hardware Wizard

Child1.inf Child2.inf

Child1.inf

Child2.inf

Usb.inf(inbox)

Child1.inf

Child2.inf

CopyINF=Child2.infCopyINF=

Parent device

Child device #1

Child device #2

CopyINF=Child1.inf

CopyINF=Child2.inf

File1

File2

File3

File4

File5

File6

File1

File5

File1

File5

Usbccgp.sysUsbccgp.sys

Usbccgp.sys

Page 22: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Installing Device-Related Applications via Plug and Play

Page 23: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Installing Device-Related Applications

• You have an application that is necessary to make your device work as advertised• Examples

• Universal remote that is a HID device• Portable music player that is a USB mass storage device• Multifunction printer with print/scan/copy application• Wireless picture frame with Windows configuration

application

• You want the application to be installed automatically when the device is connected, with minimal user interaction

Page 24: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Use a Finish-Install Action to obtain and install the app

Installing Device-Related Applications

• Plug and Play has an extensibility mechanism that enables a driver package to execute arbitrary code

• The mechanism for this extensibility is a device co-installer• Within the co-installer, the task is called a Finish-Install Action

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

Coinstaller

App installer

Retrieve from preinstall location or web

Page 25: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Use a Finish-Install Action to Install The App

• Finish-Install Action defined:• Custom code that is executed in an Administrator user’s

context after a driver is installed and started• Implemented in a co-installer within your driver package• Compatible with Windows Vista and above

Live Search

site:msdn.microsoft.com "finish install actions"

Page 26: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Finish-Install Actions

• How they work1. Windows installs the driver on a device2. Windows invokes your co-installer with

DIF_NEWDEVICEWIZARD_FINISHINSTALL within the LocalSystem context3. Your co-installer tells Windows whether it needs to run a Finish-Install Action4. If your co-installer says yes, Windows does the following:

1. Waits until the driver is installed and the device is started2. Waits until a user is logged in, if not already3. Prompts the user to run the Finish-Install action now or later4. Prompts the user for UAC elevation if necessary5. Invokes your co-installer with DIF_FINISHINSTALL_ACTION within an

Administrator user’s context6. If your co-installer returns failure, Windows will repeat steps 4.2 thru 4.5

on every user login until it returns success

Page 27: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Implementing Finish-Install Actions

• During DIF_NEWDEVICEWIZARD_FINISHINSTALL• Determine whether you need to run your Finish-Install Action

• Check to see if your application is already installed• Check for your private configuration overrides

• E.g. You provide a registry key to disable application install• E.g. You provide a registry key to enable unattended install

• Set the DI_FLAGSEX_FINISHINSTALL_ACTION to have Windows run your Finish-Install Action

Page 28: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Implementing Finish-Install Actions (cont.)

• During DIF_FINISHINSTALL_ACTION• Determine again whether you need to run your Finish Install

Action• You need to do this again because time may have passed

since the DIF_NEWDEVICEWIZARD_FINISHINSTALL call• Obtain your application

• Look in your private staging area (e.g. OEM or IT Pro installs)

• Download from your web service• Install your application

• Remember not to return until the installer is finished

Page 29: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Implementing Finish-Install Actions (cont.)

• Does all the code have to live in my co-installer binary?• No, but it makes authoring the INF easier.

• How to include a pre-existing setup.exe in your driver package:• Include the setup.exe and all its dependencies in your INF just like

driver binaries• Copy them from your ddinstall section• Set the destination directory for these files to something private to

your product, such as %ProgramFiles%\companyname\productname\installer

• In DIF_FINISHINSTALL_ACTION, execute setup.exe synchronously from the destination directory

• Be sure to wait for setup.exe to complete before returning from the DIF_FINISHINSTALL_ACTION handler

Page 30: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Windows system

%programfiles%\mycompany

myappsetup

%windir%\system32\drivers

Driver Store

Device Applications

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Coinst1.dll

Setup.exe

App.cab

Foo.sys

Foo.dll

Bar.dll

Coinst1.dll

Setup.exe

App.cab

myapp

Appfile1

Appfile2

Appfile3

Appfile4

Appfile5

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Coinst1.dll

Coinst1.dll

Setup.exe

I have a Finish Install Action!

Setup.exe

App.cab

OK! I’ll elevate and call you back

Page 31: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Key Takeaways

• Create device driver packages that can be deployed via any Windows-supported mechanism

• Understand how Windows handles your driver packages in install, update, and uninstall scenarios

• Express dependencies between multiple driver packages for multifunction devices

• Trigger application installation from your driver package in a deployment-friendly way

Page 32: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Related Sessions

Session Day / Time

PCs and Devices in Windows 7: What You Need to Know Mon. 5:15-6:15

Extending Device Installation by Using Co-installers Mon. 4-5 and Wed. 1:30-2:30

Debugging Device Installation Mon. 5:15-6:15 andWed. 2:45-3:45

Diagnosing Common Driver Installation Errors Mon. 11-12

Page 33: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.
Page 34: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Backup/Scratch

Page 35: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Use a Finish Install Action to obtain and install the appInstall the app from your INF

Installing Device-Related Applications

• Some questions to ask yourself:• Do I need to allow a user to uninstall the app but not the

driver?• Do I need to update the driver and/or app independently?

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

Start menu entries

App.exeCOM

registration

Uninstaller

Driver Package

MyInf.inf

MyFile1.sys

MyFile2.dll

Coinstaller

Setup.exe

Retrieve from preinstall location or web

No to all of the above:Yes to any of the above:

Page 36: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Install The App From Your INF

• Use INF directives to:• Copy files

• CopyFiles directive• Create/write registry keys

• AddReg directive• Create Start Menu items

• ProfileItems directive• Register COM objects

• RegisterDll directive• Create services

• AddService directive

Live Search

site:msdn.microsoft.com "INF ProfileItems Directive"

Live Search

site:msdn.microsoft.com "INF RegisterDlls Directive"

Live Search

site:msdn.microsoft.com "INF AddService Directive"

Live Search

site:msdn.microsoft.com "INF AddReg Directive"

Live Search

site:msdn.microsoft.com "INF CopyFiles Directive"

Page 37: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

What About Uninstall?

• Heads up: this is not pretty• Specify pnplockdown=0 in your [version] section

• This tells Windows to make your files writable by Administrators

• Without this, the files may be locked down so even your uninstaller can’t touch them

• Your uninstaller must clean up everything performed by the INF• Backward compatibility means we can’t reverse an INF

operation• We know this is ugly; alternate solution coming in Win7

Page 38: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Primary colors

Primary colors

INF Driver Store Co-Installer Driver Binaries

Color Palette

CAT FileDriver

Package

Page 39: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

What Is “Deployable?"End-user

– On-demand install from Windows Update– Browse to location– Insert CD/DVD when prompted– User-initiated Windows Update install– Device Manager Update– AutoUpdate push install

IT Pro– WSUS– Network share

OEM– Unattend– Package Manager

Page 40: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Scenario ExampleAnytime Upgrade

1. Driver package is saved2. Driver package is copied

to new OS image pre-boot

3. OS image boots4. Driver package is

installed by PnP

Page 41: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Driver Packages

How Windows will use the INF• Programmatic

• SetupCopyOemInf• DiInstallDriver• DIFx tools

• User• Found New Hardware

Wizard• Windows Update on-

demand• Windows Update manual• AutoUpdate

Configuration file

Localized UI

Application files

Driver Store

Page 42: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Packages

• Windows uses the INF to build a list of files in the package

Driver Store

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Configuration file

Localized UI

Application files

Page 43: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Packages

• Windows uses the INF to build a list of files in the package

Configuration file

Localized UI

Application files

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Driver Store

Page 44: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Packages

• Windows uses the INF to build a list of files in the package

• Windows copies those files into the Driver Store

• Media goes away

Configuration file

Localized UI

Application files

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Foo.inf

Foo.sys

Foo.dll

Bar.dll

!!!

Driver Store

Page 45: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Packages

Your deviceYour device

Driver Store

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Configuration file

Localized UI

Application files

Page 46: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Driver Packages

Remember• List all your files in your INF• Don’t assume source

media will be present during installation

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Configuration file

Localized UI

Application files

Incorrect

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Configuration file

Localized UI

Application files

Correct

Driver Store

Page 47: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction DevicesDefinition

– A device that enumerates as multiple devnodes

Problem– Need to install multiple drivers without prompting users multiple

times

Solution– CopyInf

Driver packageDriver

packageDriver

package

Page 48: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction DevicesCopyInf directive

– Links multiple INFs together, so when one gets copied into the Driver Store, the other gets copied as well

– Parsed by Windows when a driver package is copied to the Driver Store

– If a driver package referenced in a CopyINF directive is already in the Driver Store, then Windows will not attempt to re-copy the package

…[DDInstall]CopyINF=filename1.inf[,filename2.inf]...…

Page 49: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction DevicesCopyInf directive

– Example

– Myprinter.inf and myscanner.inf will be copied into the Driver Store when this driver package is copied into the Driver Store

…[MyDDInstall]CopyInf = myprinter.inf, myscanner.inf…

Page 50: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction Devices

Parent device uses your driver

Parent device

Child device #1 Child device #2

Parent.inf

Child1.inf Child2.inf

CopyINF = child1.inf, child2.inf

Page 51: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction Devices

Parent device uses inbox driver

Parent device

Child device #1 Child device #2

Usb.inf(inbox)

Child1.inf Child2.inf

CopyINF = child1.inf

Since you don’t know which child will enumerate first, put the matching CopyINF entries in each child driver package

CopyINF = child2.inf

Page 52: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Multifunction Devices

Driver Store

Parent device

Usb.inf(inbox)Usb.inf(inbox)

Child device #1

Child device #2

Windows Update

DevicePath

Found New Hardware Wizard

Child1.inf Child2.inf

Child1.inf

Child2.inf

Usb.inf(inbox)

Child1.inf

Child2.inf

CopyINF=Child2.infCopyINF=

Parent device

Child device #1

Child device #2

CopyINF=Child1.inf

CopyINF=Child2.inf

File1

File2

File3

File4

File5

File6

File1

File5

File1

File5

Usbccgp.sysUsbccgp.sys

Usbccgp.sys

Driver Binaries

Page 53: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Device ApplicationsHow do I install an application with my driver package?Answer depends on target customer

– Home users: Maximize ease-of-use– IT Pros/OEMs: Maximize flexibility

Page 54: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Windows Vista system

%programfiles%\mycompany

myappsetup

%windir%\system32\drivers

Driver Store

Device Applications

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Coinst1.dll

Setup.exe

App.cab

Foo.sys

Foo.dll

Bar.dll

Coinst1.dll

Setup.exe

App.cab

myapp

Appfile1

Appfile2

Appfile3

Appfile4

Appfile5

Foo.inf

Foo.sys

Foo.dll

Bar.dll

Coinst1.dll

Coinst1.dll

Setup.exe

I have a Finish Install Action!

Setup.exe

App.cab

OK! I’ll elevate and call you back

Page 55: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Device Applications

Target: IT Pro/OEM

Separate your driver package and your application installerAllow the customer to decide how best to deploy the

combination

Page 56: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Call To ActionMake your driver packages deployable by including everything

in the INFFor multifunction devices, use CopyInf to link multiple driver

packages togetherFor home users, integrate your application setup into your

driver packageFor IT Pro and OEM users, keep your application setup separate

from your driver package

Page 57: Creating Deployable Driver Packages Eugene Lin Principal Program Manager Lead Device & Storage Technologies Group elin@microsoft.com.

Additional ResourcesWeb Resources

– Specs• CopyInf directive:

http://msdn2.microsoft.com/en-us/library/ms794507.aspx

• Writing a co-installer:http://msdn2.microsoft.com/en-us/library/ms790151.aspx

– Whitepapers• How to Install Windows Drivers with Software Applications:

http://www.microsoft.com/whdc/driver/install/app_drv.mspx

Related Sessions– DVR-T394 Extending Device Driver Installation with Co-Installers

– DVR-T395 Deploying Device Drivers for Windows Vista

– DVR-T396 Common Device Driver Installation Errors

– DVR-T502 Debugging Device Installation on Windows Vista