9

Я создал SFX-архив размером более 4 ГБ (самораспаковывающиеся архивы) в 7-Zip без предупреждения. Когда получатель попытался извлечь его, он получил эту ленту ошибок:

Я нашел это, потому что .exe больше, чем 4 ГБ. После установки 7-Zip он смог извлечь архив, но мне интересно, почему Windows не может запустить такой исполняемый файл? И возможно ли через какое-то переопределение?

2 ответа2

9

Windows не будет поддерживать исполняемые файлы размером более 4 ГБ в соответствии с этим потоком:

http://sourceforge.net/p/sevenzip/discussion/45798/thread/337fc13e/

Комментатор "Игорь Павлов" является создателем и разработчиком 7-Zip. Хотя этот комментарий несколько краткий, на форумах sourceforge есть другие темы, которые повторяют тот же совет. Я не верю, что запуск исполняемого файла в 64-битной ОС будет иметь какое-либо значение, поскольку это может быть ограничением размера исполняемого файла Windows, то есть ограничением самого формата Windows PE .

Эта статья о написании 64-битных программ предполагает, что:

Размер исполняемого "образа" (код / данные, загруженный в память) файла Win64 ограничен 2 ГБ. Это связано с тем, что процессоры AMD64 / EM64T для большинства команд используют относительную адресацию, а относительный адрес хранится в слове. Меч может удерживать только относительное значение ± 2 ГБ.

Предположительно, Игорь нашел способ использовать ± 2 ГБ для получения 4 ГБ.

0

Крайне важно иметь самораспаковывающийся исполняемый файл размером более 4 ГБ, поскольку существует ограничение в 4 ГБ для исполняемых файлов Windows, таких как * .exe, * .dll и т.д. Для PE32 и 64-разрядной версии PE32+ (применяется к 32-разрядным и 64-разрядным версиям). версии).

Во-вторых, исполняемый файл полностью загружается в оперативную память перед выполнением, и даже если вы не ограничены Windows (но вы есть), вы можете быть легко ограничены аппаратным обеспечением, которое в данном случае является физическим объемом оперативной памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .