Wix - Пользовательский каталог установки - PullRequest
6 голосов
/ 14 января 2011

Я использую Wix 3.x, и пользователь должен иметь возможность выбрать целевой каталог. Мой Setup.wxs в настоящее время здесь: http://pastebin.com/uH1EjbDQ

Какой самый простой способ попросить пользователя указать целевой каталог? (INSTALLDIR / TARGETDIR ?!) Я видел пример, в котором люди создают свои собственные диалоговые страницы, но в этом нет необходимости, не так ли?

Обновление:

Когда я добавляю

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/>
<UIRef Id="WixUI_InstallDir" />

после <UIRef Id="WixUI_Mondo" />, но до </Product> я получаю следующую ошибку:

The primary key 'ExitDialog/Finish/EndDialog/Return/1' is duplicated in table 'ControlEvent'. Please remove one of the entries or rename a part of the primary key to avoid the collision. (LGHT0130) - C:\delivery\Dev\wix30_public\src\ext\UIExtension\wixlib\WixUI_Mondo.wxs:44

Теперь, когда я удаляю <UIRef Id="WixUI_Mondo" />, я могу собрать настройки. Но диалоговое окно «Выбор типа настройки» («Завершено», «Типовое», «Пользовательское») больше не отображается. И еще одна странная вещь: иногда всплывает диалоговое окно, сообщающее, что оно рассчитывает дисковое пространство (у него есть кнопка отмены), но в конечном итоге оно никогда не закрывается само по себе. Когда я закрою его, я все равно смогу продолжить. Есть ли способ исправить это простым способом?

Спасибо, Филипп

Ответы [ 3 ]

9 голосов
/ 15 января 2011

Элемент UIRef относится к одной из стандартных последовательностей интерфейса пользователя, предоставляемых WiX:

  • WixUI_Mondo
  • WixUI_Advanced
  • WixUI_FeatureTree
  • WixUI_InstallDir
  • WixUI_Minimal

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

WixUI_Mondo позволяет пользователю указать каталог установки, если он выбирает выборочную установку. Только WixUI_Mondo позволяет пользователю выбрать типичную, пользовательскую или полную установку.

Самый простой способ позволить пользователю выбрать каталог установки - это использовать диалоговую последовательность WixUI_InstallDir.

Собственный установщик SharpDevelop использует последовательность диалогов WixUI_FeatureTree.

Так что, если один из стандартных наборов диалогов, предоставляемых WiX, не тот, который вам нужен, вы можете посмотреть , настраивая последовательность диалогов . Создание собственных пользовательских диалогов, как правило, является последним средством.

0 голосов
/ 14 января 2011

IsWiX поддерживает эту функцию.Взгляните на:

IsWiXMerges.wxs

IsWiXInstaller.wxs

Хитрость в том, что я используюКаталог с именем INSTALLLOCATION вместе с UIRef из WiXUI_ *.Это то, что использует WiXUI аналогично тому, как InstallShield использует INSTALLDIR, а Visual Studio использует TARGETDIR.

0 голосов
/ 14 января 2011

Эта ссылка объясняет, как это сделать простым способом.

ссылка UIRef

...