2011-10-26 55 views
1

我们已经使用WiX创建了一个安装程序。 在注册表中,我们将它保存在HKCU下(请参阅示例)。 桌面图标和一切为当前用户安装。带有WiX的安装程序(由Admin预先安装并由用户更新)?

<DirectoryRef Id="INSTALLDIR"> 
    <Component Id="CMP_SaveInstallDir" Guid="52e5e617-2c9a-4514-a6b0-055e4adc6a0b"> 
    <RegistryValue Id="MyInstallDirId" KeyPath="yes" Action="write" Root="HKCU" Key="Software\ABC\MyProduct" Name="MyProduct" Value="[INSTALLDIR]" Type="string" /> 
    </Component> 
</DirectoryRef> 

对于升级,我们也使用WiX。我们尝试找到注册表项,如果可用,我们安装升级。 如果安装完整安装程序的人安装升级安装程序,那么运行良好。

现在还应该使用安装程序在某些计算机上预安装软件。这意味着,管理员用户(“Joe Admin”)安装软件。 稍后,普通用户(“Pete用户”,有权安装软件)应能够安装升级。

但是由于完全安装是由“Joe Admin”完成的,因此无法使用升级安装程序升级“Pete用户”,因为在其注册表(“Pete用户”的HKCU)中找不到注册表项。

我认为这种情况并不罕见,所以我希望有人能帮助我找到解决方案。

在此先感谢!

回答

2

这是一篇文章可以帮助您:http://setupanddeployment.com/installation-environment/peruser-permachine/

基本上,你是不正确地处理的安装位置。如果您的安装是针对每台计算机的(针对所有用户),则应该仅使用每台计算机的位置。 HKEY_CURRENT_USER是每个用户的位置,并在每台机器安装程序中使用它是一种不好的做法。因此你的问题。

1

我认为Cosmin is right和你必须使用每台机器在这种情况下安装。

毕竟,如果Joe Admin安装了该应用程序,那么只有该用户才有权访问它:桌面图标,程序文件及其设置存储在管理员配置文件中。因此,Pete用户无权访问应用程序的任何组件。

因此,无论是按每台机器进行安装还是允许用户安装(不仅仅是升级)。