2013-06-26 83 views
4

我想为所有用户创建一个wix安装程序,并使用可选桌面快捷方式。可选的手段,我不能把它放在主exe的component,但在一个单独的component,这样我就可以为快捷方式设置一个单独的feature为所有用户安装可选桌面快捷方式

做这件事时,维克斯抱怨:

错误LGHT0204:ICE38:组件DesktopShortcut安装到用户的个人资料。它必须使用HKCU下的注册表项作为其KeyPath,而不是文件。

所以我设置一个这样的aditional的注册表项:

<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”,而不是导致威克斯错误(混合每用户和每机器):

错误LGHT0204:ICE38:组件安装DesktopShortcut到用户简档。它的KeyPath注册表项必须属于HKCU。

这是维克斯很愚蠢的,因为“所有用户”组件时,应连接到机器,而不是一个普通用户,因为没有“一切为了用户”的注册表。

有什么想法?

+0

看看这个问题http://stackoverflow.com/q/751000/1331719它可能是有用的。 – IlirB

回答

0

您可以尝试将注册表根目录更改为'HKMU'(从我记得它应该写入HKEY_LOCAL_MACHINE当安装是每台计算机和HKEY_CURRENT_USER时不)。

如果你改变了根“HKMU”你会得到ICE57错误(Component的DesktopShortcut“既有每用户数据,并且可以为每个用户或每台机器。一个的keyPath)

你可以禁止这个错误,安装程序将创建所有用户的快捷方式 (它在我尝试时工作,,但我不知道这是最好的方式来做到这一点)。

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

相关问题