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

时间:2010-05-03 20:20:33

标签: delphi

我想在Delphi二进制文件中嵌入一个可执行文件,并在运行时将其解压缩。这样做的目的是确保系统上始终可以使用辅助实用程序,而无需分发多个文件。

使用Delphi 2007,我使用了JvDataEmbedded,但我正在构建一个控制台应用程序,我想知道是否有人知道另一种方法,而无需为JvDataEmbedded添加隐藏的表单。

我正在使用Delphi 2010。

3 个答案:

答案 0 :(得分:13)

构建一个将该程序作为资源嵌入的RC文件,然后在运行时可以使用TResourceStream将其解压缩。 (有关一般原则,请参阅this question of mine的已接受答案。)您可以将TResourceStream链接到TFileStream,将其写入临时文件,然后运行它。

答案 1 :(得分:1)

酷戏,梅森! 要添加......我想到,如果“母舰”将“侦察船”直接转移到与其运行相同的目录中,则可能会遇到UAC /权限问题。如果您使用的是Vista / Windows7,则在没有提升权限的情况下运行时,会阻止常规程序写入“\ program files”目录。因此,在这种情况下,该文件可能会被放入阴影目录中。它变得更好:如果您从安装程序启动“母舰”程序,您可能会有不同的结果,因为安装程序具有特殊访问权限,并且它们可能暂时允许访问它们启动的程序(这使得总是说YES有点危险)在安装结束时“你想立即运行程序吗?”。

答案 2 :(得分:1)

使用TDataModule来保存TJvDataEmbedded而不是TForm。