我想制作一个 wix 安装程序,为所有用户提供一个可选的桌面快捷方式。可选的方式,我不能把它放在component
主exe的,而是放在一个单独的component
,这样我就可feature
以为快捷方式设置一个单独的。
这样做时,wix 抱怨:
错误 LGHT0204:ICE38:组件 DesktopShortcut 安装到用户配置文件。它必须使用 HKCU 下的注册表项作为其 KeyPath,而不是文件。
所以我设置了一个额外的注册表项,如下所示:
<Component Id="DesktopShortcut" Guid="767f3e19-9a7d-4793-9782-75516494a57c">
<Shortcut Target="[APPLICATIONROOTDIRECTORY]ocean.exe" Id="OceanShortcutDesktop" Name="$(var.ProductName)" WorkingDirectory='APPLICATIONROOTDIRECTORY' Icon="OceanIcon"/>
<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]\installs' Name="desktopshortcut" Type='string' Value='' KeyPath='yes' />
</Component>
快捷方式进入“所有用户”,因为我设置了 ALLUSERS=1 属性。但是,注册表没有等效项,并且密钥位于当前(安装)用户注册表中。这是恕我直言的一个问题:如果用户配置文件被删除,则卸载时将不再删除快捷方式。
改用“HKLM”会导致 wix 出现错误(混合每个用户和每台机器):
错误 LGHT0204:ICE38:组件 DesktopShortcut 安装到用户配置文件。它的 KeyPath 注册表项必须属于 HKCU。
wix 这很愚蠢,因为“所有用户”组件应该链接到机器,而不是普通用户,因为没有“所有用户”注册表。
任何想法?