Ответ 1
В общем, вы должны основывать свое решение на главной идее опции KeyPath
. Из MSDN:
Это значение указывает на файл или папку, принадлежащие компоненту, который программа установки использует для обнаружения компонента.
Итак, если вы создаете 1 файл на один компонент, вы не столкнетесь с ситуацией, когда вы случайно удалили файл, и ремонт не вернул его. Если вы создаете N файлов на один компонент, вы в любом случае либо выберите один из них как KeyPath
(и документы WiX рекомендуют вам сделать это явно), либо добавьте дополнительную запись в реестр, и пусть это будет KeyPath
.
Вернуться к вашим вопросам:
Если у меня есть пустой каталог, который необходимо создать установщику, должен ли я set KeyPath = "yes" в Каталоге или
Directory элемент не имеет атрибута KeyPath
.
Если файл имеет KeyPath = "да" в сценарии "файл за один компонент", необходимо или целесообразно установить его на свой родительский компонент?
Нет, в принципе, это не имеет смысла. Если Component имеет KeyPath="yes"
, то каталог, в котором этот компонент установлен, становится ключевым путем. Когда вы установите его на File явно, то, очевидно, файл является ключевым путем.
Я где-то читал, что вместо установки KeyPath в файле, нужно используйте ключ реестра для каждого файла и установите KeyPath = "да" в реестре элемент... Это действительно правда/необходимо?
Это звучит как бессмыслица. Опять же, основываясь на общей потребности в KeyPath
- обнаружить компонент. Зачем вам нужна дополнительная запись в реестре, чтобы определить, есть ли файл в файловой системе? Это может иметь смысл для N файлов на один компонентный сценарий, когда вы создаете 1 запись в реестре на один компонент (это N файлов) и позволяете установщику Windows судить по этой записи реестра, считается ли компонент "не сломан".
ОБНОВЛЕНИЕ. Вам не нужно вводить запись в реестре только для того, чтобы служить в качестве ключевого пути, чтобы помочь установщику отслеживать пустую папку. Этого достаточно, если вы добавите KeyPath='yes'
к родительскому компоненту.
Не усложняйте ситуацию. Установщик Windows довольно сложный, как есть.:) Надеюсь, это поможет.