如何修改Inno Setup Installer的嵌入式清单?

时间:2012-06-28 07:12:36

标签: installation manifest inno-setup administrator

我有一个Inno安装程序安装程序在我的机器上运行正常(Win 7 32位),但在测试机器上也没有工作(也是Win 7 32位)。经过一番调查后,我发现原因是当UAC设置为 从不通知我 时,出现问题。但是,如果我右键单击安装程序,并选择 以管理员身份运行 ,安装程序将正常运行。

然后我尝试修改安装程序的嵌入式清单(下面描述的方法),以便它始终以管理员身份运行,但这不符合我的意愿。我使用命令

获得了原始清单
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:manifest authoring error c1010001:属性“level”的值在不同的清单片段中不相等。

我也尝试将命令更改为

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

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

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

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

1 个答案:

答案 0 :(得分:5)

你不应该修改生成的Inno设置的清单,因为Inno会对PrivilegesRequired指令进行任何提升。

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

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