带WiX的安装程序(由管理员预先安装并由用户更新)?

时间:2011-10-26 16:18:27

标签: wix windows-installer wix3

我们使用WiX创建了一个安装程序。 在注册表中,我们将其保存在HKCU下(参见示例)。 为当前用户安装了桌面图标和所有内容。

<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 User”,有权安装软件)应该能够安装升级。

但由于完全安装是由“Joe Admin”完成的,“Pete User”无法使用升级安装程序进行升级,因为在他的注册表(“Pete User”的HKCU)中找不到注册表项。 / p>

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

提前致谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我认为Cosmin is right,在这种情况下你必须使用 per-machine 安装。

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

因此,您要么按机器安装,要么允许用户安装它(不仅仅是升级)。