Опыт использования Wix # WixSharp по сравнению с WiX

Мы используем Inno Setup и планируем заменить его на WiX. Но при оценке и экспериментировании с WiX я почувствовал, что декларативный подход имеет некоторые ограничения по сравнению с решениями для программной настройки.

Более того, я обнаружил, что документация по WiX довольно скудная. Итак, я наткнулся на Wix # (WixSharp), который обещает программно создавать исходный код WiX с помощью файлов сценариев, написанных на C #.

Однако у нас был негативный опыт работы с очень маленькими компаниями и даже с персональными выставками. Поэтому я просто хотел спросить о вашем опыте работы с Wix # (WixSharp) или даже о других хороших альтернативах. Можете ли вы сообщить о преимуществах или ограничениях?


person MrCube    schedule 10.04.2012    source источник
comment
Олег написал оригинальный CsScript, который существует примерно с 2004 года. github.com/oleg-shilo/cs-script/wiki Мне нравится смотри сам   -  person CAD bloke    schedule 02.10.2016


Ответы (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.
  • Функция удаления является «бесплатной»; вы автоматически получите надежный деинсталлятор.
  • The Server Admins in my environment readily accept MSI files for things I as a developer want to install, because they trust the MSI technology and the uninstall feature.
    • Windows Registry entries are included in the "free" uninstall you get, as long as you create them using WiX or Wix# native syntax and don't merge .reg files--you won't get a registry entry uninstall that way.

WiX / Wix # Минусы

  • Поскольку он ограничен набором функций установщика Windows, некоторые «процедурные» вещи труднее выполнять в WiX и Wix #

WiX Pros

  • В Интернете доступно множество отличных примеров и ресурсов поддержки («Как мне… в WiX»).
  • Утилиты для сбора записей реестра и вставки XML-операторов WiX работают хорошо.

WiX Минусы

  • Как разработчик C #, я обнаружил, что WiX XML не интуитивно понятен для начала работы с XML-файлами напрямую. Вначале Wix # и C # имели больше смысла, чем WiX.

Wix # Профи

  • Настраиваемые действия теперь просто реализовать в 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/610843visible[1ght

  • Теперь можно импортировать файл настроек реестра .reg вместо ручного кодирования записей класса реестра.
  • Дополнительная поддержка модификаций файлов Windows Config
  • Специальная поддержка для установок Windows Service
  • Поддержка передачи значений параметров в отложенные настраиваемые действия, при этом вся поддерживающая инфраструктура WiX правильно автоматически генерируется
  • Поддержка абсолютного пути в целевом системном каталоге, при этом вся поддерживающая инфраструктура WiX правильно автоматически сгенерирована
person Developer63    schedule 07.10.2014
comment
Отредактировано, чтобы добавить список некоторых полезных функций, добавленных в выпуск от января 2015 года. Хотя большинство из этих вещей было возможно раньше, теперь они стали намного более плавными. Например, возможность просто импортировать и использовать файлы .reg напрямую (вместо ручного кодирования записей реестра на C #) и при этом получить возможность бесплатного удаления записей реестра, является большим стимулом для повышения производительности. - person Developer63; 22.01.2015
comment
Я использовал функцию импорта файлов .reg, и она отлично работала. Однако я хотел бы назначить параметры реестра в импортированном файле .reg определенному идентификатору функции Wix / Wix #, например, при базовой установке будет получен один набор записей .reg, при полнофункциональной установке - основные записи плюс некоторые дополнительные записи в второй файл .reg. Отправленный запрос на это, разработчик говорит, что работаю над этим для следующего выпуска. - person Developer63; 21.02.2015

WiX существует довольно давно и пользуется большой поддержкой сообщества. Я занимаюсь настройкой (в свободное время :)) около 8 лет и никогда не нашел ничего, что я не мог бы сделать в WiX.

Я впервые вижу WixSharp. Моя первая реакция была бы, насколько он стабилен, учитывая, что на данный момент он равен 0,1,42. Я также был бы обеспокоен тем, какая часть схемы MSI фактически реализована в WixSharp. Выглядит интересно, но мне было бы удобнее с файлом XML. Я не вижу никаких преимуществ в том, чтобы делать это на C #.

person dvallejo    schedule 16.04.2012
comment
Я хотел бы выполнить некоторые настраиваемые действия во время установки, и я обнаружил, что в Wix это не так удобно, и я надеюсь, что найду лучший способ реализовать настраиваемые действия непосредственно на C # с помощью WixSharp. Вам нужно выполнять специальные действия, например запускать службу или проверять наличие более или менее сложных условий? И как с этим справиться в Wix? - person MrCube; 17.04.2012
comment
Отвечая на вопрос Дэна Вальехо, для меня работа на C # была более доступной, чем с XML. Для тех, кто уже знает WiX XML, это не имеет значения. Еще одно преимущество Wix # / C # - читабельность кода установщика. Я прошел через код Wix # с нашими администраторами сервера, чтобы показать им, что было в установщике (записи реестра .NET COM Interop и т. Д.), И они смогли разобраться в коде Wix # и, таким образом, чувствовали себя комфортно при запуске установщики на серверах, администраторами которых они являются. - person Developer63; 17.12.2014
comment
@MrCube, до сих пор мне не приходилось выполнять значительные настраиваемые действия в моих установщиках. Я включил простую оболочку Custom Action в один установщик и обнаружил, что включить Custom Actions в установщик Wix # очень просто. Посмотрите пример настраиваемого действия Wix # в статье CodeProject по адресу codeproject.com/Articles/31407/. Также есть пример Custom Action в папке установки Wix # в файле Samples \ AllInOne \ MyAppWix.cs. - person Developer63; 17.12.2014