构建后在appx清单中修改包标识

tho*_*sen 7 windows-runtime windows-store-apps appx appxmanifest

简介:使用makeappx.exe编译后是否可以修改应用程序包标识?

我有一个Windows商店应用程序(用于LOB侧载,而不是商店),我需要创建多个副本(变体/实例),因为我需要能够同时安装和运行多个版本的应用程序作为单个用户.假设我的应用程序名为MyMultiInstanceApp,我想将其克隆为两个名为MyMultiInstanceApp-Prod和MyMultiInstanceApp-Test的应用程序,因为有了这些,我可以在版本1.0中安装并运行*-Prod应用程序,在1.1版中安装*-Test应用程序同时.

我可以通过在Visual Studio中进行多个构建并在每次构建之前更改清单中的包标识(名称)来实现此目的 - 如本地部署Windows应用商店的并行版本中所述.

但是,我希望在构建时间之后,通过基于最初的.appx包创建副本,并且我几乎使用makeappx.exesigntool.exe工作,但是在安装了例如MyMultiInstanceApp-Test之后,应用程序挂起启动.

我的方法如下:

1)通过在VS中构建解决方案或通过msbuild创建初始.appx文件

2)使用以下方法解压缩appx:

makeappx.exe unpack /p MyMultiInstanceApp.appx /d unpacked
Run Code Online (Sandbox Code Playgroud)

3)将AppxManifest.xml中的包标识修改为:

<Identity Name="MyMultiInstanceApp-Test" Publisher="CN=JohnDoe" Version="1.1.0.0" ProcessorArchitecture="neutral" />
<Properties>
  <DisplayName>MyMultiInstanceApp-Test</DisplayName>
...
Run Code Online (Sandbox Code Playgroud)

4)使用以下方法重新打包应用程序:

makeappx.exe pack /d unpacked /p MyMultiInstanceApp-Test.appx
Run Code Online (Sandbox Code Playgroud)

5)使用与初始包相同的证书签署包,使用:

signtool.exe sign /a /v /fd SHA256 /f MyCert.pfx MyMultiInstanceApp-Test.appx
Run Code Online (Sandbox Code Playgroud)

安装新的MultiInstanceApp-Test.appx似乎很成功,但在尝试启动时 - 它只是挂起,并且在条目下的事件查看器中可以看到以下内容:

\应用程序和服务日志\ Microsoft\Windows\Apps\Microsoft-Windows-TWinUI/Operational:

[信息]激活app MyMultiInstanceApp-Test_pf28w44wh44hy!App尝试了.执行状态:尝试激活应用程序,0,操作成功完成.

[错误]激活应用程序MyMultiInstanceApp-Test_pf28w44wh44hy!Windows.Launch合同的应用程序失败,错误:远程过程调用失败.

我是否遗漏了某些内容,或者在编译后无法修改包标识?