Hi dudes,
I have a little problem, I want to get the weight of greater than
+2Gb file with Inno Setup
5.5.1 ee2, I try many things without success, can someone help me ?
Many thanks!
Example:
Code:
#define FileSize "D:\Game\Grand Theft Auto V\x64q.rpf"
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[_Code]
const
// Some constants for CreateFile ().
GENERIC_READ = $80000000;
GENERIC_WRITE = $40000000;
GENERIC_EXECUTE = $20000000;
GENERIC_ALL = $10000000;
FILE_SHARE_READ = 1;
FILE_SHARE_WRITE = 2;
FILE_SHARE_DELETE = 4;
CREATE_NEW = 1;
CREATE_ALWAYS = 2;
OPEN_EXISTING = 3;
OPEN_ALWAYS = 4;
TRUNCATE_EXISTING = 5;
FILE_READ_ATTRIBUTES = $80;
FILE_WRITE_ATTRIBUTES = $100;
// General Win32.
INVALID_HANDLE_VALUE = -1;
function CloseHandle (hHandle: THandle): Boolean;
external '[email protected] stdcall';
function CreateFile (
lpFileName : String;
dwDesiredAccess : Cardinal;
dwShareMode : Cardinal;
lpSecurityAttributes : Cardinal;
dwCreationDisposition : Cardinal;
dwFlagsAndAttributes : Cardinal;
hTemplateFile : Integer
): Integer;
external '[email protected] stdcall';
function GetFileSize (hFile: THandle; var lpFileSizeHigh: Integer): Integer;
external '[email protected] stdcall';
function GetTheFileSize (FileName: String): Integer;
var
hFile: THandle;
iSize: Integer;
hSize: Integer;
begin
hFile := CreateFile (FileName,
GENERIC_READ,// Desired access.
FILE_SHARE_READ + FILE_SHARE_WRITE,
0, // Security attributes.
OPEN_EXISTING,
FILE_ATTRIBUTE_TEMPORARY,
0);
if (INVALID_HANDLE_VALUE = hFile) then
begin
Result := 0;
Exit;
end;
iSize := GetFileSize (hFile, hSize);
CloseHandle (hFile);
Result := iSize;
end;
function InitializeSetup():Boolean;
var
FileSize: integer;
begin
FileSize := GetTheFileSize(ExpandConstant('{#FileSize}'));
MsgBox(IntToStr(FileSize), mbInformation, mb_OK);
Result := False;
end;