MSIX 大量轉換腳本
MSIX Toolkit 中的大量轉換腳本可用來自動將 Windows 應用程式轉換成 MSIX 套件格式。 應用程式清單及其詳細數據會在 entry.ps1 腳本中提供。
準備機器以進行轉換
在執行 MSIX 工具組的大量轉換文稿之前,若要將應用程式轉換成 MSIX 封裝格式,您必須設定為允許遠端通訊,並安裝 MSIX 封裝工具。
詞彙 | 描述 |
---|---|
主機電腦 | 這是執行大量轉換腳本的裝置。 |
虛擬機器 | 這是 Hyper-V 中現有的裝置,裝載於主電腦上。 |
遠端電腦 | 這是可透過網路存取的實體或虛擬機。 |
主機電腦
主計算機必須符合下列需求:
- 必須安裝 MSIX 封裝工具 。
- 如果使用 虛擬機器,則必須安裝 Hyper-V。
- 如果使用遠端電腦:
- 裝置存在於與遠端電腦相同的網域中(s):
- 啟用PowerShell遠端處理
# Enables PowerShell Remoting Enable-PSRemoting -force
- 啟用PowerShell遠端處理
- 裝置存在於工作組或替代網域中,作為遠端計算機:
- 啟用 PowerShell 遠端
- WinRM 信任主機必須包含遠端電腦的裝置名稱或IP位址
# Enables PowerShell Remoting Enable-PSRemoting -force Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
- 裝置存在於與遠端電腦相同的網域中(s):
遠端電腦
遠端電腦必須符合下列需求:
如果裝置存在於與主電腦相同的網域中:
- 啟用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 格式。 當系統提示時,此虛擬機將會使用輸入的認證來連線(提示會在腳本 輸入.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
內建立。