代码之家  ›  专栏  ›  技术社区  ›  Mick

如何在delphi可执行文件中嵌入二进制文件并在运行时提取?

  •  2
  • Mick  · 技术社区  · 15 年前

    我想在delphi二进制文件中嵌入一个可执行文件,并在运行时提取它。这样做的目的是确保helper实用程序在系统上始终可用,而不必分发多个文件。

    在Delphi2007中,我使用了 JvDataEmbedded ,但我正在构建一个控制台应用程序,我想知道是否有人知道另一种方法来实现它,而不必为jvdataembedded添加隐藏表单。

    我正在使用Delphi2010。

    3 回复  |  直到 14 年前
        1
  •  13
  •   Community CDub    8 年前

    构建一个将此程序作为资源嵌入的rc文件,然后在运行时可以使用tresourcestream提取它。(见接受的答案 this question of mine 对于一般原理),可以将tresourcestream链接到tfilestream,将其写入临时文件,然后运行它。

        2
  •  1
  •   Chris Thornton    15 年前

    很酷的把戏,梅森! 要添加…我突然想到,如果“母舰”将“侦察舰”直接转储到运行它的同一个目录中,这可能会遇到uac/权限的问题。如果您在vista/windows7上,在没有提升权限的情况下运行时,常规程序将无法写入“\program files”目录。因此,在这种情况下,文件可能会被放到一个影子目录中。它变得更好:如果你从安装程序启动“母舰”程序,你可能会有不同的结果,因为安装程序有特殊的访问权限,他们可能会临时授予对他们启动的程序的访问权限(这使得总是对“你想运行程序”说“是”有点危险)。现在是拉姆吗?”安装结束时)。

        3
  •  1
  •   Cesar Romero    15 年前

    使用tdatamodule保存tjvdataembedded而不是tform。