我正在尝试使用 Inno Setup 构建静默安装。我正在使用 /SILENT 和 /VERYSILENT 命令参数,一切正常,除了开始时弹出的 UAC 窗口。
我该如何解决这个问题?
我发现一些帖子松散地提到了使用 SignTool,但其他消息来源说这只会将 UAC 框更改为蓝色并填充发布者参数。
有人可以在这里帮忙吗?该场景是一个安装程序,它将通过 Internet 分发,以在没有任何用户交互的情况下静默更新机器上的现有软件。
我正在尝试使用 Inno Setup 构建静默安装。我正在使用 /SILENT 和 /VERYSILENT 命令参数,一切正常,除了开始时弹出的 UAC 窗口。
我该如何解决这个问题?
我发现一些帖子松散地提到了使用 SignTool,但其他消息来源说这只会将 UAC 框更改为蓝色并填充发布者参数。
有人可以在这里帮忙吗?该场景是一个安装程序,它将通过 Internet 分发,以在没有任何用户交互的情况下静默更新机器上的现有软件。
要在没有 UAC 提示的情况下运行提升的设置,您需要从已经提升的东西运行它。如果程序可以在没有用户控制访问的情况下提升,它将破坏 UAC 的全部意义。
签署可执行文件只会显示发布者。
基本思想是首先安装在本地系统帐户下运行的服务,该服务将启动您的更新安装程序,以便更新可以绕过 UAC,并且不强制最终用户以管理员身份运行。如果您不想自己开发,可以使用这样的 3rd 方解决方案:
http://www.autoupdateplus.com/
当您的用户第一次安装您的应用程序时,会安装“更新程序服务”,并且所有后续更新都可以静默。
(我们曾经使用 AutoUpdate+,但后来决定推出我们自己的,它只是下载我们应用程序的完整安装程序文件并静默运行。这在 AutoUpdate+ 中是不可能的,我们必须使用更改的文件创建更新包,这变成了太麻烦了,有太多的错误空间。)
我找到了一种解决方案,例如如果我在临时安装 EXE 之前执行以下操作,那么在安装后我将其还原。那么,我希望我的目的得到解决。
[注册表] 根:“HKLM”;子项:“SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System”;值类型:双字;ValueName: "ConsentPromptBehaviorAdmin"; 值数据:“0x00000000”
您可以将其安装为用户软件。那么你对 UAC 没有任何问题,因为它不是系统范围的软件。ProgramData 必须存储在用户文件夹中,并且必须在 CurrentUser 下完成注册设置。
不确定你是否喜欢这样做。
但无论如何。您不必照顾 UAC。公司将拥有一个具有更高权限的部署服务器,因此静默部署不会强制在那里发送 UAC 消息。
UAC 消息是正常行为