コマンド ライン変換用のテンプレート ファイルを生成する方法

MSIX Packaging Tool を使用すると、対話型 UI またはコマンド ライン オプションの 2 つの方法で変換を実行できます。 コマンド ラインを使用する場合は、変換が特定の設定とニーズに対応するためにテンプレート ファイルを指定する必要があります。 この記事では、自分に合ったテンプレート ファイルを生成するプロセスについて説明します。

テンプレート ファイルを取得するには、次の 2 つの方法があります。

  • MSIX Packaging Tool の UI を使用できます。 ツールの設定で、作成する MSIX パッケージごとに変換テンプレート ファイルを生成する必要を指定できます。
  • サンプル テンプレートを 使用して、 変換ごとに必要な構成を手動で入力できます。

MSIX Packaging Tool から変換テンプレート ファイルを生成する

  1. MSIX Packaging Tool を起動します。
  2. アプリケーションの右上隅にある設定に移動します。
  3. [各パッケージでコマンド ライン ファイルを生成する] オプションが選択されている必要があります。
  4. 必要な設定に対するその他の変更または変更 (除外項目、終了コードなど) を行います。
  5. 設定を保存します
  6. インストーラーを使用してアプリケーション パッケージ ワークフローを実行します。
    • インストーラーを選択しない場合は、変換テンプレート ファイルを生成できます。
    • exe を使用している場合は、変換テンプレート ファイルを生成するために、インストーラーにサイレント フラグを渡す必要があります。
  7. 変換の最後には、選択したインストーラーと現在の設定に基づいてテンプレート ファイルが構成され、今後の変換に再使用できます。
    • 既定では、変換テンプレート ファイルは MSIX パッケージと同じ場所に保存されますが、[パッケージの作成] ページでテンプレート ファイルに別の保存場所を指定できます。
    • 各変換の最後に出力する MSIX に基づいて、いくつかの変更を加える必要があります。

変換テンプレート ファイルを手動で編集する

変換テンプレート ファイルのテンプレート パラメーターを手動で編集して、自分に合ったテンプレート ファイルを生成できます。 変換テンプレート ファイルを生成する場合は、テンプレート ファイルに追加する機能に注意してください。一部の機能では、動作するために追加のスキーマ参照が必要な場合があります。

変換テンプレートのパラメーター リファレンス

変換テンプレート ファイルで使用できるパラメーターの全一覧を次に示します。

ConversionSettings 説明
設定:: AllowTelemetry [省略可能] このツールの呼び出しについてのテレメトリ ログを有効にします。
設定:: ApplyAllPrepareComputerFixes [省略可能] 準備コンピューターの推奨される修正プログラムをすべて適用します。 その他の属性が使用される場合は設定できません。
設定:: GenerateCommandLineFile [省略可能] 将来使用するために、テンプレート ファイルの入力を SaveLocation ディレクトリにコピーします。
設定:: AllowPromptForPassword [省略可能] 仮想マシン用および署名証明書用のパスワードが必須かつ未指定の場合、その入力をユーザーに求めるようツールに指示します。
設定:: EnforceMicrosoftStoreVersioningRequirements [省略可能] Microsoft Store およびビジネス向け Microsoft Store からの展開に必要なパッケージ バージョン管理スキームを適用するようツールに指示します。
設定:: ServerPortNumber [省略可能]リモート コンピューターに接続するときに使用されます。 テンプレート スキーマの v2 が必要です。
設定:: AddPackageIntegrity [省略可能]生成された MSIX ごとにパッケージの整合性を追加します。 テンプレート スキーマの v5 が必要です。
ValidInstallerExitCodes [省略可能] 0 以上の ValidInstallerExitCode 要素。 テンプレート スキーマの v2 が必要です。
ValidInstallerExitCodes:: ValidInstallerExitCode [省略可能]ツールが使い慣れている、または再起動が必要になる可能性があるインストーラーの終了コードを指定します。 テンプレート スキーマの v2 が必要です。
ValidInstallerExitCodes:: ValidInstallerExitCode:: Reboot [省略可能]変換中に終了コードで再起動をトリガーするかどうかを指定します。 テンプレート スキーマの v3 が必要です。
ExclusionItems [省略可能] 0 個以上の FileExclusion または RegistryExclusion 要素。 FileExclusion 要素はすべて、RegistryExclusion 要素の前に表示されている必要があります。
ExclusionItems::FileExclusion [省略可能] パッケージ化から除外するファイル。
ExclusionItems::FileExclusion::ExcludePath パッケージ化から除外するファイルへのパス。
ExclusionItems::RegistryExclusion [省略可能] パッケージ化から除外するレジストリ キー。
ExclusionItems::RegistryExclusion:: ExcludePath パッケージ化から除外するレジストリへのパス。
PrepareComputer::DisableDefragService [省略可能] アプリの変換中、Windows のデフラグ ツールを無効にします。 false に設定すると、ApplyAllPrepareComputerFixes がオーバーライドされます。
PrepareComputer:: DisableWindowsSearchService [省略可能] アプリの変換中、Windows Search を無効にします。 false に設定すると、ApplyAllPrepareComputerFixes がオーバーライドされます。
PrepareComputer:: DisableSmsHostService [省略可能] アプリの変換中、SMS ホストを無効にします。 false に設定すると、ApplyAllPrepareComputerFixes がオーバーライドされます。
PrepareComputer:: DisableWindowsUpdateService [省略可能] アプリの変換中、Windows Update を無効にします。 false に設定すると、ApplyAllPrepareComputerFixes がオーバーライドされます。
SaveLocation [省略可能] ツールの保存先を指定する要素。 指定しない場合、パッケージは Desktop フォルダーに保存されます。
SaveLocation::PackagePath [省略可能] 結果として得られる MSIX パッケージの保存先のファイルまたはフォルダーへのパス。
SaveLocation::TemplatePath [省略可能]結果のコマンド ライン テンプレートが保存されるファイルまたはフォルダーへのパス。
Installer::Path アプリケーション インストーラーへのパス。
Installer::Arguments [省略可能] インストーラーに渡す引数。 本ツールによって引数 "/qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1" がサイレントで使用され、MSI インストーラーが自動的に実行されます。 注: 複数のインストーラーを使用している場合は、インストーラーを強制的にサイレントに実行.exeがあります。
Installer::InstallLocation [省略可能]インストールされている場合は、インストールされているファイルのアプリケーションのルート フォルダーへの完全なパス (例: "C:\Program Files (x86)\MyAppInstalllocation")。
VirtualMachine [省略可能] 変換がローカルの仮想マシン上で実行されるよう指定する要素。
VirtualMachine::Name 変換環境に使用する仮想マシンの名前。
VirtualMachine::Username 変換環境に使用する仮想マシンのユーザー名。
RemoteMachine optional変換がリモートコンピューターで実行されることを指定する要素。 テンプレートスキーマの v2 が必要です。
RemoteMachine:: ComputerName 変換環境に使用するリモートコンピューターの名前。 テンプレートスキーマの v2 が必要です。
RemoteMachine:: Username 変換環境に使用するリモートコンピューターのユーザー名。 テンプレートスキーマの v2 が必要です。
RemoteMachine:: EnableAutoLogon optionalこれにより、リモートコンピューターで再起動が必要な変換を実行したときに、自動的に再度ログインが行われ、変換がシームレスに続行されます。 テンプレートスキーマの V3 が必要です。
PackageInformation::PackageName MSIX パッケージのパッケージ名。
PackageInformation::PackageDisplayName MSIX パッケージのパッケージ表示名。
PackageInformation::PublisherName MSIX パッケージの発行元。
PackageInformation::PublisherDisplayName MSIX パッケージの発行元表示名。
PackageInformation::Version MSIX パッケージのバージョン番号。
PackageInformation::P ackageDescription optionalMSIX パッケージの説明。 テンプレートスキーマの v4 が必要です。
PackageInformation:: MainPackageNameForModificationPackage [省略可能] メイン パッケージ名のパッケージ ID 名。 これは、メイン (親) アプリケーションに依存する修正パッケージの作成時に使用されます。
SigningInformation optionalDevice Guard 署名の署名情報を指定する要素。 テンプレートスキーマの v4 が必要です。
SigningInformation:: Deviceguシャード署名 optionalDevice Guard の署名情報を指定する要素。 テンプレートスキーマの v4 が必要です。
Deviceguシャー署名:: TokenFile JSON 形式で Device Guard の署名に 必要な Azure AD アクセストークン 。 V4 テンプレートスキーマが必要です。
Deviceguの署名:: TimestampUrl optionalDevice Guard で署名するときにタイムスタンプを提供して、アプリケーションが証明書の有効期間を超えてインストールされるようにします。 テンプレートスキーマの v4 が必要です。
アプリケーション [省略可能] MSIX パッケージでアプリケーション エントリを構成するための 0 個以上のアプリケーション要素。
Application::Id MSIX アプリケーション用のアプリ ID。 この ID は、指定の ExecutableName と一致するアプリケーション エントリが検出された場合に使用されます。 パッケージ内の実行可能ファイルには複数のアプリケーション ID の値を設定できます。

この値はパッケージ内におけるアプリケーションの一意の識別子です。 この値は、パッケージ相対アプリ識別子 (PRAID) とも呼ばれます。 ID はパッケージ内で一意である必要があります (同じパッケージ内では同じ ID は 1 つしか使用できません)。 ただし、ID はグローバルに一意である必要はありません。 システム上には、同じ ID が使用されている別のパッケージが存在してもかまいません。

この文字列には、ピリオドで区切られた英数字フィールドが含まれています。 各フィールドは、ASCII アルファベット文字で始まる必要があります。 これらをフィールド値として使用することはできません。 "CON"、"PRN"、"AUX"、"NUL"、"COM1"、"COM2"、"COM3"、"COM4"、"COM5"、"COM6"、"COM7"、"COM8"、"COM9"、"LPT1"、"LPT2"、""、"LPT4"、"LPT5"、"LPT6"、"LPT7"、"LPT8"、および "LPT9"。
Application::DisplayName MSIX パッケージのアプリ表示名。 この表示名は、指定の ExecutableName と一致するアプリケーション エントリが検出された場合に使用されます。
Application::ExecutableName パッケージ マニフェストに追加される MSIX アプリケーションの実行可能ファイル名。 この名前の付いたアプリケーションが検出されない場合、対応するアプリケーション エントリは無視されます。
Application::Description [省略可能] MSIX アプリケーション用のアプリの説明。 使用しない場合は、アプリケーションの表示名が使用されます。 この説明は、指定の ExecutableName と一致するアプリケーション エントリが検出された場合に使用されます。
機能 [省略可能] MSIX パッケージにカスタム機能を追加するための 0 個以上の機能要素。 既定では、変換中に "runFullTrust" 機能が追加されます。
Capability::Name MSIX パッケージに追加する機能。

変換テンプレートファイルのサンプル

<MsixPackagingToolTemplate
    xmlns="http://schemas.microsoft.com/appx/msixpackagingtool/template/2018"
    xmlns:V2="http://schemas.microsoft.com/msix/msixpackagingtool/template/1904"
    xmlns:V3="http://schemas.microsoft.com/msix/msixpackagingtool/template/1907"
    xmlns:V4="http://schemas.microsoft.com/msix/msixpackagingtool/template/1910"
    xmlns:V5="http://schemas.microsoft.com/msix/msixpackagingtool/template/2001">
<!--Note: You only need to include xmlns:v2 - xmlns:v5 if you are using one of the features that use those schemas -->

    <Settings
        AllowTelemetry="true"
        ApplyAllPrepareComputerFixes="true"
        GenerateCommandLineFile="true"
        AllowPromptForPassword="false" 
        EnforceMicrosoftStoreVersioningRequirements="false"
        v2:ServerPortNumber="1599"
        v5:AddPackageIntegrity="true">    

    <!--Note: Exclusion items are optional and if declared take precedence over the default tool exclusion items
        <ExclusionItems>
            <FileExclusion ExcludePath="[{CryptoKeys}]" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Crypto" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Search\Data" />
            <FileExclusion ExcludePath="[{Cookies}]" />
            <FileExclusion ExcludePath="[{History}]" />
            <FileExclusion ExcludePath="[{Cache}]" />
            <FileExclusion ExcludePath="[{Personal}]" />
            <FileExclusion ExcludePath="[{Profile}]\Local Settings" />
            <FileExclusion ExcludePath="[{Profile}]\NTUSER.DAT.LOG1" />
            <FileExclusion ExcludePath="[{Profile}]\ NTUSER.DAT.LOG2" />
            <FileExclusion ExcludePath="[{Recent}]" />
            <FileExclusion ExcludePath="[{Windows}]\debug" />
            <FileExclusion ExcludePath="[{Windows}]\Logs\CBS" />
            <FileExclusion ExcludePath="[{Windows}]\Temp" />
            <FileExclusion ExcludePath="[{Windows}]\WinSxS\ManifestCache" />
            <FileExclusion ExcludePath="[{Windows}]\WindowsUpdate.log" />
        <FileExclusion ExcludePath="[{Windows}]\Installer" />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\$Recycle.Bin " />
            <FileExclusion ExcludePath="[{AppVPackageDrive}]\System Volume Information" />
        <FileExclusion ExcludePath="[{AppVPackageDrive}]\Config.Msi" />
            <FileExclusion ExcludePath="[{AppData}]\Microsoft\AppV" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Antimalware" />
            <FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Windows Defender" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Microsoft Security Client" />
            <FileExclusion ExcludePath="[{ProgramFiles}]\Windows Defender" />
        <FileExclusion ExcludePath="[{ProgramFiles}]\WindowsApps" />
            <FileExclusion ExcludePath="[{Local AppData}]\Temp" />
        <FileExclusion ExcludePath="[{Local AppData}]\Microsoft\Windows" />
        <FileExclusion ExcludePath="[{Local AppData}]\Packages" />

            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Cryptography" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware Setup" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Security Client" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Microsoft Antimalware" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\AppV" />
            <RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\AppV" />
        </ExclusionItems>
    -->
    
    <!--Note: Specifying an installer exit code will allow you to automatically trigger a reboot during your conversion
      <v2:ValidInstallerExitCodes>
        <V2:ValidInstallerExitCode ExitCode="3010" V3:Reboot="true"/>
        <V2:ValidInstallerExitCode ExitCode="1641"/>
      </v2:ValidInstallerExitCodes>
    -->
        
    </Settings>

    <!--Note: this section takes precedence over the Settings::ApplyAllPrepareComputerFixes attribute and is optional
    <PrepareComputer
        DisableDefragService="true"
        DisableWindowsSearchService="true"
        DisableSmsHostService="true"
        DisableWindowsUpdateService="true"/>
    -->

    <SaveLocation
        PackagePath="C:\users\user\Desktop\MyPackage.msix" 
        TemplatePath="C:\users\user\Desktop\MyTemplate.xml" />

    <Installer
        Path="C:\MyAppInstaller.msi"
        InstallLocation="C:\Program Files\MyAppInstallLocation" />
    
    <!--NOTE: This section specifies that the conversion will be run on a local Virtual Machine. This is optional if you want to change your conversion environment from the default local machine.
    <VirtualMachine Name="vmname" Username="vmusername"/>
    -->

    <!--NOTE: This section specifies that the conversion will be run on a remote machine.This is optional if you want to change your conversion environment from the default local machine.
    <v2:RemoteMachine ComputerName="vmname" Username="vmusername" v3:EnableAutoLogon="true"/>
    -->

    <PackageInformation
        PackageName="MyAppPackageName"
        PackageDisplayName="MyApp Display Name"
        PublisherName="CN=MyPublisher"
        PublisherDisplayName="MyPublisher Display Name"
        Version="1.1.0.0"
        MainPackageNameForModificationPackage="MainPackageIdentityName">

    <!--Note: This is optional, if you want to sign your package with Device Guard signing
        <v4:SigningInformation>
            <v4:DeviceGuardSigning
                Tokenfile="tokenfile.json"
                TimestampUrl="https://mytimestamp.com"/>
        </v4:SigningInformation>
    -->
        
    <!--NOTE: This ID will be used if the Application entry detected matches the specified ExecutableName
        <Applications>
            <Application
                Id="MyApp1"
                Description="MyApp"
                DisplayName="My App"
                ExecutableName="MyApp.exe"/>
        </Applications>
    -->

    <!--NOTE: This is optional as “runFullTrust” capability is added by default during conversion
        <Capabilities>
            <Capability Name="runFullTrust" />
        </Capabilities>
    -->
        
    </PackageInformation>
</MsixPackagingToolTemplate>