【问题标题】:How does an installer see a manifest? Delphi安装程序如何查看清单?德尔福
【发布时间】:2023-04-10 01:23:01
【问题描述】:

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

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

【问题讨论】:

    标签: delphi installation manifest


    【解决方案1】:

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

    这正是您使用{$R ...} 时发生的情况,如问题所示。该指令指示编译器将编译后的资源链接到可执行文件。一旦你这样做了,分发 .rc 和 .manifest 文件就没有意义了,因为加载器会忽略它们。加载程序更喜欢使用链接到可执行文件的清单(如果存在)。无论如何,加载器永远不会对 .rc 文件感兴趣,它只是用于编译资源。

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

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

    【讨论】:

    • 所以,你的意思是我只需要保留那一行,当我编译时它会自动将它添加到资源中,所以我不需要其他任何东西??
    • 就是这样。当然必须是{$R 'file.res' 'file.rc'} 而不是{.$R 'file.res' 'file.rc'}
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多