每个 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,则还需要 SoftwareBinary 和 SoftwareVersion,但 SoftwareArguments 和 标志(在 AddSoftware 指令中)是可选的。
从 Windows 10 版本 1709 开始,值为 2 表示关联的软件是Microsoft应用商店链接。 仅对没有图形用户界面的设备特定软件使用值 1。 如果你有具有图形元素的设备特定应用,它应来自 Microsoft Store,驱动程序应使用 SoftwareType 值 2 引用它。
如果 SoftwareType 设置为 2,则需要 SoftwareID,并且 (AddSoftware 指令中) 标志是可选的。 如果 SoftwareType 设置为 2,则不使用 SoftwareBinary 和 SoftwareVersion。
注释
使用 AddSoftware 指令的 SoftwareType 2 时,不需要利用组件 INF。 该指令可在任何 INF 中成功使用。 但是,必须从组件 INF 中使用 Type 1 的 AddSoftware 指令。
请勿使用 AddSoftware 分发与设备无关的软件。 例如,不应使用 AddSoftware 安装特定于 OEM 的电脑实用工具程序。 请改用以下选项之一在 Windows 10 的 OEM 映像中预安装应用:
若要预安装 Win32 应用,请启动到审核模式并安装应用。 有关详细信息,请参阅 审核模式概述。
有关将驱动程序与通用 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。