【问题标题】:Install optional desktop shortcut for all users为所有用户安装可选的桌面快捷方式
【发布时间】:2013-06-26 12:02:55
【问题描述】:

我想制作一个 wix 安装程序,为所有用户提供 可选 桌面快捷方式。可选方式,我不能把它放在主exe的component,而是放在一个单独的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 来说非常愚蠢,因为“所有用户”组件应该链接到机器,而不是普通用户,因为没有“所有用户”注册表。

有什么想法吗?

【问题讨论】:

标签: wix registry shortcut


【解决方案1】:

您可以尝试将注册表根更改为“HKMU”(据我记得,当安装是每台机器时,它应该写入 HKEY_LOCAL_MACHINE,而不是在 HKEY_CURRENT_USER 下)。

如果您将根目录更改为“HKMU”,您将收到 ICE57 错误(组件“DesktopShortcut”具有每个用户的数据和一个可以是每个用户或每个机器的键路径。)

您可以抑制此错误,安装程序将创建所有用户快捷方式 (当我尝试它时它起作用了,但我不确定这是不是最好的方法)。

(要禁用 ICE57 错误,请参阅:How to fix ICE57.Per-User installation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多