MSIX 一括変換スクリプト

MSIX ツールキットの一括変換スクリプトを使用すると、Windows アプリから MSIX パッケージ形式への変換を自動化できます。 それらのアプリの一覧と詳細情報は、entry.ps1 スクリプト内で提供されています。

変換用にマシンを準備する

アプリケーションから MSIX パッケージ形式への変換を自動化するには、MSIX ツールキットの一括変換スクリプトを実行する前に、使用するデバイス (仮想またはリモート) をリモート通信を許可するように構成し、MSIX パッケージ作成ツールをインストールする必要があります。

用語 説明
ホスト マシン 一括変換スクリプトを実行するデバイスです。
仮想マシン ホスト マシンによってホストされている Hyper-V に存在するデバイスです。
リモート コンピューター ネットワーク経由でアクセスできる物理マシンまたは仮想マシンです。

ホスト マシン

ホスト マシンは、次の要件を満たしている必要があります。

  • MSIX パッケージ作成ツールがインストールされている必要があります。
  • Virtual Machines が使用されている場合は、Hyper-V がインストールされている必要があります。
  • リモート マシンが使用されている場合:
    • デバイスは、リモート コンピューターと同じ Doメイン に存在します。
      • PowerShell リモート処理を有効にする
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • デバイスがワークグループまたは別の Do メインにリモート コンピューターとして存在します。
      • PowerShell リモート処理を有効にする
      • WinRM の信頼されたホストには、リモート コンピューターのデバイス名または IP アドレスが含まれている必要があります
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

リモート コンピューター

リモート マシンは、次の要件を満たしている必要があります。

  • MSIX パッケージ作成ツールがインストールされている必要があります。

  • デバイスがホスト マシンと同じドメインに存在する場合:

    • PowerShell リモート処理を有効にする
    • WinRM を有効にする必要がある
    • クライアント ファイアウォール経由で ICMPv4 を許可する
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • デバイスがワークグループまたはホスト マシンの代替ドメインに存在する場合:

    • PowerShell リモート処理を有効にする
    • WinRM に信頼されたホストに、ホスト マシンのデバイス名または IP アドレスが含まれている必要がある
    • クライアント ファイアウォール経由で ICMPv4 を許可する
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      Set-Item WSMan:\localhost\Client\TrustedHosts -Value <HostMachineName>
      
      

仮想マシン

Hyper-V の簡易作成の "MSIX Packaging Tools Environment" イメージはすべての要件を満たすように事前に構成されているので、こちらを使用することをお勧めします。 仮想マシンはホスト マシン上でホストされ、Microsoft Hyper-V 内で実行される必要があります。

仮想マシンは、次の要件を満たしている必要があります。

構文

entry.ps1

説明

これは、アプリケーションを MSIX パッケージ形式に一括でパッケージ化するための機能を提供する一連の PowerShell スクリプトです。 これらのスクリプトは、各アプリケーションをパッケージ化するために使用されるローカルの仮想マシンまたはリモート マシンに接続します。

アプリが MSIX アプリケーション形式にパッケージ化される際は、entry.ps1 スクリプトに入力された順番で変換されます。 entry.ps1 スクリプトに一覧表示されているリモート マシンは、アプリケーションを MSIX 形式にパッケージ化するために 1 度だけ使用されます。 仮想マシンは、複数回使用することによって、さまざまなアプリケーションを MSIX アプリケーション形式にパッケージ化できます。

スクリプトを実行する前に、変換対象のアプリを最初にスクリプトの conversionsParameters 変数に追加する必要があります。 変数には複数のアプリを追加できます。 このスクリプトでは、アプリとリモート マシンまたは仮想マシンを利用して、MSIX パッケージ作成ツール (MsixPackagingTool.exe) の要件を満たす形式の XML ファイルが作成されます。 XML ファイルの作成後、新しい PowerShell プロセスで run_job.ps1 スクリプトが実行されます。このプロセスは、ターゲット デバイスで MsixPackagingTool.exe を実行してアプリを変換し、スクリプト実行フォルダーにある .\Out フォルダーに配置するものです。

PS C:\> entry.ps1

この例では、entry.ps1 スクリプトが実行されます。 このスクリプトは、conversionsParameters 変数で指定されたアプリを MSIX パッケージに変換するものです。 それらのアプリは、virtualMachines または remoteMachines 変数で指定されている仮想マシンまたはリモート マシンを使用して変換されます。

パラメーター

virtualMachines

virtualMachines パラメーターは、アプリを MSIX 形式にパッケージ化するときに接続する仮想マシンの名前と資格情報を格納する配列です。

  • 種類: 配列
  • 必須: いいえ
$virtualMachines = @(
    @{
        Name = "MSIX Packaging Tool Environment";   # Name of the virtual machine as listed in the Hyper-V Management console
        Credential = $credential                    # Credentials used to connect/login to the virtual machine.
    }
)

指定した仮想マシンは、アプリを MSIX 形式にパッケージ化するために使用されます。 この仮想マシンには、メッセージが表示されたときに入力した資格情報を使用して接続します (メッセージは entry.ps1 スクリプトの実行の直後に表示されます)。 アプリケーションを MSIX パッケージ形式にパッケージ化する前に、スクリプトによって Hyper-V VM のスナップショットが作成されます。アプリケーションは、パッケージ化された後にこのスナップショットに復元されます。

remoteMachines

remoteMachines パラメーターは、アプリを MSIX 形式にパッケージ化するときに接続するリモート マシンの名前と資格情報を格納する配列です。 指定されたリモート マシンは、1 つのアプリケーションをパッケージ化するためのデバイスとして 1 度だけ使用されます。

リモート マシンは、ネットワーク上でアクセス可能かつ検出可能である必要があります。

  • 種類: 配列
  • 必須: いいえ
$remoteMachines = @(
    @{
        ComputerName = "Computer.Domain.com";   # The fully qualified name of the remote machine.
        Credential = $credential }              # Credentials used to connect/login to the remote machine.
)

指定されたリモート マシンは、1 つのアプリを MSIX 形式にパッケージ化するために使用されます。 このリモート マシンには、メッセージが表示されたときに入力した資格情報を使用して接続します (メッセージは entry.ps1 スクリプトの実行の直後に表示されます)。

entry.ps1 スクリプトを実行する前に、デバイスの完全修飾ドメイン名または外部に公開されたエイリアスを解決できることを確認します。

signingCertificate

パラメーターは signingCertificate 、パッケージ化されたアプリケーションの署名に使用されるコード署名証明書に関連する情報を含む配列です。 この証明書の暗号化レベルは、少なくとも SHA256 である必要があります。

  • 種類: 配列
  • 必須: いいえ
$SigningCertificate = @{
    Password = "Password"; 
    Path = "C:\Temp\ContosoLab.pfx"
}

conversionsParameters

conversionsParameters パラメーターは、MSIX 形式に変換するアプリに関する情報を格納する配列です。 配列内の各アプリは個別に解析され、リモート マシンまたは仮想マシンで MSIX パッケージ変換時に実行されます。 アプリは、スクリプトでの表示順に変換されます。 MSIX 形式への変換が失敗した場合、スクリプトでは、別のリモート マシンまたは仮想マシン上でアプリケーションの変換が再試行されることはありません。

  • 種類: 配列
  • 必須: はい
$conversionsParameters = @(
    ## Use for MSI applications:
    @{
        InstallerPath = "C:\Path\To\YourInstaller.msi";    # Full path to the installation media (local or remote paths).
        PackageName = "YourApp";                           # Application Display Name - name visible in the start menu.
        PackageDisplayName = "Your App";                   # Application Name - Can not contain special characters.
        PublisherName = "CN=YourCompany";                  # Certificate Publisher information - must match signing certificate
        PublisherDisplayName = "YourCompany";              # Application Publisher name
        PackageVersion = "1.0.0.0"                         # MSIX Application version (must contain 4 octets).
    },
    ## Use for EXE or other applications:
    @{
        InstallerPath = "Path\To\YourInstaller.exe";       # Full path to the installation media (local or remote paths).
        PackageName = "YourApp";                           # Application Display Name - name visible in the start menu.
        PackageDisplayName = "Your App";                   # Application Name - Can not contain special characters.
        PublisherName = "CN=YourCompany";                  # Certificate Publisher information - must match signing certificate
        PublisherDisplayName = "YourCompany";              # Application Publisher name
        PackageVersion = "1.0.0.0";                        # MSIX Application version (must contain 4 octets).
        InstallerArguments = "/SilentInstallerArguement"   # Arguements required by the installer to provide a silent installation of the application.
    },
    ## Creating the Packaged app and Template file in a specific folder path:
    @{
        InstallerPath = "Path\To\YourInstaller.exe";       # Full path to the installation media (local or remote paths).
        PackageName = "YourApp";                           # Application Display Name - name visible in the start menu.
        PackageDisplayName = "Your App";                   # Application Name - Can not contain special characters.
        PublisherName = "CN=YourCompany";                  # Certificate Publisher information - must match signing certificate
        PublisherDisplayName = "YourCompany";              # Application Publisher name
        PackageVersion = "1.0.0.0";                        # MSIX Application version (must contain 4 octets).
        InstallerArguments = "/SilentInstallerArguement";  # Arguements required by the installer to provide a silent installation of the application.
        SavePackagePath = "Custom\folder\Path";            # Specifies a custom folder path where the MSIX app will be created.
        SaveTemplatePath = "Custom\folder\Path"            # Specifies a custom folder path where the MSIX Template XML will be created.
    }
)

conversionsParameters 変数で指定されているアプリ情報は、必要なすべてのアプリケーションの詳細を含んだ XML ファイルを生成するために使用されます。 作成された XML ファイルはスクリプトによって MSIX パッケージ作成ツール (MsixPackagingTool.exe) に渡され、パッケージ化されます。

ログ記録

このスクリプトでは、スクリプトの実行全体を通じて何が発生したかを示すログ ファイルが生成されます。 ログ ファイルには、アプリケーションの MSIX パッケージ形式へのパッケージ化に関する詳細と、スクリプトの進行状況に関連する情報が記載されています。 ログは任意のテキスト ユーティリティで読み取ることができますが、構成自体は Trace32 ログ リーダーを使用した読み取りを想定しています。 スクリプトの実行中に発生したエラーは赤色、警告は黄色で強調表示されます。 トレース 32 ログ リーダーの詳細については、CMTrace を参照してください。

ログ ファイルは、スクリプトの .\logs\BulkConversion.log ディレクトリに作成されます。