Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.168.16] |
|
Сообщ.
#1
,
|
|
|
При обнаружении компонента-предка при Major Update что является решающим фактором? Гуид? Имя? Гуид+имя?
|
Сообщ.
#2
,
|
|
|
Имя чего?
Отличить одну компоненту от другой можно только GUID'ом. |
Сообщ.
#3
,
|
|
|
Имя компонента. Судя из вашего ответа, если я правильно понял, я могу компоненты обзывать как захочу, главное сохранить гуид.
|
Сообщ.
#4
,
|
|
|
Я только могу догадываться, что ты называешь "именем компоненты".
У компоненты нет имени. Есть primary key, который должен быть уникальным для таблицы Component, этот же ключ используется в качестве foreign key для связи компоненты с другими элементами MSI (файлы, фичи итд). И есть ComponentID - это гуид, который должен быть уникальным в принципе этот guid сохраняется в реестре и именно по нету MSI определяет установлена компонента или нет, можно ее удалять или нет итд. Так вот, если ты собираешь 2 версии одного и тогоже продукта, то guid'ы следует оставлять без изменений. Ну а primary key - можешь менять как хочешь (только вот зачем? ). |
Сообщ.
#5
,
|
|
|
Спасибо!)
Именем я называю primary key. А где про обновление именно компонентов можно почитать? А то я, если честно, устал эксперементировать и выявлять условия, при которых файл в компоненте будет заменён, при каких не будет. Как определяется то, что компонент требуется обновить и тому подобное. |
Сообщ.
#6
,
|
|
|
Компонент сам по себе не обновляется. Обновляется содержание
В простейшем случае это файл с версией (exe или dll). Делаешь компоненту, связываешь ее через параметр key file с файлом (best practice - одна компонента устанавливает один бинарный файл). Далее, когда делаешь апгрейд, если версия файла в новом MSI больше, то компонента будет обновлена. Patching and Upgrades |
Сообщ.
#7
,
|
|
|
Да, с файлами, которые содержат версии, я решил, после экспериментов, что именно так и происходит. А как сравниваются KeyPath файлы, которые версии не содержат? В расчёт берётся дата модификации, создания или ещё чего-то? По какому критерию выставляются state у component?
Вообще отдельная история происходит при смене (конечно-же непреднамеренной) ключевого файла и обновлении по типу "установка а потом удаление", возникают всякие Action: FileAbsent и старые файлы, которые были в компоненте, обязательно удалятся, а новые, которые там появились, образуются. За сслыку спасибо. Но я в ней и раньше не находил ответа на вопрос обновления содержимого компонента и выставления state у component. |
Сообщ.
#8
,
|
|
|
Цитата G0ohan @ В расчёт берётся дата модификации, создания или ещё чего-то? да, и язык: File Versioning Rules Изучи еще Organizing Applications into Components, при этом обрати особое внимание на Changing the Component Code. |