На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ Inno Setup
Пожалуйста, выделяйте текст инсталлятора написанного на Inno Setup тегом [сode=ins] ... [/сode]. Для этого используйте кнопку [code=ins] в форме ответа или выпадающего списка, если нужно вставить код из другой программы.


Обязательно указывать:

  • Программу, используемую для создания инсталлятора.



Если в ходе решения проблемы возникли дополнительные вопросы, по возможности задаем их в той же теме.


Выразить свое отношение к модераторам раздела можно здесь: Profi, Fester
Модераторы: Fester
  
> 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й вопрос снимается. Ответ на него: да.

      п.с. Я решил это так - скопировал шаблон WixUI_Advanced - заменил у него имя, заменил последовательность и некоторые диалоги, "скомпилировал" в .wixobj и прилинковал в свой проект. Хотя сначала он ругался на дублирующиеся action-ы, но я их тоже переименовал - вроде работает.
        Цитата tiomeg @
        1) Я не совсем понимаю как должно работать обновление. В 90% случаев у мен оно сводится к замене файла программа.exe на более свежую(чаще у файла меняется только номер билда). Насколько я понял из описания, для таких случаев предназначен Patch. Но с процесс созданиея Patch-a мне показался сложным. К тому же, хотелось бы, чтобы был один MSI-файл, который мог бы и установить программу на чистый комьютер, и обновить изменившиеся файлы(кроме конфигов). Это вообще реально сделать? Если да, то какой из типов обновления подойдёт лучше?
        Патч делается элементарно, это похоже на сравнение двух дистрибутивов Ver1 и Ver2 на выходе .msp пакет который содержит все только необходимые изменения для обновления Ver1 до Ver2.
        Про обновление MSI пакетом читай про Minor Upgrades в MSDN http://msdn.microsoft.com/en-us/library/aa370037.aspx
        Цитата tiomeg @
        3) О добавлении записи в файл hosts. Насколько я понимаю, стандартными средствами Windows Installer этого не сделать, поэтому придётся писать свою DLL-ку и использовать CustomAction, верно?
        Да CA придется использовать потму как это даже не INI файл. Так же придется позаботиться об удалении этой записи от туда при удалении дистрибутива.
        Цитата tiomeg @
        4) Если мне всё-таки понадобится переустановить файлы кофнигов(у которых сейчас указано NeverOverwrite=yes и Permanent=yes) - удасться ли это сделать, изменив эти свойства в следующей версии инсталляции?
        Конечно можно, либо стандартными средствами если INI файл либо используя CA.
          Спасибо за ответ.

          Цитата 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, можно ли их будет изменить в будущем?
            Цитата tiomeg @
            Меня больше интересует личный опыт. Кто, какой тип обновления выбирает, когда необходимо просто обновить exe-файл. Подобный случай, на мой взгляд довольно распространён(хотя, может для таких случаев никто не делает инсталляции).
            Если нужно изменить только один EXE файл то достаточно патча, он компактный и отображается как обновление твоей программы в оснастке Установка/удаление программ, его можно удалить.
            Цитата tiomeg @
            В этом(4) случае я имею в виду, возможно ли будет эти файлы заменить(перезаписать) штатными средствами инсталлятора, в следующей версииинсталляции(при обновлении)? В том смысле, что установив единожды свойства NeverOverwrite=yes и Permanent=yes, можно ли их будет изменить в будущем?
            Да можно штатными. Просто в новой версии выставляй как тебе надо, это будет приоритетней.
            Пробуй дерзай задавай конкретные вопросы.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0.0647 ]   [ 15 queries used ]   [ Generated: 7.08.26, 10:41 GMT ]