Что такое атрибут wix 'KeyPath'?
Что такое атрибут 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 ответ
Как объяснил Роб Меншинг:
KeyPath для компонента - это отдельный ресурс, который установщик Windows использует для определения, существует ли компонент на компьютере.
Это означает, что когда установщик Windows решает, устанавливать ли ваш компонент, он сначала проверяет, присутствует ли ресурс keypath. Если это так, ни один из ресурсов в компоненте не установлен.
Наличие ресурса keypath также определяет, был ли компонент поврежден или пропал без вести при "ремонте" MSI.
Если ресурс ключевого пути является версионным файлом, установщик Windows будет считать его существующим, только если найдет файл с равной или более высокой версией.
В вашем конкретном примере у вас есть компонент, который удаляет папку при удалении. Этот компонент будет установлен только в том случае, если данный раздел реестра еще не существует. Добавление ключа реестра для использования в качестве пути ключа является обычной уловкой, когда вам нужен путь ключа для компонента, который устанавливает ресурсы, которые сами не могут использоваться в качестве пути ключа, например ярлык.