Изменить идентификатор пакета в манифесте appx после сборки

Обзор. Можно ли изменить идентификатор пакета приложения после компиляции с помощью makeappx.exe?

У меня есть приложение для магазина Windows (для боковой загрузки LOB, а не для магазина), для которого мне нужно создать несколько копий (вариантов/экземпляров), потому что мне нужно иметь возможность устанавливать и запускать несколько версий приложения одновременно. как один пользователь. Скажем, мое приложение называется MyMultiInstanceApp, я хочу клонировать его в два приложения с именами MyMultiInstanceApp-Prod и MyMultiInstanceApp-Test, потому что, имея их, я могу установить и запустить приложение *-Prod в версии 1.0 и приложение *-Test в версии 1.1. одновременно.

Я могу добиться этого, создав несколько сборок в Visual Studio и изменив идентификатор пакета (имя) в манифесте перед каждой сборкой, как описано в Локальное развертывание параллельных версий приложения Магазина Windows.

Однако я хотел бы сделать это после сборки, сделав копии на основе исходного пакета .appx, и у меня это почти работает с использованием makeappx.exe и signtool.exe, но после установки, например. MyMultiInstanceApp-Test, приложение зависает при запуске.

Мой подход следующий:

1) Создайте исходный файл .appx, создав решение в VS или через msbuild.

2) Распакуйте приложение, используя:

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 вроде прошла успешно, но при попытке запустить - просто зависает и в Event Viewer под записью видно следующее:

\Журналы приложений и служб\Microsoft\Windows\Apps\Microsoft-Windows-TWinUI/Operational:

[ИНФОРМАЦИЯ] Попытка активации приложения MyMultiInstanceApp-Test_pf28w44wh44hy!App. Состояние выполнения: Попытка активации приложения, 0, Операция успешно завершена.

[ОШИБКА] Активация приложения MyMultiInstanceApp-Test_pf28w44wh44hy!App для контракта Windows.Launch завершилась ошибкой: не удалось выполнить удаленный вызов процедуры.

Я что-то упустил или изменение идентификатора пакета невозможно после компиляции?


person tholesen    schedule 21.08.2015    source источник
comment
Я обнаружил, что изменение Identity.Name является причиной этой ошибки. Только изменение DisplayName в порядке. Я знаю, что это не решает вашу проблему, но я просто хотел добавить это наблюдение. Я предполагаю, что идентификационное имя каким-то образом записано в некоторые двоичные файлы в пакете appx, но я пока не смог найти никаких подробностей об этом.   -  person Lasse Christiansen    schedule 25.08.2015
comment
Ранее на этой неделе мы сделали кучу вещей по этому поводу. Мы пришли к выводу, что в данный момент это невозможно. Причина в том, что файл .pri (который создает msbuild) содержит ссылку на удостоверение, указанное в исходном (до запуска msbuild) файле appxmanifest. Только msbuild может сгенерировать этот файл pri (AFAIK)...   -  person Tom Wuyts    schedule 18.03.2016
comment
Это очень плохо! Эта проблема все еще актуальна?   -  person m00nbeam360.0    schedule 16.08.2016