Директива INF AddSoftware

Каждая директива AddSoftware описывает установку автономного программного обеспечения. Эту директиву следует использовать в INF-файле класса установки SoftwareComponent . Дополнительные сведения о компонентах программного обеспечения см. в разделе Использование INF-файла компонента. Эта директива поддерживается для Windows 10 версии 1703 и более поздних версий.

Допустимые типы установки зависят от целевой платформы. Например, Desktop поддерживает установщики MSI и установочные exEs.

Примечание

Тип 2 поддерживается в универсальных драйверах, тип 1 — только для настольных компьютеров.

Если INF-файл программного компонента указывает AddSoftware, система помещает программное обеспечение в очередь после установки устройства. Нет никакой гарантии, когда и будет ли установлено программное обеспечение. Если упоминаемого программного обеспечения не удается установить, система попытается повторить попытку при обновлении компонента ссылающегося программного обеспечения.

Директива AddSoftware используется в inf DDInstall. Раздел "Программное обеспечение ".

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

Записи

SoftwareName
Указывает имя устанавливаемого программного обеспечения. Это имя должно быть уникальным для всей системы независимо от имени INF или раздела. Обработка директивы AddSoftware проверяет версию предыдущего программного обеспечения, установленного с тем же именем директивой AddSoftware из любого пакета драйверов. Рекомендуется добавить в softwareName имя поставщика, например ContosoControlPanel.

flags
Указывает один или несколько флагов (ORed).

0x00000000
Директива AddSoftware обрабатывается только один раз.

0x00000001
Директива AddSoftware обрабатывается один раз для каждого устройства компонента, указывающего AddSoftware с тем же уникальным softwareName.

Например, рассмотрим конфигурацию, в которой три устройства устанавливаются с помощью одного INF-файла. Процесс установки программного обеспечения выполняется только один раз для флагов 0x00000000 но три раза для флагов 0x00000001.

раздел установки программного обеспечения
Ссылается на раздел, определенный INF-writer, который содержит сведения об установке программного обеспечения.

Комментарии

Каждое имя раздела, созданного inf-writer, должно быть уникальным в ПРЕДЕЛАХ INF-файла и соответствовать общим правилам определения имен разделов. Дополнительные сведения об этих правилах см. в разделе Общие правила синтаксиса для ФАЙЛОВ INF.

Директива AddSoftware должна ссылаться на именованный раздел software-install-section в другом месте INF-файла . Каждый такой раздел имеет следующую форму:

[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 с Типом программного обеспечения 1), убедитесь, что пользователи могут легко удалить его, не оставляя трассировки в реестре. Для этого сделайте следующее:

  • Если вы используете установщик MSI, настройте запись "Установка и удаление программ " в пакете установщика Windows приложения.

  • Если вы используете пользовательский EXE-файл, который устанавливает состояние глобального реестра или файла (вместо дополнения параметров локального устройства), используйте раздел удаления реестра.

Записи и значения раздела установки программного обеспечения

SoftwareType={type-code}
SoftwareType указывает тип установки программного обеспечения и является обязательной записью.

Значение 1 указывает, что связанное программное обеспечение является двоичным файлом MSI или EXE. Если задано это значение, также требуется запись SoftwareBinary . Значение 1 не поддерживается в Windows 10 S.

Если для SoftwareType задано значение 1, также требуются SoftwareBinary и SoftwareVersion , но SoftwareArguments и флаги (в директиве AddSoftware ) являются необязательными.

Начиная с Windows 10 версии 1709 значение 2 указывает, что связанное программное обеспечение является ссылкой на Microsoft Store. Используйте значение 1 только для программного обеспечения для конкретного устройства, у которого нет графического пользовательского интерфейса. Если у вас есть приложение для конкретного устройства с графическими элементами, оно должно поступать из Microsoft Store, а драйвер должен ссылаться на него, используя значение SoftwareType , равное 2.

Если для параметра SoftwareType задано значение 2, требуется softwareID , а флаги (в директиве AddSoftware ) являются необязательными. Если параметр SoftwareType имеет значение 2, SoftwareBinary и SoftwareVersion не используются.

Примечание

При использовании SoftwareType 2 директивы AddSoftware не требуется использовать inf компонента. Директиву можно успешно использовать в любом INF. Однако директива AddSoftware типа 1 должна использоваться из inf компонента.

Не используйте AddSoftware для распространения программного обеспечения, не связанного с устройством. Например, служебная программа для компьютера изготовителя оборудования не должна устанавливаться вместе с AddSoftware. Вместо этого используйте один из следующих вариантов для предварительной настройки приложения в oem-образе Windows 10:

Сведения о связывании драйвера с приложением универсальная платформа Windows (UWP) см. в разделах Связывание драйвера с приложением универсальная платформа Windows (UWP) и приложение поддержки оборудования (HSA): действия для разработчиков драйверов.

SoftwareBinary={filename}
Указывает путь к исполняемому файлу. Система создает командные строки следующим образом:

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

EXE: <SoftwareBinary> [<SoftwareArguments>]

При использовании этой записи необходимо добавить исполняемый файл в DriverStore, указав директиву INF CopyFiles со значением DestinationDirs 13.

Примечание

Сведения об ограничениях для записей и значений SoftwareBinary см. в разделе SoftwareType.

SoftwareArguments={argument1[, argument2[, ... argumentN]]}
Указывает аргументы расширения, добавляемые в командную строку. Можно указать аргументы командной строки, которые система просто передает в созданную командную строку. Можно также указать специальные строки, называемые переменными контекста среды выполнения. При указании переменной контекста среды выполнения система преобразует ее в значение для конкретного устройства, прежде чем добавлять его в созданную командную строку. С переменными контекста среды выполнения можно сочетать и сопоставлять литеральные строковые аргументы. Поддерживаемые переменные контекста среды выполнения:

<<DeviceInstanceID>>

Система заменяет приведенную выше строку идентификатором экземпляра устройства программного компонента.

Пример:

    [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 для ссылки на приложение универсальная платформа Windows (UWP) с помощью формы pfn://<x.y.z>.

Примечание

Сведения об ограничениях записей и значений SoftwareID см. в разделе SoftwareType.

См. также:

Использование INF-файла компонента

INF DDInstall.Software Section

Директива INF AddComponent

Связывание драйвера с приложением универсальная платформа Windows (UWP)

Приложение поддержки оборудования (HSA): действия для разработчиков драйверов