安装程序如何查看清单? Delphi

How does an installer see a manifest? Delphi

所以,我知道这里有很多关于清单的问题,但我还没有完全找到我要找的解释。基本上我需要一个 Delphi 应用程序安装程序的清单。现在我在清单上看到的大多数指南都说创建一个 .manifest 文件和一个 .rc 文件,然后在应用程序中添加 {.$R 'file.res' 'file.rc'} 以便它在启动时看到它并放置.exe 旁边的文件。

现在我感到困惑的是我的清单是针对安装程序的,我不能将文件放在安装程序旁边,从逻辑上讲,因为它的工作是将文件放在需要的地方。现在我显然不会向人们发送带有安装程序和其他 2 个随机文件的包。所以我只是想弄清楚清单如何为安装程序工作。谢谢!

通常您将清单编译成已编译的资源,然后 link 该资源成为可执行文件。这样您就可以交付单个可执行文件,并且加载程序能够在加载该可执行文件时找到清单。

这正是您在问题中使用 {$R ...} 时发生的情况。该指令指示编译器将已编译资源 link 转换为可执行文件。一旦完成,分发 .rc 和 .manifest 文件就没有意义了,因为它们将被加载程序忽略。如果存在,加载程序更喜欢使用清单 linked 到可执行文件。在任何情况下,加载程序都不会对 .rc 文件感兴趣,它只是用于编译资源。

尽管可以将清单文件作为可执行文件的外部文件包含在内,但这并不可取。原因是它使人们很容易复制可执行文件而不是清单、删除或重命名其中一个文件。因为清单是分开的,所以它可能会以这种方式从可执行文件中脱位,然后加载程序找不到它。

因此,link 将已编译的清单资源添加到您的可执行文件中,就像您已经在做的那样。并且不要分发 .rc 或 .manifest 文件。