【发布时间】:2012-06-28 07:12:35
【问题描述】:
我的 Inno Setup 安装程序在我的机器(Win 7 32 位)上运行良好,但在测试机器(也是 Win 7 32 位)上根本无法运行。经过一番调查,我发现原因是当 UAC 设置为不是 Never notify me 的任何内容时出现问题。但是,如果我右键单击安装程序并选择以管理员身份运行,安装程序可以正常工作。
然后我尝试修改安装程序的嵌入式清单(方法如下所述),以便它始终以管理员身份运行,但这并不像我希望的那样工作。我已经使用命令获取了原始清单
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:属性“级别”的值在不同清单 sn-ps 中不相等。
我也尝试将命令更改为
mt.exe -manifest installer.exe.manifest -outputresource:installer.exe;#1
但这会导致整个安装程序仅被资源覆盖(即实际安装程序丢失)。
我还尝试使用 Visual Studio(资源编辑器)打开安装程序可执行文件,修改清单并保存文件,但这与我使用的第二个 mt.exe 命令的结果相同。
有人知道我做错了什么,或者我错过了什么吗?
【问题讨论】:
-
如果您执行“以管理员身份运行”或更改清单,那么它将破坏 Inno 的一些功能。 Inno(应该)提升自身并依赖于不提升初始 EXE 运行。如果您解释了设置的实际问题,我可以保证有更好的解决方案。
-
请注意:Inno newsgroups 上也有人问过这个问题,并提供了有关实际问题的信息。
-
@Deanna,好点子!答案可能就在那里 - 使用最新版本的 InnoSetup,因为我个人没有注意到,当我没有将
PrivilegesRequired明确指定为admin以外的其他内容时,不会询问管理员提升。 -
@Deanna - 执行“以管理员身份运行”并没有破坏任何东西,或者至少没有破坏这个特定安装程序所需的任何东西。提升时设置失败。我看到了一个对话框,上面写着
The following command-line argument is not valid:/SPAWNWND=$1A0292另外,我使用的是最新版本的 Inno Setup (5.5.0)。 -
它会破坏所有
...AsOriginalUser和PostInstall根据我的asnwer 的功能。至于 Inno 问题,它指向一个损坏的设置,但新闻组上的问题应该得到答案。
标签: installation manifest inno-setup administrator