Я создал SFX-архив размером более 4 ГБ (самораспаковывающиеся архивы) в 7-Zip без предупреждения. Когда получатель попытался извлечь его, он получил эту ленту ошибок:
Я нашел это, потому что .exe
больше, чем 4 ГБ. После установки 7-Zip он смог извлечь архив, но мне интересно, почему Windows не может запустить такой исполняемый файл? И возможно ли через какое-то переопределение?
windows
computer-architecture
Луи Ваверу
источник
источник
Ответы:
Windows не будет поддерживать исполняемые файлы размером более 4 ГБ в соответствии с этим потоком:
http://sourceforge.net/p/sevenzip/discussion/45798/thread/337fc13e/
Комментатор "Игорь Павлов" является создателем и разработчиком 7-Zip. Хотя этот комментарий несколько краткий, на форумах sourceforge есть другие темы, которые повторяют тот же совет. Я не верю, что запуск исполняемого файла в 64-битной ОС будет иметь какое-либо значение, так как это может быть ограничением размера исполняемого файла Windows, то есть ограничением самого формата Windows PE .
Эта статья о написании 64-битных программ предполагает, что:
Предположительно, Игорь нашел способ использовать ± 2 ГБ для получения 4 ГБ.
источник
4GiB - 1B = 2^32 - 1 bytes = 4,294,967,295 bytes
. Я смог проверить это в Windows 10 64-bit, создав самораспаковывающиеся архивы с WinRAR в виде .EXE-файлов. Исполняемый файл размером4GiB
не запускается, но4GiB - 1B
работает нормально.Крайне важно иметь самораспаковывающийся исполняемый файл размером более 4 ГБ, поскольку существует ограничение в 4 ГБ для исполняемых файлов Windows, таких как * .exe, * .dll и т. Д. Для PE32 и 64-разрядной версии PE32 + (применяется к 32-разрядным и 64-разрядным версиям). версии).
Во-вторых, исполняемый файл полностью загружается в оперативную память перед выполнением, и даже если вы не ограничены Windows (но вы есть), вы можете быть легко ограничены аппаратным обеспечением, которое в данном случае является физическим объемом оперативной памяти.
источник