如何修复WiX警告:组件"X"包含HKCU注册表KeyPath的每用户和每台机器数据

Sco*_*ham 11 wix

我正在尝试维护一些Wix代码,并收到以下警告:

warning LGHT1076 : ICE57: Component 'FILE_MY_ASSOCIATION' has both per-user and per-machine data with an HKCU Registry KeyPath.
Run Code Online (Sandbox Code Playgroud)

从以下代码:

<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="&quot;%1&quot;" TargetFile="MYUI_EXE_FILE"/>
    </Extension>
  </ProgId>
</Component>
Run Code Online (Sandbox Code Playgroud)

我无法解决什么是错的,或者这是一个警告,我真的需要担心.

  • 我是否需要担心并修复此警告?在某些情况下,代码是否会导致问题?
  • 另外,我想知道,为什么注册表项使用HKCU而不是HKLM.如果我把它改成HKLM.警告消失了,但这会影响安装程序的行为吗?

谢谢.

hea*_*vyd 10

警告表示您正在同一组件中编写用户特定数据和系统范围数据.您的注册表项正在写入HKCU,它将始终写入注册表的用户特定部分. ProgId另一方面,将注册表项写入HKCR,可以写入HKLMHKCU.如果它写入HKLM系统范围的注册表空间,则您的单个组件将写入用户特定的注册表配置单元和系统注册表配置单元,这违反了您收到的ICE警告中规定的规则.