【问题标题】:Running an installer on Vista without turning UAC off在不关闭 UAC 的情况下在 Vista 上运行安装程序
【发布时间】:2010-10-22 07:59:06
【问题描述】:

如果不关闭 UAC,我的 msi 安装程序无法安装在 Vista 机器上。由于我的应用程序将分发给我的客户,大约 20 台机器,并且他们不想关闭 UAC,有没有一种方法可以设置一些属性,让我的安装程序在 UAC 时无需任何用户交互即可静默运行, 已启用,弹出窗口显示

【问题讨论】:

  • 在域设置中必须在 20 台具有管理员权限的机器上进行大规模安装。这些客户端是在本地域上还是遍布各地?
  • 您使用什么工具来创建安装程序?

标签: windows-vista installation windows-installer uac


【解决方案1】:

我发现了解 UAC 的最佳资源是 Robert Flamings blog,他有一系列大约 25 篇文章,解释了 Vista、UAC 和 MSI 如何相互作用。

如果您正在执行每台计算机安装 (ALLUSERS=1),Vista 将始终在到达 InstallExecuteSequence 时提示,但是如果您有一个需要提升的安装程序 在此序列之外,那么最好的解决方案是使用带有清单的引导程序 EXE,该清单表明运行 EXE 时需要提升。

我们使用来自 Indigo Rose 的商业引导程序(它是一个独立的应用程序,但它仅作为 MSI Factory 的一部分出售),但您可以通过 NSIS 获得创意,使用 Visual Studio one 并且还有一个示例Windows Installer SDK

【讨论】:

    【解决方案2】:

    UAC 弹出是因为您正在安装到用户无权访问的文件夹,例如 Program Files,也许尝试安装到用户主驱动器之外的目录? Vista 中的 home 驱动程序是 c:\Users\Username,那里有一个用于本地应用程序的目录,C:\Users\Username\AppData\Local\Apps。

    【讨论】:

    • 这不是违反了关于如何在 Windows 上安装软件的所有规则吗?
    • 我不知道这是否违反任何规则,但是具有“为每个人安装此应用程序/仅为我安装此应用程序”选项的应用程序使用此方法。我到处都能看到这个,所以我认为它是 Windows Installer 的一部分。
    • 为此,谷歌浏览器安装到 C:\Users\>\AppData\Local
    【解决方案3】:

    您可以将安装通告给您的 20 个客户端。当他们触发广告钩子(开始菜单快捷方式、COM 接口、文件关联等)时,程序将以管理员权限安装。

    以下是管理员如何宣传软件包的示例:

    msiexec.exe -jm c:\\mypackage.msi

    MSDN 文章: http://msdn.microsoft.com/en-us/library/aa367548(VS.85).aspx

    【讨论】:

      【解决方案4】:

      Vista/UAC 应该会提示您确认继续安装,而不是完全阻止它。你的微星叫什么名字?比如说,如果你把它重命名为 setup.msi,它会神奇地工作吗?

      【讨论】:

        【解决方案5】:

        This 应该可以帮到你。

        编辑:响应您的澄清请求。您可以使用任务计划来计划运行不会提示的安装,然后您可以让用户/系统管理员从脚本安装该计划程序(例如,您可以计划它在用户下次登录时运行) .

        这是在 Vista 中避免确认对话框的唯一方法(没有禁用 UAC,您不想这样做)。

        我希望这能让事情变得清晰。

        【讨论】:

        • 需要详细说明一下,所以你的答案不仅仅是转发。
        猜你喜欢
        • 1970-01-01
        • 2011-04-12
        • 2012-11-09
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        相关资源
        最近更新 更多