Пакеты MSI vs nuget: что лучше для непрерывной доставки?
Давайте обсудим следующую тему. Существует приложение, которое в настоящее время разворачивается с помощью хорошо известного метода xcopy. Этот подход затрудняет управление зависимостями, обновлениями файлов и т. Д. Есть идея начать развертывание приложения с помощью некоторых пакетов, вы знаете, как вы это делаете в Linux с помощью RPM, но для Windows.
Поэтому у меня есть вопрос: какую систему пакетов лучше использовать для Windows, классической Windows Installer (MSI) или Nuget или что-то еще?
2 ответа
MSI является общепринятым стандартом корпоративных приложений. Он имеет некоторые основные корпоративные преимущества по сравнению с устаревшими методами развертывания. WiX - это новый способ создания файлов MSI с открытым исходным кодом.
- Wix Toolset Скачать.
- Чтобы разобраться с Wix, вы можете прочитать краткое, неофициальное изложение истории, стоящей за ним.
- Тогда вы, возможно, захотите проверить другие способы доставки установщика, кроме Wix, прочитав: Какой установочный продукт использовать? InstallShield, WiX, Wise, Advanced Installer и т. Д. ( Еще один быстрый список инструментов).
- Наконец, посмотрите полный пример того, как исходный файл Wix и его компоненты выглядят в Codeproject. Это "Hello World" от Wix.
Несколько хороших начальных ссылок для изучения Wix:
- Предложения по быстрому запуску My Wix
- Хорошие ресурсы для изучения того, как создавать установщики MSI из WiX
- Как реализовать обновление установщика WiX? (серьезное обновление)
- Каковы ограничения WiX и WiX Toolset?
Извлечь файлы из Setup.exe
Пакет WiX или из самого файла MSI:
- Извлечение MSI из EXE - в том числе, как извлечь файлы, встроенные в исполняемый файл пакета WiX Burn.
- Как я могу сравнить содержимое двух (или более) файлов MSI? - Включая, как извлечь файлы из MSI с помощью WiX
dark.exe
инструмент
Как я уже писал в моем предложенном посте " Быстрый старт 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, и новая версия загружается и устанавливается.