有限权限下是否可以安装到Program Files?

7

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

我正在决定是否为安装程序指定所需的elevatedlimited特权。

除了默认安装位置(位于Program Files下)外,该应用程序不包括任何需要提升权限的内容。

现在问题是:

  • 如果我指定提升的权限,则用户在安装过程中会被UAC提示输入管理员密码。这并非必要操作,也会阻止非管理员用户进行安装。

  • 如果我指定受限权限,则用户将会看到一个对话框来选择安装位置,默认情况下是Program Files。如果他们没有更改安装位置(95%的最终用户可能不会更改),那么安装程序将失败,并显示一条消息,建议用户联系管理员或以管理员身份运行该应用程序。如果他们以管理员身份启动安装程序,则可以无障碍地安装到Program Files中-但大多数用户可能不知道如何以管理员身份运行安装程序。

我可以将默认安装位置设置为例如C:\ Company name \ Program \,但这对我来说似乎是非标准的,大多数用户可能不喜欢这样做(他们可能习惯将其安装到Program Files中)。

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

3个回答

6
您提议的备用位置,直接位于C盘,可能也需要提升权限。在Windows 7之前,我建议使用早期的自定义操作来更改有限安装的默认位置。将其条件化为Privileged(或可能是AdminUser)属性,验证您是否需要为您的情况设置MSIUSEREALADMINDETECTION,并使用类似于[LocalAppDataFolder]Company\Product的东西。不幸的是,这种方法会导致包对所有用户都难以安装,因为您必须预先提升权限,并且在有限的情况下,他们仍然可以选择需要提升权限的目标位置。他们必须预先提升权限,因为包必须标记为不提升权限。
如果您只能针对Windows 7及更高版本进行定位,则可以有条件地设置MSIINSTALLPERUSER以覆盖安装位置和提升要求,并代替每个用户进行安装。在这种情况下,用户可以被询问是否要为所有用户安装(需要提升权限)还是仅为自己安装。包可以标记为提升权限,设置MSIINSTALLPERUSER将覆盖此设置并跳过UAC提示。

1
不,备用位置不需要提升的特权。我目前默认安装在C:\公司名\产品中,并且MSI安装程序以有限的特权构建,并且没有出现任何UAC或错误对话框。 - Marek
那听起来像是一个自定义环境,但如果你知道它将在产品安装的任何地方都存在,那就没问题了。答案的其余部分仍然适用;只需忽略有限特权位置建议即可。 - Michael Urman

3

让您的软件以普通用户权限运行可能更为重要 - 我看到您已经提到这不是问题。

请求管理员权限安装某些内容并没有什么问题。

无论如何,用户因为安全原因而使用受限账户,或者软件将由公司的IT部门安装。


-2

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

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


我不能要求最终用户这样做。 - Marek
你可以要求用户这样做……对于安装任何软件,用户应该拥有管理员权限。因此,要求他这样做并没有什么问题。或者你可以要求用户使用管理员凭据登录,然后安装软件。 - Sunil Agarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接