0

我已经看到了这个问题的许多变体,我不确定这个问题是否完全重复。

我希望能够在运行时运行现有的可执行文件(SOURCE exe)并拥有它:1)在运行时获取现有的 TARGET exe,并将任何大小和类型的内容添加到 TARGET exe(pdf、图像、 word,excel文件类型等) 2)能够运行修改后的TARGET exe,这样当TARGET exe运行时,它会找到自己内部嵌入的内容并将内容复制到硬盘驱动器然后运行相关的程序包含内容(例如,在复制的 xls 文件上运行 excel)

我已经看到了在编译时在 Visual Studio 中嵌入资源的示例,但我想在运行时在代码中执行此操作(c#、java 等任何工作)。主机 TARGET exe 需要已经存在并且应该向其中添加内容,或者需要在运行时从头开始生成 exe 并再次向其中添加内容。

我也不想使用 Visual Studio 或任何其他工具将在幕后运行的任何命令行工具(如果可能)来创建 exe,以最大限度地减少最终用户需要下载任何不必要的库/sdks 的情况。

这个产品符合我想做的 http://www.boomeranglistbuilder.com/instructions/usingsoftware.php

(我想改进它):)

最后,如果解决方案可以跨平台兼容,那就太好了(尽管怀疑)这可以在 java 中完成吗?

我在搜索中看到了窗口库资源方法 updateresource 方法,但我不确定这是否完全适合我的情况。任何人都可以发表评论吗?

我希望我的问题很清楚。请告诉我。

任何帮助将不胜感激。

谢谢,

卡洛斯

4

1 回答 1

0

我认为大多数二进制文件格式(包括可执行文件)都是如此,将数据附加到格式良好的文件不会影响文件的使用,大多数程序通常解释它的方式。也许,您可以利用这一点。

要嵌入,您需要获取(现有)目标可执行文件并简单地将一些二进制数据附加到它。该数据将分为两部分:

  1. 一个神奇的词(表示附加资源的存在)
  2. 资源本身。

所以这:

[target executable data]

变成这样:

[target executable data]
[magic word]
[resource]

要从目标可执行文件中读取资源,只需让该可执行文件自行打开,搜索魔法词,如果存在,则开始读取附加在它后面的资源。

这就是 WinRAR 所做的(或至少四年前,当我上次检查时)来识别其自解压文件中的档案。

于 2013-06-15T22:41:02.463 回答