Allow up to 4 GiB of 3rd-party appended data.

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7098 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2019-06-16 14:08:43 +00:00
parent fb6945ec36
commit b19a694ad5
2 changed files with 23 additions and 12 deletions

View file

@ -584,10 +584,21 @@ typedef struct {
#pragma pack(pop)
#ifdef EXEHEAD
#define NSIS_MAX_EXEDATASIZE 0x7fffffffUL // Maximum size of .exe including compressed installer data.
#ifndef NSIS_CONFIG_CRC_ANAL
#define NSIS_MAX_EXEFILESIZE 0xffffffffUL // Maximum size of .exe including compressed installer data AND 3rd-party appended data. (Windows refuses to run .EXE files larger than 4 GiB)
#else
#define NSIS_MAX_EXEFILESIZE NSIS_MAX_EXEDATASIZE
#endif
#ifdef EXEHEAD
// the following are only used/implemented in exehead, not makensis.
#if NSIS_MAX_EXEDATASIZE <= 0xffffffffUL
#define MAXEXEDATASIZETYPE UINT // Maximum size of .exe including compressed installer data. (Unsigned allows size including 3rd-party appeded data to be 4 GiB instead of 2 GiB)
#endif
#define MAXSIZETYPE UINT
int NSISCALL isheader(firstheader *h); // returns 0 on not header, length_of_datablock on success
// returns nonzero on error
@ -610,7 +621,7 @@ DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove);
extern struct block_header g_blocks[BLOCKS_NUM];
extern header *g_header;
extern int g_flags;
extern int g_filehdrsize;
extern UINT g_filehdrsize;
extern int g_is_uninstaller;
#define g_pages ( (page*) g_blocks[NB_PAGES].offset )