Пакеты MSI vs nuget: что лучше для непрерывной доставки?

Давайте обсудим следующую тему. Существует приложение, которое в настоящее время разворачивается с помощью хорошо известного метода xcopy. Этот подход затрудняет управление зависимостями, обновлениями файлов и т. Д. Есть идея начать развертывание приложения с помощью некоторых пакетов, вы знаете, как вы это делаете в Linux с помощью RPM, но для Windows.

Поэтому у меня есть вопрос: какую систему пакетов лучше использовать для Windows, классической Windows Installer (MSI) или Nuget или что-то еще?

2 ответа

Решение

MSI является общепринятым стандартом корпоративных приложений. Он имеет некоторые основные корпоративные преимущества по сравнению с устаревшими методами развертывания. WiX - это новый способ создания файлов MSI с открытым исходным кодом.

Несколько хороших начальных ссылок для изучения Wix:

Извлечь файлы из Setup.exe Пакет WiX или из самого файла MSI:

Как я уже писал в моем предложенном посте " Быстрый старт Wix " выше: Wix практичен. Просто сосредоточьтесь на простых, но полных реальных примерах, таких как пример из Codeproject - чтение одной документации, вероятно, будет просто запутанным.

Сосредоточьтесь на том, чтобы разбить ваше приложение на компоненты и настроить серьезное обновление Используйте один файл для каждого компонента в качестве практического правила и прочитайте этот ответ для лучшего понимания создания компонента: Изменить GUID компонента в wix?

Основным обновлением является наиболее часто используемый механизм обновления развернутого программного обеспечения (другой распространенный тип обновления - незначительное обновление). Очевидно, очень важно, чтобы вы могли обновить то, что уже развернули. Получите сценарии обновления, работающие до развертывания первой версии программного обеспечения, чтобы вы были уверены в своем решении для развертывания.

После того, как вы настроили свои компоненты и ваше решение по обновлению работает, остальные части встают на свои места, когда вы выполняете требования по развертыванию приложения и проверяете образцы на учебном сайте Wix: https://www.firegiant.com/wix/tutorial/.

Для тех, кто пишет код Wix напрямую (без редактора GUI), я предлагаю вам проверить этот ответ, чтобы сохранить свои исходные файлы краткими: Синтаксис для направляющих в WIX?

Далее читайте:

Сейчас я иду по этому пути, где я унаследовал программное обеспечение, используя MSI/WiX для установщика, но смотрю на преобразование нашего процесса в непрерывную доставку и выпуск обновлений, которые устанавливаются без взаимодействия с клиентом. Я думаю, что его нельзя использовать в качестве инструмента SDK, по сути, это инструмент для развертывания версионных наборов файлов. Кроме того, если программное обеспечение, которое вы развертываете, уже в значительной степени отвечает на nuget, и вы уже упаковываете свои сборки в пакеты nuget для внутреннего использования, то зачем ради этого добавлять в смесь дополнительную технологию? упакуйте nuget.exe в вашу MSI, периодически вызывайте обновление, делайте.

Я знаю, что WiX поддерживает создание патчей, но, похоже, это запоздалая мысль. Кроме того, что произойдет, если ваш патч не будет установлен? Установка патчей не в порядке? Ваш основной установщик требует разрешения UAC, а ваш патч - нет?

я думаю, что времена меняются, и MSI представляет собой более старый способ мышления о вещах. Шоколад - хороший пример, но он все еще находится на этой гибридной стадии, смешивая обе технологии.

MSI больше похож на pull - достань пакет, затем установи его. Nuget больше похож на стратегию push - вы получаете имя пакета, устанавливаете его, затем периодически можете вызывать update, и новая версия загружается и устанавливается.

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