9

尝试创建类似于 SFX(自解压安装程序)的东西,我使用 Visual c++ 中的自定义资源将设置文件包含在一个 exe 中。当安装文件的大小超过 ~900 MB 时,链接器无法生成嵌入资源的 exe。奇怪的是,链接器确实生成了一个没有任何警告的 exe。生成的 exe 是一个静态链接的 MFC App(可执行文件的主应用程序)。但是,不包括任何资源。我在从控制台链接期间观察了 exe 大小。它之前显示 900 MB,最后下降到 2MB exe。如果我删除了一些文件(比如总大小为 500MB),则生成的 exe 一切正常,并且嵌入了所有资源。自定义资源是否有实际大小限制?请注意,可执行文件的最终大小约为 1GB,这比 2GB win32 应用程序可以解决的要小得多。所以我想知道这是 vc++ 2010 的错误还是功能?顺便说一句,我还使用了 /expectedoutputsize 技巧。但这无济于事,除非链接速度更快,预期输出大小更大。

4

3 回答 3

1

迟来的答案。可能对其他人有帮助。可能不是您问题的答案,但这可能是您问题的解决方案。检查“Bitrock 安装程序”。这也提供了自解压安装程序。我在我的许多部署项目中都成功地使用了它。

于 2013-07-17T04:00:18.290 回答
0

根据PECOFF 规范,资源数据条目的大小为 4 个字节(IMAGE_RESOURCE_DATA_ENTRY.Size - 参见 winnt.h)

Data RVA 字段指向的资源数据的大小(以字节为单位)。

于 2012-07-26T08:47:31.443 回答
0

我在这里回答了类似的答案。

基本上将二进制+幻数(唯一分隔符)附加到可执行文件的末尾。在运行时打开可执行文件进行读取,通过幻数或其他方法找到偏移量,文件的其余部分就是您的大数据。

于 2013-11-28T12:31:19.233 回答