【问题标题】:how to install files even though user clicks NO in uac prompt for msi?即使用户在 uac 提示中单击“否”,如何安装文件?
【发布时间】:2019-03-27 13:55:15
【问题描述】:

我使用 Visual Studio 安装程序项目创建了一个 msi。 当我运行 msi 时,uac 提示总是出现在所有机器上。这很好。

但对于标准用户,uac 要求提供管理员用户名和密码。由于标准用户可能不知道管理员密码,因此除非他们获得具有管理员凭据的人员,否则他们将无法安装 msi。

我想要的是如果用户不知道管理员密码,那么他可以在 uac 中单击“否”,但不是 msi 安装失败,而是应该继续安装。 不需要管理员权限的自定义操作可以成功,只有需要管理员权限的自定义操作才会失败。当然,应该安装文件。

【问题讨论】:

  • 您可能希望改为查看 ClickOnce。

标签: windows-installer


【解决方案1】:

为避免出现 UAC 窗口,您的安装程序不应执行任何需要提升权限的操作(例如,将文件安装到 Program Files 子文件夹或在 HKLM 子键中写入注册表)。您应该在之前指定这个,Windows Installer 将进入安装阶段并向您显示 UAC 窗口。

您需要为每个配置制作单独的功能,并根据某些条件进行切换。例如,您可以询问用户他/她想要执行哪种安装或检查用户是否是管理员。根据这一点,您应该打开/关闭 MSI 中的相应功能。

【讨论】:

  • 正如你所说,我尝试创建 msi 并将“InstallForAllUsers”设置为 false,我没有写任何注册表,我的安装目录只有 [AppDataFolder],没有需要提升的任务.我正在使用 Visual Studio 安装程序项目。但是仍然出现了uac。为什么?
  • 那么您需要将ALLUSERS 属性设置为等于2,如Stein 的回答。阅读更多here
【解决方案2】:

设置:至少必须在 per-user package 中强制执行以下设置。在 WiX 中,您有几个结构可以帮助您解决此问题,但我不确定 Visual Studio 安装程序项目有什么。我不喜欢 Visual Studio 安装程序项目,因为有很多 severe technological limitations。也许考虑使用其他工具? List of Deployment Tools, WiX Quick Start Tips.

属性表:在属性表中,设置以下属性:

  • ALLUSERS=2
  • MSIINSTALLPERUSER=1

摘要信息:在 Orca 中,转至 View => Summary Information... => 检查UAC Compliant 框。然后在虚拟机上测试。还要在实际以标准用户身份登录时进行测试(显然)。似乎有一个名为 MSIDEPLOYMENTCOMPLIANT 的属性也可以设置为 1 来执行此操作。我从未测试过它。很快就会做。

Orca:我会先试试。使用Orca or an equivalent tool(在底部,更喜欢 Orca 而不是 SuperOrca)。如果您安装了 Visual Studio,那么您在 SDK 文件夹中有 Orca 安装程序。尝试在 Program Files (x86) 下搜索 Orca-x86_en-us.msi

(当前路径为:C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86 - 只需适当替换版本号,您应该会更快找到 MSI)。


一些链接:请阅读这两个 MSI SDK 链接:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2015-02-23
    相关资源
    最近更新 更多