摘要:使用makeappx.exe编译后是否可以修改app包标识?
我有一个 Windows 商店应用程序(用于 LOB 侧载,而不是商店),我需要创建多个副本(变体/实例),因为我需要能够同时安装和运行应用程序的多个版本作为单个用户。假设我的应用名为 MyMultiInstanceApp,我想将其克隆为两个名为 MyMultiInstanceApp-Prod 和 MyMultiInstanceApp-Test 的应用,因为有了这些,我可以安装并运行 1.0 版的 *-Prod 应用和 1.1 版的 *-Test 应用同时。
我可以通过在 Visual Studio 中进行多次构建并在每次构建之前更改清单中的包标识(名称)来实现这一点 - 如Locally deploy parallel versions of a Windows Store App 中所述。
但是,我想在构建时间之后通过基于初始 .appx 包制作副本来完成它,并且我使用makeappx.exe和signtool.exe几乎可以正常工作,但是在安装例如 MyMultiInstanceApp-Test 之后,应用程序挂起启动。
我的方法如下:
1) 通过在 VS 中构建解决方案或通过 msbuild 创建初始 .appx 文件
2) 使用以下命令解压 appx:
makeappx.exe unpack /p MyMultiInstanceApp.appx /d unpacked
3)将AppxManifest.xml中的包标识修改为:
<Identity Name="MyMultiInstanceApp-Test" Publisher="CN=JohnDoe" Version="1.1.0.0" ProcessorArchitecture="neutral" />
<Properties>
<DisplayName>MyMultiInstanceApp-Test</DisplayName>
...
4)使用以下方法重新打包应用程序:
makeappx.exe pack /d unpacked /p MyMultiInstanceApp-Test.appx
5) 使用与初始包相同的证书对包进行签名,使用:
signtool.exe sign /a /v /fd SHA256 /f MyCert.pfx MyMultiInstanceApp-Test.appx
新的 MultiInstanceApp-Test.appx 的安装似乎成功,但在尝试启动它时 - 它只是挂起,并且在条目下的事件查看器中可见以下内容:
\Applications and Services Logs\Microsoft\Windows\Apps\Microsoft-Windows-TWinUI/Operational:
[信息] 尝试激活应用 MyMultiInstanceApp-Test_pf28w44wh44hy!App。执行状态:尝试激活应用,0,操作成功完成。
[错误] 为 Windows.Launch 合约激活应用程序 MyMultiInstanceApp-Test_pf28w44wh44hy!App 失败并出现错误:远程过程调用失败。
我是否遗漏了什么,或者编译后无法修改包标识?