#1
|
||||
|
||||
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); . Last edited by BLACKFIRE69; 14-10-2023 at 23:26. Reason: Added the latest update. |
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 |
#2
|
||||
|
||||
Update
Code:
* Added missing event 'FXPackItemOnProgress'. -- procedure FXPackItemOnProgress(Callback: TItemOnProg); |
The Following 4 Users Say Thank You to BLACKFIRE69 For This Useful Post: | ||
#3
|
||||
|
||||
Optional Update
Optional Update:
Code:
* Included FastMM for improved memory management. -- FastMM - Github * Reduced the file size for enhanced performance and efficiency. -- 211kb >> 139kb Last edited by BLACKFIRE69; 14-10-2023 at 23:23. |
The Following 4 Users Say Thank You to BLACKFIRE69 For This Useful Post: | ||
#4
|
||||
|
||||
FXPackerApi - Updates
Updates available! - [2023-Oct-15]
Code:
FXPackerApi v2.0: * Now supports threading. -- It'll no longer affect the main thread of the client app (setup.exe) and will run in its own thread, preventing client app freezing. * Added a new function. -- function FXGetItemFileName(const Item: Longint): WideString; FXPacker GUI v2.0: * Updated to FXPackerApi v2.0. * Added the ability to include entire directories, including subdirectories. * Now you can remove multiple items at once. * Added a feature to prevent adding duplicate items. . |
The Following 4 Users Say Thank You to BLACKFIRE69 For This Useful Post: | ||
#5
|
||||
|
||||
@BLACKFIRE69, Thank you very much for the updates.
Maybe you can include an additional function... function FXPckrAddFileList(const FileList: WideString): Boolean; Usage like this: Code:
StrList := TStringList.Create; try StrList.LoadFromFile(ExpandConatant('{src}\FileList.txt')); FXPckrAddFileList(StrList.Text); finally StrList.Free; end; To do this, use the character "|" as an option to inform the destination path in the internal structure of Data.dat. If "|" does not exist, add as a file without a subfolder in the internal structure of the items. Code:
FXPckrAddFile('C:\my_test\filetest.txt|my_test\file_name.txt'); Thanks! |
The Following User Says Thank You to Cesar82 For This Useful Post: | ||
hitman797 (15-10-2023) |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
SuperREP (SREP) Full Info! | yasitha | Conversion Tutorials | 26 | 08-01-2019 19:49 |
PSX Modchip FAQ | Ne0 | PSX Games | 1 | 07-08-2009 09:18 |
QUERY: editing CloneCD images & best for game data & music CDs | andwan0 | CD/DVD Software & Utilities | 2 | 18-05-2009 19:13 |
CD/DVD Data Recovery | 123walter | CD/DVD Software & Utilities | 1 | 05-08-2005 22:53 |
99min CD-R's, my great experience w/Audio & Data | abbadon | CD/DVD Recordable Media | 10 | 16-05-2002 00:16 |