Распространение приложения UWP в центр приложений (он же Mobile Center) с помощью задачи VSTS

В настоящее время я работаю вместе с Microsoft над случаем, когда одно из ваших приложений UWP дает сбой после запуска. После долгой отладки вокруг msbuild я понял, что сбой происходит только тогда, когда полученный файл appxbundle распространяется через Microsoft App Center (также известный как Mobile Center). Это также справедливо только в том случае, когда appxbundle загружается в App Center с помощью встроенной в VSTS задачи «Распространение в App Center».

Когда я загружаю appxbundle вручную с помощью портала App Center, все работает нормально, даже когда используется через App Center.

Кроме того, я заметил, что размер appxbundle после сборки составляет 18 МБ, но при загрузке в App Center с помощью задачи VSTS размер appxbundle составляет всего 14 МБ (размер показан на портале App Center). Файл не поврежден после загрузки, но кажется, что в пакете отсутствуют некоторые файлы - что делает эта задача? Открытие и изменение appxbundle? ухххххх.

У кого-нибудь есть подобная проблема?


person Sebastian Zolg    schedule 09.12.2017    source источник
comment
Поскольку вы работаете с Microsoft, почему бы вам не спросить их об инфраструктуре, которую они поддерживают?   -  person IInspectable    schedule 09.12.2017
comment
@IInspectable - конечно, я спрошу их, но это также потребует времени, чтобы прояснить ситуацию. Я постоянно обновляю этот пост. Я уже опубликовал свой обходной путь, так как мне нужно быстрое решение.   -  person Sebastian Zolg    schedule 10.12.2017


Ответы (2)


На данный момент я решил эту проблему, заменив встроенную задачу на интерфейс командной строки App Center и простой сценарий PowerShell для ее архивирования.

param(
    [Parameter(Mandatory=$true)]
    [String]
    $Token,
    # Name of the App, e.g. 'org/app'
    [Parameter(Mandatory=$true)]
    [String]
    $App,
    # Name of the distribution Group, e.g. 'Collaborators'
    [Parameter(Mandatory=$true)]
    [String]
    $Group
)

$binaryFile = (Get-ChildItem MyApp_*_x64.appxbundle -Recurse).FullName
appcenter distribute release -g $Group -f "$binaryFile" -a $App --debug --token $Token

Чтобы этот сценарий работал, вам потребуется последняя версия интерфейса командной строки App Center, которую можно найти здесь .

В агенте сборки с присутствующим диспетчером пакетов NPM вы можете просто запустить npm install -g appcenter-cli, чтобы установить последнюю версию. После этого должен выполняться приведенный выше сценарий.

person Sebastian Zolg    schedule 09.12.2017
comment
как ты это заменил? У меня тоже проблемы с развертыванием нашего приложения через appcenter. причина в том, что в appxbundle среда выполнения .netcore не включена. поэтому установщик попросит клиента получить этот пакет у разработчика. Я ищу уже несколько дней, и мне не удалось его развернуть через appcenter - person The Chris; 13.02.2018
comment
@ ChrisTTian667 Однажды я столкнулся с подобной проблемой. Вы обновляли свой проект несколько раз в течение месяца, например, со старого project.json на стиль csproj? Проверьте конфигурацию сборки и целевую платформу. Также обратите внимание, что вы не нацелились ни на один процессор, вместо этого попробуйте собрать только для x64 и посмотрите, будет ли результат таким же. - person Sebastian Zolg; 14.02.2018
comment
Чтобы использовать ваш скрипт (я не разбираюсь в ps), разве нам не нужно сначала где-то / как-то скачивать App Center Cli? - person François; 30.10.2018
comment
@ François Да, ты прав. Я обновил свой ответ в конце, чтобы дать небольшое руководство по этому поводу. Позвольте мне знать, если вам нужно что-нибудь еще. - person Sebastian Zolg; 30.10.2018
comment
Между тем, я нашел ту, спасибо! Теперь я столкнулся с проблемой, когда $binayFile пуст. Файл находится в $(Build.ArtifactStagingDirectory)\AppxPackages\*.appxbundle, и скрипт ps не находит его так, как вы это делаете (да, я заменил MyApp своим именем приложения ;-)) - person François; 30.10.2018
comment
@ François Убедитесь, что на этапе сборки PowerShell рабочий каталог установлен на $ (Build.ArtifactStagingDirectory) \ AppxPackages, чтобы вы могли повторно использовать мой код 1: 1. Переключатель рекурсии в сценарии важен, поскольку файл appxbundle не обязательно находится непосредственно в папке \ AppxPackages \. - person Sebastian Zolg; 30.10.2018
comment
Теперь, когда я установил свой рабочий каталог, ps жалуется, что ./AppCenterDistributeThroughCli.ps1 (это место, где я поместил ваш скрипт) не найден lol - person François; 30.10.2018
comment
Я добавил ответ с моей задачей ps, использующей ваш скрипт. Еще раз спасибо. - person François; 30.10.2018

Я использовал решение @SebastianZolg следующим образом:

- task: PowerShell@2
displayName: 'Distribute via AppCenter'
inputs:
    targetType: 'filePath'
    filePath: 'AppCenterDistributeThroughCli.ps1'
    arguments: xxxMyTokenxxxxx MyAppCenterAppSlug "Collaborators"
    workingDirectory: '$(Build.ArtifactStagingDirectory)\AppxPackages'

А AppCenterDistributeThroughCli.ps1 - это сценарий @SebastianZolg.

person François    schedule 30.10.2018