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