Что такое атрибут wix 'KeyPath'? - PullRequest
114 голосов
/ 05 января 2010

Что такое атрибут Wix ' KeyPath '? В частности, как это относится к следующему:

<Component Id="ProgramMenuDir" Guid="*">
  <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
  <RegistryValue Root="HKCU" Key="Software\CompName\AppName" 
                 Type="string" Value="" KeyPath="yes" />
</Component>

1 Ответ

111 голосов
/ 05 января 2010

Как объяснил Роб Меншинг :

KeyPath для компонента является единственный ресурс, который Windows Установщик использует, чтобы определить, является ли Компонент "существует" на машине.

Это означает, что когда установщик Windows решает, устанавливать ли ваш компонент, он сначала проверяет, присутствует ли ресурс keypath. Если это так, ни один из ресурсов в компоненте не установлен.

Наличие ресурса keypath также определяет, был ли компонент поврежден или пропал без вести при «ремонте» MSI.

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

В вашем конкретном примере у вас есть компонент, который удаляет папку при удалении. Этот компонент будет установлен только в том случае, если данный раздел реестра еще не существует. Добавление ключа реестра для использования в качестве пути к ключу является обычной уловкой, когда вам нужен путь к ключу для компонента, который устанавливает ресурсы, которые сами не могут быть использованы в качестве пути к ключу, например ярлык .

...