Добавить большой (> 2 ГБ) ресурс ресурса в исполняемый файл - PullRequest
0 голосов
/ 10 октября 2019

Я хочу сделать простой, минималистичный пользовательский кроссплатформенный установщик для конкретного приложения Qt. Программа установки выглядит следующим образом:

Simple Installer UI

Но в одном случае использования данные для хранения имеют длину> 5 ГБ. Я пробовал следующее:

  1. Использование Qt Installer Framework

    • Запрещает автономные обновления.
    • Это невозможно (или это невозможно)очень сложно) создать пользовательский интерфейс Qt Quick Controls 2, как показано выше
  2. Статическая компиляция Qt и встраивание ресурса с помощью rcc

    • Успешная компиляция Qt статически
    • Использование CONFIG += resources_big в .pro файле для двухпроходного инструмента rcc для компиляции больших ресурсов
    • Работает ли для файлов с <2GB, но не для более крупных. <strong>Я использую это для файлов с <2GB </strong>
    • Если> 2GB, компоновщик (ld) завершается ошибкой с ...relocation truncated to fit...
    • Я добавил флаг -mcmodel=medium какпредложил здесь . Это не работает, а также -mcmodel=large, -Wl,--image-base -Wl,0x100000000, -Wl,--image-base -Wl,0x180000000
  3. Статическая компиляция Qt и добавление данных в конец исполняемого файла (похоже, этолучший подход для> 2 ГБ файлов)

    • Добавить мой> 5 ГБ сжатый zip-файл теста
    • Добавить 8 байтов с размером в байтах
    • Работает в Linux
    • Работает в Windows без больших файлов (показывает Это приложение не может работать на вашем ПК )

Я хочу получить несколько советов о том, какчтобы третий подход работал, так как он кажется лучшим для файлов> 2ГБ. Но новые и свежие идеи тоже приветствуются.

Также приветствуется альтернативная платформа кроссплатформенной установки, которая исправляет недостающие возможности Qt.

Я не хочу привлекать winapiесли возможно. Но короткое и простое в реализации решение также будет принято.

Кстати, у меня в настоящее время есть компьютер с 4 ГБ оперативной памяти. Но это не было проблемой.

...