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

Slides:



Advertisements
Similar presentations
Troubleshooting Startup Problems
Advertisements

Module 3 Configuring Hardware on a Computer Running Windows XP Professional.
WSUS Presented by: Nada Abdullah Ahmed.
MCITP Guide to Microsoft Windows Server 2008, Server Administration (Exam #70-646) Chapter 2 Installing Windows Server 2008.
Installation and Deployment in Microsoft Dynamics CRM 4.0
Raymond R. Balise Health Research and Policy
Installing SAS 9.3 Raymond R. Balise Health Research and Policy.
Installing Windows 7 Lesson 2.
14.1 © 2004 Pearson Education, Inc. Exam Planning, Implementing, and Maintaining a Microsoft Windows Server 2003 Active Directory Infrastructure.
11 INSTALLING WINDOWS XP Chapter 2. Chapter 2: Installing Windows XP2 INSTALLING WINDOWS XP  Prepare a computer for the installation of Microsoft Windows.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 12: Managing and Implementing Backups and Disaster Recovery.
Hands-On Microsoft Windows Server 2003 Chapter 2 Installing Windows Server 2003, Standard Edition.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 10: Server Administration.
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 7: Planning a DNS Strategy.
Week:#14 Windows Recovery
Common Device Driver Installation Errors
McGraw-Hill/Irwin© 2006 The McGraw-Hill Companies, Inc. All rights reserved. 5-1.
Distributing Drivers on Windows Update
Advanced Deployment Topics – MSI Enhancements Om Sharma Program Manager, Windows Installer Microsoft Corporation.
Plug and Play Key Concepts Jim Cavalaris Lead Software Design Engineer George Roussos Senior Program Manager Device Foundation Platform Team, Device.
Best Practices for Developing Printer Drivers Justin Hutchings Program Manager Microsoft Corporation Shawn Maloney Program Manager Microsoft Corporation.
Mitsuru Saito Program Manager Microsoft Corporation.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 12: Managing and Implementing Backups and Disaster Recovery.
Installing Windows Vista Lesson 2. Skills Matrix Technology SkillObjective DomainObjective # Performing a Clean Installation Set up Windows Vista as the.
Module 1: Installing Windows XP Professional. Overview Manually Installing Windows XP Professional Automating a Windows XP Professional Installation Using.
®® Microsoft Windows 7 for Power Users Tutorial 8 Troubleshooting Windows 7.
Hands-On Microsoft Windows Server 2008
Windows XP Professional Windows XP Professional Overview Install and Upgrade Windows XP Pro Customize and Manage Windows XP Pro Troubleshoot Common Windows.
© 2012 The McGraw-Hill Companies, Inc. All rights reserved. 1 Third Edition Chapter 6 Today’s Windows Windows Vista and Windows 7 McGraw-Hill.
Tutorial 11 Installing, Updating, and Configuring Software
Week #7 Objectives: Secure Windows 7 Desktop
Home Media Network Hard Drive Training for Update to 2.0 By Erik Collett Revised for Firmware Update.
Chapter Fourteen Windows XP Professional Fault Tolerance.
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment, Enhanced Chapter 12: Managing and Implementing Backups and Disaster Recovery.
© 2012 The McGraw-Hill Companies, Inc. All rights reserved. 1 Third Edition Chapter 5 Windows XP Professional McGraw-Hill.
Course ILT Windows installation and upgrades Unit objectives Install a Windows operating system Upgrade from one version of Windows to another.
Geo CE-XM ch 4 Edited 10/14/05 1 The XM is the newest of the rovers, and unlike other units, it comes with software installed on the unit as well as using.
Please Note: Information contained in this document is considered LENOVO CONFIDENTIAL For Lenovo Internal Use Only Do Not Copy or Distribute!! For Lenovo.
Installing Windows Vista Lesson 2. Skills Matrix Technology SkillObjective DomainObjective # Performing a Clean Installation Set up Windows Vista as the.
Module 1: Installing Microsoft Windows XP Professional.
CN1176 Computer Support Kemtis Kunanuraksapong MSIS with Distinction MCT, MCTS, MCDST, MCP, A+
CN1176 Computer Support Kemtis Kunanuraksapong MSIS with Distinction MCTS, MCDST, MCP, A+
WINDOWS XP PROFESSIONAL AUTOMATING THE WINDOWS XP INSTALLATION Bilal Munir Mughal Chapter-2 1.
Systems Management Server 2.0: Backup and Recovery Overview SMS Recovery Web Site location: Updated.
1 Week #10Business Continuity Backing Up Data Configuring Shadow Copies Providing Server and Service Availability.
Chapter 3 Installing and Learning Software. 2Practical PC 5 th Edition Chapter 3 Getting Started In this Chapter, you will learn: − What is in an application.
Week #2 Objectives Upgrade and Migrating to Windows 7 Image-Based Installation of Windows 7 Application Compatibility.
1.Nattawut Chaibuuranapankul M.2/6 No. 8 2.Poonnut Sovanpaiboon M.2/6 No.11 3.Sarin Jirasinvimol M.2/6 No Attadej Rujirawannakun M.2/6 No.28.
5 Lesson 5: Installing and Configuring Desktop Applications and Windows Store Apps MOAC : Configuring Windows 8.1.
© 2008 Cisco Systems, Inc. All rights reserved.CIPT1 v6.0—1-1 Getting Started with Cisco Unified Communications Manager Installing and Upgrading Cisco.
IT1001 – Personal Computer Hardware & System Operations Week5- Installation and configuration of driver software.
IT1001 – Personal Computer Hardware & system Operations Week7- Introduction to backup & restore tools Introduction to user account with access rights.
2007 TAX YEARERO TRAINING - MODULE 61 ERO (Transmitter) Training Module 6 Federal and State Installation and Updates.
Page 1 of 38 Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Please Note: Information contained in.
© 2012 The McGraw-Hill Companies, Inc. All rights reserved. 1 Third Edition Chapter 6 Today’s Windows Windows Vista and Windows 7 McGraw-Hill.
Virtual Machines Module 2. Objectives Define virtual machine Define common terminology Identify advantages and disadvantages Determine what software is.
John Samuels October, Why Now?  Vista Problems  New Features  >4GB Memory Support  Experience.
© ExplorNet’s Centers for Quality Teaching and Learning 1 Describe applications and services. Objective Course Weight 5%
Planning Server Deployments Chapter 1. Server Deployment When planning a server deployment for a large enterprise network, the operating system edition.
Windows Vista Configuration MCTS : Installing and Upgrading.
ITMT 1371 – Windows 7 configuration Chapter 2: Installing Windows 7 ITMT 1371 – Windows 7 Configuration.
C Copyright © 2006, Oracle. All rights reserved. Oracle Secure Backup Additional Installation Topics.
Installing Windows 7 Lesson 2. Objectives Select the appropriate installation option Perform a clean installation of Windows 7 Migrate user files and.
1 Remote Installation Service Windows 2003 Server Prof. Abdul Hameed.
Installing Windows 7 Lesson 2.
1. Press the Power button or switch to flip on the printer, if it is turn off. 2. From the Home display screen on the product control panel, click the.
Installing the HP LaserJet Pro 500 color MFP M570 printer software in Windows on a Wireless Network & Wired Network.
CONFIGURING HARDWARE DEVICE & START UP PROCESS
Building Deployable Device Driver Packages
Installing Windows Exam: 902
Presentation transcript:

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

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

Creating Driver Packages

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] Live Search site:msdn.microsoft.com "summary of INF sections"

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

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 [ SourceDisksFiles ] MyFile1.sys= … MyFile2.dll=… OemConfig.dat=… OtherDriver.dll=… [MyDDInstall]

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.

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!

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.

Driver Store 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 MyInf.inf MyFile1.sys MyFile2.dll The Driver Store isolates driver packages side-by-side in a private database.

Driver Store 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 MyInf.inf MyFile1.sys MyFile2.dll Windows Resource Protection Cesspool Driver 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

Driver Store 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 MyInf.inf MyFile1.sys MyFile2.dll Windows Resource Protection MyFile1.sys MyFile2.dll Destinationdir\

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 [ SourceDisksFiles ] MyFile1.sys= … MyFile2.dll=… OemConfig.dat=… OtherDriver.dll=… [MyDDInstall]

… 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 Missing OK

Creating Multiple Driver Packages for a Multifunction Device

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 Driver Package Scanner Driver Package

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]... …

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

Multifunction Devices: Parent device uses inbox driver Parent device Child device #1 Child device #2 Usb.inf (inbox) 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

CopyInf Walkthrough Driver Store Parent device Usb.inf(inbox)Usb.inf(inbox)Usb.inf(inbox)Usb.inf(inbox) Child device #1 Child device #2 Child1.inf Child1.inf Child2.inf Child2.inf Child1.infChild1.inf Child2.infChild2.inf Usb.inf(inbox)Usb.inf(inbox) Child1.infChild1.inf Child2.infChild2.inf CopyINF=Child2.inf CopyINF= Parent device Child device #1 Child device #2 CopyINF=Child1.inf CopyINF=Child2.inf File1File1 File2File2 File3File3 File4File4 File5File5 File6File6 File1File1 File5File5 File1File1 File5File5 Usbccgp.sysUsbccgp.sys Usbccgp.sys

Installing Device-Related Applications via Plug and Play

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

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

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"

Finish-Install Actions How they work 1.Windows installs the driver on a device 2.Windows invokes your co-installer with DIF_NEWDEVICEWIZARD_FINISHINSTALL within the LocalSystem context 3.Your co-installer tells Windows whether it needs to run a Finish-Install Action 4.If your co-installer says yes, Windows does the following: 1.Waits until the driver is installed and the device is started 2.Waits until a user is logged in, if not already 3.Prompts the user to run the Finish-Install action now or later 4.Prompts the user for UAC elevation if necessary 5.Invokes your co-installer with DIF_FINISHINSTALL_ACTION within an Administrator user’s context 6.If your co-installer returns failure, Windows will repeat steps 4.2 thru 4.5 on every user login until it returns success

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

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

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

Windows system %programfiles%\mycompany%programfiles%\mycompany myappsetupmyappsetup %windir%\system32\drivers%windir%\system32\drivers Driver Store Device Applications Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Coinst1.dllCoinst1.dll Setup.exeSetup.exe App.cabApp.cab Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Coinst1.dllCoinst1.dll Setup.exeSetup.exe App.cabApp.cab myappmyapp Appfile1Appfile1 Appfile2Appfile2 Appfile3Appfile3 Appfile4Appfile4 Appfile5Appfile5 Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Coinst1.dllCoinst1.dll Coinst1.dllCoinst1.dll Setup.exeSetup.exe I have a Finish Install Action! Setup.exeSetup.exe App.cabApp.cab OK! I’ll elevate and call you back

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

Related Sessions SessionDay / Time PCs and Devices in Windows 7: What You Need to KnowMon. 5:15-6:15 Extending Device Installation by Using Co-installersMon. 4-5 and Wed. 1:30-2:30 Debugging Device InstallationMon. 5:15-6:15 and Wed. 2:45-3:45 Diagnosing Common Driver Installation ErrorsMon

Backup/Scratch

Use a Finish Install Action to obtain and install the app Install 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.exe COM 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:

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"

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

Primary colors INF Driver Store Co-Installer Driver Binaries Color Palette CAT File Driver Package

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

Scenario Example Anytime Upgrade 1.Driver package is saved 2.Driver package is copied to new OS image pre-boot 3.OS image boots 4.Driver package is installed by PnP

Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.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

Driver Packages Windows uses the INF to build a list of files in the package Driver Store Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Configuration file Localized UI Application files

Driver Packages Windows uses the INF to build a list of files in the package Configuration file Localized UI Application files Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Driver Store

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.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Driver Store

Driver Packages Your device Driver Store Foo.inf Foo.sys Foo.dll Bar.dll Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Foo.inf Foo.sys Foo.dll Bar.dll Configuration file Localized UI Application files

Driver Packages Remember List all your files in your INF Don’t assume source media will be present during installation Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Configuration file Localized UI Application files Incorrect Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Configuration file Localized UI Application files Correct Driver Store

Multifunction Devices Definition – A device that enumerates as multiple devnodes Problem – Need to install multiple drivers without prompting users multiple times Solution – CopyInf Driver package

Multifunction Devices CopyInf 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]... …

Multifunction Devices CopyInf 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 …

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

Multifunction Devices Parent device uses inbox driver Parent device Child device #1 Child device #2 Usb.inf (inbox) 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

Multifunction Devices Driver Store Parent device Usb.inf(inbox)Usb.inf(inbox)Usb.inf(inbox)Usb.inf(inbox) Child device #1 Child device #2 Child1.inf Child1.inf Child2.inf Child2.inf Child1.infChild1.inf Child2.infChild2.inf Usb.inf(inbox)Usb.inf(inbox) Child1.infChild1.inf Child2.infChild2.inf CopyINF=Child2.inf CopyINF= Parent device Child device #1 Child device #2 CopyINF=Child1.inf CopyINF=Child2.inf File1File1 File2File2 File3File3 File4File4 File5File5 File6File6 File1File1 File5File5 File1File1 File5File5 Usbccgp.sysUsbccgp.sys Usbccgp.sys Driver Binaries

Device Applications How 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

Windows Vista system %programfiles%\mycompany%programfiles%\mycompany myappsetupmyappsetup %windir%\system32\drivers%windir%\system32\drivers Driver Store Device Applications Foo.inf Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Coinst1.dllCoinst1.dll Setup.exeSetup.exe App.cabApp.cab Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Coinst1.dllCoinst1.dll Setup.exeSetup.exe App.cabApp.cab myappmyapp Appfile1Appfile1 Appfile2Appfile2 Appfile3Appfile3 Appfile4Appfile4 Appfile5Appfile5 Foo.sysFoo.sys Foo.dllFoo.dll Bar.dllBar.dll Coinst1.dllCoinst1.dll Coinst1.dllCoinst1.dll Setup.exeSetup.exe I have a Finish Install Action! Setup.exeSetup.exe App.cabApp.cab OK! I’ll elevate and call you back

Device Applications Target: IT Pro/OEM Separate your driver package and your application installer Allow the customer to decide how best to deploy the combination

Call To Action Make your driver packages deployable by including everything in the INF For multifunction devices, use CopyInf to link multiple driver packages together For home users, integrate your application setup into your driver package For IT Pro and OEM users, keep your application setup separate from your driver package

Additional Resources Web Resources – Specs CopyInf directive: Writing a co-installer: – Whitepapers How to Install Windows Drivers with Software Applications: 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