Go Back   FileForums > Game Backup > PC Games > PC Games - CD/DVD Conversions > Conversion Tutorials
Register FAQ Community Calendar Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 12-10-2023, 01:52
BLACKFIRE69's Avatar
BLACKFIRE69 BLACKFIRE69 is offline
Registered User
 
Join Date: Mar 2019
Location: In the Hell
Posts: 688
Thanks: 481
Thanked 2,547 Times in 561 Posts
BLACKFIRE69 is on a distinguished road
Talking FXPacker v2.0 - A Data Protector for InnoSetup

FXPacker API


Introduction:

FXPacker started as a side project to 'FMXInno', primarily dedicated to safeguarding various data types, such as (graphical content: images, music, text, etc.), used in the installer from unauthorized access.


Changes:

This is Version 2. Let's review the changes it introduces.

Code:
1. Improved speed and reliability compared to previous versions.
   -- Note: This may cause compatibility issues with previous versions.

2. Now supports larger files.
   -- Please ensure that the total size of the files remains below 800 MB. 
      (Total_File_Size * 2 + Extra should be less than 2 GB)

3. Added new events: 
   -- OnProgress, OnDataSaving, OnItemUnpack, OnEncrypt, OnDecrypt.

4. Introduced additional functions.
   -- For a better understanding of how to use these functions, 
      refer to the examples provided in the attachment.

Simple Example:

Code:
Pack:

var
  FXOk: Boolean;
  BufferA: AnsiString;
  BufferW: WideString;
  Count: Cardinal;
  FSize: Integer;
  LPtr: Longint;

begin
  FXOk := FXPckrInit('@#123_Test', ExpandConstant('{src}\MySetup.exe'), False);

  if FXOk then
  begin
    // Img1
    FXPckrAddFile(ExpandConstant('{src}\Files\Img1.png'));
 
    // Img2
    FileSize(ExpandConstant('{src}\Files\Img2.png'), FSize);
    SetLength(BufferA, FSize);
    FXFileToBuffer1A(ExpandConstant('{src}\Files\Img2.png'), BufferA);
    FXPckrAddFromBuffer1A('Img2.png', BufferA);

    // Save
    FXPckrSave(ExpandConstant('{src}\Setup.dat'));
  end;


  { CleanUp }
  FXPckrFree;
end;

Code:
Unpack:

var
  FXOk: Boolean;
  BufferA: AnsiString;
  BufferW: WideString;
  Count: Cardinal;
  FSize: Integer;
  LPtr: Longint;

begin
  FXOk := FXUnPckrInit(ExpandConstant('{src}\Setup.dat'), '@#123_Test');

  if not FXOk then
  begin
    ShowErr('Failed to initialize the setup. The installation process cannot continue.');
  end else
  begin
    // Img1
    FXUnPckrExtract('Img1.png', ExpandConstant('{src}'));

    // Img2
    FSize := FXUnPckrExtractFileSize('Img2.png');
    SetLength(BufferA, FSize);
    FXUnPckrExtractToBuffer1A('Img2.png', BufferA);
  end;


  { CleanUp }
  FXUnPckrFree;
end;

Functions / Methods:

Code:
{ Pckr }
function FXPckrInit(const Password, ExeFile: WideString; DebugMode: Boolean): Boolean;
function FXPckrAddFile(const FileName: WideString): Boolean;
function FXPckrAddFromStream(const DisplayFilename: WideString; Source: TStream): Boolean;
function FXPckrAddFromBuffer1A(const DisplayFilename: WideString; const Buffer: AnsiString): Boolean;
function FXPckrAddFromBuffer1W(const DisplayFilename: WideString; const Buffer: WideString): Boolean;
function FXPckrAddFromBuffer2A(const DisplayFilename: WideString; const Buffer: PAnsiChar; const Count: Cardinal): Boolean;
function FXPckrAddFromBuffer2W(const DisplayFilename: WideString; const Buffer: PWideChar; const Count: Cardinal): Boolean;
function FXPckrAddFromBuffer3AW(const DisplayFilename: WideString; const Buffer: Longint; const Count: Cardinal): Boolean;
procedure FXPckrSave(const DestPackfile: WideString);
procedure FXPckrFree;

{ Unpckr }
function FXUnPckrInit(const PackFile, Password: WideString): Boolean;
function FXUnPckrFileExist(const DisplayFilename: WideString): Boolean;
function FXUnPckrExtract(const DisplayFilename, DestPath: WideString): Boolean;
function FXUnPckrExtractToStream(const DisplayFilename: WideString; Dest: TStream): Boolean;
function FXUnPckrExtractToBuffer1A(const DisplayFilename: WideString; var Buffer: AnsiString): Boolean;
function FXUnPckrExtractToBuffer1W(const DisplayFilename: WideString; var Buffer: WideString): Boolean;
function FXUnPckrExtractToBuffer2A(const DisplayFilename: WideString; const Buffer: PAnsiChar; var Count: Cardinal): Boolean;
function FXUnPckrExtractToBuffer2W(const DisplayFilename: WideString; const Buffer: PWideChar; var Count: Cardinal): Boolean;
function FXUnPckrExtractToBuffer3AW(const DisplayFilename: WideString; const Buffer: Longint; var Count: Cardinal): Boolean;
function FXUnPckrExtractFileSize(const DisplayFilename: WideString): Cardinal;
procedure FXUnPckrFree;
Code:
{ Extra }
function FXBufferToFile1A(const Buffer: AnsiString; const OutFile: WideString): Boolean;
function FXBufferToFile1W(const Buffer: WideString; const OutFile: WideString): Boolean;
function FXBufferToFile2A(const Buffer: PAnsiChar; const Count: Cardinal; const OutFile: WideString): Boolean;
function FXBufferToFile2W(const Buffer: PWideChar; const Count: Cardinal; const OutFile: WideString): Boolean;
function FXBufferToFile3AW(const Buffer: Longint; const Count: Cardinal; const OutFile: WideString): Boolean;

function FXFileToBuffer1A(const FileName: WideString; var Buffer: AnsiString): Boolean;
function FXFileToBuffer1W(const FileName: WideString; var Buffer: WideString): Boolean;
function FXFileToBuffer2A(const FileName: WideString; const Buffer: PAnsiChar; var Count: Cardinal): Boolean;
function FXFileToBuffer2W(const FileName: WideString; const Buffer: PWideChar; var Count: Cardinal): Boolean;
function FXFileToBuffer3AW(const FileName: WideString; const Buffer: Longint; var Count: Cardinal): Boolean;

function FXCastStringToIntegerA(var S: AnsiString): LongInt;
function FXCastStringToIntegerW(var S: WideString): LongInt;
function FXCastIntegerToStringA(const L: LongInt): AnsiString;
function FXCastIntegerToStringW(const L: LongInt): WideString;
function FXAnsiBufferToStr(const ABuffer: AnsiString): WideString;

function FXFreeBufferA(const Buffer: PAnsiChar): Integer;
function FXFreeBufferW(const Buffer: PWideChar): Integer;

{ Events }
procedure FXArchiveOnProgress(Callback: TArchiveOnProg);
procedure FXArchiveOnSaving(Callback: TArchiveOnProg);
procedure FXPackItemOnProgress(Callback: TItemOnProg);
procedure FXUnpackItemOnProgress(Callback: TItemOnProg);
procedure FXEncryptOnProgress(Callback: TCryptOnProg);
procedure FXDecryptOnProgress(Callback: TCryptOnProg);

.
Attached Images
File Type: png 01.png (30.8 KB, 202 views)
File Type: png 00.png (22.7 KB, 203 views)

Last edited by BLACKFIRE69; 08-04-2026 at 13:46. Reason: Added the latest update.
Reply With Quote
The Following 7 Users Say Thank You to BLACKFIRE69 For This Useful Post:
Behnam2018 (13-10-2023), Cesar82 (12-10-2023), hitman797 (12-10-2023), Lord.Freddy (12-10-2023), nordi (02-02-2024), ScOOt3r (12-10-2023), yasserdivar (15-10-2023)
Sponsored Links
 


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
SuperREP (SREP) Full Info! yasitha Conversion Tutorials 26 08-01-2019 18:49
PSX Modchip FAQ Ne0 PSX Games 1 07-08-2009 08:18
QUERY: editing CloneCD images & best for game data & music CDs andwan0 CD/DVD Software & Utilities 2 18-05-2009 18:13
CD/DVD Data Recovery 123walter CD/DVD Software & Utilities 1 05-08-2005 21:53
99min CD-R's, my great experience w/Audio & Data abbadon CD/DVD Recordable Media 10 15-05-2002 23:16



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


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