InstallAllUsers如何工作

时间:2017-02-01 22:36:57

标签: windows-installer

我正在使用相应的MSI安装程序创建.Net Windows客户端应用程序。

选项InstallAllUsers(安装为"每个人"或者#34;只有我")选项如何在技术上运作:

因此,如果用户选择使用"只是我"选项,这是否意味着二进制文件只能由该用户访问?那怎么办?它是执行这些限制的安装程序,还是我作为开发人员在MSI中执行某些限制来实现这些限制?

由于 圣战

2 个答案:

答案 0 :(得分:0)

完整答案取决于您所定位的Windows版本以及安装程序利用的机制。较旧且功能较弱的机制仅仅利用ALLUSERS property并且在实践中不能很好地工作,因为作者必须手动重定向否则将安装到每个机器位置的资源。较新的机制要求Windows 7或更高版本使用MSIINSTALLPERUSER property请求将已安装资源自动重定向到每个用户位置。有关详细信息,请参阅Single Package Authoring

考虑到这一点,对于“仅我”安装的后续问题的简短答案是:

  • 应用程序的文件安装在用户可写的文件夹中,通常只对该用户可见。
  • 注册到HKCU而不是HKLM。
  • 应用程序可能必须考虑两个潜在位置。如果编写得很好,这不应该花费任何额外的精力,但一定要在两个已安装的配置中彻底测试你的应用程序。

答案 1 :(得分:0)

这个问题以Visual Studio安装项目为框架,隐藏了所有潜在的属性操作。 VS安装项目不使用MSIINSTALLPERUSER,只使用ALLUSERS。它更复杂,因为每台计算机上的Everyone安装将ALLUSERS设置为2,这甚至不会强制执行每台计算机的安装,因为它取决于安装用户的权限。一般来说,当特权用户安装Everyone安装时,它将按照您的预期执行。但是,由于MSI的构建方式,非特权用户将获得一些重定向安装。

每位用户"只是我"安装将仅为该用户安装产品。如果您使用其他帐户登录,则无法在“程序和功能”中看到它。应用程序的快捷方式不可见,因为它们只会出现在安装用户的个人资料中。高架管理员可以访问文件和注册表项(因为所有文件都是),但通常其他用户文件和注册表项对其他受限用户不可用。

如果您的要求是安装可供系统所有用户使用的产品,并将文件安装到ProgramFiles和CommonFiles文件夹等位置,或者写入HKLM注册表项,那么您需要安装需要安装用户的Everyone享有特权