将大(> 2GB)资源资产添加到可执行文件

时间:2019-10-10 17:45:37

标签: windows qt gcc assets executable-format

我想为特定的Qt应用程序制作一个简单,极简的自定义跨平台安装程序。安装程序如下所示:

Simple Installer UI

但是在一个用例中,存储在那里的数据大于5GB。我尝试了以下方法:

  1. 使用Qt安装程序框架

    • 不允许离线更新。
    • 不可能(或很难)制作自定义的Qt Quick Controls 2用户界面,如上图所示
  2. 静态编译Qt并使用rcc

    嵌入资源
    • 静态编译Qt成功
    • 使用CONFIG += resources_big文件中的.pro允许两次通过rcc工具来编译大资源
    • 适用于小于2GB的文件,但不适用于较大的文件。 我将它用于<2GB的文件
    • 如果> 2GB,则链接器(ld)失败,并显示...relocation truncated to fit...
    • 我根据建议here添加了标志-mcmodel=medium。它不起作用,-mcmodel=large也不-Wl,--image-base -Wl,0x100000000也不-Wl,--image-base -Wl,0x180000000
  3. 静态编译Qt并将数据附加到可执行文件的末尾(对于2GB以上的文件,这似乎是最好的方法)

    • 附加我的> 5GB zip压缩测试文件
    • 附加8个字节,大小以字节为单位
    • 在Linux上工作
    • 在Windows上运行时文件没有那么大(显示此应用无法在您的PC上运行

我想要一些有关如何使第三种方法起作用的建议,因为这似乎是2GB以上文件的最佳选择。但是也欢迎新的想法。

也欢迎使用另一种跨平台安装程序框架来纠正Qt缺少的功能。

如果可能,我不想参与winapi。但是,也可以接受一种简短且易于实现的解决方案。

顺便说一句,我目前有一台具有4GB RAM的PC。但这不是问题。

0 个答案:

没有答案