我在这个问题上看到了很多变化,我不确定这个问题是否完全重复。
我希望能够在运行时运行现有的可执行文件(SOURCE exe)并拥有它: 1)在运行时获取现有的TARGET exe并将任何大小和类型的内容添加到TARGET exe(pdf,image,word,excel文件类型等) 2)能够运行修改后的TARGET exe,以便在运行TARGET exe时,它将在自身内部找到嵌入的内容并将内容复制到硬盘驱动器,然后运行与内容关联的程序(例如,运行excel复制的xls文件)
我已经看过在Visual Studio中编译时嵌入资源的示例,但我想在运行时在代码中执行此操作(c#,java,无论什么工作)。主机TARGET exe需要已经存在并且应该向其添加内容,或者需要在运行时从头开始生成exe并再次向其添加内容。
我也不想使用visual studio或任何其他工具在幕后运行的任何cmd-line工具(如果可能的话)来创建一个exe来最小化需要下载更多库/ sdks的最终用户必要的。
这个产品符合我的想法 http://www.boomeranglistbuilder.com/instructions/usingsoftware.php
(我想改进它):)
最后,如果解决方案可以跨平台兼容,那就太棒了(尽管有疑问) 这可以在java中完成吗?
我已经看过我的搜索中提到的窗口库资源方法updateresource方法,但我不确定这是否完全适合我的情况。谁有人评论?
我希望我的问题很明确。请告诉我。
任何帮助都会受到赞赏。
谢谢,
卡洛斯
答案 0 :(得分:0)
我认为大多数二进制文件格式(包括可执行文件)都是如此,将数据附加到格式良好的文件不会影响文件的使用,这通常是大多数程序解释的方式。你也许可以利用这个。
要嵌入,您需要获取(现有的)目标可执行文件,并简单地将一些二进制数据附加到其中。该数据将包含两部分:
所以,这个:
[target executable data]
成为这个:
[target executable data]
[magic word]
[resource]
要从目标可执行文件中读取资源,只需将该可执行文件打开,搜索魔术字,如果存在,则开始读取其后附加的资源。
这就是WinRAR(或者至少在四年前,当我上次检查时)所做的事情,以识别其自解压文件中的档案。