我正在使用相应的MSI安装程序创建.Net Windows客户端应用程序。
选项InstallAllUsers(安装为"每个人"或者#34;只有我")选项如何在技术上运作:
因此,如果用户选择使用"只是我"选项,这是否意味着二进制文件只能由该用户访问?那怎么办?它是执行这些限制的安装程序,还是我作为开发人员在MSI中执行某些限制来实现这些限制?
由于 圣战
答案 0 :(得分:0)
完整答案取决于您所定位的Windows版本以及安装程序利用的机制。较旧且功能较弱的机制仅仅利用ALLUSERS property并且在实践中不能很好地工作,因为作者必须手动重定向否则将安装到每个机器位置的资源。较新的机制要求Windows 7或更高版本使用MSIINSTALLPERUSER property请求将已安装资源自动重定向到每个用户位置。有关详细信息,请参阅Single Package Authoring。
考虑到这一点,对于“仅我”安装的后续问题的简短答案是:
答案 1 :(得分:0)
这个问题以Visual Studio安装项目为框架,隐藏了所有潜在的属性操作。 VS安装项目不使用MSIINSTALLPERUSER,只使用ALLUSERS。它更复杂,因为每台计算机上的Everyone安装将ALLUSERS设置为2,这甚至不会强制执行每台计算机的安装,因为它取决于安装用户的权限。一般来说,当特权用户安装Everyone安装时,它将按照您的预期执行。但是,由于MSI的构建方式,非特权用户将获得一些重定向安装。
每位用户"只是我"安装将仅为该用户安装产品。如果您使用其他帐户登录,则无法在“程序和功能”中看到它。应用程序的快捷方式不可见,因为它们只会出现在安装用户的个人资料中。高架管理员可以访问文件和注册表项(因为所有文件都是),但通常其他用户文件和注册表项对其他受限用户不可用。
如果您的要求是安装可供系统所有用户使用的产品,并将文件安装到ProgramFiles和CommonFiles文件夹等位置,或者写入HKLM注册表项,那么您需要安装需要安装用户的Everyone享有特权