2011-09-08 14 views
7

Mam wymóg, gdy muszę pokazać umowę licencyjną zgodnie z językiem systemu operacyjnego. Zlokalizowane umowy licencyjne (.rtf) są przechowywane na serwerze.WIX: jak zmienić umowę licencyjną podczas instalacji

Utworzyłem niestandardową akcję wykrywania języka OS i pobrania odpowiedniej umowy licencyjnej, ale jak mogę wyświetlić zlokalizowaną umowę licencyjną w oknie dialogowym umowy licencyjnej?

Mam wszystkie pliki zestawu dialogów (.wxs). Używam zestawu dialogowego Wix_Minimal.

Próbowałem zmieniając poniższe linie w WelcomeEulaDlg.wxs

<Control Id="LicenseText" Type="ScrollableText" X="130" Y="36" Width="226" Height="162" Sunken="yes" TabSkip="no"> 
    <Text SourceFile="!(wix.WixUILicenseRtf=$(var.licenseRtf))" /> 
</Control> 

do

<Control Id="LicenseText" Type="ScrollableText" X="130" Y="36" Width="226" Height="162" Sunken="yes" TabSkip="no" Text="[MyPropertyConatingRTFData]"> 
</Control> 

ale nic nie pojawia się w tekście umowy licencyjnej.

Jak ustawić ten tekst?

+0

Nie sądzę, że to możliwe. Ale mogę pomyśleć o hackcie: umieść GUID jako tekst; kiedy wyświetla się okno dialogowe licencji, zaplanuj niestandardową akcję, która znajduje [edycję kontrolną] (http://msdn.microsoft.com/en-us/library/aa371540.aspx) i zasila RTF, który pobrałeś do niego. Takie podejście nie jest niezawodne, ale możesz go wypróbować. –

Odpowiedz

-2

Możesz mieć zmienną sesji powiedz LOCLICENSEFILEPATH, która będzie zawierać ścieżkę do pliku licencji na podstawie lokalizacji. Tak więc w sterowaniu wystarczy przekazać tę zmienną.

<Control Id="AgreementText" Type="ScrollableText" X="20" Y="60" Width="330" Height="140" Sunken="yes" TabSkip="no"> 
    <Text SourceFile="[LOCLICENSEFILEPATH]" /> 
</Control> 
+0

Podczas kompilacji otrzymuję komunikat "[LOCLICENSEFILEPATH]" nie znaleziony –

+0

Najpierw należy zdefiniować zmienną 'LOCLICENSEFILEPATH'. Przykład: '' –

+0

Zrobiłem to, ale nadal –

3

Niestety umowa licencyjna jest tylko plik w czasie kompilacji - raz, że MSI jest zbudowana RTF jest osadzony w formacie tekstowym jako wartość w tabeli Control. (Można wyświetlić przy użyciu Orca)

Oznacza to, że w celu aktualizacji tej kontroli dynamicznie, twoje działanie (-a) zwyczaj trzeba będzie wykonać następujące czynności:

  • Pobierz plik RTF
  • Czytaj RTF w ciąg znaków zmiennej
  • Zastąp wartość w odpowiedniej tabeli MSI z mniej więcej tak:
    • 'UPDATE Control SET Text='" & sRTFText & "' WHERE Dialog_='LicenseAgreementDlg' AND Control='LicenseText'

Łatwiejszy rozwiązaniem byłoby włączenie wszystkich języków w tym samym pliku RTF :)

+2

Hmm, zgodnie z MSDN, "akcje niestandardowe nie może modyfikować trwałe dane w bazie danych" : http: //msdn.microsoft.com/en-us/library/aa370519.aspx ... więc punkt # 3 nie zadziała –

+0

Próbowałem wyświetlić próbkę msi w orca, ale w własności text w kontroli licencji było puste –

Powiązane problemy