4

我有一个 Inno Setup 安装程序,它在我的机器(Win 7 32 位)上运行良好,但在测试机器(也是 Win 7 32 位)上根本无法运行。经过一番调查,我发现原因是当 UAC 设置为任何不是Never notify me时出现问题。但是,如果我右键单击安装程序,然后选择Run as Administrator,安装程序可以正常工作。

然后我尝试修改安装程序的嵌入式清单(方法如下所述),以便它始终以管理员身份运行,但这并不像我希望的那样工作。我已经使用命令获得了原始清单

mt.exe -inputresource:installer.exe -out:installer.exe.manifest

然后,我使用文本编辑器打开提取的清单并更改了行

<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>

<requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>

然后,我尝试通过运行命令来应用生成的清单

mt.exe -manifest installer.exe.manifest -updateresource:installer.exe;#1

但是清单工具给了我错误

mt.exe:清单创作错误 c1010001:属性“级别”的值在不同的清单片段中不相等。

我也尝试将命令更改为

mt.exe -manifest installer.exe.manifest -outputresource:installer.exe;#1

但这导致整个安装程序仅被资源覆盖(即实际安装程序丢失)。

我还尝试使用 Visual Studio(资源编辑器)打开安装程序可执行文件,修改清单并保存文件,但这与我使用的第二个mt.exe命令给出了相同的结果。

有谁知道我做错了什么,或者我错过了什么?

4

1 回答 1

5

您不应修改生成的 Inno 设置的清单,因为 Inno 会执行PrivilegesRequired指令所需的任何提升。

如果您确实修改了清单,或者手动执行“以管理员身份运行”,那么它将破坏所有...AsOriginalUser功能,最重要的是postinstallflag

mt.exe类似的资源编辑器也很可能从设置文件中删除设置数据,因为它附加到二进制文件的末尾。

于 2012-06-28T11:39:36.823 回答