Wix: Помогите спроектировать простенький установшик для нескольких файлов
, Нужно установить прогу per-machine, дать возможность апгрейда, сохраня
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [3.41.188.34] |
|
|
ПРАВИЛА РАЗДЕЛА · FAQ Inno Setup
Wix: Помогите спроектировать простенький установшик для нескольких файлов
, Нужно установить прогу per-machine, дать возможность апгрейда, сохраня
|
|
|
|
|
Добрый день!
Я в установщиках новичок. Разбираюсь с Wix-ом уже 3-й день. Хочу спросить совета, как правильнее с ним работать. Не ругайте сильно, я с удовольствием курю мануалы, но от объёма новой информации голова уже пухнет. Сначала опишу то что нужно сделать: Создать установщик в Wix-е, который будет: 1) Устанавливать следующие файлы: а) 1 exe и 2 DLL в Program Files\My Company\My Program б) 2 DLL-ки в место, доступное для всех пользователей в) 2 файла с конфигами, если они ещё не присутствуют на компьютере 2) Устанавливать программу для всех пользователей 3) Создавать Shortcut-ы в Start menu\Programs и на Desktop-e. 4) Запрашивать у пользователя ввести IP-адрес, и: а) дописывать этот IP в файл hosts (или заменять существующую запись) b) Создавать текстовый файл и бросать его в место доступное для всех пользователей 5) Установщик должен учитывать возможность того, что программу будут обновлять. Обновление по сути - это заменить 1 exe файл, более свежей версией. 6) При обновлении, должна быть возможность сохранить неизменыыми: 2 файла с конфигами 7) Одно из требований - у админа должна быть возможность deploy-ить установки через Active Directory(или Group Policy?) - (точно не помню) Что сделано: Я взял Wix версии 3.х, по примерам и с помощью WixEdit-a собрал установщик с использованием WixUI_Advanced, запретив Per-user установку. 1) В качестве "места, доступного для всех пользователей" я выбрал CommonAppDataFolder\My Company\My Program. В CommonAppDataFolder\My Company\ я кидаю DLL-ки. а в CommonAppDataFolder\My Company\My Program кидаю конфиги. 2) Для файлов конфигов при установке устанавливаю права GenericAll для группы Users - чтобы все могли читать и изменять их 3) Установку для всех пользователей включаю с помощью свойства ALLUSERS=1 (1 там или 2 - не помню, но работает - факт) 5) Для возможности обновления, добавил в установщик Upgrade Code 6) Чтобы файлы конфигов не удалялись, добавил им свойства: NeverOverwrite=yes и Permanent=yes Вопросы: 1) Я не совсем понимаю как должно работать обновление. В 90% случаев у мен оно сводится к замене файла программа.exe на более свежую(чаще у файла меняется только номер билда). Насколько я понял из описания, для таких случаев предназначен Patch. Но с процесс созданиея Patch-a мне показался сложным. К тому же, хотелось бы, чтобы был один MSI-файл, который мог бы и установить программу на чистый комьютер, и обновить изменившиеся файлы(кроме конфигов). Это вообще реально сделать? Если да, то какой из типов обновления подойдёт лучше? 2) Я создал диалог для ввода Ip, но у меня не получилось встроить его в WixUI_Advanced(пересобирать эту либу, мне не очень хочется). Правильно ли я понимаю, что это невозможно, и чтобы добавлять свои диалоги, и убирать чужие - нужно использовать WixUI_Custom? 3) О добавлении записи в файл hosts. Насколько я понимаю, стандартными средствами Windows Installer этого не сделать, поэтому придётся писать свою DLL-ку и использовать CustomAction, верно? 4) Если мне всё-таки понадобится переустановить файлы кофнигов(у которых сейчас указано NeverOverwrite=yes и Permanent=yes) - удасться ли это сделать, изменив эти свойства в следующей версии инсталляции? Спасибо за внимание. |
|
Сообщ.
#2
,
|
|
|
|
2й вопрос снимается. Ответ на него: да.
п.с. Я решил это так - скопировал шаблон WixUI_Advanced - заменил у него имя, заменил последовательность и некоторые диалоги, "скомпилировал" в .wixobj и прилинковал в свой проект. Хотя сначала он ругался на дублирующиеся action-ы, но я их тоже переименовал - вроде работает. |
|
Сообщ.
#3
,
|
|
|
|
Цитата tiomeg @ Патч делается элементарно, это похоже на сравнение двух дистрибутивов Ver1 и Ver2 на выходе .msp пакет который содержит все только необходимые изменения для обновления Ver1 до Ver2.1) Я не совсем понимаю как должно работать обновление. В 90% случаев у мен оно сводится к замене файла программа.exe на более свежую(чаще у файла меняется только номер билда). Насколько я понял из описания, для таких случаев предназначен Patch. Но с процесс созданиея Patch-a мне показался сложным. К тому же, хотелось бы, чтобы был один MSI-файл, который мог бы и установить программу на чистый комьютер, и обновить изменившиеся файлы(кроме конфигов). Это вообще реально сделать? Если да, то какой из типов обновления подойдёт лучше? Про обновление MSI пакетом читай про Minor Upgrades в MSDN http://msdn.microsoft.com/en-us/library/aa370037.aspx Цитата tiomeg @ Да CA придется использовать потму как это даже не INI файл. Так же придется позаботиться об удалении этой записи от туда при удалении дистрибутива.3) О добавлении записи в файл hosts. Насколько я понимаю, стандартными средствами Windows Installer этого не сделать, поэтому придётся писать свою DLL-ку и использовать CustomAction, верно? Цитата tiomeg @ Конечно можно, либо стандартными средствами если INI файл либо используя CA. 4) Если мне всё-таки понадобится переустановить файлы кофнигов(у которых сейчас указано NeverOverwrite=yes и Permanent=yes) - удасться ли это сделать, изменив эти свойства в следующей версии инсталляции? |
|
Сообщ.
#4
,
|
|
|
|
Спасибо за ответ.
Цитата seryal @ Про обновление MSI пакетом читай про Minor Upgrades в MSDN http://msdn.microsoft.com/en-us/library/aa370037.aspx Частично я это уже читал, и обязательно перечитаю, когда начну тестировать обновления. Меня больше интересует личный опыт. Кто, какой тип обновления выбирает, когда необходимо просто обновить exe-файл. Подобный случай, на мой взгляд довольно распространён(хотя, может для таких случаев никто не делает инсталляции). Цитата seryal @ Цитата (tiomeg @ Вчера, 13:36) 3) О добавлении записи в файл hosts. Насколько я понимаю, стандартными средствами Windows Installer этого не сделать, поэтому придётся писать свою DLL-ку и использовать CustomAction, верно? Да CA придется использовать потму как это даже не INI файл. Так же придется позаботиться об удалении этой записи от туда при удалении дистрибутива. Спасибо. Цитата seryal @ Цитата (tiomeg @ Вчера, 13:36) 4) Если мне всё-таки понадобится переустановить файлы кофнигов(у которых сейчас указано NeverOverwrite=yes и Permanent=yes) - удасться ли это сделать, изменив эти свойства в следующей версии инсталляции? Конечно можно, либо стандартными средствами если INI файл либо используя CA. В этом(4) случае я имею в виду, возможно ли будет эти файлы заменить(перезаписать) штатными средствами инсталлятора, в следующей версииинсталляции(при обновлении)? В том смысле, что установив единожды свойства NeverOverwrite=yes и Permanent=yes, можно ли их будет изменить в будущем? |
|
Сообщ.
#5
,
|
|
|
|
Цитата tiomeg @ Если нужно изменить только один EXE файл то достаточно патча, он компактный и отображается как обновление твоей программы в оснастке Установка/удаление программ, его можно удалить.Меня больше интересует личный опыт. Кто, какой тип обновления выбирает, когда необходимо просто обновить exe-файл. Подобный случай, на мой взгляд довольно распространён(хотя, может для таких случаев никто не делает инсталляции). Цитата tiomeg @ Да можно штатными. Просто в новой версии выставляй как тебе надо, это будет приоритетней.В этом(4) случае я имею в виду, возможно ли будет эти файлы заменить(перезаписать) штатными средствами инсталлятора, в следующей версииинсталляции(при обновлении)? В том смысле, что установив единожды свойства NeverOverwrite=yes и Permanent=yes, можно ли их будет изменить в будущем? Пробуй дерзай задавай конкретные вопросы. |