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


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

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



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


Выразить свое отношение к модераторам раздела можно здесь: Profi, Fester
Модераторы: Fester
  
> Обновление компонентов
    При обнаружении компонента-предка при Major Update что является решающим фактором? Гуид? Имя? Гуид+имя?
      Имя чего?
      Отличить одну компоненту от другой можно только GUID'ом.
        Имя компонента. Судя из вашего ответа, если я правильно понял, я могу компоненты обзывать как захочу, главное сохранить гуид.
          Я только могу догадываться, что ты называешь "именем компоненты".
          У компоненты нет имени.
          Есть primary key, который должен быть уникальным для таблицы Component, этот же ключ используется в качестве foreign key для связи компоненты с другими элементами MSI (файлы, фичи итд).
          И есть ComponentID - это гуид, который должен быть уникальным в принципе :) этот guid сохраняется в реестре и именно по нету MSI определяет установлена компонента или нет, можно ее удалять или нет итд.


          Так вот, если ты собираешь 2 версии одного и тогоже продукта, то guid'ы следует оставлять без изменений. Ну а primary key - можешь менять как хочешь (только вот зачем? :D).
            Спасибо!)
            Именем я называю primary key.
            А где про обновление именно компонентов можно почитать? А то я, если честно, устал эксперементировать и выявлять условия, при которых файл в компоненте будет заменён, при каких не будет. Как определяется то, что компонент требуется обновить и тому подобное.
              Компонент сам по себе не обновляется. Обновляется содержание :)

              В простейшем случае это файл с версией (exe или dll). Делаешь компоненту, связываешь ее через параметр key file с файлом (best practice - одна компонента устанавливает один бинарный файл). Далее, когда делаешь апгрейд, если версия файла в новом MSI больше, то компонента будет обновлена.

              Patching and Upgrades
                Да, с файлами, которые содержат версии, я решил, после экспериментов, что именно так и происходит. А как сравниваются KeyPath файлы, которые версии не содержат? В расчёт берётся дата модификации, создания или ещё чего-то? По какому критерию выставляются state у component?
                Вообще отдельная история происходит при смене (конечно-же непреднамеренной) ключевого файла и обновлении по типу "установка а потом удаление", возникают всякие Action: FileAbsent и старые файлы, которые были в компоненте, обязательно удалятся, а новые, которые там появились, образуются.
                За сслыку спасибо. Но я в ней и раньше не находил ответа на вопрос обновления содержимого компонента и выставления state у component.
                  Цитата G0ohan @
                  В расчёт берётся дата модификации, создания или ещё чего-то?

                  да, и язык: File Versioning Rules

                  Изучи еще Organizing Applications into Components, при этом обрати особое внимание на Changing the Component Code.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0219 ]   [ 15 queries used ]   [ Generated: 27.04.24, 20:49 GMT ]