Installation 可以以有限的权限安装到程序文件中吗?

Installation 可以以有限的权限安装到程序文件中吗?,installation,windows-installer,uac,privileges,Installation,Windows Installer,Uac,Privileges,我有一个应用程序,它将作为MSI包(用WiX编写)部署 我正在决定是否指定安装程序所需的提升的或有限的权限 除了程序文件下的默认安装位置之外,应用程序不包括任何需要提升权限的内容 现在的问题是: 如果我指定提升权限,则UAC会在安装过程中提示用户输入管理员密码。这不是必需的,并防止非管理员用户安装 如果我指定了有限权限,则会向用户显示一个对话框,以选择安装位置,默认设置为程序文件。如果他们不更改安装位置(95%的最终用户可能不会),则安装程序将失败,并显示一条消息,提示他们应联系管理员或以管理

我有一个应用程序,它将作为MSI包(用WiX编写)部署

我正在决定是否指定安装程序所需的
提升的
有限的
权限

除了程序文件下的默认安装位置之外,应用程序不包括任何需要提升权限的内容

现在的问题是:

  • 如果我指定提升权限,则UAC会在安装过程中提示用户输入管理员密码。这不是必需的,并防止非管理员用户安装

  • 如果我指定了有限权限,则会向用户显示一个对话框,以选择安装位置,默认设置为
    程序文件
    。如果他们不更改安装位置(95%的最终用户可能不会),则安装程序将失败,并显示一条消息,提示他们应联系管理员或以管理员身份运行应用程序。如果他们以管理员身份启动安装程序,那么他们可以毫无问题地安装到程序文件中,但大多数用户可能不知道如何以管理员身份启动安装程序

我可能会将默认安装位置设置为C:\Company name\Program\,但这对我来说似乎不标准,大多数用户可能不喜欢这样(他们可能习惯于安装到程序文件中)


如何在有限的用户帐户下安装应用程序来解决此问题?

您建议的替代位置(直接在C驱动器之外)可能也需要提升权限。在Windows7之前,我建议使用早期自定义操作更改有限安装的默认位置。将其从
Privileged
(或者可能是
AdminUser
)属性中关闭,验证是否需要为您的案例设置
msiusereaadmindetection
,并使用类似于
[LocalAppDataFolder]Company\Product
的内容。不幸的是,这种方法将导致难以为所有用户安装软件包,因为您必须预先提升,并且在有限的情况下,他们仍然可以选择需要提升的目标位置。它们必须预先提升,因为包装必须标记为不提升

如果您可以仅针对Windows 7及更高版本,则可以有条件地将
msinstallperuser
设置为覆盖安装位置和标高要求,而不是按用户安装。在此场景中,可能会询问用户是为所有用户安装(需要提升),还是仅为自己安装。包可以标记为提升,设置
msinstallperuser
将覆盖该设置并跳过UAC提示。

以管理员身份运行命令提示(cmd)


然后使用msiexec命令来执行msi文件。

可能更重要的是,您的软件以正常的用户权限运行-我知道您提到的不是问题

请求管理员权限来安装某些东西并没有错


或者,由于安全原因,用户在运行有限的帐户时将自己拥有详细信息,或者软件将由其公司的IT部门安装。

否,替代位置不需要提升权限。我目前正在默认情况下安装到C:\Company name\Product中,MSI安装程序是以有限的权限构建的,不会出现UAC,也不会出现任何错误对话框。这听起来像是一个自定义环境,但如果您知道它将安装在您的产品安装的任何位置,这也没关系。答案的其余部分适用;只需忽略有限的权限位置建议。我不能要求最终用户这样做。您可以要求用户这样做…至于安装任何软件,您应该具有管理员权限。所以让他这么做没什么错。或者您可以让用户使用管理员凭据登录,然后安装软件