Изменение цвета текста на диалоги Wix
Я новичок в создании инсталляторов с использованием Wix, мне удалось все это сделать, и инсталлятор работает, как и ожидалось. Единственная проблема, с которой я столкнулся, это то, что я использую фоновое изображение и изображение баннера для диалогов WixUI_Minimal, и это темные цветные изображения, поэтому часть текста теперь отображается, поскольку цвет текста черный.
Я хотел бы знать, как изменить цвет текста на другой цвет в каждом из диалоговых окон в зависимости от потребностей. На первом экране, где находится лицензионное соглашение, я хочу, чтобы он был оранжевым, а в процессе установки в верхнем баннере - белым. Как мне этого добиться?
2 ответа
Наборы графических интерфейсов WiX по умолчанию: графические интерфейсы WiX MSI по умолчанию включены из DLL WixUIExtension.dll
, Обычно вы просто добавляете ссылку на этот файл в свой проект WiX и указываете набор графического интерфейса WiX по умолчанию, такой как <UIRef Id="WixUI_Mondo" />
или же <UIRef Id="WixUI_Minimal" />
- и это достаточно хорошо. WixUIExtension.dll
Файл можно найти в основном каталоге установки WiX в папке % ProgramFiles (X86)%.
1) Встроенная настройка диалогов WiX: Есть несколько способов немного изменить эти диалоги настройки WiX. Общий метод описан здесь: Настройка встроенных диалоговых наборов WixUI. Я думаю, что это должно быть достаточно для вашей цели. Возможные настройки: 1) Указание файла лицензионного соглашения для конкретного продукта. 2) Задание растровых изображений пользовательского интерфейса настройки для конкретного продукта. 3) Добавление дополнительного флажка и дополнительного текста в ExitDlg. 4) Настройка текста, отображаемого во встроенных диалогах. 5) Изменение последовательности интерфейса встроенного диалогового набора. 6) Вставка пользовательского диалога во встроенный набор диалогов.
2) Изменить диалоговые окна по умолчанию - Расширенные диалоговые окна. Помимо незначительной настройки диалогов с помощью метода, описанного выше, иногда требуются масштабные изменения. Затем вам нужно скопировать исходные файлы диалога в папку вашего проекта, а затем переставить их в соответствии с их потребностями. Это несколько связано, но не ракетостроение. Вы просто копируете исходные файлы диалога WiX в папку вашего проекта. Я не думаю, что это необходимо для вашей цели. Я постараюсь выкопать ссылку, которая описывает процедуру.
- Подробная настройка единого нового диалога MSI с использованием WiX.
- Не могу найти хорошую ссылку с инструкциями.
- Это нормально, но мне пришлось удалить устаревшую ссылку. Может быть, проверьте ссылку github.com внизу?
- Советник создателя WiX Роб Меншинг советует основываться на существующем диалоге. Просто скопируйте и измените его, присвоив ему новое имя и личность.
- Наконец вспомнил запись в блоге Нила Слайтхолма.
3) Внешний графический интерфейс: просто отметим, что вы можете эффективно заменить встроенный графический интерфейс MSI своим собственным с помощью функции MsiSetExternalUI. Загрузчик WiX использует это, чтобы позволить пользователям реализовать свой собственный графический интерфейс настройки.
- Примеры в этом ответе (просмотреть все ответы?).
- Функция записи WiX (загрузчик и многое другое), может использовать такой внешний графический интерфейс. Посмотрите эту ссылку, чтобы получить достаточно приличное объяснение Burn и внешнего интерфейса - я думаю. Приложение Bootstrapper.
- Как WiX, Advanced Installer и Installshield позволяют внешним графическим интерфейсам с более продвинутыми функциями, чем встроенный графический интерфейс MSI. Больше на том же.
Предлагаемый подход: для вашей цели я бы добавил файл локализации в ваш проект (если у вас его нет): Right Click WiX Project
=> Add
=> New Item...
=> Убедитесь, что WiX 3
выбран в левой панели => Double click "Localization File"
, В файле локализации WiX переопределите строку, которую вы хотите переопределить. Здесь WelcomeEulaDlg's
"Title"
строка указана в вашем новом файле локализации WiX (*.wxl
):
<String Id="WelcomeEulaDlgTitle">{\Test}This is my custom string3!</String>
В вашем файле проекта:
<UI>
<UIRef Id="WixUI_Minimal" />
<TextStyle Id="Test" FaceName="Arial" Blue="255" Size="12" Strike="yes" />
</UI>
Ключ, чтобы установить цвет является TextStyle element
, Вы манипулируете Red
, Blue
а также Green
атрибуты, чтобы получить цвет, который вы хотите. Этот диалог можно найти в репозитории WiX git здесь: WelcomeEulaDlgTitle. Затем вы ссылаетесь на TextStyle - в данном случае Test - в вашей локализованной строке, используя эту забавную запись: {\Test}
, Смотрите строку выше. Обновить и добавить TextStyle
идентификаторы в зависимости от обстоятельств. Вот фактический диалог после компиляции:
Для удобства:
- WiX GUI устанавливает и файлы (все файлы).
- Набор диалогов WixUI_Minimal.wxs.
- И все локализуемые строки для графического интерфейса WiX.
WixUI_en-us.wxl
файл, указанный в разделе " Настройка текста во встроенных диалоговых окнах " в документации по настройке диалогов WiX.
Обнаружил это после написания выше, это по сути то же самое в более компактной форме без скриншотов: Настройка текста в стандартных диалогах Wix
Спасибо за ваш ответ. Я смог справиться с этим, зайдя в исходный код Wix SDK и проверив, какие идентификаторы элементов я хотел настроить. Настроил строку в файле локализации (.wxl), а также в Product.wix, на который я ссылался.