Wix - Пользовательский каталог установки

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

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

Update:

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

<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" />, я могу создать установку. Но диалог "Выбрать тип установки" ( "Полный", "Типичный", "Пользовательский" ) больше не отображается. И еще одна странная вещь: иногда появляется диалоговое окно, в котором указано, что он вычисляет дисковое пространство (у него есть кнопка отмены), но в конечном итоге он никогда не закрывается сам по себе. Когда я его закрываю, я все равно могу продолжить. Есть ли способ исправить это простым способом?

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

Ответ 1

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

  • WixUI_Mondo
  • WixUI_Advanced
  • WixUI_FeatureTree
  • WixUI_InstallDir
  • WixUI_Minimal

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

Ответ 2

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

ссылка UIRef

Ответ 3

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

IsWiXMerges.wxs

IsWiXInstaller.wxs

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