Go Back   FileForums > Game Backup > PC Games > PC Games - CD/DVD Conversions > Conversion Tutorials

Reply
 
Thread Tools Display Modes
  #1561  
Old 17-09-2023, 04:59
Lord.Freddy's Avatar
Lord.Freddy Lord.Freddy is offline
Registered User
 
Join Date: Apr 2022
Location: In Forest
Posts: 46
Thanks: 192
Thanked 30 Times in 21 Posts
Lord.Freddy is on a distinguished road
Quote:
Originally Posted by Dragonis40 View Post
function GetVolumeFreeSpace(const RootDir: PAnsichar; const OutSizeType: Byte): Double; external 'GetVolumeFreeSpace@files:Isab.dll stdcall delayload';

Good morning, how to extract the value from the function above?

I've tried:

value.Caption:=StrToInt(GetVolumeFreeSpace);
value.Caption:=FloatToStr(GetVolumeFreeSpace);
value.Caption:=StrToFloat(GetVolumeFreeSpace);

I have "invalid parameters" issue.

How can i fix the problem? Thanks in advance!
if you want to get free and total bytes or megabytes on a drive,
Use this function instead.
__________________
¤ Life good be a Dream ¤

Last edited by Lord.Freddy; 17-09-2023 at 06:06.
Reply With Quote
Sponsored Links
  #1562  
Old 23-09-2023, 00:10
shazzla shazzla is offline
Registered User
 
Join Date: Nov 2010
Location: Hunnia
Posts: 271
Thanks: 500
Thanked 94 Times in 71 Posts
shazzla is on a distinguished road
hi !

Need a little help here... I tried many combinations ,googled for it ,but no solution. (Standard ISDone)

I want to include/extract some files (XTool-BIK compressor) in my installer and extract them to a sub-folder in {tmp} but the subfolder is not created. Simply all files extracted to the same place ( {tmp} ) ,and it is not good....

Here comes a snippet :

#ifdef xBIK
Source: Include\XToolbpk\_libraries\bik.ini; DestDir: "{tmp}\xBIK\_libraries"; Flags: dontcopy recursesubdirs createallsubdirs
Source: Include\XToolbpk\_libraries\bk2.ini; DestDir: "{tmp}\xBIK\_libraries"; Flags: dontcopy recursesubdirs createallsubdirs
.......


#ifdef xBIK
ExtractTemporaryFile('bik.ini');
ExtractTemporaryFile('bk2.ini');


Whats wrong with my script ?
Reply With Quote
  #1563  
Old 23-09-2023, 08:35
audiofeel's Avatar
audiofeel audiofeel is online now
Registered User
 
Join Date: Jan 2013
Location: Russia
Posts: 356
Thanks: 435
Thanked 815 Times in 299 Posts
audiofeel is on a distinguished road
Quote:
Originally Posted by shazzla View Post
hi !

Need a little help here... I tried many combinations ,googled for it ,but no solution. (Standard ISDone)

I want to include/extract some files (XTool-BIK compressor) in my installer and extract them to a sub-folder in {tmp} but the subfolder is not created. Simply all files extracted to the same place ( {tmp} ) ,and it is not good....

Here comes a snippet :

#ifdef xBIK
Source: Include\XToolbpk\_libraries\bik.ini; DestDir: "{tmp}\xBIK\_libraries"; Flags: dontcopy recursesubdirs createallsubdirs
Source: Include\XToolbpk\_libraries\bk2.ini; DestDir: "{tmp}\xBIK\_libraries"; Flags: dontcopy recursesubdirs createallsubdirs
.......


#ifdef xBIK
ExtractTemporaryFile('bik.ini');
ExtractTemporaryFile('bk2.ini');


Whats wrong with my script ?
if not DirExists(ExpandConstant('{tmp}\xBIK')) then
CreateDir(ExpandConstant('{tmp}\xBIK'));
==or==
if not DirExists(ExpandConstant('{%temp}\xBIK')) then
CreateDir(ExpandConstant('{%temp}\xBIK'));
==or==
if not DirExists(ExpandConstant('{tmp}\xBIK')) then
ForceDirectories(ExpandConstant('{tmp}\xBIK'));
==check==
if DirExists(ExpandConstant('{tmp}\Utilities\SDK')) then
Log('Temp\xBIK\Folder Has Been Created.') else
Log('Temp\xBIK\Folder ERROR : NOT Created.');
source
Reply With Quote
The Following User Says Thank You to audiofeel For This Useful Post:
shazzla (23-09-2023)
  #1564  
Old 23-09-2023, 08:51
shazzla shazzla is offline
Registered User
 
Join Date: Nov 2010
Location: Hunnia
Posts: 271
Thanks: 500
Thanked 94 Times in 71 Posts
shazzla is on a distinguished road
Thanks,but it only creates folders.
How to implement it in my script? (Above)
(Atm im away from my comp,btw tomorrow will try something with it)
Reply With Quote
  #1565  
Old 24-09-2023, 00:09
shazzla shazzla is offline
Registered User
 
Join Date: Nov 2010
Location: Hunnia
Posts: 271
Thanks: 500
Thanked 94 Times in 71 Posts
shazzla is on a distinguished road
tried. i still cant extract the files there.. ( {tmp}\xBIK )

Any solution ? Anyone ?
Reply With Quote
  #1566  
Old 29-09-2023, 16:53
Junior53's Avatar
Junior53 Junior53 is offline
Registered User
 
Join Date: May 2023
Location: Sri Lanka
Posts: 24
Thanks: 22
Thanked 24 Times in 9 Posts
Junior53 is on a distinguished road
Lightbulb :)

Quote:
Originally Posted by Junior53 View Post
01.how to show Component Page before the Select Dir Page (without creating custom forms or anything like that) in Inno setup 5.5.1 ee2 version?

02.how to calculate the required disk space based on the components selected and show in gigabyte on Component page in Inno setup 5.5.1 ee2 version?

I actually found an answer to this. But it doesn't work. If someone gives an answer to these two, it will be a great help <3

Code:
var
  Component1Size: Extended;
  Component2Size: Extended;
  // Add variables for each component as needed

procedure InitializeWizard;
begin
  Component1Size := 1048576;
  Component2Size := 2097152;
  // Assign sizes for other components if needed
end;

function GetTotalSize: String;
var
  TotalSize: Extended;
begin
  TotalSize := 0;
  if WizardForm.ComponentsList.Checked[0] then
    TotalSize := TotalSize + Component1Size;
  if WizardForm.ComponentsList.Checked[1] then
    TotalSize := TotalSize + Component2Size;
  // Add similar lines for other components if needed

  Result := FormatFloat('#,##0.00', TotalSize / 1024 / 1024 / 1024); // Convert bytes to gigabytes
end;

procedure ComponentsPageOnNextButtonClick(Sender: TWizardPage; var Continue: Boolean);
begin
  if Sender.ID = wpSelectComponents then
    WizardForm.DiskSpaceLabel.Caption := 'Required disk space: ' + GetTotalSize + ' GB';
end;
It's Actually 05:20 Am here in sri lanka and i finally found the answer to this LMAO
Reply With Quote
  #1567  
Old 27-06-2024, 00:09
Lord.Freddy's Avatar
Lord.Freddy Lord.Freddy is offline
Registered User
 
Join Date: Apr 2022
Location: In Forest
Posts: 46
Thanks: 192
Thanked 30 Times in 21 Posts
Lord.Freddy is on a distinguished road
Hello, yesterday I attempted to create a function in Inno Setup to gather file names and their respective sizes, but only a few files were returned. I am currently at a standstill and unsure of how to proceed. Does anyone know where i went wrong?
Code:
[Setup]
AppName=FindFiles
AppVerName=FindFiles
CreateAppDir=no
OutputDir=.\OutPut
OutputBaseFilename=FindFiles

[_Code]
type 
  TAutoString = {#defined(UNICODE) ? "Wide" : ""}String;
  TFileList = array of record
    FileName, FileSize: TAutoString;
  end;

var 
  FileList: TFileList;

function Size64(const Hi, Lo: Integer): Extended;
begin
  Result := Lo;
  if (Lo < 0) then
    Result := (Result + $7FFFFFFF + $7FFFFFFF + 2);
  for Hi := (Hi - 1) downto 0 do
    Result := (Result + $7FFFFFFF + $7FFFFFFF + 2);
end;

function FloatToStrEx(const value: Extended): TAutoString;
begin
  Result := FloatToStr(value);
  while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
    SetLength(Result, (Length(Result) - 1));
end;

function FindFilesEx(FolderPath: TAutoString; var FilesList, FileSize: array of TAutoString): Integer;
var
  FindRec: TFindRec;
begin
  Result := 0;
  if FindFirst(ExpandConstant(AddBackslash(FolderPath)) + '*', FindRec) then
  begin
    repeat
      if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0) or
         (FindRec.Attributes and FILE_ATTRIBUTE_HIDDEN <> 0) then
      begin
        SetArrayLength(FilesList, Result + 1);
        SetArrayLength(FileSize, Result + 1);
        FilesList[GetArrayLength(FilesList) - 1] := ExpandConstant(AddBackslash(FolderPath)) + FindRec.Name;
        FileSize[GetArrayLength(FileSize) - 1] := FloatToStrEx(Size64(FindRec.SizeHigh, FindRec.SizeLow));
        Result := Result + 1;
      end;
      if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then
      begin
        if (FindRec.Name <> '.') and (FindRec.Name <> '..') then
          Result := Result + FindFilesEx(AddBackslash(FolderPath) + FindRec.Name, FilesList, FileSize);
      end;
    until not FindNext(FindRec);
    FindClose(FindRec);
  end;
end;

procedure FindFiles(Dir: TAutoString; var FilesFound: Integer);
var
  TotalFilesFound, Y, S: Integer;
  FilesNameList, FileNameSize: array of TAutoString;
begin
  TotalFilesFound := FindFilesEx(ExpandConstant(Dir), FilesNameList, FileNameSize);
  FilesFound := TotalFilesFound;
  for Y := 0 to totalFilesFound - 1 do
  begin
    SetArrayLength(FileList, GetArrayLength(FileList) + 1);
    S := GetArrayLength(FileList) - 1;
    with FileList[S] do
    begin
      FileList[S].FileName := FilesNameList[Y];
      Delete(FileList[S].FileName, Pos(AddBackslash(Dir), FileList[S].FileName), Length(AddBackslash(Dir)));    
      FileList[S].FileSize := FileNameSize[Y];
    end;      
  end;
end;

function InitializeSetup: Boolean;
var
  TotalFilesFound, I: Integer;
  Dir: TAutoString;
begin
  Dir := ExpandConstant('{src}\..');
  FindFiles(Dir, TotalFilesFound);
  for I := 0 to GetArrayLength(FileList) - 1 do
  begin
    msgbox('FileName: ' + FileList[I].FileName + #13#10 + 'FileSize: ' + FileList[I].FileSize + ' bytes', mbInformation, MB_OK);
  end;
  Result := False;
end;
Update(solution):
I found a solution for the above code, which is as follows.
Code:
[Setup]
AppName=FindFiles
AppVerName=FindFiles
CreateAppDir=no
OutputDir=.\OutPut
OutputBaseFilename=FindFiles

[_Code]
type 
  TAutoString = {#defined(UNICODE) ? "Wide" : ""}String;
  TFileList = array of record
    FileName, FileExt, FileSize, FilePath: TAutoString;
  end;

function Size64(const Hi, Lo: Integer): Extended;
begin
  Result := Lo;
  if (Lo < 0) then
    Result := (Result + $7FFFFFFF + $7FFFFFFF + 2);
  for Hi := (Hi - 1) downto 0 do
    Result := (Result + $7FFFFFFF + $7FFFFFFF + 2);
end;

function FloatToStrEx(const value: Extended): TAutoString;
begin
  Result := FloatToStr(value);
  while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
    SetLength(Result, (Length(Result) - 1));
end;

function pFindFiles(const BaseDir, DestDir, FileMask: TAutoString; var OutFileList: TFileList): Integer;
var
  FSR, DSR: TFindRec;
  FindResult: Boolean;
  APath: TAutoString;
  nCount: Integer;
begin
  APath := ExpandConstant(AddBackslash(DestDir));
  FindResult := FindFirst(APath + '*.*', DSR);
  try
    while FindResult do
    begin
      if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then
      begin
        pFindFiles(BaseDir, APath + DSR.Name, FileMask, OutFileList);
      end;
      FindResult := FindNext(DSR);
    end;

    FindResult := FindFirst(APath + FileMask, FSR);

    while FindResult do
    begin
      if (FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0) then
      begin
        SetArrayLength(OutFileList, GetArrayLength(OutFileList) + 1);
        OutFileList[GetArrayLength(OutFileList) - 1].FileName := FSR.Name;        
        OutFileList[GetArrayLength(OutFileList) - 1].FileExt  := ExtractFileExt(FSR.Name);
        OutFileList[GetArrayLength(OutFileList) - 1].FileSize := FloatToStrEx(Size64(FSR.SizeHigh, FSR.SizeLow));
        OutFileList[GetArrayLength(OutFileList) - 1].FilePath := ExtractFilePath(ExtractRelativePath(AddBackslash(BaseDir), APath + FSR.Name));
        nCount := nCount + 1;
      end;
      FindResult := FindNext(FSR);
    end;
  finally
    FindClose(FSR);
    FindClose(DSR);
  end;
  Result := nCount;
end;

function InitializeSetup: Boolean;
var
  TotalFilesFound, I: Integer;
  Dir: TAutoString;
  FileList: TFileList;
  OutList: TAutoString;
begin
  Dir := ExpandConstant('{src}\..');
  TotalFilesFound := pFindFiles(Dir, Dir, '*.*', FileList);
  for I := 0 to GetArrayLength(FileList) - 1 do
  begin
    OutList := OutList + 'FileName: ' + FileList[I].FileName + #13#10 + 'FileSize: ' + FileList[I].FileSize + ' bytes' + #13#10 + 'FileExt: ' + FileList[I].FileExt + #13#10 + 'FilePath: ' + FileList[I].FilePath + #13#10 + #13#10;
  end;
  msgbox(OutList, mbInformation, MB_OK);
  Result := False;
end;
__________________
¤ Life good be a Dream ¤

Last edited by Lord.Freddy; 27-06-2024 at 07:57.
Reply With Quote
  #1568  
Old 11-07-2024, 03:23
demon964 demon964 is offline
Registered User
 
Join Date: Feb 2014
Location: Azerbaijan
Posts: 29
Thanks: 1
Thanked 4 Times in 3 Posts
demon964 is on a distinguished road
Root: "HKLM"; Subkey: "SOFTWARE\Wow6432Node\KONAMI\PES2013"; ValueType: string; ValueName: "installdir"; ValueData: "{app}{#MyAppExeName}"; Flags: uninsdeletekey

I added this code to my script, but it duplicates Wow6432Node the folder in regedit.

It should be: SOFTWARE\Wow6432Node\KONAMI\PES2013

But it shows: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Wow6432Nod e\KONAMI\PES2013
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
INNO TROUBLESHOOT - Tutorials and Answers about INNO Setup REV0 Conversion Tutorials 129 21-05-2021 05:51
INNO TUTORIAL - Using Unicode and ANSI Versions of INNO Setup REV0 Conversion Tutorials 51 26-03-2015 06:57
Frequently Asked Questions Joe Forster/STA PC Games - Frequently Asked Questions 0 29-11-2005 09:48



All times are GMT -7. The time now is 21:07.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Copyright 2000-2020, FileForums @ https://fileforums.com