INF AddSoftware 指令

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

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

注释

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

当软件组件 INF 文件指定 AddSoftware时,系统会将安装设备后要安装的软件排入队列。 不能保证何时或是否安装了软件。 如果引用的软件无法安装,系统会在更新引用软件组件时重试。

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

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

条目

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

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

0x00000000
AddSoftware 指令仅处理一次。

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

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

software-install-section
引用 INF 编写器定义的节,其中包含用于安装软件的信息。

注解

每个 INF-writer-created 部分名称在 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 应用(即你使用的是 AddSoftware,且 SoftwareType 为 1),请确保用户可以轻松地卸载它,而无需在注册表中留下跟踪。 为此,请执行以下操作:

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

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

Software-install-section 条目和值

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

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

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

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

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

注释

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

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

  • 若要预安装 Win32 应用,请启动到审核模式并安装应用。 有关详细信息,请参阅 审核模式概述

  • 若要预安装 Microsoft 应用商店(UWP)应用,请参阅适用于桌面设备的预安装应用

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

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

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

EXE: <SoftwareBinary> [<SoftwareArguments>]

如果使用此项,则必须通过将 INF CopyFiles 指令 指定为 13 DestinationDirs 值,将可执行文件添加到 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存储标识符和标识符类型。 目前仅支持包系列名称(PFN)。 使用 PFN 通过表单 pfn://<x.y.z>引用通用 Windows 平台(UWP)应用。

注释

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

另请参阅

使用组件 INF 文件

INF DDInstall.Software 节

INF AddComponent 指令

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

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