INF AddSoftware 指令

每个 AddSoftware 指令描述独立软件的安装。 应在 SoftwareComponent 安装类的 INF 文件中使用此指令。 有关软件组件的更多详细信息,请参阅 使用组件 INF 文件。 Windows 10版本 1703 及更高版本支持此指令。

有效的安装类型取决于 目标平台。 例如,Desktop 支持 MSI 安装程序和设置 EXE。

注意

通用驱动程序支持类型 2,类型 1 仅限桌面。

当软件组件 INF 文件指定 AddSoftware 时,系统会在设备安装后将要安装的软件排队。 无法保证何时或是否会安装软件。 如果引用的软件安装失败,系统会在更新引用软件组件时再次尝试。

AddSoftware 指令在 INF DDInstall 中使用。“软件”部分。

[DDInstall.Software]
AddSoftware=SoftwareName,[flags],software-install-section

SoftwareName
指定要安装的软件的名称。 无论 INF 或节名称如何,此名称在系统范围内都必须是唯一的。 处理 AddSoftware 指令时,根据任何驱动程序包中的 AddSoftware 指令以同名安装的以前软件检查版本。 建议在 SoftwareName 前面加上供应商名称,例如 ContosoControlPanel

flag
指定一个或多个 (ORed) 标志。

0x00000000
AddSoftware 指令仅处理一次。

0x00000001
AddSoftware 指令将针对指定具有相同唯一 SoftwareNameAddSoftware 的每个组件设备处理一次。

例如,考虑使用同一 INF 文件安装三个设备的配置。 软件安装过程仅针对 标志 0x00000000运行一次,但0x00000001 标志 运行三次。

software-install-section
引用 INF 编写器定义的部分,该节包含有关安装软件的信息。

注解

INF 编写器创建的每个节名称在 INF 文件中必须唯一,并且必须遵循定义节名称的一般规则。 有关这些规则的详细信息,请参阅 INF 文件的一般语法规则

AddSoftware 指令必须引用 INF 文件中的其他位置命名的 software-install-section。 每个此类部分具有以下形式:

[software-install-section]

SoftwareType=type-code
[SoftwareBinary=path-to-binary]
[SoftwareArguments=argument[, argument] …]
[SoftwareVersion=w.x.y.z]
[SoftwareID=pfn://x.y.z]

注意

有关节条目和值的约束的信息,请参阅 SoftwareType

使用 AddSoftware 安装的任何软件都必须以无提示方式安装 (或静默) 。 换句话说,安装过程中无法向用户显示任何用户界面。

如果卸载了虚拟软件组件设备或其父设备,则不会卸载使用 AddSoftware 安装的任何软件。 如果你的软件不是 (的 UWP 应用,即你正在使用的 SoftwareType 为 1) 的 AddSoftware ,请确保用户可以轻松地卸载它,而无需在注册表中留下跟踪。 为此,请执行以下操作:

  • 如果使用 MSI 安装程序,请在应用程序的 Windows Installer 包中设置 “添加/删除程序” 条目。

  • 如果使用的自定义 EXE (安装全局注册表/文件状态,而不是) 补充本地设备设置,请使用 卸载注册表项

Software-install-section 条目和值

SoftwareType={type-code}
SoftwareType 指定软件安装的类型,并且是必需的条目。

值为 1 表示关联的软件是 MSI 或 EXE 二进制文件。 设置此值时,还需要 SoftwareBinary 条目。 Windows 10 S 不支持值 1。

如果 SoftwareType 设置为 1,则还需要 SoftwareBinarySoftwareVersion,但 AddSoftware 指令 () 中的 SoftwareArguments标志是可选的。

从 Windows 10 版本 1709 开始,值为 2 表示关联的软件是 Microsoft Store 链接。 仅对没有图形用户界面的设备特定软件使用值 1。 如果你有一个具有图形元素的设备特定应用,则它应来自 Microsoft Store,并且驱动程序应使用 SoftwareType 值 2 引用它。

如果 SoftwareType 设置为 2,则 SoftwareID 是必需的,AddSoftware 指令) 中的标志 (是可选的。 如果 SoftwareType 设置为 2,则不使用 SoftwareBinarySoftwareVersion

注意

使用 AddSoftware 指令的 SoftwareType 2 时,不需要使用组件 INF。 指令可以在任何 INF 中成功使用。 但是,必须从组件 INF 使用类型 1 的 AddSoftware 指令。

请勿使用 AddSoftware 分发与设备无关的软件。 例如,不应随 AddSoftware 一起安装特定于 OEM 的电脑实用工具程序。 请改用以下选项之一在 oem 映像中预安装应用,Windows 10:

有关将驱动程序与 通用 Windows 平台 (UWP) 应用配对的信息,请参阅将驱动程序与 通用 Windows 平台 (UWP) 应用配对和硬件支持应用 (HSA) :面向驱动程序开发人员的步骤

SoftwareBinary={filename}
指定可执行文件的路径。 系统生成如下所示的命令行:

MSI: msiexec /i "<SoftwareBinary>" ALLUSERS=1 /quiet /qn /promptrestart [<SoftwareArguments>]

EXE: <SoftwareBinary> [<SoftwareArguments>]

如果使用此项,则必须通过指定 DestinationDirs 值为 13 的 INF CopyFiles 指令,将可执行文件添加到 DriverStore。

注意

有关 SoftwareBinary 条目和值的约束的信息,请参阅 SoftwareType

SoftwareArguments={argument1[, argument2[, ...argumentN]]}
指定要追加到命令行的特定于扩展的参数。 可以指定系统直接传递到生成的命令行中的命令行参数。 还可以指定称为 运行时上下文变量的特殊字符串。 指定运行时上下文变量时,系统会先将其转换为特定于设备的值,然后再将其追加到生成的命令行。 可以将文本字符串参数与运行时上下文变量混合和匹配。 支持的运行时上下文变量包括:

<<DeviceInstanceID>>

系统将上述字符串替换为软件组件的设备实例 ID。

例如:

    [DDInstall.Software]
    AddSoftware=ContosoControlPanel,,Contoso_ControlPanel_Software

    [Contoso_ControlPanel_Software]
    SoftwareType=1
    SoftwareBinary=ContosoControlPanel.exe
    SoftwareArguments=<<DeviceInstanceID>>
    SoftwareVersion=1.0.0.0

上面的示例生成了如下所示的命令行:

<DriverStorePath>\ContosoControlPanel.exe PCI\VEN_0000&DEV_0001&SUBSYS_00000000&REV_00\0123

如果 SoftwareArguments 包含多个参数:

    SoftwareArguments=arg1,<<DeviceInstanceID>>,arg2

上述结果为:

<DriverStorePath>\ContosoControlPanel.exe arg1 PCI\VEN_0000&DEV_0001&SUBSYS_00000000&REV_00\0123 arg2

注意

有关 SoftwareArguments 条目和值的约束的信息,请参阅 SoftwareType

SoftwareVersion={w.x.y.z}
指定软件版本。 每个值不应超过 65535。 当系统遇到重复的 SoftwareName 时,它会根据以前的 SoftwareVersion 检查 SoftwareVersion。 如果更大,Windows 将运行该软件。

注意

有关 SoftwareVersion 条目和值的约束的信息,请参阅 SoftwareType

SoftwareID={x.y.z}
指定 Microsoft Store 标识符和标识符类型。 目前,仅支持包系列名称 (PFN) 。 使用 PFN 通过表单 pfn://<x.y.z>引用通用 Windows 平台 (UWP) 应用。

注意

有关 SoftwareID 条目和值约束的信息,请参阅 SoftwareType

另请参阅

使用组件 INF 文件

INF DDInstall.Software 节

INF AddComponent 指令

将驱动程序与通用 Windows 平台 (UWP) 应用配对

硬件支持应用 (HSA):适用于驱动程序开发人员的步骤