This article provides answers to frequently asked questions about Driver Install Frameworks (DIFx) tools, which simplify installation of driver packages and eliminate most end-user manual steps for installing a driver.
This information applies for the following operating systems:
Windows Server 2008 R2
Windows Server 2008
Windows Server 2003
On This Page
What are the currently available Driver Install Frameworks Tools?
The following tools are currently available:
Driver Install Frameworks for Applications (DIFxApp)
Driver Package Installer (DPInst)
Driver Install Frameworks API (DIFxAPI)
Where can I find the DIFx tools?
The most recent version of the DIFx tools is included in the latest release of the WDK.
How do I get help with the DIFx Tools?
For newsgroup support on released DIFx tools, go to Microsoft Development Device Drivers newsgroups.
For Microsoft PSS support open a PSS incident.
What is DIFxAPI?
The Driver Install Frameworks API (DIFxAPI) exposes functions for preinstalling, installing, and uninstalling driver packages that meet DIFx requirements; associating driver packages with applications when the package is installed; logging events that are related to preinstallation, installation, and uninstallation; and retrieving the INF file path for a preinstalled driver package from the driver store.
Can I redistribute DPInst , DIFxApp, and DIFxAPI?
You may redistribute these tools as described in the license agreement that ships with the tools.
Can I use InstallShield or Wise with DIFx Tools?
InstallShield uses DIFx to install drivers and added a Device Driver Wizard to InstallShield X and later versions of InstallShield.
See the InstallShield 2010 description of this wizard.
Wise has provided customers with a template that can be downloaded at no charge through the Download Redistributables Wizard within Wise Installation Studio/Express.
About Wise support for DIFx
Do DPInst and DIFxApp support 64-bit drivers?
The DIFx tools support drivers for x86-based systems, x64-based systems, and Itanium-based systems.
Are signed drivers required with DPInst and DIFxApp?
These tools do not explicitly require your drivers to be signed. However, we recommend driver signing as a way to increase the reliability and stability of the operation system. You can sign drivers through two methods:
How do I disable the signing requirement?
By default, DPInst allows only signed drivers to be installed and requires that all of the files that are listed in the INF for copying are actually present. To disable this mode and apply the driver-signing policy that is in effect for the operating system on the target system, use one of the following:
< legacyMode /> line in the XML file
/lm command line switch
This switch disables the additional Windows Vista and Windows Server 2008 requirements that are built into DPInst and enables vendors who are shipping drivers only for Windows 2000, Windows XP, or Windows Server 2003 to take advantage of DPInst. Unsigned drivers are accepted and installed according to the policy setting for the underlying operating system. INFs that reference files that cannot be found in the source media generate only a warning in the log without causing the installation to fail.
How do I disable the requirement for signed drivers for testing purposes?
To do this, attach a kernel debugger to the system and set the _DFX_INSTALL_UNSIGNED_DRIVER environment variable to 1.
When this variable is set, DPInst does not verify that the package is signed and does not check for the presence of a catalog file for the package.
This option has been kept for backward compatibility. The legacy mode flag that was described earlier on this page is the recommended way to disable the requirement for signed drivers.
What if my customer adds my hardware before installing my software?
The Windows PnP manager searches for a driver that is compatible with your hardware. If the Windows PnP manager finds a driver that is compatible with your hardware, that driver is installed automatically. In this situation, when your customer installs your software, the DIFx tools check to determine whether your driver is a better match for your device than the driver that was previously installed. If your driver is a better match than the previously installed driver, the DIFx tools update the driver to your driver.
Note that DPInst and DIFxApp both have an optional flag that forces the driver to be updated to your driver regardless of whether it is a better match for your device. However, this flag works only in quiet installation mode. If this flag is used, the DIFx tools always update the driver to your driver.
If the Windows PnP manager does not find a driver that is compatible with your hardware, the DIFx tools install your driver for the device when your customer installs your software.
Is localization supported in version 2.0 of the tools?
Yes. Starting with Version 1.1 of the DIFx tools, these applications are localized to support 22 languages. The languages are:
|Chinese (People's Republic of China)||Italian (Italy)|
|Chinese (Taiwan)||Japanese (Japan)|
|Czech (Czech Republic)||Korean (Korea)|
|Danish (Denmark)||Norwegian (Bokmål) (Norway)|
|German (Germany)||Dutch (Netherlands)|
|Greek (Greece)||Polish (Poland)|
|English (United States)||Portuguese (Brazil)|
|Spanish - Modern Sort (Spain)||Portuguese (Portugal)|
|Finnish (Finland)||Russian (Russia)|
|French (France)||Swedish (Sweden)|
|Hebrew (Israel)||Turkish (Turkey)|
DPInst 1.0 and DIFxApp 1.0 do not support localization.
Can I Use DPInst, DIFxApp, and DIFxAPI on Windows Vista or Windows 7?
Yes. DPInst, DPFxApp, and DIFxAPI can be used on Windows Vista and Windows 7.
Driver Package Installer (DPInst)
How can I use DPInst to silently deploy drivers in my enterprise?
DPInst supports quiet installation through the /q (quiet) flag on the command line or the <quietInstall/> line in the XML file.
The quietInstall flag works in combination with the presence of an end-user license agreement (EULA) page and the suppressEulaPage flag. If the XML files require a EULA and the EULA is not suppressed, the quiet installation will become a wizard-guided installation.
For more information, see Driver Package Installer (DPInst).
Do DPInst and DIFxApp update phantom devices?
Yes, they update phantom devices.
Can I use DPInst from my setup to remove a driver during the setup uninstallation routine?
The current version of DPInst supports uninstallation of a driver package through the /u (uninstall) flag on the command line.
Driver Install Frameworks for Applications
I use InstallShield in my installation package. Can I still use DIFxApp?
Yes, InstallShield works with DIFXApp. For more information, check the InstallShield Web site.
Can I suppress the "plug in hardware" prompt from the MsiCleanupOnSuccess function of DIFxApp?
Currently the only way to suppress this prompt is to opt for a silent installation by using the /q switch with Msiexec. However, that also suppresses any other dialog box that could appear during the installation. In a silent installation, if DIFxApp encounters a code path where it cannot proceed without showing UI, it fails.
For example, DIFxApp cannot proceed without showing UI if DIFxApp needs to display an unsigned driver prompt. This is a critical prompt, and during a silent installation DIFxApp fails because it cannot display the prompt.
However, as another example, DIFxApp can proceed if a request for the "Plug in hardware" prompt occurs. The "Plug in hardware" prompt is not a critical prompt, so DIFxApp just suppresses it and continues during a silent installation.
Does the message at the end of installation that cautions that the hardware is unplugged actually scan for hardware IDs? Or does this message just assume that the hardware isn't plugged in because a "software first" installation has just completed?
DIFxApp checks to determine whether the hardware is connected.
Is the message that advises users to plug in the hardware controlled by a public property? Can I opt to avoid this pop-up message during a full UI installation and display my own custom dialog box?
Unfortunately, you cannot replace this pop-up message with a custom dialog box.