Понимание ГУИДОВ, обновлений и патчей с Windows Installer

Так как никто больше не упомянул это, Ryan Lanciaux записал действительно классный Генератор Темы Visual Studio с превосходным пользовательским опытом здесь:

http://www.frickinsweet.com/tools/Theme.mvc.aspx

9
задан Yan Sklyarenko 11 January 2016 в 13:13
поделиться

2 ответа

Если GUID компонента изменяется, но такие же файлы есть в компоненте, что происходит при крупном обновлении?

Во-первых, вопрос в том, удаляется ли старый компонент. Если вы не настроите обновление для удаления предыдущих версий продукта, то компонент не будет удален (хотя его файлы могут быть перезаписаны). См. Также ответ на вопрос 2.

Во-вторых, вопрос в том, будет ли установлен новый компонент. Компонент устанавливается только в том случае, если его ключевой путь отсутствует. Если ключевой путь является версионным файлом, то более низкая версия также считается «отсутствующей».

Наконец, если новый компонент был помечен для установки, и установщик Windows обнаруживает файл с тем же именем, что и тот, который он пытается При установке Правила управления версиями файлов определяют, заменять файл или нет. Например, версия файла более поздней версии не будет понижена. продукт, что происходит с связанные файлы при крупном обновлении? Удаляются ли исходные файлы на удаление?

Если вы не введете правильные записи в таблицу обновлений и InstallExecuteSequence, которая сообщает установщику Windows удалить старый продукт, старые компоненты останутся в покое. См. Это сообщение в блоге Алекса Шевчука, чтобы узнать, как создать установщик в wix, который удаляет старые версии.

Правильно ли я говорю, что основной обновление заменит все файлы во всех компоненты ...

No. Это зависит от того, был ли сначала удален старый компонент, был ли установлен новый компонент в зависимости от пути к ключу и правил управления версиями файлов.

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

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

Правильно ли я говорю, что если бы я использовал такой инструмент, как тепло, для создания XML-файла со всеми файлами в каталоге (как для веб-сайта), что у вас будет чтобы идентификаторы GUID были одинаковыми (вручную или со сценарием), или вы были бы только в состоянии сделать серьезные обновления?

Верно. GUID - это идентификатор компонента, поэтому, если вы измените GUID, будут существовать два компонента (в старой и новой версиях вашего продукта), которые устанавливают одни и те же ресурсы в одно и то же целевое расположение. И это запрет согласно MSDN : «Никогда не создавайте два компонента, которые устанавливают ресурс под одним и тем же именем и в целевом местоположении»

.
4
ответ дан 4 December 2019 в 23:06
поделиться

Изучите Правила для компонентов . Их очень легко сломать, и установщик Windows не применяет их. Однако, если вы не соблюдаете правила, происходит странное странное колдовство.

Простое решение, придерживайтесь одного файла на компонент и используйте heat с генерацией GUID во время компиляции (выводится с Guid = «*» использует стабильный алгоритм, он не случайный). GUID сгенерированы теплом случайным образом, но GUID, сгенерированные свечой во время компиляции, будут стабильными (на основе имени файла + хэша пути или чего-то еще из памяти)

Если установщик Windows обнаружит файл, уже находящийся на диске во время установки , он увеличит счетчик ссылок для этого файла, если это «общий» файл.

3
ответ дан 4 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: