MSIX 一括変換スクリプト

MSIXパッケージの一括変換スクリプトToolkit、アプリから MSIX パッケージ形式へのWindowsを自動化できます。 アプリとその詳細の一覧は、次のスクリプト entry.ps1 されています。

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

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

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

ホスト コンピューター

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

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

リモート コンピューター

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

  • MSIX Packaging Tool をインストール する必要があります。

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

    • 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 形式にパッケージ化するために使用されます。 仮想マシンを複数回使用して、さまざまなアプリケーションを MSIX アプリケーション形式にパッケージ化できます。

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

PS C:\> entry.ps1

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

パラメーター

virtualMachines

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

  • 種類: 配列
  • 必須: いいえ
$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

パラメーターは、アプリを MSIX 形式にパッケージ化するときに接続してアクセスするリモート マシンの名前と資格情報を含む remoteMachines 配列です。 指定されたリモート マシンは、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.
)

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

このスクリプトを実行する前に、デバイスの完全修飾ドメイン名または外部に接続するエイリアス が解決可能entry.ps1 してください。

signingCertificate

パラメーターは、MSIX パッケージ アプリケーションに署名するために使用されるコード署名証明書に関連する情報を含む 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.
    }
)

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

ログ記録

スクリプトによってログ ファイルが生成され、スクリプトの実行全体で何がトランスピラー化されたのかを示します。 ログ ファイルには、MSIX パッケージ形式へのアプリケーションのパッケージ化に関連する詳細と、スクリプトの進行に関連する情報が表示されます。 ログは任意のテキスト ユーティリティから読み取り可能ですが、Trace32 ログ リーダーを使用して読み取り用に構成されています。 スクリプト実行のエラーは赤、警告は黄色で強調表示されます。 トレース 32 ログ リーダーの詳細については、次のページの CMTrace をMicrosoft Docs。

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