MSIX 一括変換スクリプトMSIX Bulk conversion scripts

MSIX Toolkit の一括変換スクリプトを使用すると、Windows アプリから msix パッケージ形式への変換を自動化できます。The Bulk conversion scripts in the MSIX Toolkit can be used to automate the conversion of Windows apps to the MSIX package format. アプリの一覧とその詳細は、 entry.ps1スクリプトに記載されています。The list of apps and their details are provided in the entry.ps1 script.

変換用にマシンを準備するPrepare machines for conversion

MSIX Toolkit の一括変換スクリプトを実行する前に、アプリケーションから MSIX パッケージ形式への変換を自動化するために、使用するデバイス (仮想またはリモート) をリモート通信を許可するように構成し、MSIX パッケージ化ツールをインストールする必要があります。Prior to running the MSIX Toolkit's Bulk Conversion script, to automate the conversion of your application to the MSIX packaging format the devices that you will be using (virtual, or remote) must be configured to allow remote communication, and have the MSIX Packaging Tool installed.

用語Term 説明Description
ホストコンピューターHost Machine これは、一括変換スクリプトを実行するデバイスです。This is the device executing the Bulk Conversion scripts.
仮想マシンVirtual Machine これは、ホストコンピューターでホストされている Hyper-v に存在するデバイスです。This is a device existing in Hyper-V, hosted on the Host Machine.
リモート コンピューターRemote Machine これは、ネットワーク経由でアクセスできる物理または仮想マシンです。This is a physical or virtual machine accessible over the network.

ホストコンピューターHost Machine

ホストコンピューターは、次の要件を満たしている必要があります。The Host Machine must meet the following requirements:

  • Msix パッケージ化ツールがインストールされている必要があります。MSIX Packaging Tool must be installed.
  • Virtual Machines が使用されている場合は、Hyper-v がインストールされている必要があります。If Virtual Machines are being used, Hyper-V must be installed.
  • リモートコンピューターが使用されている場合:If Remote Machines are being used:
    • デバイスがリモートコンピューターと同じドメインに存在する:Device exists in the same Domain as the Remote Machine(s):
      • PowerShell リモート処理を有効にするEnable PowerShell Remoting
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • デバイスがワークグループまたはリモートコンピューターとしての代替ドメインに存在する:Device exists in a Workgroup or to an alternate Domain as the Remote Machine(s):
      • PowerShell リモート処理を有効にするEnable PowerShell remoting
      • WinRM 信頼されたホストには、リモートコンピューターのデバイス名または IP アドレスが含まれている必要があります。WinRM Trusted Host must contain the device name or IP address of the Remote Machine
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
        

リモート コンピューターRemote Machine

リモートコンピューターは、次の要件を満たしている必要があります。The Remote Machine must meet the following requirements:

  • Msix パッケージ化ツールがインストールされている必要があります。MSIX Packaging Tool must be installed.

  • デバイスがホストコンピューターと同じドメイン内に存在する場合は、次のようになります。If the device exists within the same domain as the Host Machine:

    • PowerShell リモート処理を有効にするEnable PowerShell Remoting
    • WinRM を有効にする必要がありますWinRM must be enabled
    • クライアントファイアウォール経由での ICMPv4 の許可Allow ICMPv4 through client firewall
      # Enables PowerShell Remoting
      Enable-PSRemoting -force
      New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
      
  • デバイスがワークグループ内に存在する場合、またはホストコンピューターとして代替ドメインに存在する場合は、次のようになります。If the device exists within a workgroup or an alternate domain as the Host Machine:

    • PowerShell リモート処理を有効にするEnable PowerShell Remoting
    • WinRM 信頼されたホストには、ホストコンピューターのデバイス名または IP アドレスが含まれている必要があります。WinRM Trusted Host must contain the device name or the IP address of the Host Machine
    • クライアントファイアウォール経由での ICMPv4 の許可Allow ICMPv4 through client firewall
      # 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>
      
      

仮想マシンVirtual Machine

Hyper-v の簡易作成 "MSIX パッケージングツール環境" イメージを使用することをお勧めします。これは、すべての要件を満たすように事前に構成されているためです。It is recommended that the Hyper-V Quick Create "MSIX Packaging Tools Environment" image be used, as it is pre-configured to meet all requirements. バーチャルマシンはホストコンピューター上でホストされ、Microsoft Hyper-V 内で実行されている必要があります。The virtual machine must be hosted on the Host Machine and running within Microsoft Hyper-V.

仮想マシンは次の要件を満たしている必要があります。The Virtual Machine must meet the following requirements:

構文Syntax

entry.ps1

説明Description

これは、アプリケーションを MSIX パッケージ形式に一括してパッケージ化する機能を提供する一連の PowerShell スクリプトです。This is a set of PowerShell scripts that provides the ability to bulk package applications into the MSIX package format. これらのスクリプトは、各アプリケーションをパッケージ化するために使用されるローカルの仮想マシンまたはリモートコンピューターに接続します。These scripts will connect to a local virtual machine or remote machine which will be used to package each application.

MSIX アプリケーション形式にパッケージ化されているアプリは、 entry.ps1スクリプトに入力した順序で変換されます。Apps being packaged into the MSIX application format will be converted in the order they were entered in the entry.ps1 script. entry.ps1スクリプトに一覧表示されているリモートコンピューターは、msix 形式にアプリケーションをパッケージ化するために使用されます。個別が使用されます。Remote machines listed in the entry.ps1 script will be used to package the applications into the MSIX format will be singularly used. 仮想マシンを複数回使用して、さまざまなアプリケーションを MSIX アプリケーション形式にパッケージ化できます。Virtual machines can be used multiple times to package different applications into the MSIX application format.

スクリプトを実行する前に、スクリプトの変数に変換するアプリを最初に追加する必要があり conversionsParameters ます。Before running the script, you must first add the apps you want to convert to the conversionsParameters variable in the script. 複数のアプリを変数に追加できます。Multiple apps can be added to the variable. このスクリプトでは、アプリとリモート/仮想マシンを利用し、 Msix パッケージ化ツール(MsixPackagingTool.exe) の要件を満たすようにフォーマットされた XML ファイルを作成します。The script leverages the app and remote/virtual machines to create a XML file formatted to meet the requirements of the MSIX Packaging Tool (MsixPackagingTool.exe). XML ファイルを作成した後、 run_job.ps1スクリプトは新しい PowerShell プロセスで実行されます。このプロセスでは、ターゲットデバイスで MsixPackagingTool.exe を実行してアプリを変換し、スクリプト実行フォルダーにある .\Outフォルダーに配置します。After creating the XML file, the run_job.ps1 script is executed in a new PowerShell process which executes MsixPackagingTool.exe on the target device to convert the app and place it in the .\Out folder located in the script execution folder.

Example

PS C:\> entry.ps1

例では、 entry.ps1スクリプトを実行します。Ths example executes the entry.ps1 script. このスクリプトは、変数で指定されたアプリを conversionsParameters MSIX パッケージに変換します。This script converts the apps specified in the conversionsParameters variable into MSIX packages. アプリは、仮想マシンまたは仮想マシンを使用して変換されます。これは、 virtualmachines変数とremoteMachines変数に示されています。The apps are converted using the virtual machines or remote machines indicated in the virtualMachines and remoteMachines variables.

パラメーターParameters

virtualMachinesvirtualMachines

パラメーターは、 virtualMachines アプリケーションを MSIX 形式でパッケージ化するときに接続してアクセスする仮想マシンの名前と資格情報を格納する配列です。The virtualMachines parameter is an array that contains the name and credentials of the virtual machines to connect to and access when packaging an app into the MSIX format.

  • 種類: 配列Type: Array
  • 必須: いいえRequired: No
$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 形式でパッケージ化するために使用されます。The specified virtual machine will be used to package apps into the MSIX format. この仮想マシンは、メッセージが表示されたときに入力した資格情報を使用してに接続されます (スクリプトentry.ps1実行の直後にプロンプトが表示されます)。This virtual machine will be connected to using the credentials entered when prompted (prompt appears directly after script entry.ps1 execution). アプリケーションを MSIX パッケージ形式にパッケージ化する前に、スクリプトによって Hyper-v VM のスナップショットが作成され、アプリケーションがパッケージ化された後、このスナップショットに復元されます。Prior to packaging an application to the MSIX packaging format, the script will create a snapshot of the Hyper-V VM, and then restored to this snapshot after application has been packaged.

remoteMachinesremoteMachines

パラメーターは、 remoteMachines アプリケーションを MSIX 形式でパッケージ化するときに接続してアクセスするリモートコンピューターの名前と資格情報を格納する配列です。The remoteMachines parameter is an array that contains the name and credentials of the remote machines to connect to and access when packaging an app into the MSIX format. 指定されたリモートコンピューターは、単一のアプリケーションをパッケージ化するために使用される1つの使用デバイスになります。The remote machines specified will be single-use devices used to package a single application.

リモートコンピューターは、ネットワーク上でアクセス可能で検出可能である必要があります。Remote machines must be accessible and discoverable on the network.

  • 種類: 配列Type: Array
  • 必須: いいえRequired: No
$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 形式でパッケージ化するために使用されます。The specified remote machine will be used to package a single app into the MSIX format. このリモートコンピューターは、入力を求められたときに入力した資格情報を使用してに接続されます (スクリプトentry.ps1実行の直後にプロンプトが表示されます)。This remote machine will be connected to using the credentials entered when prompted (prompt appears directly after script entry.ps1 execution).

entry.ps1スクリプトを実行する前に、デバイスの完全修飾ドメイン名または外部に接続しているエイリアスを解決できることを確認します。Ensure that the fully qualified domain name or externally facing alias of the device is resolvable prior to execution of the entry.ps1 script.

signingCertificatesigningCertificate

パラメーターは、 signingCertificate MSIX パッケージアプリケーションに署名するために使用されるコード署名証明書に関連する情報を格納する配列です。The signingCertificate parameter is an array that contains information related to the code signing certificate that will be used to sign the MSIX packaged application. この証明書の暗号化レベルは、少なくとも SHA256 である必要があります。This certificate must have an encryption level of at minimum SHA256.

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

conversionsParametersconversionsParameters

パラメーターは、 conversionsParameters MSIX 形式に変換するアプリに関する情報を格納する配列です。The conversionsParameters parameter is an array that contains information about the apps you want to convert to MSIX format. 配列内の各アプリは個別に解析され、リモートコンピューターまたは仮想マシンで MSIX パッケージ変換を通じて実行されます。Each app in the array will be parsed individually and run through the MSIX package conversion on either a remote machine or virtual machine. アプリは、スクリプトに表示される順序で変換されます。The apps will be converted in the order that they appear in the script. MSIX 形式への変換が失敗した場合、スクリプトは、別のリモートコンピューターまたは仮想マシン上のアプリケーションの変換を再試行しません。If the conversion to MSIX format fails, the script will not re-attempt to convert the application on a different remote machine or virtual machine.

  • 種類: 配列Type: Array
  • 必須: はいRequired: Yes
$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 ファイルを生成するために使用されます。The app information provided in the conversionsParameters variable will be used to generate an XML file with all of the required application details. XML ファイルを作成すると、スクリプトによってMsix パッケージ化ツール(MsixPackagingTool.exe) に xml ファイルが渡され、パッケージ化されます。After creating the XML file, the script will then pass the XML file to the MSIX Packaging Tool (MsixPackagingTool.exe) to be packaged.

ログの記録Logging

スクリプトでは、スクリプトの実行全体に発生があることを示すログファイルが生成されます。The script will generate a log file which outlines what has transpired throughout the script execution. このログファイルには、MSIX パッケージ形式に対するアプリケーションのパッケージ化に関する詳細と、スクリプトの進行に関連する情報が記載されています。The log file will provide details related to the packaging of applications to the MSIX packaging format, and information related to script progression. ログは任意のテキストユーティリティから読み取ることができますが、Trace32 ログリーダーを使用して読み取り用に構成されています。The logs can be read from any text utility, but have been configured for reading using the Trace32 log reader. スクリプトの実行で発生したエラーは赤、警告は黄色として強調表示されます。Errors in the script execution will be highlighted as Red, and Warnings as yellow. トレース32ログリーダーの詳細については、Microsoft Docs のCmtraceに関するページを参照してください。For more information on the Trace 32 log reader, please visit CMTrace on Microsoft Docs.

ログファイルは、スクリプトのディレクトリ内に作成され .\logs\BulkConversion.log ます。The log file is created within the script's directory .\logs\BulkConversion.log.