我试图理解各种电子书应用程序如何在运行exe时将其输出编译成一个没有依赖项的自包含可执行文件。 怎么做到呢?他们使用真正的嵌入式编译器?
答案 0 :(得分:3)
电子书应用程序可能会创建一个带有集成Web浏览器的应用程序。该应用程序将被预编译,唯一缺少的将是html内容。这将作为资源添加。不需要完整的编译器。所需的只是将资源添加到现有的可执行文件中。
有关如何将html页面添加到资源dll,请参阅此article。 Resource hacker是一个可以从任何可执行文件中提取/替换资源的实用程序。不需要编译器来执行此操作。
答案 1 :(得分:1)
许多存档程序sfx模块使用的最简单的方法是预编译存根,然后将创建的信息附加到此存根(在您的情况下编译的电子书)。然后,当执行exe时,检测信息块的开始(例如,使用一些预定义的字节序列)并提取信息以供播放。
你甚至可以在你的exe中嵌入外部引用,例如一些工具,包括.dll文件作为资源,在运行到temp文件夹时提取,然后从那里加载。
当然,有更复杂的方法可以将信息嵌入到现有的可执行文件中,例如,WinNT上的BeginUpdateResource - UpdateResource - EndUpdateResource序列是将信息嵌入可执行文件(作为资源)的另一种方法。
答案 2 :(得分:0)
它们只是包含电子书的加载器/查看器,它与可执行文件中的电子书数据本身配对。
有很多方法可以做到这一点,首先你应该理解二进制文件是否真的没有依赖关系,或者它是否搜索了库(例如acrobat文件),然后你可以编写一个直接加载其数据的查看器。在基于图像的视图中的基于矢量的视图(较小)中的二进制(如没有文本的pdf)
我假设您正在谈论pdf-ebook ..对于其他所有格式,这个想法保持不变:将电子书数据与观众配对
答案 3 :(得分:0)
Ebook exe应用程序可能会将您的电子书放在.exe中的资源中,并尝试使用pdf activex的嵌入式webbrowser来加载电子书。