使用 Inno Setup 6.3 以管理员身份运行链接

问题描述 投票:0回答:1

当需要配置 Inno Setup 安装包创建的快捷方式时,可采用“如何使用 Inno Setup 在文件上设置‘以管理员身份运行’”主题中提到的方法(网址为:如何设置‘以管理员身份运行’)使用 Inno Setup 作为文件管理员' 被广泛使用。

不幸的是,这种方法在 Inno Setup 6.3 中不起作用,因为过程 SetElevationBit 遇到 AccessViolation 错误。问题是此版本的 Inno Setup 中的 TStream.Seek 方法存在错误。

inno-setup access-violation
1个回答
0
投票

请阅读 Raymond Chen 的博客文章:如何将快捷方式文件标记为需要提升?

摘录:

指定是否需要提升通常是程序的责任。这是通过将requestedExecutionLevel 元素添加到清单中来完成的。 ...但是,如果您正在运行的程序没有这样的清单 - 也许这是一个您无法控制的旧程序 - 您可以创建该程序的快捷方式并将快捷方式标记为需要海拔。

他提供了一个快速而肮脏的小程序的代码来完成这项工作,但随后在帖子底部做了注释:

(我担心大多数人会读这篇文章并说:“太棒了!我的程序需要提升,这就是我如何标记我的开始菜单快捷方式以提示提升。谢谢,雷蒙德!”这些人将完全忽略开头段落解释说这是“错误的做法”。)

换句话说:建议的做法是
向可执行文件添加清单,这样您就不必首先创建请求提升的快捷方式。

话虽如此,但在某些情况下(例如雷蒙德前面指出的旧程序)需要这样做。我认为适当的方法是使用正确的二进制接口来更新快捷方式的标志,而不是直接修改文件中的位。为了满足这个需求,我编写了一个开源命令行工具来实现这一点:

https://github.com/Bill-Stewart/scrunas

我为那些因任何原因无法添加清单并且确实需要将快捷方式标记为请求提升的情况提供此工具。

但是:如果您能够将清单添加到您的程序中,您应该这样做。

© www.soinside.com 2019 - 2024. All rights reserved.