Как исправить предупреждение WiX: Компонент "Х" имеет как данные для каждого пользователя, так и данные для каждой машины с помощью реестра HKCU KeyPath
Я пытаюсь сохранить некоторый код Wix и получаю следующее предупреждение:
warning LGHT1076 : ICE57: Component 'FILE_MY_ASSOCIATION' has both per-user and per-machine data with an HKCU Registry KeyPath.
Из следующего кода:
<Component Id="FILE_MY_ASSOCIATION" Guid="E1DF42A5-BD00-4a80-9BE5-B66A3EF0576E" Win64="$(var.Variables_Win64)">
<RegistryKey Root="HKCU" Key="Software\MyComany\MyProduct">
<RegistryValue Value="" Type="string" KeyPath="yes" />
</RegistryKey>
<ProgId Icon="FILE_MY_FILETYPE_ICON" Id="MY_FILE_EXTENSION" Description="My Product File" >
<Extension Id="myext" Advertise="no" >
<Verb Id="Open" Argument=""%1"" TargetFile="MYUI_EXE_FILE"/>
</Extension>
</ProgId>
</Component>
У меня возникли проблемы с тем, что неправильно, или если это предупреждение, о котором мне действительно нужно беспокоиться.
- Нужно ли беспокоиться и исправлять это предупреждение? Может ли код, поскольку он в настоящее время вызывает проблемы в некоторых обстоятельствах?
- Кроме того, мне интересно, почему раздел реестра использует HKCU вместо HKLM. Если я изменю его на HKLM. предупреждение уходит, но влияет ли это на поведение установщика?
Спасибо.
Ответы
Ответ 1
В предупреждении говорится, что вы пишете как данные пользователя, так и общесистемные данные в одном компоненте. Запись в реестре записывается в HKCU
, который всегда будет записываться в часть реестра, зависящую от пользователя. ProgId
, с другой стороны, записывает записи в HKCR, которые могли бы писать либо HKLM
, либо HKCU
. Если он записывает в HKLM
, который является общесистемным пространством реестра, ваш единственный компонент записывает как куст реестра конкретного пользователя, так и куст системного реестра, который противоречит правилам, изложенным в Предупреждение ICE, которое вы получили.
Ответ 2
Похоже, компилятор предупреждает вас о поведении, которое может быть не таким, каким вы хотите: если вы зарегистрируете ассоциацию файлов только для пользователя, другие пользователи не будут видеть эту связь. Это необычное поведение для приложения. Таким образом, это зависит от ваших требований: хотите ли вы, чтобы приложение зарегистрировалось для обработки всех документов этого типа для всех пользователей или только для пользователя установки?