Компонент testcomp устанавливается в профиль пользователя. Он должен использовать раздел реестра под HKCU как свой KeyPath, а не файл

Я хотел бы скопировать файл в папке Doucments в WiX. Но он дает предупреждение:

Компонент testcomp устанавливает в профиль пользователя. Он должен использовать ключ реестра под HKCU как свой KeyPath, а не файл.

Мой код:

<Directory Id='PersonalFolder' Name='MyDocuments'>
   <Component Id='testcomp' Guid='08C288B6-D8E0-4036-9CEB-E5F616AC6B5C'>
      <File Id='doc_code_file1' Name='doc_code_file1' DiskId='1'
            Source='Personalfolder\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets\SimpleMvvm\mvvmcommand.snippet' KeyPath='yes'></File>
   </Component>
</Directory>

Ответ 1

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

<Directory Id='PersonalFolder' Name='MyDocuments'>
   <Component Id='testcomp' Guid='08C288B6-D8E0-4036-9CEB-E5F616AC6B5C'>

      <RegistryValue Root='HKCU' Key='Software\Manufacturer\Product'
                     Name='Something (I like to use InstallFolder)'
                     Value='Something (I like to use [INSTALLFOLDER]'
                     KeyPath='yes' />

      <File Id='doc_code_file1' Name='doc_code_file1' DiskId='1'
            Source='Personalfolder\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets\SimpleMvvm\mvvmcommand.snippet' />
   </Component>
</Directory>

Примечание. Добавленный раздел реестра для каждого пользователя и что он отмечен KeyPath='yes'. Последнее не является явно необходимым, так как это первый ресурс в Компоненте, который по умолчанию будет помечен как ключевой путь, но иногда лучше указывать путь к ключу.