Wix генерирует одиночный идентификатор компонента для всего дерева

Я с кем-то, у кого нет никакого опыта работы с wix, и я пытаюсь поддерживать Windows также для компонента, за который я несу ответственность. Я пытаюсь создать модуль слияния для набора файлов, которые генерирует мой продукт. Эти файлы существуют во многих подкаталогах. Мне было интересно, как создать единый идентификатор компонента для всех файлов всего дерева. Я не беспокоюсь о незначительных обновлениях, поскольку это то, что я не буду делать. Я пытаюсь избежать генерации многочисленных GUID для каждого файла.

Также я могу изменить имя корневого каталога, в котором я хочу, чтобы файлы были установлены. В настоящее время в нашей системе сборки файлы, которые я хочу установить, входят в имя каталога "install". В файле wxs, генерируемом при нагревании, он появляется как установка. Мне было интересно, могу ли я изменить его на фактическое имя продукта вместо "install".

Ответ 1

Использовать один файл для каждого компонента - это позволяет избежать всех проблем (кроме сборников .NET, охватывающих несколько файлов). См. Следующий раздел: Wix: один файл на один компонент или несколько файлов на один компонент?

Wix - отличная среда для создания инсталляторов, но она имеет крутую кривую обучения. Я настоятельно рекомендую вам прочитать несколько разделов этого замечательного интерактивного учебника : http://wix.tramontana.co.hu/.

Если вы являетесь "основанным на выборке tinkerer" , вы можете найти еще более быстрый, примерный тур в этой статье: http://www.codeproject.com/Tips/105638/A-quick-introduction-Create-an-MSI-installer-with

Wix является практическим. Просто сосредоточьтесь на образцах и сосредоточьтесь на создании компонентов и создании основного обновления:

Как только вы это запустили, остальные детали встанут на место, прочитав документацию по любой необходимой вам функции. Использование Visual Studio/Votive с помощью intellisense гарантирует, что вы сможете учиться, когда вы идете с такими функциями, как ярлыки, ini файлы, xml файлы, диалоги и т.д.

Еще один верхний совет - использовать dark.exe (часть набора инструментов Wix) для декомпилировать существующие файлы MSI. Это дает Wix XML с кодом, который вы можете скопировать и вставить в свои собственные файлы Wix. Я использую другие инструменты MSI для компиляции таких файлов MSI, а затем скопирую разделы, которые мне нужны, в свой файл Wix - просто для ускорения процесса создания Wix XML. Изучение декомпилированного XML является очень образовательным - заставка в режиме реального времени.

Ответ 2

  • Если все файлы находятся в одной и той же папке назначения, вы можете создать один COMPONENT со всеми FILE внутри него. Ничто не мешает вам это сделать. Затем вы можете просто создать один GUID для этого компонента. Также прочитайте эти ответы, в которых говорится о преимуществах и недостатках одного компонента перед несколькими компонентами, прежде чем вы его реализуете: Answer1 Answer2. Чтобы суммировать:

У вас возникнут проблемы с незначительными обновлениями/ремонтами. Если компонент обновляется только файл, указанный как KEYPATH, для проверки того, он устарел: если он обновлен, все остальные игнорируются.

У вас также будет трудность, если вы хотите добавлять или удалять файлы с каждого компонент. После освобождения компонент является неизменным (с точки зрения того, какие файлы находятся в нем). Единственный способ обновить его, не нарушая правила компонентов, чтобы эффективно удалить и установить новую версию MSI. Понимание правил компонентов является ключевым в установщике Windows и одном файле на один компонент упрощает работу с правилами компонентов, поэтому это рекомендация многих людей здесь.

ССЫЛКА

  1. Имя корневого каталога можно изменить, изменив свойство "Имя" для элемента DIRECTORY.