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

WIX. Шаг второй.

Инсталлятор для библиотек сделали, теперь надо инсталлятор для самой Доп.расшифровки.

Кроме самой программы нужно сделать 2 ярлыка в меню “Пуск” – “Программы” – “Дополнительная расшифровка”: ярлык для запуска программы и ярлык для инструкции. Так как с выходом новой версии, старая продолжает использоваться (только для просмотра), то имеет смысл в названия ярлыков добавить номер версии, чтоб различать: “Доп.расшифровка версия 8” и “Инструкция версия 8”. Также нужно сделать ярлык на Рабочем столе – “Доп.расшифровка”, без указания версии. Другие версии программы будут его просто перезаписывать своим вариантом, таким образом на рабочем столе будет ярлык указывающий на текущую рабочую версию.

По аналогии с предыдущей статьей собираем проект и исходник инсталлятора. Также добавляем секцию Feature, и Product и Package меняем название и производителя – Отдел автоматизации Министерства Финансов Ростовской области, они правообладатели:


        

Попутно переименовал директории и «важные компоненты в более осмысленные имена: dirDop, dirSSOOT, dirVREM, dirDOC, cmpABAT и cmpDOC. Собираем и пробуем установить, все проходит нормально.

Ярлыки

Теперь надо создать ярлыки. В описании ярлыка надо указывать Directory – папку, где будет создан ярлык. Есть набор стандартных папок, но у нас в меню “Пуск” сложная структура, поэтому ее надо создать отдельно. Для рабочего стола тоже надо объявить папку:

  
 
			
			
			
				
			
			
              

в Directory указывает папки которые создали: DesktopFolder – рабочий стол, DOPMenuFolder – папка в меню “Пуск”.  Параметр Advertise – указывает, что ярлык “настраиваемый”, Windiws Installer сам может управлять этими ярлыками. К слову нам не дадут создать не-Advertise ярлык – компилятор вывалит кучу ошибок. Аналогично второму ярлыку создаем ярлык для инструкции:


                    
					
					
                

Если попробовать сейчас собрать, то получим ошибку о том, что мы создаем в профиле пользователя а не удаляем за собой. Имеется ввиду, что мы создаем “Дополнительная расшифровка” папку в меню “Пуск”, а удалять ее надо явно. Можно это сделать где мы описывали папку, а можно в любом другом месте, хотелось проверить как работает DirectoryRef, поэтому я сделал через него. Его нужно располагать внутри Package, но вне “TARGETDIR”, я добавил ниже:


			
				
				
			
		

Так как удаление надо будет добавить во Feature, то RemoveFolder придется обернуть в компонент. Но в компоненте обязательно должен быть главный элемент (KeyPath=»yes»), по нему Инсталлятор определяет установлен компонент или нет. KeyPath может быть у файла или у записи в реестре, лишних файлов у нас нет, так что решено добавлять в реестр запись об установке. Не забываем добавить ссылку на компонент во Feature.


По умолчанию все пишется и создается в профиле пользователя, поэтому в реестре используем HKCU, на другое будет ругаться, именно поэтому и объявляем явно папку рабочего стола.

Собираем, проверяем, все должно отработать “на раз”. Проверяем наличие ярлыков и запуск программ, проверяем удаление.

Иконки

Все работает, но ярлык для программы – стандартный для bat-файлов. Наведем немного красоты. В тырнете нашел бесплатную иконку для приложения 32х32:

Будем ее добавлять. Для начала ее надо описать:


Единственное ограничение в том, что имя элемента должно заканчиваться на .ico или .exe, иначе не дает поставить ее на исполняемый файл. Атрибут SourceFile – указывает где взять иконку. Теперь добавим атрибут Icon с сылкой на иконку в ярлыки.


Если иконка хранится в исполняемом файле (.exe), то в таком случае все делается аналогично, но в елемент описания ярлыка добавляется еще один атрибут указывающий индекс иконки в файле: Icon=»Foobar10.exe» IconIndex=»0″

Элемент Property с Id=»ARPPRODUCTICON» указывает иконку для списка в “Установка/удаление программ”.


Загрузка: Как всегда — проект и готовый готовый msi-пакет

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

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.