2009-09-10 72 views
3

我们为我们的应用程序提供了一个安装程序,必须下载并使用管理员权限运行,就像许多其他安装程序一样。但是,安装程序未命名为“setup.exe”,因此Windows不会自动检测到它需要提升才能运行。如何为Windows安装程序创建清单?

坦率地说,改变安装程序的名称以使东西正确提升听起来相当凌乱。 This article谈了很多关于UAC和海拔的信息,它说你可以使用清单来做一些需要授权的事情。

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

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

谢谢!

回答

3

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

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

另外,如果安装是数字签名的,必须在插入清单资源之后完成。


此外,mt.exe附带平台SDK和Visual Studio的大多数版本有一些选项可以嵌入,提取和合并清单资源。

1

清单还可以位于应用程序的本地资源部分(在EXE内部)。

相关问题