Что такое атрибут Wix KeyPath ? В частности, как это применимо к следующему:
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\CompName\AppName"
Type="string" Value="" KeyPath="yes" />
</Component>
Ответы:
Как объяснил Роб Меншинг :
Это означает, что когда установщик Windows решает, устанавливать ли ваш компонент, он сначала проверяет, присутствует ли уже ресурс keypath. Если это так, ни один из ресурсов в компоненте не установлен.
Наличие ресурса keypath также определяет, был ли компонент поврежден или пропал без вести при «ремонте» MSI.
Если ресурс keypath является версионным файлом, установщик Windows будет считать его существующим, только если найдет файл с такой же или более поздней версией.
В вашем конкретном примере у вас есть компонент, который удаляет папку при удалении. Этот компонент будет установлен только в том случае, если данный раздел реестра еще не существует. Добавление раздела реестра для использования в качестве пути к ключу - распространенный прием, когда вам нужен путь к ключу для компонента, который устанавливает ресурсы, которые сами по себе не могут использоваться в качестве пути к ключу, например ярлык .
источник