MSIX 批量转换脚本
MSIX 工具包中的批量转换脚本可用于自动将 Windows 应用转换为 MSIX 包格式。 entry.ps1 脚本中提供了应用列表及其详细信息。
准备转换用的计算机
在运行 MSIX 工具包的批量转换脚本之前,若要自动将应用程序转换为 MSIX 打包格式,必须将你使用的设备(虚拟或远程)配置为允许远程通信,并安装 MSIX 打包工具。
术语 | 说明 |
---|---|
主机 | 这是用于执行批量转换脚本的设备。 |
虚拟机 | 这是 Hyper-V 中现有的设备,托管在主机上。 |
远程计算机 | 这是可通过网络访问的物理机或虚拟机。 |
主机
主机必须满足以下要求:
- 必须安装 MSIX 打包工具。
- 如果使用虚拟机,必须安装 Hyper-V。
- 如果使用远程计算机:
- 设备存在于与远程计算机相同的域中:
- 启用 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>,...]
- 设备存在于与远程计算机相同的域中:
远程计算机
远程计算机必须满足以下要求:
必须安装 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 中运行。
虚拟机必须满足以下要求:
- 必须安装 MSIX 打包工具。
语法
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 包。 应用使用 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 日志读取器进行读取。 脚本执行中的错误将用红色突出显示,警告显示为黄色。 有关 Trace 32 日志读取器的更多信息,请访问 CMTrace。
日志文件在脚本的目录 .\logs\BulkConversion.log
中创建。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈