WIX: как изменить лицензионное соглашение при установке - PullRequest
7 голосов
/ 08 сентября 2011

У меня есть требование, при котором мне нужно показать лицензионное соглашение в соответствии с языком ОС.Локализованные лицензионные соглашения (.rtf) хранятся на сервере.

Я создал специальное действие для определения языка ОС и загрузки соответствующего лицензионного соглашения, но как я могу показать локализованное лицензионное соглашение в лицензионном соглашениидиалог?

У меня есть все файлы набора диалогов (.wxs).Я использую Wix_Minimal набор диалогов.

Я попытался изменить следующие строки в 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>

на

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

, но в тексте лицензионного соглашения ничего не отображается.1016 * Как мне установить этот текст?

Ответы [ 2 ]

3 голосов
/ 09 сентября 2011

К сожалению, лицензионное соглашение - это всего лишь файл во время сборки - после сборки MSI RTF встраивается в текстовый формат как значение в таблице Control.(Вы можете просмотреть это с помощью Orca)

Это означает, что для динамического обновления этого элемента управления вашим пользовательским действиям необходимо выполнить следующие действия:

  • ЗагрузитьRTF-файл
  • Считать RTF в строковую переменную
  • Заменить значение в соответствующей таблице MSI на что-то вроде этого:
    • 'UPDATE Control SET Text='" & sRTFText & "' WHERE Dialog_='LicenseAgreementDlg' AND Control='LicenseText'

Более простым решением было бы включить все языки в один файл RTF:)

0 голосов
/ 08 сентября 2011

У вас может быть переменная сеанса, скажем LOCLICENSEFILEPATH, которая будет содержать путь к файлу лицензии в зависимости от локализации.Так что в Control вы просто должны передать эту переменную.

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