特定の Qt アプリケーション用のシンプルで最小限のカスタム クロスプラットフォーム インストーラーを作成したいと考えています。インストーラーは次のようになります。
しかし、あるユースケースでは、そこに保存するデータの長さが 5GB を超えています。私は次のことを試しました:
Qt インストーラー フレームワークの使用
- オフライン更新を許可しません。
- 上記のようなカスタム Qt Quick Controls 2 UI を作成することはできません (または非常に困難です)。
Qtを静的にコンパイルし、リソースを埋め込む
rcc
- Qt の静的コンパイルに成功
CONFIG += resources_big
in.pro
file を使用して、rcc
ツールの 2 パスで大きなリソースをコンパイルできるようにする- 2GB 未満のファイルでは機能しますが、それより大きいファイルでは機能しません。2GB未満のファイルにこれを使用します
- > 2GB の場合、リンカー (
ld
) は次のエラーで失敗します。...relocation truncated to fit...
- ここで
-mcmodel=medium
提案されているようにフラグを追加しました。機能しない、機能しない、機能しない-mcmodel=large
-Wl,--image-base -Wl,0x100000000
-Wl,--image-base -Wl,0x180000000
Qt を静的にコンパイルし、実行可能ファイルの末尾にデータを追加します (これは、2GB を超えるファイルの場合に最適な方法と思われます)。
- > 5 GB の zip 圧縮されたテスト ファイルを追加します
- バイト単位のサイズで 8 バイトを追加します
- Linuxで動作
- それほど大きなファイルがなくても Windows で動作します (このアプリは PC では実行できません) 。
2GB を超えるファイルには 3 番目のアプローチが最適なように思われるため、3 番目のアプローチを機能させる方法についてアドバイスが必要です。しかし、斬新で斬新なアイデアも大歓迎です。
Qt の不足している機能を修正する代替のクロスプラットフォーム インストーラー フレームワークも歓迎します。
winapi
できれば関わりたくない。ただし、短くて実装が簡単なソリューションも受け入れられます。
ところで、私は現在 4GB の RAM を搭載した PC を持っています。しかし、これは問題ではありませんでした。