2011-01-14 11 views
6

Używam Wix 3.x, a użytkownik powinien mieć możliwość wyboru katalogu docelowego. Moje Setup.wxs jest obecnie takie jak tutaj: http://pastebin.com/uH1EjbDQWix - niestandardowy katalog instalacyjny

Jaki jest najprostszy sposób, aby zapytać użytkownika o niestandardowy katalog docelowy? (INSTALLDIR/TARGETDIR ?!) Widziałem przykład, w którym ludzie budują własne strony dialogowe, ale to naprawdę nie jest konieczne, prawda?

Aktualizacja:

Kiedy dodać

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

po <UIRef Id="WixUI_Mondo" /> ale przed </Product> pojawia się następujący błąd:

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

Teraz kiedy usunąć <UIRef Id="WixUI_Mondo" /> mogę zbudować instalację . Ale okno dialogowe "Choose Setup Type" (Complete, Typical, Custom) nie jest już wyświetlane. I kolejna dziwna rzecz: Czasami pojawia się okno dialogowe z informacją, że oblicza miejsce na dysku (ma przycisk anulowania), ale ostatecznie nigdy się nie zamyka. Kiedy go zamknę, będę mógł kontynuować. Czy istnieje sposób, aby to naprawić w prosty sposób?

Dzięki, Philip

Odpowiedz

9

Element UIRef odnosi się do standardowych sekwencji interfejsu użytkownika obsługiwane przez WiX:

  • WixUI_Mondo
  • WixUI_Advanced
  • WixUI_FeatureTree
  • WixUI_InstallDir
  • WixUI_Minimal

można może używać tylko jednego tych sekwencji w twoim instalatorze. Każdy z nich ma zestaw dialogów. Aby uzyskać informacje o tym, jakie dialogi są zawarte w każdej z tych sekwencji, WiX wiki ma dobry przegląd.

WixUI_Mondo pozwala użytkownikowi określić katalog instalacyjny, jeśli wybierze instalację niestandardową. Tylko WixUI_Mondo pozwala użytkownikowi wybrać typową, niestandardową lub kompletną instalację.

Najprostszym sposobem na umożliwienie użytkownikowi wyboru katalogu instalacyjnego jest użycie sekwencji dialogowej WixUI_InstallDir.

Własny instalator SharpDevelop używa sekwencji dialogowej WixUI_FeatureTree.

Jeśli więc jeden ze standardowych zestawów okien dialogowych udostępnianych przez WiX nie jest tym, czego potrzebujesz, możesz przyjrzeć się customising the dialog sequence. Tworzenie własnych niestandardowych okien dialogowych jest zazwyczaj ostatecznością.

+0

Cześć Matt, dziękuję za wyczerpującą odpowiedź! – Philip

0

Ten link wyjaśnia, jak to zrobić w prosty sposób.

link UIRef

+0

Dziękuję za odpowiedź, nadal nie działa zgodnie z oczekiwaniami. Ale zaktualizowałem moje pytanie. – Philip

0

IsWiX obsługuje tę funkcję. Spójrz na:

IsWiXMerges.wxs

IsWiXInstaller.wxs

Sztuką jest to, że używam katalogu o nazwie InstallLocation wraz z UIRef z WiXUI_ *. To właśnie wykorzystuje WiXUI w podobny sposób, jak InstallShield używa INSTALLDIR, a Visual Studio używa TARGETDIR.

Powiązane problemy