7

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

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

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

现在的问题:

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

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

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

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

4

3 回答 3

6

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

如果您只能针对 Windows 7 及更高版本,您可以有条件地设置MSIINSTALLPERUSER为覆盖安装位置和海拔要求,而是按用户安装。在这种情况下,可能会询问用户是为所有用户安装(需要提升)还是仅为他自己安装。可以将包标记为提升,设置MSIINSTALLPERUSER将覆盖它并跳过 UAC 提示。

于 2010-05-06T13:21:39.593 回答
3

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

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

或者,用户将自己拥有详细信息,因为出于安全原因,他们正在运行一个有限的帐户,或者该软件将由他们公司的 IT 部门安装。

于 2010-05-10T13:46:59.610 回答
-2

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

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

于 2010-05-07T14:02:55.973 回答