为所有用户安装可选的桌面快捷方式

6
我想制作一个Wix安装程序,其中包含可选的所有用户桌面快捷方式。可选意味着我不能将其放在主要exe文件的组件中,而是需要放在单独的组件中,以便我可以为快捷方式设置单独的功能。在执行此操作时,Wix会出现以下错误信息:“error 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下。
这很愚蠢,因为“所有用户”组件应该与机器链接,而不是普通用户,因为没有“所有用户”注册表。
有什么想法吗?

看一下这个问题:https://dev59.com/iXRB5IYBdhLWcg3wAjNH,它可能会有用。 - IlirB
1个回答

0

你可以尝试将注册表根更改为“HKMU”(据我记得,当安装是针对计算机时,它应该写入HKEY_LOCAL_MACHINE,而当它不是时,则写入HKEY_CURRENT_USER)。

如果您将根更改为“HKMU”,则会出现ICE57错误(组件“DesktopShortcut”既具有每个用户数据,又具有可以是每个用户或每台计算机的关键路径。)

您可以抑制此错误,安装程序将创建所有用户的快捷方式 (我尝试过这种方法,但我不确定这是否是最佳方法)。

(要禁用ICE57错误,请参见:如何修复ICE57.Per-User安装


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接