DMI: Driver Install Frameworks Tools And Strategies Patty Esack

DMI:
Driver Install Frameworks
Tools And Strategies
Patty Esack
Gernot Seidler
Program Manager
Device Management and
Installation (DMI) Team
Microsoft Corporation
Technical Lead
Windows Engineering
gseidler @ egenera.com
Egenera, Inc.
Session Goals
Attendees should leave this session with
the following
Microsoft’s goals for the Driver Install Frameworks
(DIFx) tools
Benefits of using the tools today
Costs and time to market
Enterprise deployment
Benefits of using the tools moving forward
Forward compatibility
Migration
New features and functionality
Feature set of the current DIFx tools
How to use the DIFx tools
How to give feedback
Session Outline
Driver Install Frameworks (DIFx) goals
Simplify Development
Improve the User Experience
Vendor Differentiation
Introduction to the DIFx Tools
Driver Package Installer (DPInst)
Driver Install Frameworks for
Applications (DIFxApp)
Driver Install Frameworks API (DIFxAPI)
Driver Install Frameworks Goals
Simplify Development
Develop to the frameworks
The Operating System (OS) will change, but the
abstraction layer will not
Packages are less likely to have compatibility
problems moving forward
Lower development costs
Driver Package Installers are simple to develop
Can create a driver package without writing any code
Support for Windows 2000, Windows XP,
Windows Server 2003, and
Windows codenamed “Longhorn”
Support for 64-bit and localized installers
Driver Install Frameworks Goals
Improve The User Experience
Automatically creates and stores installation files
in the “Driver Store”
Addresses the “Lost CD” scenario
Fewer support calls
Over time creates a standard paradigm for the
device install user experience
Users are more likely to know what to do
Supports easy “value add”
Tip
Use the DIFxTools and take advantage of the
down-level driver store
Driver Install Frameworks Goals
Vendor Differentiation
DIFx.API made available in the 2.0 release
Vendors can still launch their own
co-installers and finish install pages
The tools will continue to evolve based on
developer, user, and OEM feedback
New tools and features to be added on a
cyclical basis
Today’s DIFx Tools
Driver Package Installer (DPInst)
Takes an INF-based driver package and installs it
on any matching devices
Stages the driver package for later device install
Driver Install Frameworks for Applications
(DIFxApp)
Provides programmatic access to the Driver Install
Frameworks tool engineIdeal for non-device drivers
E.g., File system filters for antivirus software
Driver Install Frameworks API (DIFxAPI)
Provides programmatic access to the Driver Install
Frameworks tool engine
What Tools Should I Use?
Does your driver INF install all the
software you need?
If yes > Use DPInst
If no > Does your application installer
use MSI?
If yes > Use DIfxApp
If no > Use DIFxAPI
Driver Package Installer
(DPInst)
DPinst is an executable that simplifies
software-first installations of driver
packages and simplifies your
development process
Easy to Deploy
Installer is ready to use
No need to write code
No need to create a custom
install program
Super-simple software first install
with built-in support for
Software-first install
INF + Driver
DPInst.exe
DIFxAPI
SetupAPI
Verifying package integrity
Ability to require EULA acceptance
PC
DPInst
3 Steps to a customer ready installation
1. Place DPInst.exe in temp dir
2. Place INF and driver in temp dir
3. Compress directory into self-extracting
EXE that launches DPInst
Publish to your customers!
DIFxApp
Driver Install frameworks for applications
Windows Installer custom
actions that install drivers
during application install
Features
Support for install, uninstall,
repair, rollback, and upgrade
of drivers
Tracks and maintains
application-driver-service
associations and provides
reference counting on
drivers and services
Application
Driver
INF
DIFXApp
Windows
Installer
DIFxAPI
SetupAPI
PC
DIFxApp
Driver Install frameworks for applications
How to incorporate it into your setup program
Available as a Windows Installer merge module
InstallShield and Wise
Windows Installer XML (WIX)
“We’ve supported DifX in previous InstallShield releases, and
we’re looking forward to support DifX 2.0 this year following its
general availability. Our customers count on InstallShield to
stay current with the latest Microsoft technologies, and they’ve
rewarded us by making us the software industry’s first choice
for strong, reliable installations.”
Bob Corrigan
InstallShield Product Manager
Macrovision
Tip
If DIFxApp and DPInst are not flexible enough for
you, create your own installer using DIFxAPI
DIFx Usage Scenario
Egenera BladeFrame Overview
24 Processing Blades
Server-class computers
with 2 or 4 high-speed Intel
or AMD 32 / 64 bit
processors, 6 - 32 GB of
memory
Contains no storage or
networking hardware
Contains no keyboard or
mouse ports and no display
adapter
pBlade/pServer
Application
Files
2 Control Blades
Server-class computers
with a full complement of
hardware
Houses the physical
connections to SAN storage
and network resources
Houses the management
software
Provides high availability
and failover management
Back Plane Connections
Provides redundant highspeed fabric connections
between all Processing and
Control Blades
Provides out-of-band
management connections
cBlade
Fibre Channel
SAN
cBlade
Application
Files
Application
Files
Egenera Windows pServer Driver Stack
MPIO
Drivers
NDIS
DSM
vSCSI
Port Driver
HID
GDI
vKBD /
vMouse
Display
Driver
Provided by:
Microsoft
Egenera
vNIC
Miniport
Driver
vKVM
Driver
vVGA
Driver
vCOM
Driver
IPMI
Driver
Virtual Bus Driver
Interconnect Driver
PCI Bus Driver
ACPI Driver
Interconnect
PCI Cards
COM Ports
Out-of-Band
Management
Connection
Egenera provides 11 drivers to support its virtual architecture.
8 drivers are boot drivers and cannot fail!
Physical
Layer
Upgrade Application Requirements
Complete Driver Set Upgrades
One upgrade application that contains the complete
driver set so that the user can apply any upgrade to
any release family.
Major Version Upgrades
Upgrade all 11 drivers
May install new drivers to provide new functionality
Minor Version Updates / Patches
Update one or more drivers
Updates are cumulative - Installer applies all required updates and
patches
Upgrade Application Requirements
Standard Toolset
Command line and GUI appearance must comply with
Microsoft Windows standards.
Installer must integrate with Microsoft deployment and
systems management tools.
Enforce Driver Set Consistency
Any upgrade that runs to completion must result in a
set of operationally consistent drivers.
Prevent user from applying unsupported upgrades.
Upgrade Application Requirements
Support for Rollback and Downgrade
Users must be able to return to an earlier version.
Users must be able to roll back to the previous
version.
Atomic Upgrade and Rollback
Upgrade and rollback must either complete
successfully or leave the system in its original state.
If the upgrade / rollback is cancelled by the user for
any reason, all drivers must be returned to the
versions present before the upgrade / rollback was
initiated.
Upgrade Application Requirements
Support Multiple Configurations
Provide 32-bit and 64-bit upgrades.
Provide 32-bit application updates under 64-bit
Windows
Provide 32-bit to 64-bit migration for applications
under 64-bit Windows
Provide customization
E.g. Upgrade without MPIO driver updates.
User Experience
Provide as much automation as possible
Minimize reboots and system downtime
Provide “silent install” option that requires no user
interaction
Upgrade Challenge
Manage complexity of upgrading many drivers
Drivers may have interdependencies.
Failure of boot driver updates may render system not
bootable.
Upgrades must be done remotely
No physical keyboard, mouse and display
Maintain High Availability
pServer must be operational after upgrade / rollback
completes.
pServer must always be in a known state.
Minimize installer authoring effort
Creating upgrades and patches should not be a major
development effort.
DIFxApp Implementation
DIFxApp – The Answer to the Upgrade Challenge
Egenera’s pServer upgrade application is based on the
standard Windows Installer technology.
The installer MSI is developed using the Microsoft WiX
and DIFxApp tools.
The Wix source file from which the MSI is build is a XML script.
This allows for highly automated upgrade builds.
All Egenera drivers are installed / updated with DIFx.
The installer also updates the Microsoft MPIO drivers,
which are not DIFx compatible.
No extra work had to be done to provide for
upgrade and rollback functionality of the DIFx
installed drivers.
DIFxApp Implementation
DIFxApp – The Answer to the Upgrade Challenge
Additional MSI custom actions had to be developed for
Driver consistency and compatibility checks
MPIO upgrade / rollback
System configuration checks
Application configurations
The current MSI is based on DIFx 1.1
Upgrade meets all the requirements, except the ability for quiet
installs due to SetupAPI limitations.
DIFx 2.0 addresses the issue and allows quiet installs in legacy
mode.
All drivers are signed with a Microsoft WHQL signature
or Authenticode signature.
DIFxApp Implementation
Authoring a Windows Installer Package using
WiX and DIFxApp
Create Driver Package
Add DIFx identifiers to INF
Sign shippable driver package with WHQL or
Authenticode signature
Obtain test signatures from WHQL for testing
Create the WiX XML source file that describes the
application and associated driver packages
The MSI custom actions for installing driver packages are
linked into the MSI automatically.
Plan how to deploy patches and upgrades!
Build the MSI
Authenticode sign the MSI before shipping!
Call To Action
Come see a live demo of the Egenera
BladeFrame
A BladeFrame is presented at the
Hardware Innovation Showcase
Contact Egenera for more information
www.egenera.com
DIFxAPI
Driver Install Frameworks Library
DIFxAPI exports the
following functions
DriverPackagePreinstall()
DriverPackageInstall()
DriverPackageUninstall()
DriverPackageGetPath()
Features
Support for install, uninstall, repair,
and rollback of drivers
Tracks and maintains applicationdriver-service associations and
provides reference counting on
drivers and services
Driver
INF
Device Install App
DIFxAPI
SetupAPI
PC
Tip
Want to install a multifunction Device with DIFxAPI?
Populate the driver store with DriverPackagePreinstall()
Then call DriverPackageInstall()
Future Tools And Features
Driver Install Frameworks Co-Installer (DIFxCo)
Enables a rich “Hardware First”
user experience
Users can plug in a device and have all the
associated software install automatically
Partners can package a driver with an
application setup package for
hardware-first installation
Future Tools And Features
Driver Package Validation Tools
Driver Package Verifier (DPVer)
Ensures that your INF and Driver Package are valid
Provide a method for checking driver packages and
INF files before they are added to the Store
Driver Install Verifier (DIVer)
Watches a co-installer for invalid actions
Provide a command line front end as a tool so that a
developer can determine what invalid actions are
taking place in their co-installer
Summary
The Driver Install Frameworks (DIFx) is the new driver
package model for driver development
It addresses key Independent Hardware Vendor (IHV)/Original
Equipment Manufacturer (OEM) concerns
Fast time to market, technical support costs, learning curve, etc.
Backward compatible up to Windows 2000
It intends to reduce customer pain points
DIFx will continue to evolve to provide a complete driver
package development experience
Aims to reduce OS crashes and fragility due to poorly
written driver install packages
Reduces Support and Development costs
Improves the user experience
Allows Vendor differentiation
Call To Action
Use the Driver Install Frameworks tools
http://www.microsoft.com/whdc/hwdev/driver/difxtools.mspx
Provide us feedback…
On the Driver Install Frameworks tools
On how we can help you build a single package that
supports both hardware-first and software-first installs
E-Mail us at: devinstf @ microsoft.com
Community Resources
Windows Hardware and Driver Central (WHDC)
www.microsoft.com/whdc/default.mspx
Technical Communities
www.microsoft.com/communities/products/default.mspx
Non-Microsoft Community Sites
www.microsoft.com/communities/related/default.mspx
Microsoft Public Newsgroups
www.microsoft.com/communities/newsgroups
Technical Chats and Webcasts
www.microsoft.com/communities/chats/default.mspx
www.microsoft.com/webcasts
Microsoft Blogs
www.microsoft.com/communities/blogs
Additional Resources
Web Resources
Writing a Device Installation Application
MSDN search keywords: “Writing a Device Installation Application”
Driver Install Frameworks tools
http://www.microsoft.com/whdc/hwdev/driver/difxtools.mspx
Windows Installer SDK
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Windows Hardware and Driver Central
http://www.microsoft.com/whdc
Using Authenticode to Digitally Sign Driver Packages
http://download.microsoft.com/download/3/4/f/34fa7f0d-92d6-4265-80b21541789699a9/Authenticode.exe
Other Resources
Toaster Installation Package Sample In the Windows XP and
Windows Server 2003 DDK at src\general\toaster\toastpkg
Newsgroups
microsoft.public.development.device.drivers
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.