【发布时间】:2011-04-15 23:38:42
【问题描述】:
我一直在尝试使用 UAC 获取更新应用程序,在进行了一些挖掘之后,我需要在我的应用程序中包含一个清单。
清单名为MyApp.manifest。为了将它包含在项目中,我创建了一个名为 MyApp.rc 的 RC 文件。这被构建到一个名为 MyApp.rec 的文件中,带有预构建命令 brcc32 $(PROJECTNAME).rc -fo$(PROJECTNAME).rec
然后在我的 DPR 中我有
{$R *.REC}
{$R *.RES}
begin
Application.Initialize;
这允许 Delphi 处理诸如版本信息之类的事情。
将应用程序复制到 Windows 7 后,一切正常。
我今天去调试应用程序,我的开发环境是 Windows XP,我立即得到:
经过更多挖掘后,我被指向XN Resource Editor。立即显示以下问题:
这些清单中的第一个(标记为 1 的那个)是 MyApp.manifest(这可能是它在 Windows 7 中正常工作的原因?)如果我删除第二个清单,应用程序可以完美运行。奇怪的是,如果我更改 RC 文件中的数字,数字 1 也会随之改变,但第二个清单仍然是数字 2。
我认为第二个清单可能与运行时主题有关,但禁用它根本不起作用(我取消勾选复选框,关闭项目选项,打开项目选项并勾选复选框)。
那么是什么导致第二个清单出现?以及如何摆脱它?
Delphi 版本是 2007
【问题讨论】:
-
MANIFEST_RESOURCE_ID 为 2 通常在 DLL 中使用。我怀疑这对你有帮助,但它不会由 Delphi IDE 生成。只需在您的项目中搜索 $R,您就会找到它!