Как отобразить предупреждение неблокирования для операционной системы в Wix?

Только для получения информации,

  • можно добавить

    -Dcom.sun.management.jmxremote

в файл eclise.ini, затмение запуска и затем контролировать его использование памяти через 'jconsole.exe', найденный в jdk установке.

C:\[jdk1.6.0_0x path]\bin\jconsole.exe

Выбирают 'Соединение / Новое соединение / 'затмение' для контроля памяти, используемой затмением

  • всегда, использует последний jvm для запуска затмения (который не предотвращает Вас для использования любого другого JFK для компиляции проекта в затмении)
10
задан Wim Coenen 27 November 2009 в 22:58
поделиться

1 ответ

Я решил эту проблему в трех частях:

  1. определение свойства OSWarningText который устанавливается только когда предупреждение необходимо предоставить
  2. создание настраиваемого экрана предупреждения
  3. Вставка настраиваемого экрана предупреждения в последовательность пользовательского интерфейса, если необходимо

1. Определение свойства OSWarningText

Сначала объявите свойство и присвойте ему «неустановленное» значение по умолчанию:

  <Property Id="OSWarningText" Value="{}"/>

Чтобы построить фактическое значение свойства, установите промежуточное свойство для каждого возможного предупреждения. Убедитесь, что условия для каждого предупреждения не перекрываются:

  <SetProperty Id="OSWarningText1" After="AppSearch"
     Value="Detected XP SP [ServicePackLevel]. SP3 or higher is recommended.">
     <![CDATA[(VersionNT = 501) AND NOT (ServicePackLevel >= 3)]]>
  </SetProperty>

  <SetProperty Id="OSWarningText2" After="SetOSWarningText1"
     Value="Detected Vista SP [ServicePackLevel]. SP2 or higher is recommended.">
     <![CDATA[(VersionNT = 600) AND NOT (ServicePackLevel >= 2)]]>
  </SetProperty>

Предполагая, что условия не перекрываются, мы можем безопасно объединить предупреждения в одном свойстве, например:

  <SetProperty Id="OSWarningText" After="SetOSWarningText2"
     Value="[OSWarningText1][OSWarningText2]" />    

2. Создание настраиваемого экрана предупреждения.

Это похоже на пример добавления флажка для ярлыка на рабочем столе . Скопируйте одно из существующих определений диалоговых окон из источников wix , например InstallDirDlg.wxs , и переименуйте его в WarningDlg.wxs . Теперь найдите и отредактируйте обработчики событий для кнопки WelcomeDlg next.

Вы можете установить свойства в ответ на нажатие кнопки и дополнительное условие, а также вы можете показать следующий диалог на основе свойства. Мы воспользуемся этим для обработки следующей кнопки WelcomeDlg следующим образом:

  1. сбросить свойство WelcomeDlg_Next значение "не установлено"
  2. установите для свойства WelcomeDlg_Next значение "WarningDlg", но только если OSWarningText установлен
  3. , установите для свойства WelcomeDlg_Next значение "LicenseAgreementDlg", но только если OSWarningText НЕ установлен.
  4. Показать диалог, заданный WelcomeDlg_Next, если свойство было правильно установлен.

Код Wix для этого выглядит следующим образом:

        <Publish Dialog="WelcomeDlg" Control="Next"
            Property="WelcomeDlg_Next" Value="{}"
            Order="1">1</Publish>
        <Publish Dialog="WelcomeDlg" Control="Next"
            Property="WelcomeDlg_Next" Value="WarningDlg"
            Order="2">OSWarningText</Publish>
        <Publish Dialog="WelcomeDlg" Control="Next"
            Property="WelcomeDlg_Next" Value="LicenseAgreementDlg"
            Order="3">NOT OSWarningText</Publish>
        <Publish Dialog="WelcomeDlg" Control="Next"
            Event="NewDialog" Value="[WelcomeDlg_Next]"
            Order="4">WelcomeDlg_Next</Publish>

Затем сделайте то же самое для кнопки «назад» лицензионного соглашения: она должна вернуться к экрану приветствия, если нет предупреждения, или к экран предупреждения.

16
ответ дан 3 December 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: