Как правильно создавать проекты установки MSI с помощью конвейеров Azure DevOps?

Последние пару дней я тянул за волосы, пытаясь понять, как настроить процесс CI / CD только для создания простого решения WPF и создания установочного файла MSI («артефакт») с помощью Azure DevOps Pipelines. Я пробовал использовать Сборка VS Installer для этого. Моя основная проблема в том, что я точно не знаю, что делаю не так и какие шаги мне не хватает, и нигде не могу найти четких инструкций по этому поводу.

Вот что я пробовал:

  1. Использование пула агентов Hosted 2017 и базового шаблона рабочего стола .NET. Проблемы:

    • Создайте файл (ы) .msi из проекта (ов) VS Installer в качестве последней задачи или перед публикацией артефакта):

2018-11-28T22:57:56.3186071Z DEBUG: Aggregated: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com 2018-11-28T22:57:56.3211382Z Now running (C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.com) with Arguments ("D:\a\1\s" /Build "release|any cpu" /Out "D:\a\1\b\BuildInstaller_Log_20181128225756.txt") 2018-11-28T22:58:54.0015320Z Done running DevEnv process. Success = True. 2018-11-28T22:58:54.1169279Z ##[warning]No .MSI files were found, please check your build-configuration. If this is expected, you might consider to use the default Visual Studio Build task instead of this custom Installer task. 2018-11-28T22:58:54.1434410Z ##[section]Finishing: Create .msi file(s) from VS Installer project(s).

Как правильно создавать проекты установки MSI с помощью конвейеров Azure DevOps?

  1. Создание моего собственного агента сборки, как описано в в документации. У меня есть Visual Studio Community 2017 с установленным на этом сервере Расширение VS Installer Projects. Я выполнил шаги из ответа, связанного с это. Результаты:

2018-11-29T17:46:03.9813075Z DEBUG: Aggregated: System.Object[]\devenv.com 2018-11-29T17:46:04.4346060Z ##[error]Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: System.Object[] 2018-11-29T17:46:04.4716416Z ##[section]Finishing: Create .msi file(s) from VS Installer project(s).

Как правильно создавать проекты установки MSI с помощью конвейеров Azure DevOps?

Я также попробовал DevEnv Build из магазина вместо DutchWorkz, но все равно не смог получить файл .msi. Может кто-нибудь, пожалуйста, покажите мне несколько четких шагов, как достичь этой простой цели?

Если я правильно помню, у размещенных агентов для этого не установлено расширение VS. Вот почему для этого должен быть настроен частный агент. Кроме того, не могли бы вы запустить генерацию MSI из командной строки? Вы пробовали вручную запустить эту команду из PowerShell?

Rob Bos 02.12.2018 17:15

@RobBos Спасибо за предложение. Это то, что я читал о размещенных агентах, поэтому я попытался настроить свой собственный агент и убедился, что на этом компьютере установлено расширение VS. Все еще не мог заставить его работать. Это звучало бы здорово, если бы я знал, как это сделать. Не могли бы вы показать мне, как я с радостью приму это в качестве ответа. Моя конечная цель - вывести файл .msi независимо от метода (чем проще, тем лучше) :)

Cosmin 04.12.2018 00:01

Чтобы выполнить задачи командной строки, добавьте задачу «Пакетный сценарий», значение «value» должно быть «C: \ Windows \ System32 \ cmd.exe», а значение «аргумента» должно быть: «Здесь идут команды компиляции msi!»

Antebios 05.12.2018 17:43

@Atebios Это похоже на то, что может сработать. Я попробовал, но ничего не вышло. Erro MSB4025: не удалось загрузить файл проекта. Данные на корневом уровне недействительны. Не уверен, что использовал правильные аргументы. У вас есть какие-нибудь указания по этому поводу? Спасибо.

Cosmin 06.12.2018 17:55

Есть ли способ собрать MSI в режиме выпуска с помощью "DutchWorkz"?

Dharti Sutariya 17.07.2020 17:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
5
6 274
2

Ответы 2

Я смог понять, почему я получаю конкретное сообщение об ошибке ниже, и хотел поделиться, если это поможет кому-то в будущем.

ОТЛАЖИВАТЬ:

Aggregated: System.Object[]\devenv.com [error]Cannot retrieve the dynamic parameters for the cmdlet. The specified wildcard character pattern is not valid: System.Object[]

Проблема заключалась в том, что на моем частном сервере сборки были установлены две версии Visual Studio 2017 (профессиональная и корпоративная). Как только я удалил один из них, все отлично заработало. Не уверен, есть ли способ заставить его работать с обоими установленными, но мне не нужны оба.

Большое спасибо за ваш вклад. У меня только VS2017 Community и SSDT установлены как отдельный экземпляр на этом сервере. Как вы думаете, это может быть источником проблемы? Я не вижу причин, по которым это не работает с версией от сообщества. Пожалуйста, поправьте меня, если я ошибаюсь.

Cosmin 08.02.2019 18:12

Я просто размышляю, но не думаю, что установка SSDT будет проблемой. Если вы можете установить VS2017 Professional или Enterprise, я бы установил его и удалил Сообщество. Опять же, просто догадываюсь, но, возможно, расширение Build VS Installer не работает с сообществом. К сожалению, их документация не дает много информации. Не забывайте, что помимо расширения Build VS Installer, когда вы устанавливаете новую версию Visual Studio 2017, вам необходимо установить расширение проектов VS Installer, которое вы упомянули в своем OP.

Migs 11.02.2019 16:01

Расширение Microsoft Visual Studio Installer Projects присутствует в средстве выполнения windows-latest. Узнать больше здесь

Короче говоря, используйте агент с windows-latest vmimage и собирайте через devenv.exe вместо MSBuild.

подробнее см. stackoverflow.com/a/68646694/257470

andrew.fox 04.08.2021 14:20

Другие вопросы по теме