Как я могу автоматически увеличить номер версии пакета для файла .msixupload, созданного в Azure Pipeline?

Я использую Azure Pipeline, который запускается автоматически, когда я делаю фиксацию в своем репозитории GitHub. Файл .yml создает файл .msixupload (для UWP) для загрузки в Microsoft Store. Однако я не могу загрузить сгенерированный файл .msixupload, поскольку номер версии в файле .appxmanifest никогда не меняется, и я пытаюсь создать обновление для существующего приложения. Как я могу увеличивать номер версии при каждом запуске Azure Pipeline?

Я пробовал добавить

<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>

в файл .appxmanifest, как описано здесь: Как мне автоматически увеличивать номер версии пакета?, но это не имело никакого значения.


person user2052677    schedule 20.01.2021    source источник


Ответы (1)


Вы можете использовать сценарии PowerShell, чтобы изменить значение версии в файле appxmanifest. См. Пример ниже:

В вашем конвейере yaml. Вы можете установить переменные, как показано ниже: См. здесь для получения дополнительной информации о counter выражении.

variables:
  major: 1
  minor: 0
  build: $(Build.BuildId)
  version:  $[counter(variables['major'], 0)]  

Затем добавьте задачу PowerShell для запуска нижеприведенного сценария, чтобы обновить значение версии:

  - powershell: |
       [Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")
       $path = "Msix/Package.appxmanifest"
       $doc = [System.Xml.Linq.XDocument]::Load($path)
       $xName =
         [System.Xml.Linq.XName]
           "{http://schemas.microsoft.com/appx/manifest/foundation/windows10}Identity"
       $doc.Root.Element($xName).Attribute("Version").Value =
         "$(major).$(minor).$(build).$(revision)";
       $doc.Save($path)
      displayName: 'Version Package Manifest'

Пожалуйста, проверьте этот документ для получения дополнительной информации.

Поскольку файл appxmanifest - это просто текстовый XML-файл. Вы также можете использовать инструмент расширения Magic Chunks task, чтобы изменить значение версии в файле appxmanifest. Посмотрите, например, эту ветку.

person Levi Lu-MSFT    schedule 20.01.2021
comment
Это не кажется эффективным. После реализации задачи «Информация о сборке» имя созданного файла .msixupload по-прежнему отражает номер версии в манифесте приложения, который не изменился. При попытке загрузить файл .msixupload в Microsoft Store отображается следующая ошибка: вы предоставили два пакета с полным именем ‹name›, которые имеют разное содержимое. Удалите один из этих пакетов или увеличьте текущие версии пакетов, чтобы продолжить. Простое изменение имени файла тоже не помогает. - person user2052677; 20.01.2021
comment
@ user2052677 Вы можете написать сценарий PowerShell для изменения значения версии или использовать задачу замены расширения (Magic Chunks). Я обновил ответ выше. - person Levi Lu-MSFT; 20.01.2021
comment
Кажется, это работает. Спасибо. - person user2052677; 21.01.2021