MSIX 大量轉換腳本

MSIX 工具組中的大量轉換腳本可用來自動將 Windows 應用程式轉換成 MSIX 封裝格式。 entry.ps1的腳本中會提供應用程式清單及其詳細資料。

準備機器以進行轉換

執行 MSIX 工具組的大量轉換腳本之前,若要自動將您的應用程式轉換成 MSIX 封裝格式,您將使用 (虛擬或遠端) 的裝置,必須設定為允許遠端通訊,並已安裝 MSIX 封裝工具。

詞彙 描述
主機電腦 這是執行大量轉換腳本的裝置。
虛擬機器 這是 Hyper-v 中的現有裝置,裝載于主機電腦上。
遠端電腦 這是可透過網路存取的實體或虛擬機器。

主機電腦

主機電腦必須符合下列需求:

  • 必須安裝MSIX 封裝工具
  • 如果正在使用虛擬機器,則必須安裝 Hyper-v。
  • 如果正在使用遠端電腦:
    • 裝置存在於與遠端電腦 (的相同網域中) :
      • 啟用 PowerShell 遠端
        # Enables PowerShell Remoting
        Enable-PSRemoting -force
        
    • 裝置存在於工作組或替代網域中,作為遠端電腦的 (s) :
      • 啟用 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 封裝工具環境」映射,因為它已預先設定為符合所有需求。 虛擬機器必須裝載于主機電腦上,並在 Microsoft Hyper-V 內執行。

虛擬機器必須符合下列需求:

語法

entry.ps1

描述

這是一組 PowerShell 腳本,可讓您將應用程式大量封裝成 MSIX 封裝格式。 這些腳本會連接到將用來封裝每個應用程式的本機虛擬機器或遠端電腦。

封裝至 MSIX 應用程式格式的應用程式將會依照 entry.ps1 腳本中輸入的順序進行轉換。 entry.ps1腳本中列出的遠端電腦將用來將應用程式封裝成 MSIX 格式,將會權責使用。 虛擬機器可以多次使用,將不同的應用程式封裝成 MSIX 應用程式格式。

執行腳本之前,您必須先將想要轉換的應用程式新增至 conversionsParameters 腳本中的變數。 您可以將多個應用程式加入至變數。 此腳本會利用應用程式和遠端/虛擬機器,建立格式化的 XML 檔案,以符合 MSIX 封裝工具 (MsixPackagingTool.exe) 的需求。 建立 XML 檔案之後, run_job.ps1 腳本會在新的 PowerShell 進程中執行,此程式會在目標裝置上執行 MsixPackagingTool.exe 來轉換應用程式,並將它放在位於腳本執行資料夾中的 .\Out 資料夾。

範例

PS C:\> entry.ps1

此範例會執行 entry.ps1 腳本。 此腳本會將變數中指定的應用程式轉換 conversionsParameters 成 MSIX 封裝。 應用程式會使用 virtualMachinesremoteMachines 變數中指出的虛擬機器或遠端電腦進行轉換。

參數

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 格式時,所要連接和存取的遠端電腦名稱稱和認證。 指定的遠端電腦將會是用來封裝單一應用程式的單一使用裝置。

遠端電腦必須可在網路上存取及探索。

  • 類型: 陣 列
  • 必要:
$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

signingCertificate參數是一個陣列,其中包含將用來簽署 MSIX 封裝應用程式之程式碼簽署憑證的相關資訊。 此憑證的加密層級至少必須是 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 檔案之後,腳本會將 XML 檔案傳遞至 MSIX 封裝工具 (MsixPackagingTool.exe) 封裝。

記錄

腳本會產生記錄檔,其中會概述在腳本執行期間過了的內容。 記錄檔將提供與應用程式封裝的相關詳細資料,以 MSIX 封裝格式,以及與腳本進展相關的資訊。 您可以從任何文字公用程式讀取記錄,但已設定為使用 Trace32 記錄讀取器進行讀取。 腳本執行中的錯誤會反白顯示為紅色,警告則會顯示為黃色。 如需追蹤32記錄讀取器的詳細資訊,請流覽 Microsoft Docs 上的 CMTrace

記錄檔會建立在腳本的目錄內 .\logs\BulkConversion.log