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.
© Copyright 2024