Опыт работы с Wix# WixSharp по сравнению с WiX
Мы используем Inno Setup и планируем заменить его на WiX. Но когда я оценивал и играл с WiX, я чувствовал, что декларативный подход имеет некоторые ограничения по сравнению с решениями для программной настройки.
Более того, я обнаружил, что документация по WiX довольно скудна. Поэтому я наткнулся на Wix# (WixSharp), который обещает программно создавать исходный код WiX с помощью файлов сценариев, написанных на C#.
Однако у нас был негативный опыт работы с очень маленькими компаниями и даже с участием одного человека. Поэтому я просто хотел спросить о вашем опыте работы с Wix# (WixSharp) или даже о других хороших альтернативах. Можете ли вы сообщить о некоторых преимуществах или ограничениях?
2 ответа
Wix# выглядит как улучшающаяся ставка на счет "Будет ли это в следующем году"; увидеть ниже. И обратите внимание, что пользовательские действия теперь довольно просты для сборки в Wix#.
Из этой статьи: http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX
В июле 2014 года Wix# был переиздан под более либеральной лицензией MIT и теперь размещается на CodePlex. https://wixsharp.codeplex.com/
В августе 2014 года были выпущены расширения пользовательского интерфейса для Wix#, которые описаны в этой статье CodeProject: "Расширения пользовательского интерфейса Wix# (WixSharp)".
http://www.codeproject.com/Articles/804584/Wixsharp-WixSharp-UI-Extensions
Тот факт, что новые функции Wix# выходят хорошо, предвещает продукт.
Поскольку Wix# построен на основе технологий WiX и Windows Installer, он может выполнять только те действия, которые возможны в WiX. Когда у Wix# кончается газ... WiX может делать много вещей, которые напрямую не доступны в синтаксисе Wix# C#, поэтому вы можете, как правило, использовать технологию WiX XML напрямую, чтобы преодолеть разрыв. Также см. Мой ответ здесь для дополнительных примеров того, как заставить Wix# генерировать XML.wxs, а затем включить дополнительный XML-код WiX и вызывать Candle and Light для встраивания полученного комбинированного XML в MSI. Программно построить MSI
Ниже приведен быстрый, неисчерпывающий список плюсов и минусов WiX и Wix#, с которыми я столкнулся до сих пор.
WiX/Wix# Плюсы:
- Он генерирует реальные файлы MSI установщика Windows.
- Функция удаления является "бесплатной"; Вы автоматически получаете надежный деинсталлятор.
- Администраторы сервера в моей среде с готовностью принимают файлы MSI для вещей, которые я, как разработчик, хочу установить, потому что они доверяют технологии MSI и функции удаления.
- Записи реестра Windows включены в "бесплатное" удаление, которое вы получаете, при условии, что вы создаете их с использованием собственного синтаксиса WiX или Wix# и не объединяете файлы.reg - вы не получите удаление из реестра таким способом.
WiX/Wix# Минусы
- Поскольку он ограничен набором функций установщика Windows, некоторые "процедурные" вещи сложнее сделать в WiX и Wix#
WiX Pros
- Множество замечательных примеров и ресурсов поддержки ("Как я... в WiX") доступны в Интернете.
- Утилиты для сбора записей в реестре и вставки операторов XML WiX работают хорошо.
WiX Минусы
- Как разработчик C#, я обнаружил, что WiX XML не интуитивно понятен для начала работы с файлами XML. Wix# и C# в начале имели больше смысла, чем WiX.
Wix# Pros
- Пользовательские действия теперь легко реализовать в Wix#.
- Wix# прекрасно интегрируется с Visual Studio. В настоящее время я использую его с VS2013.
- Wix# и C# вначале имели больше смысла, чем WiX XML. Лучшая отправная точка.
- Wix# помогает мне изучить WiX более доступным способом. Видение того, что работает и не работает в Wix, помогает понять WiX.
Wix# Минусы
- Примеры Wix в настоящее время намного сложнее найти в Интернете. Часто необходимо изучить инструкции по WiX, а затем выяснить, как применить его к Wix#.
- Я не нашел автоматического пути для сбора записей реестра и выражения в коде WiX# C#. Я перевел записи в файле.reg вручную. Необходимо иметь записи реестра в операторах Wix# "RegValue(", чтобы получить возможность автоматической деинсталляции записей реестра.Примечание. Разработчик добавил эту функцию в выпуске от января 2015 года. Я еще не пробовал.
Я скажу, что работа в WiX/Wix#, которая была простой и очевидной в процедурных установщиках, таких как NSIS, и установщиках на основе сценариев прошлого поколения (например, в более старых выпусках Wise), часто требует дополнительных исследований и творчества в WiX/Wix#.
В целом, я делаю ставку на Wix# в качестве технологии роста и безопасной ставки для текущего и будущего использования. В худшем случае у вас все еще были бы ваши файлы.wxs, и вы могли бы перейти на использование прямого подхода WiX XML для построения инсталляторов, и вы все равно получили бы выгоду от затрат времени Wix#.
ПОСЛЕДНИЕ ОБНОВЛЕНИЯ К продукту Wix# для общих задач установщика
По состоянию на январь 2015 года. См.: [ https://wixsharp.codeplex.com/releases/view/610843][1]
- Теперь можно импортировать файл настроек реестра.reg вместо кодирования записей реестра вручную.
- Дополнительная поддержка для изменений файла конфигурации Windows
- Специальная поддержка для установки службы Windows
- Поддержка передачи значений параметров в отложенные пользовательские действия, при этом вся инфраструктура поддержки WiX создается автоматически
- Поддержка абсолютного пути в целевой системной директории со всей автоматически поддерживаемой инфраструктурой поддержки WiX
WiX существует уже довольно давно и пользуется большой поддержкой сообщества. Я занимался настройкой (в свободное время:)) около 8 лет и никогда не находил ничего, что я не мог бы сделать разумно в WiX.
Это первый раз, когда я видел WixSharp. Моей первой реакцией будет то, насколько она стабильна, учитывая, что сейчас она составляет 0,1,42. Я также был бы обеспокоен тем, какая часть схемы MSI фактически реализована в WixSharp. Это выглядит интересно, но мне было бы удобнее с XML-файлом. Я действительно не вижу никакого преимущества делать это в C#.