2011-01-14 5 views
6

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

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

Thanks, Philip

ответ

9

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

  • WixUI_Mondo
  • WixUI_Advanced
  • WixUI_FeatureTree
  • WixUI_InstallDir
  • WixUI_Minimal

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

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

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

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

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

+0

Привет, Мэтт, благодарю вас за этот исчерпывающий ответ! – Philip

0

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

link UIRef

+0

Спасибо за ваш ответ, он по-прежнему не работает должным образом. Но я обновил свой вопрос. – Philip

0

IsWiX поддерживает эту функцию. Посмотрите на:

IsWiXMerges.wxs

IsWiXInstaller.wxs

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

Смежные вопросы