如何为Windows安装程序创建清单?

时间:2009-09-10 23:14:10

标签: windows installer uac manifest elevation

我们的应用程序安装程序必须下载并以管理员权限运行,就像许多其他安装程序一样。但是,安装程序未命名为“setup.exe”,因此Windows不会自动将其检测为需要提升运行。

坦率地说,更改安装程序名称以使事情正常提升听起来非常混乱。 This article谈了很多关于UAC和提升的内容,并说它可以使用清单来制作需要授权的内容。

所以,我们只是喜欢为我们的安装程序创建清单。但是,我们如何确保清单存在?如果用户只是下载our_application_v13.exe,我们如何确保他们也获得清单? AFAIK清单必须是一个名为“our_application_v13.exe.manifest”的文件。

由于他们只是从我们的网站下载文件,我们如何确保他们也获得了清单?我们可以以某种方式将其构建到可执行文件中,或者将可执行文件标记为需要提升吗?我们使用数百年前的安装程序工具,我们无法更改,因此它没有任何与此相关的功能。

谢谢!

3 个答案:

答案 0 :(得分:3)

如果安装程序工具允许您更改/附加/编辑生成的EXE文件的资源,则可以将清单文件添加为资源类型为24的资源(Windows标头中为RT_MANIFEST),资源ID为1。

如果安装程序工具没有内置工具来插入资源,那么您可能必须编写一个工具来对您的install.exe文件进行后处理以插入资源。查找Windows API BeginUpdateResouce和EndUpdateResource。它们有一些限制 - 如果EXE根本不包含任何资源文件,它们往往不起作用,但大多数安装工具生成的exe文件至少包含版本信息资源。

此外,如果安装是数字签名,则必须在插入清单资源后进行。


此外,Platform SDK中包含mt.exe,大多数Visual Studio版本都有嵌入,提取和合并清单资源的选项。

答案 1 :(得分:1)

清单也可以在应用程序的本机资源部分(在EXE内)。

答案 2 :(得分:1)

来自Heaventools Software的 Resource Tuner Console

  

Resource Tuner Console是一个命令行工具,使开发人员能够自动执行install exe文件的后处理并插入清单资源。具体请参阅添加应用程序清单页面以获取更多详细信息: