Forums.Avtograd.Ru: Создание инсталлятора на базе MSI с помощью WIX - Forums.Avtograd.Ru

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Создание инсталлятора на базе MSI с помощью WIX

#1 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 04 Декабрь 2007 - 14:54

Долго я пытался понять как создавать дистрибутивы с помощью MSI. Разобрался, хочу поделиться, возможно это будет для кого-то полезным.

И так, нам понадобятся:
1. MS Visual Studio (хотя можно и без нее, но будет немного сложнее)
2. Project Aggregator
3. Wix версии 3

Пункты 2 и 3 лежат по адресу http://wix.sourceforge.net/releases/ забираем самые последние версии, устанавливаем сначала Project Aggregator, затем Wix и можно приступать к созданию дистрибутива.

Запускаем студию, Новый проект, после устуновки Wix в дереве проектов добавится пункт Wix, выделяем, выбираем пункт Wix Project, задаем название и расположение проекта и жмем ОК. Все, рыба (заготовка под проект) готова.

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

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
		<Product Id="5614c207-34bc-4757-900f-c29671291756" Name="[b]PUT-PRODUCT-NAME-HERE[/b]" Language="1033" Version="1.0.0.0" Manufacturer="[b]PUT-COMPANY-NAME-HERE[/b]" UpgradeCode="e2a393b8-a226-4027-9e7e-c0878a63f901">
		<Package InstallerVersion="200" Compressed="yes" />

		<Media Id="1" Cabinet="WixProject1.cab" EmbedCab="yes" />

		<Directory Id="TARGETDIR" Name="SourceDir">
			<Directory Id="ProgramFilesFolder">
				<Directory Id="INSTALLLOCATION" Name="[b]PUT-APPLICATION-DIRECTORY-HERE[/b]">

					<Component Id="ProductComponent" Guid="873e824a-91a0-4d9c-9885-8d6e6ff0afe1">
						<!-- TODO: Insert your files, registry keys, and other resources here. -->
					</Component>

				</Directory>
			</Directory>
		</Directory>

		<Feature Id="ProductFeature" Title="[b]PUT-FEATURE-TITLE-HERE[/b]" Level="1">
			<ComponentRef Id="ProductComponent" />
		</Feature>
	</Product>
</Wix>


Что мы здесь имеем:

PUT-PRODUCT-NAME-HERE - название продукта (пакета)
PUT-COMPANY-NAME-HERE - производитель
PUT-APPLICATION-DIRECTORY-HERE - папка по умолчанию, в которую будет устанавливаться программа. <Directory Id="ProgramFilesFolder"> над этой строкой означает, что программа будет устанавливаться в Program Files
PUT-FEATURE-TITLE-HERE - то, что будет предлагаться пользователю при выборочной установке

<!-- TODO: Insert your files, registry keys, and other resources here. --> - здесь мы будем добавлять файлы, ключи реестра и т.д.
Добавим файл, а именно стандартный калькулятор из папки system32:

<File Id="calc.exe" Source="c:\windows\system32\calc.exe"></File>

Все вместе это будет выглядеть так:

<Component Id="ProductComponent" Guid="873e824a-91a0-4d9c-9885-8d6e6ff0afe1">
      <File Id="calc.exe" Source="c:\windows\system32\calc.exe"></File>
</Component>


Все, пакет готов к сборке, Build - Build Solution и наслаждаемся единственным окошком, которое просто устанавливает нашу программу без лишних вопросов.

Но это не то, чего бы хотелось.

Инсталлятор должен содержать как минимум лицензионное соглашение, возможность выбора папки для установки программы, шанс отказаться от установки путем нажатия кнопки отмена.

Будем все это добавлять.

Для начала начнем с добавления поддержки русского языка.

Для этого:
1. В ключе Product меняем Language="1033" на Language="1049" Codepage="1251"
2. В свойствах проекта, на закладке Linker в поле Cultures пишем ru-RU
3. В моей папке на ФТП забираем файл WixUI_ru-ru.wxl и добавляем к проекту.

Прикручиваем GUI
Правой клавишей на проекте, Add Reference, на закладке Browse выделяем WixUIExtension.dll и жмем Add, далее OK.
В ветке Ptoduct, где-нибудь в конце добавляем

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" ></Property>
<UIRef Id="WixUI_InstallDir"/>

В итоге получаем инсталятор с окном приветствия, лицензией, выбором директории. Почти все, осталось заменить текст лицензии на свой. Создаем лицензию в формате RTF, используя Wordpad. Office для этих целей не подойдет. Добавляем к проекту, открываем свойства проекта, Linker, в строке Define Wix variables пишем WixUILicenseRtf=license.rtf

Как еще что нарою сюда же добавлю.
Сейчас интересует выбор компонентов для установки создание ярлыков на программу.
<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0


  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#2 Пользователь офлайн   TRUTHFUL

  • Пользователь
  • PipPip
  • Группа: Модераторы
  • Сообщений: 412
  • Регистрация: 01 Ноябрь 07

Иконки сообщения  Отправлено 04 Декабрь 2007 - 18:22

Очень познавательно, нужно сохранить страничку на всякий случай :)
Истина где-то рядом... Пускай там и остается!
0

#3 Пользователь офлайн   Exception

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 550
  • Регистрация: 01 Ноябрь 07

Отправлено 04 Декабрь 2007 - 18:27

Я как-то пытался создать этот MSI пакет и качал Викс, только там мудренно все. Легче злобно заюзать платную программу для сборки этих пакетов установок и через Orca все следы подправить чтобы было как в Виксе создано.
:lol:
0

#4 Пользователь офлайн   musashi

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 573
  • Регистрация: 01 Ноябрь 07

Отправлено 04 Декабрь 2007 - 19:35

а что мешает использовать к примеру WISE или InstallShield?
гемора там на порядок меньше, тыкай умно кнопкой мыши и все!
0

#5 Пользователь офлайн   Exception

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 550
  • Регистрация: 01 Ноябрь 07

Отправлено 04 Декабрь 2007 - 19:52

Платность. Ведь тебе же как разработчику не понравится что инсталлятор твоей программы вдруг покажет окно "Обломись этот дистрибутив создан пробной версией программы"... Поэтому бесплатно, но сердито...
0

#6 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 01:22

а кто мешает использовать бесплатные инсталятары? NSIS, Inno Setup, другие, коих вагон и маленькая тележка, или если совсем туго, написать самому?
0

#7 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:20

MS как-то посолиднее того же NSIS и Inno. Не удивлюсь если в один прекрасный день инсталляторы не базирующиеся на MSI будут объявлены "кривыми" или "вне закона".

NSIS на данный момент устраивает всем, кроме поддержки юникода, вернее не устраивает ее отсутствием. Инно - большой оверхеад добавляет.

Писать самому все-таки глупо, зачем изобретать велосипед? :)

Просмотр сообщенияup (5.12.2007, 1:22):

а кто мешает использовать бесплатные инсталятары? NSIS, Inno Setup, другие, коих вагон и маленькая тележка, или если совсем туго, написать самому?

<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#8 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:33

С этим я согласен.

А зачем юникод?
0

#9 Пользователь офлайн   DJ-Andrey-sXe

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 218
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:34

Я на данный момент юзаю NSIS. Начинал разбираться с копания примеров, коих там достаточно много. Приятно удивили возможности: крошечный довесок, классная скорость установки, неплохая настраиваемость всего, что можно пожелать (иконки, фоны, шрифты, цвета, диалоги, пользовательские диалоги, тексты сообщений, варианты установки, silent-режим), русский язык, хорошее сжатие (в последних версиях появился алгоритм LZMA).
Проект сетапа = текстовый файл. Компилятор консольный, бесплатный.
0

#10 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:40

А попробуй запустить инсталлятор АОЛа под виндой с английской локализацией, знаки вопроса вместо букв.

Просмотр сообщенияup (5.12.2007, 2:33):

С этим я согласен.

А зачем юникод?

<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#11 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:41

Забыл добавить: NSIS при всей своей гибкости мне не нарвиться отсутствием простаты, в любом случае придётся чтота ручками подправлять. Когда часто сетап делаешь, это начинает достовать.
Так что мой выбор Inno+ISTool - все настройки, за редким исключенем через GUI, а на довесок плевать, всёравно сетап весит меньше чем незапакованная программма.
0

#12 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:45

Для больших проектов да, а вот когда сама программа весит 200 КБ, а вся инсталляха 800, начинаешь задумываться.

Спорить о приимуществах не хочется, этот пост я написал только для того чтобы поделиться опытом. :)

Просмотр сообщенияup (5.12.2007, 2:41):

Забыл добавить: NSIS при всей своей гибкости мне не нарвиться отсутствием простаты, в любом случае придётся чтота ручками подправлять. Когда часто сетап делаешь, это начинает достовать.
Так что мой выбор Inno+ISTool - все настройки, за редким исключенем через GUI, а на довесок плевать, всёравно сетап весит меньше чем незапакованная программма.

<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#13 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:46

Просмотр сообщенияTerror (5.12.2007, 2:40):

А попробуй запустить инсталлятор АОЛа под виндой с английской локализацией, знаки вопроса вместо букв.
Для меня как для делофового программера это не актуально, в делфи нет юникода. Есть канешно сторинние компанеты, но я их не использую. У самого стоит англиская винда, после переключения локали и импортирования маленького рег файла все проблемы пропадают. Да и не пишу я для буржуев, а если пишу - то у программы англиский интерфейс и инстолятор соответственно.
0

#14 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:48

Нужно быть готовым ко всему, сегодня не пишешь для буржуев, а завтра придется (например хороший заказ, на хорошую сумму) :)

Просмотр сообщенияup (5.12.2007, 2:46):

Для меня как для делофового программера это не актуально, в делфи нет юникода. Есть канешно сторинние компанеты, но я их не использую. У самого стоит англиская винда, после переключения локали и импортирования маленького рег файла все проблемы пропадают. Да и не пишу я для буржуев, а если пишу - то у программы англиский интерфейс и инстолятор соответственно.

<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#15 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 02:52

Просмотр сообщенияTerror (5.12.2007, 2:45):

Для больших проектов да, а вот когда сама программа весит 200 КБ, а вся инсталляха 800, начинаешь задумываться.

Спорить о приимуществах не хочется, этот пост я написал только для того чтобы поделиться опытом. :)
Ну излишнеюю жирность я тоже не люблю, если программа маленькая, я пользуюсь другим инсталятором, например CreateInstall Free. Я заметил с выходом новых версий программа(я имею введу свой софт) весит всё больше и больше, так что становицца не так актуально. АОЛ например гдиплюс с собой тоскает...

Спорить нет смысла - каждый выберает под свои задачи, поэтому и мнения разные =)
0

#16 Пользователь офлайн   Exception

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 550
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 12:00

2up: Delphi поддерживает Unicode начиная вроде с 5 версии.
2Terror: А ты попробуй использовать вторые версии Inno. В них диалоги на WinAPI делались и размер модулей инсталляторов поменьше (сейчас в новых активно используются многовесные формы), да и функций куча. Но только в то время LZMA сжатия не было в них, хотя ZIP9 тоже вроде жмет нормально...

А если честно лучше не используй эти MSI пакеты установок. Система никогда по-человечески не умеет деинсталлировать программы, установленные этими пакетами. В большинстве остаются примерно 90-100 лишних записей в реестре. Потом лазий и вычищай... Все-таки NSIS это самый лучший инсталлятор кто бы что не говорил. Все аккуратно и продуманно сделано.
0

#17 Пользователь офлайн   Phenomen

  • фен
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 3 957
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 12:06

согласен. MSI - зло. вы только загляните в папку WINDOWS\Installer (скрытая).. когда установлено и удалено около тысячи программ с этим инсталлером, то в реестре и системных папках образуется огромная свалка всякого хлама.
я пользовался гораздо более удобным и быстрым NSIS. его скриптовую систему поймет любой, кто захочет, а возможности по кастомизации и визуализации выше MSI.
...
0

#18 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 05 Декабрь 2007 - 21:49

Просмотр сообщенияException (5.12.2007, 12:00):

2up: Delphi поддерживает Unicode начиная вроде с 5 версии.
В контролах? Невидел. Да юникод строки есть, но сам VCL - не юникод.
0

#19 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Декабрь 2007 - 11:23

Насчет того что возможности по кастомизации выше я не уверен. В MSI можно создавать полностью собственные диалоги используя XML.

Насчет лишних файлов - согласен, могли бы меня спросить хочу ли я резервную копию инсталлера на своем компе.
МС для зачистки выпустила утилиту http://support.micro...om/kb/290301/ru

Просмотр сообщенияPhenomen (5.12.2007, 12:06):

согласен. MSI - зло. вы только загляните в папку WINDOWS\Installer (скрытая).. когда установлено и удалено около тысячи программ с этим инсталлером, то в реестре и системных папках образуется огромная свалка всякого хлама.
я пользовался гораздо более удобным и быстрым NSIS. его скриптовую систему поймет любой, кто захочет, а возможности по кастомизации и визуализации выше MSI.

<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#20 Пользователь офлайн   Explorer

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 700
  • Регистрация: 09 Ноябрь 07

Отправлено 06 Декабрь 2007 - 19:55

Это просто еще одна лишняя возня с этой зачисткой, которую пользователь скорее всего не будет делать.
Да и вообще не нужно забывать тот факт что по ошибке можно ненароком снести какой-нибудь ключ в реестре или копию MSI файла, так после этого правильно программа не удалится, сославшись на отсутствие оного. Потом вычищай деинсталляторами эту ересь...
Максимум мне нравятся MSI установки только тем, что в них есть диалог изменения установки приложения - Изменение/Восстановление/Удаление. А все остальное это каркас с двоичными данными, который надо обработать MSI службой, что кажется мне еще более нелепым. Нет бы сразу самоисполняемый установщик...
0

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей