Как установить плагин или дополнение с WiX - PullRequest
1 голос
/ 27 августа 2009

Мне нужно установить плагины (или дополнения) для приложения, которое мы пишем. Я использую WiX для установки приложения. Плагин, на мой взгляд, является дополнительной частью приложения. Он должен быть интегрирован в структуру файловой системы приложения, но также может быть добавлен позже даже тем, кто не имеет контроля над установщиком исходного приложения. Поэтому я нахожу все механизмы механизма WiX неадекватными: ни небольшое / незначительное / основное обновление, ни механизм исправлений, кажется, не вписываются в предпосылки, указанные в предыдущей фразе. Поэтому я считаю, что лучший способ для меня - позволить исходному установщику оставить запись в реестре, указывающую, каким образом устанавливать плагины, и создать отдельные установщики для плагинов. Что оставляет открытым вопрос, как продолжить удаление, но это проблема, которую я могу решить позже. У кого-нибудь есть идея получше? Есть ли какие-то механизмы специально для этого в WiX, о которых я не знаю? Спасибо за ваш совет, N-Man

Ответы [ 2 ]

3 голосов
/ 27 августа 2009

Ключ реестра является популярным способом решения этой проблемы. Более ориентированный на установщик Windows способ создания каталога подключаемых модулей заключается в использовании компонента для создания каталога подключаемого модуля, а другие используют поиск компонентов для Component/@Guid.

.

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

0 голосов
/ 27 августа 2009

Поэтому я считаю, что лучший способ для меня - это пусть оригинальный установщик оставит запись реестра, указывающая каким-либо образом где установить плагины, и создать отдельные установщики для плагины.

Да, я считаю, что это стандартный подход. Ваш основной установщик приложения может оставить запись в реестре о том, где устанавливать плагины, как это:

<Registry Id='WritePluginsLoc'
  Root='HKLM'
  Key='Software\Acme\Foo 1.x' 
  Name='PluginsLocation'
  Type='string'
  Action='write'
  Value='[PLUGINSFOLDER]' />

Установщик плагина может затем извлечь запись реестра следующим образом:

<Property Id="PLUGINSFOLDER">
  <RegistrySearch Id='PluginsLocationSearch'
     Root='HKLM' 
     Key='Software\Acme\Foo 1.x'
     Name='PluginsLocation'
     Type='raw' />
</Property>

Для автоматической деинсталляции плагинов вместе с основным продуктом, боюсь, вам придется написать пользовательский exe для удаления. Этот exe-файл должен знать, как найти коды продуктов MSI для плагина, и будет вызывать msiexec /x для каждого из них.

...