如何使用c#以编程方式将内容添加到新的/现有的可执行文件中,并可能使解决方案在mac上运行?

时间:2013-06-15 21:18:39

标签: c# cross-platform

我在这个问题上看到了很多变化,我不确定这个问题是否完全重复。

我希望能够在运行时运行现有的可执行文件(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方法,但我不确定这是否完全适合我的情况。谁有人评论?

我希望我的问题很明确。请告诉我。

任何帮助都会受到赞赏。

谢谢,

卡洛斯

1 个答案:

答案 0 :(得分:0)

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

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

  1. 一个神奇的词(表示存在附加资源)
  2. 资源本身。
  3. 所以,这个:

    [target executable data]
    

    成为这个:

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

    要从目标可执行文件中读取资源,只需将该可执行文件打开,搜索魔术字,如果存在,则开始读取其后附加的资源。

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