Criei um arquivo SFX de> 4 GB (os arquivos auto-extraíveis) no 7-Zip, sem aviso prévio. Quando o destinatário tentou extraí-lo, ele recebeu esta faixa de erro:
Eu achei que é porque o .exe
é maior que 4GB. Depois de instalar o 7-Zip, ele conseguiu extrair o arquivo, mas estou me perguntando por que o Windows não pode executar esse executável? E é possível através de alguma substituição?
windows
computer-architecture
Louis Waweru
fonte
fonte
Respostas:
O Windows não suporta executáveis com tamanho superior a 4 GB, de acordo com este tópico:
http://sourceforge.net/p/sevenzip/discussion/45798/thread/337fc13e/
O comentarista "Igor Pavlov" é o criador e o mantenedor do 7-Zip. Embora esse comentário seja um pouco curto, há outros tópicos nos fóruns do sourceforge que repetem o mesmo conselho. Não acredito que a execução do executável em um sistema operacional de 64 bits faça alguma diferença, pois isso pode ser uma limitação do tamanho de um arquivo executável do Windows, ou seja, uma limitação do próprio formato do Windows PE .
Este artigo sobre como escrever programas de 64 bits sugere que:
Presumivelmente, o Igor criou uma maneira de usar ± 2 GB para atingir 4 GB.
fonte
4GiB - 1B = 2^32 - 1 bytes = 4,294,967,295 bytes
. Consegui verificá-lo no Windows 10 de 64 bits, criando arquivos de extração automática com o WinRAR na forma de arquivos .exe. Um executável com um tamanho de4GiB
não será iniciado, mas4GiB - 1B
funciona bem.Ter um executável de extração automática maior que 4 GB está no lado extremo, pois há um limite de 4 GB nos arquivos executáveis do Windows, como * .exe, * .dll etc. para PE32 e uma versão de 32 bits PE32 + (aplicável a 32 e 64 bits). versões de bits).
Segundo, o arquivo executável é carregado completamente na RAM antes da execução e, mesmo que você não seja limitado pelo Windows (mas você é), você pode ser facilmente limitado pelo hardware, que é a quantidade física de RAM nesse caso
fonte