все что связано с моей работой
Главная » Програмирование » WIX. Добавляем интерфейс.

WIX. Добавляем интерфейс.

В прошлый раз мы сделали готовые и достаточные инсталляционные пакеты для Доп.расшифровки и необходимых библиотек FoxPro. Теперь добавим немного интерактивности так будет похоже на все остальные программы и (возможно) привычнее для пользователей.

Добавление интерфейса.

Итак приступим. Сначала начнем с библиотек.

Будем использовать самый простой и распространённый интерфейс — WixUI_Mondo, добавляем в исходник, в секцию Product добавляем:

и собираем:

candle dos.wxs
light dos.wixobj -loc wixui_ru-ru.wxl -cultures:ru-ru -ext WixUIExtension

у меня при сборке сыпятся ошибки:

C:\delivery\Dev\wix35_public\src\ext\UIExtension\wixlib\ErrorProgressText.wxs(96) : error LGHT0204 : ICE03: Invalid template string; Table: Error, Column: Message, Key(s): 8
C:\delivery\Dev\wix35_public\src\ext\UIExtension\wixlib\ErrorProgressText.wxs(102) : error LGHT0204 : ICE03: Invalid template string; Table: Error, Column: Message, Key(s): 14
C:\delivery\Dev\wix35_public\src\ext\UIExtension\wixlib\ErrorProgressText.wxs(103) : error LGHT0204 : ICE03: Invalid template string; Table: Error, Column: Message, Key(s): 15

но при этом пакет собирается, подозреваю что это издержки старой версии (3.5), надо будет проверить на последней (3.7)

Запускаем и смотрим какие диалоги появились:

  1. приветствие
  2. лицензионное соглашение
  3. выбор установки (обычная, выборочная, полная)
  4. Итог(кнопка установить)
  5. прогресс бар
  6. готово

Если запустить пакет еще раз, то появится окно обслуживания, с кнопками Изменить, Восстановить, Удалить. Для нас при установке лишними будут диалоги 2 и 3, нечего выбирать и лицензионного соглашения нет

При установке не было возможности выбора пути установки. Нас это как раз устраивает, для того чтобы включить такую возможность надо изменить несколько атрибутов во Feature, об этом как-нибудь в другой раз.

Немного изменим наше подлючение пользовательского интерфейса:


По факту — мы объявляем новый интерфейс с именем «DOS_WixUI_Mondo» и загружаем в него диалоги об ошибках и все расширение WixUI_Mondo, которое мы будем править. На самом деле это не совсем исправления, а переопределение (переобъявления) элеметов или их свойств.

Итак, нам надо исключить 2й и 3й диалоги, сделать это можно переопределив события на кнопках “Назад” и “Далее”. Нужно знать только Id диалогов, подсмотреть их можно в исходнике WixUI_Mondo:
C:\wix3.7_src\src\ext\UIExtension\wixlib\WixUI_Mondo.wsx

Кстати тут можно посмотреть всю цепочку диалогов и команды определения событий на кнопках:
NOT Installed AND NOT PATCH
Installed AND PATCH

...

WixUI_InstallMode = "InstallCustom"
WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"
WixUI_InstallMode = "Change"
WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"
WixUI_InstallMode = "Update"

Внутри Publish указывается условие срабатывания, для безусловного перехода надо указывать “1”, на пустой элемент не срабатывает. Условие в первой строке, которая нас интересует, срабатывает когда продукт не установлен и это не обновление, думаю это условие можно оставить. Добавляем ниже объявления UI наши изменения:

NOT Installed AND NOT PATCH
NOT Installed AND NOT PATCH

Собираем пробуем, теперь у нас нет “лишних” диалогов, все выглядит красиво и “без вариантов – не ошибёшься”.

В диалоге обслуживания (MaintenanceTypeDlg) есть не нужная кнопка “Изменить”, которая вызывает диалог выборочной установки, где можно добавить или удалить компоненты, но у нас он один и диалог бесполезен. Но убрать этот диалог по аналогии с Лицензионным соглашением не получилось. Скрыть и сделать не активной эту кнопку (у Control есть атрибуты Hidden и Disabled) тоже не получилось, имеется ввиду штатными средствами, а не правкой исходников.

Новый диалог

Теперь у нас есть готовый инсталляционный пакет, который делает все то что мы хотели и выглядит так как нам надо. Но как говориться “Аппетит приходит во время еды” – не плохо было бы показывать пользователю какую-нибудь информацию о том, что он устанавливает, что-то вроде readme. Для этих целей подходит “Лицензионное соглашение”, но надписи, кнопка “Печатать” и галочка о принятии – лишние. Так что, создадим новый диалог – создаем новый wsx-файл (ReadMeDlg.wsx) с таким содержимым:

1

Это фактически код диалога “Лицензионное соглашение” с убранными элементами и изменёнными переменными. Теперь в нашем основном исходнике в Product добавим определение переменной WixUIReadmeRtf которая содержит имя файла в RTF с текстом, лучше делать перед UI удобнее искать потом. И сразу исправим события на кнопках:

NOT Installed AND NOT PATCH
NOT Installed AND NOT PATCH
NOT Installed AND NOT PATCH
NOT Installed AND NOT PATCH

Теперь при компиляции и при сборке надо указать наш исходник с новым диалогом:

    
del dos.msi && candle dos.wxs readmedlg.wxs && light dos.wixobj readmedlg.wixobj -loc wixui_ru-ru.wxl -cultures:ru-ru -ext WixUIExtension -out dos.msi

Запускаем и проверяем текст и как работают кнопки.

Проверили – все работает нормально, добавим лоска. Добавим графические элементы от “Лицензионного соглашения”:

1

Контрол Title – это “заголовок” диалога который располагается вверху диалога, обычно на белом фоне, а Description чуть ниже и содержит краткое описание диалога. Использование переменных вида loc.ХХХ позволяет в будущем с помощью файла локализации изменять текст, не меняя сам исходник диалога. Но это предполагает обязательное наличие файла локализации. Создаем файл локализации, в имени обязательно должен быть указан язык для которого этот файл предназначен – ReadmeDlg.ru-ru.wxl:



  Что нового
  Обязательно прочитайте что изменилось в программе
  Список изменений

Для Windows указывает ее родную кодировку – 1251, но файл должен быть в UTF-8, потому что — encoding=»utf-8″. “{\WixUI_Font_Title}” – сделает текст жирным.

Теперь при сборке надо указывать дополнительный файл локализации:

    
del dos.msi && candle dos.wxs readmedlg.wxs && light dos.wixobj readmedlg.wixobj -loc wixui_ru-ru.wxl -cultures:ru-ru -ext WixUIExtension -loc readmedlg.ru-ru.wxl -out dos.msi

Запускаем и проверяем

Теперь добавим индивидуальности нашему пакету. Мы можем изменить картинку вверху, под заголовком диалога и картинку на первом диалоге – приветствия. Все картинки должны быть в формате .bmp. Верхний баннер должен быть размером 493х58, а на диалоге приветствия – 493х312, можно еще сменить иконки на диалогах предупреждений и ошибок, но на мой взгляд это лишнее.

Добавляются они в Product:


Порывшись на просторах тырнета нашел иконку для баннера и обложку с книжки FoxPro 2.6, с помощью GIMP-а сваял на скорую руку картинки, сохраняем их в папку bmp.

Банер

И на диалог приветствия

Добавление интерфейса к Доп. расшифровки – аналогично, только другие картинки и иконка.

З.Ы. Файл локализации к диалогу который мы создали содержит текст который больше подошел бы к пакетам обновления поэтому  его надо скопировать с именем, например, update.ru-ru.wxl, и заменить в нем текст:

Информация
Описание пакета
{\WixUI_Font_Title}Описание

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.