2010-05-03 69 views
2

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

与德尔福2007年我已经使用JvDataEmbedded,但我正在构建一个控制台应用程序,我想知道是否有人知道的另一种方法来做到这一点,而不必为JvDataEmbedded添加隐藏窗体。

我使用德尔福2010年

+3

将多个文件分发到系统而不必单独分发它们的通常方法是使用安装程序。 – 2010-05-04 00:09:13

+2

@Mick:你知道这很可能会引发大多数病毒扫描程序发出恶意软件警报,对吧? – 2010-05-04 12:47:20

+0

@KenWhite - 它不适用于Process Explorer(它使用类似的方法)。并没有在我用我自己的实用程序测试过的机器上。 – Mick 2014-05-22 14:26:55

回答

13

构建嵌入本期节目资源的RC文件,然后在运行时,你可以用TResourceStream提取它。 (有关一般原理,请参阅this question of mine的接受答案。)您可以将TResourceStream链接到TFileStream以将其写出到临时文件,然后运行它。

1

酷招,梅森! 要添加...我发现,如果“母舰”将“侦察舰”直接转储到运行的同一个目录中,这可能会遇到UAC /权限的问题。如果您使用的是Vista/Windows7,那么在没有提升权限的情况下运行时,会阻止常规程序写入“\ program files”目录。所以在这种情况下,该文件可能会被放置在一个影子目录中。它会变得更好:如果您从安装程序启动“母亲”程序,您可能会得到不同的结果,因为安装程序有特殊的访问权限,并且它们可能会临时授予他们启动的程序的访问权限(这会使其总是说是YES到“你想现在运行程序吗?”在安装结束时)。

1

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

+0

...或者简单地在代码中创建'TJvDataEmbedded' ...或更好地使用Mason的方法 – 2010-05-04 07:22:55

相关问题