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