все что связано с моей работой
Главная » Програмирование » Wix. Первый опыт.

Wix. Первый опыт.

Появилось чуть времени свободного — надо разобраться с Wix-ом, хотя бы на «простом» уровне. а то туториал перевел давно, а попробовать все времени нет.
Экспериментировать буду на много страдальной Доп.расшифровке. Простое приложение, как собственно и все DOS программки, к тому же в некоторых версиях были обновления можно будет попробовать патчи.

Итак, ручной процесс установки:

  1. Доп.расшифровка написана на FoxPro, поэтому ей обязательно нужны библиотеки FoxPro.
  2. Затем в переменную окружения надо добавить пути к этим библиотекам
  3. Установить саму Доп.расшифровку

Собственно первый и второй пункты можно объединить в «Установку библиотек», вот им сейчас и займемся.

Библиотеки Foxpro.

МФ РО раздавали архив с ними, в нем либы от версии 2.0 и до 2.6, а также пакет русификации. Логичнее было бы оставить библиотеки только от 2.6, но так исторически сложилось, и пока менять ничего не будем, да и файлов для установки так больше.

Готовим структуру проекта: скопируем в папку все файлы библиотек. Содержимое папки C:\Projects\libs\dos

07.05.2013  14:31              .
07.05.2013  14:31              ..
07.05.2013  14:31              driver
07.05.2013  14:43              FOX20
07.05.2013  14:44              fox25
07.05.2013  14:44              FOX26

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

heat dir dos -out dos.wxs -gg -sfrag -sw5150 -template product
  • sw5150 – убрать предупреждение 5150. Параметр не обязателен, все добавится и без него, так не придется выискивать ошибки в куче мусора
  • gg – сразу прописать GUID-ы, без ключа поле GUID будет заполнено надписью «PUT-GUID-HERE»
  • template product – использовать шаблон product, очень важная опция, генерирует практически готовый исходник. Варианты: product, module и fragment. По умолчанию включен fragment, все компоненты будут обернуты тегом и не будет и других
  • sfrag – отключить генерацию Fragment-ов, по умолчанию каждый компонент оборачивается Fragment-ом, эта опция отключает такое поведение
  • out dos.wxs – имя выходного файла
  • dos — имя папки которую надо добавить

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

    
        
  

добавленные атрибуты languages и summarycodepage позволят использовать русские буквы в описании и названиях, иначе при сборке будут валится ошибки. Внизу находим и исправляем атрибут cabinet у тега , хотя это чисто для красоты:

В секцию Feature надо добавить ссылки на устанавливаемые компоненты, вот тут хочется создать по одному компоненту на папку и все файлы запихать в него, и не забываем исправить заголовок тега feature:

 
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
	

Готов первый вариант можно попробовать собрать и посмотреть. Тут как у взрослых — компиляция и сборка. Этап первый очень простой:

candle dos.wxs

Если мы не указали параметр -out, то получим файл dos.wixobj — это «объектный» файл. Теперь в папку с проектом надо скопировать файл русских ресурсов: WixUI_ru-ru.wxl. Почему-то не захотел подтягиваться из PATH. и потом пробуем собрать:

light dos.wixobj -loc wixui_ru-ru.wxl

По идее должны получить гору ошибок о том, что не может найти файлы. Идем снова править исходник, во всех тегах File в атрибуте Source надо убрать SourceDir:


теперь заново пересобираем, для удобства можно пользоваться такой конструкцией, а-ля Unix:

candle dos.wxs && light dos.wixobj -loc wixui_ru-ru.wxl

Получили первый пакет. Готовый dos.msi можно запустить и посмотреть этапы установки. Так как не подключал ни каких UI — то и никаких окон, просто пробежал прогресс бар и готово. Проверяем наличие всех папок и файлов, записи в «Установка удаление программ». Удаляем и проверяем что все удалилось и не осталось никакого мусора.

Добавление путей в Path

Теперь надо добавить обновление переменной окружения Path, не руками же править на каждой машине. Для этого создаем еще один компонент и поместим его в секцию directory dos, на один уровень с другими папками:

 

  
  
  
  
  

 

CreateFolder – должен быть обязательно. Без него Environment не будет работать. Можно конечно добавить их в какие-нибудь компоненты с файлами. Но отдельным компонентом удобнее — все в одном месте. И не забываем добавить ссылку на новый компонент во Feaure:

 
    
    
  

Опять собираем и можно запустить и проверить работу. Для этого, запускаем cmd и там выполним команду path, в таком синтаксисе она выводит свое значение.


Обращаю внимание, что обязательно, надо запускать новый cmd, если вы пользуетесь Far-ом или другим похожим файловым менеджером. Это необходимо для того, чтобы, заново «перечитались» переменные окружения. Far будет упорно показывать значения которые он прочитал при запуске!

Заключение

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

Из оставшихся неясностей — установка на диск С:, как это указать безусловно? Во всех тестах у меня установка проходила на диск С:, но что будет если у кого-то системный диск будет D:?


Загрузить: проект и готовый msi-пакет

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

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.