各 AddSoftware ディレクティブは、スタンドアロン ソフトウェアのインストールを記述します。 このディレクティブは、 SoftwareComponent セットアップ クラスの INF ファイルで使用する必要があります。 ソフトウェア コンポーネントの詳細については、「 コンポーネント INF ファイルの使用」を参照してください。 このディレクティブは、Windows 10 バージョン 1703 以降でサポートされています。
有効なインストールの種類は 、ターゲット プラットフォームによって異なります。 たとえば、デスクトップでは MSI インストーラーとセットアップ EXEs がサポートされます。
注
タイプ 2 はユニバーサル ドライバーでサポートされ、タイプ 1 はデスクトップ専用です。
ソフトウェア コンポーネント INF ファイルで AddSoftware が指定されている場合、システムはデバイスのインストール後にインストールされるソフトウェアをキューに入れます。 ソフトウェアがインストールされるタイミングやタイミングは保証されません。 参照先ソフトウェアのインストールに失敗した場合、参照元ソフトウェア コンポーネントの更新時にシステムが再試行されます。
AddSoftware ディレクティブは、INF DDInstall 内で使用されます。[ソフトウェア] セクション。
[DDInstall.Software]
AddSoftware=SoftwareName,[flags],software-install-section
エントリ
SoftwareName
インストールするソフトウェアの名前を指定します。 この名前は、INF またはセクション名に関係なく、システム全体で一意である必要があります。
AddSoftware ディレクティブの処理では、すべてのドライバー パッケージの AddSoftware ディレクティブによって同じ名前でインストールされた以前のソフトウェアに対してバージョンがチェックされます。
ContosoControlPanelなど、ベンダー名を使用して SoftwareName の前に作成することをお勧めします。
フラグ
1 つ以上の (ORed) フラグを指定します。
0x00000000
AddSoftware ディレクティブは 1 回だけ処理されます。
0x00000001
AddSoftware ディレクティブは、同じ一意の SoftwareName を持つ AddSoftware を指定するコンポーネント デバイスごとに 1 回処理されます。
たとえば、同じ INF ファイルを使用して 3 つのデバイスをインストールする構成を考えてみましょう。 ソフトウェアのインストール プロセスは 、フラグ 0x00000000に対して 1 回だけ実行されますが、 フラグ 0x00000001の場合は 3 回実行されます。
software-install-section
ソフトウェアをインストールするための情報を含む INF ライター定義セクションを参照します。
Remarks
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 インストーラー パッケージで [プログラムの追加と削除] エントリを設定します。
ローカル デバイスの設定を補完するのではなく、グローバル レジストリ/ファイルの状態をインストールするカスタム 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 Store リンクであることを示します。 値 1 は、グラフィカル ユーザー インターフェイスがないデバイス固有のソフトウェアにのみ使用します。 グラフィカル要素を含むデバイス固有のアプリがある場合は、Microsoft Storeから取得し、ドライバーは SoftwareType 値 2 を使用してアプリを参照する必要があります。
SoftwareType が 2 に設定されている場合、SoftwareID が必要であり、フラグ (AddSoftware ディレクティブ内) は省略可能です。 SoftwareType が 2 に設定されている場合、SoftwareBinary と SoftwareVersion は使用されません。
注
AddSoftware ディレクティブの SoftwareType 2 を使用する場合、コンポーネント INF を使用する必要はありません。 ディレクティブは、任意の INF で正常に使用できます。 ただし、種類 1 の AddSoftware ディレクティブは、コンポーネント INF から使用する必要があります。
AddSoftware を使用して、デバイスに関係のないソフトウェアを配布しないでください。 たとえば、OEM 固有の PC ユーティリティ プログラムを AddSoftware と共にインストールしないでください。 代わりに、次のいずれかのオプションを使用して、Windows 10の OEM イメージにアプリをプレインストールします。
Win32 アプリをプレインストールするには、監査モードで起動し、アプリをインストールします。 詳細については、「 監査モードの概要」を参照してください。
Microsoft Store (UWP) アプリをプレインストールするには、デスクトップ デバイス用のプレインストール可能なアプリに関するページを参照してください
ドライバーとユニバーサル 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
SoftwareArgument に複数の引数が含まれている場合:
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://<x.y.z>を使用して ユニバーサル Windows プラットフォーム (UWP) アプリを参照するには、PFN を使用します。
注
SoftwareID エントリと値の制約については、「SoftwareType」を参照してください。