MSIX 大量轉換腳本

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

準備機器以進行轉換

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

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

主機電腦

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

  • 必須安裝MSIX 封裝工具
  • 如果使用虛擬機器,則必須安裝 Hyper-V。
  • 如果使用遠端電腦:
    • 裝置存在於與遠端電腦相同的網域中, (s) :
      • 啟用 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 封裝工具

  • 如果裝置存在於與主機電腦相同的網域中:

    • 啟用 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

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

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

  • 類型: 陣 列
  • 必要:
$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 是陣列,其中包含將用來簽署已封裝應用程式之程式碼簽署憑證的相關資訊。 此憑證必須至少具有 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 記錄讀取器的詳細資訊,請造訪 CMTrace

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