Опыт работы с 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#.

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