Windows安装程序,包含每个用户和管理员部分

时间:2011-11-10 20:27:04

标签: installer windows-installer uac

是否可以构建一个MSI安装程序,可以为非管理员用户执行每用户安装(将文件复制到非管理员用户的目录),还可以将文件复制到Program Files或其他管理员目录中?使用NSIS,存在一个UAC插件,允许一些步骤作为普通用户运行,而其他步骤则以提升的权限运行。 MSI是否存在这样的事情,或者在获得管理员权限的同时是否有某种方法可以保留原始用户上下文?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

不,这是不可能的。安装可以在用户上下文中运行,也可以在提升的系统环境中运行。

但它并不妨碍您将某些文件复制到用户的个人资料中。这些文件将继承在文件夹上设置的默认权限。默认设置是对用户,系统和管理员组的完全访问权限。


虽然技术上可行,但我不建议使用它。考虑一台拥有多个用户的计算机:其中一个用户安装MSI软件包,并在用户配置文件中安装文件。另一个用户登录此计算机并从“开始”菜单启动您的应用程序:用户配置文件中没有文件,而您的应用程序希望它们在那里。

解决此问题的最佳方法是将要进入用户配置文件的文件安装到Program Files。在应用程序第一次启动时,它会将这些文件复制到用户的配置文件中。因此,多用户计算机的每个用户都可以使用您的应用程序。

如果要在用户之间共享这些数据,请考虑将它们安装到ProgramData CommonAppDataFolder property中。这样,文件对所有计算机用户都是可见的和可读的。但只有安装了应用程序的用户才具有写访问权限,因此安装程序应修改ProgramData内应用程序文件夹的权限,以便为其他用户提供写入权限。