|
#1
|
||||
|
||||
|
Code:
Project: InnoSetup - Private Edition Based on: v6.4.0-dev (latest) Changes by: BLACKFIRE69 What's New: Code:
* Added Setup Directives:
- Cursor
- ResourceFiles
- StorePrivateKey
- StyleFile
- EnableTaskbarPreview
- AlphaBlendValue
* Added Script Functions:
- File Extraction:
- procedure ExtractTemporaryFileEx(const BaseName: String; const DestDir: string);
- function ExtractTemporaryFilesEx(const Pattern: String; const DestDir: string): Integer;
- function ExtractTemporaryFileSize(const BaseName: String): Cardinal;
- function ExtractTemporaryFileToBuffer(const BaseName: String; Buffer: Integer): Boolean;
- function ExtractTemporaryFileToStream(const BaseName: String; const Stream: TStream): Boolean;
- function ExtractResourceFile(const ResourceName: string; const OutFile: String): Boolean;
- function ExtractResourceFileSize(const ResourceName: String): Cardinal;
- function ExtractResourceFileToBuffer(const ResourceName: String; Buffer: Integer): Boolean;
- function ExtractResourceFileToStream(const ResourceName: String; const Stream: TStream): Boolean;
- Type Casting:
- function CastAnsiStringToInteger(var S: AnsiString): LongInt;
- function CastIntegerToAnsiString(const L: LongInt): AnsiString;
- function wBufferToFile(const Buffer: Integer; const Count: Cardinal; const OutFile: WideString): Boolean;
- Private Key Handling:
- function GetStoredPrivateKey(const TheRealKey: Boolean): String;
Code:
- Installation Control:
- procedure BeginInstallProcPause;
- procedure EndInstallProcPause;
- function IsInstallProcPaused: Boolean;
- Audio Playback:
- function PlayWavFile1(const WavFileName: WideString): Boolean;
- function PlayWavFile2(const WavFileName: WideString; Flags: Cardinal): Boolean;
- function PlayWavFile3(const WavFileName: WideString; Handle, Flags: Cardinal): Boolean;
- System Icon Retrieval:
- function wGetSysDefaultIcons(const Src: WideString; SHLIcoSize: Cardinal; const Buffer: Integer; var Count: Cardinal): Integer;
- function wGetSysDefaultIcons2(const Src, OutImgFile: WideString; SHLIcoSize: Cardinal): Boolean;
- function wGetSysDefaultIconsSize(const Src: WideString; SHLIcoSize: Cardinal): Integer;
- function wGetSysDefaultIconsFromResLib(const AModule: WideString; AIndex, RISIcoSize: Cardinal; const Buffer: Integer; var Count: Cardinal): Integer;
- function wGetSysDefaultIconsFromResLib2(const AModule, AOutFile: WideString; AIndex, RISIcoSize: Cardinal): Boolean;
- function wGetSysDefaultIconsSizeFromResLib(const AModule: WideString; AIndex, RISIcoSize: Cardinal): Integer;
* Added Setup Event Functions:
- procedure CurInstallProgressChangedEx(CurProgress, MaxProgress, iPercentage: Integer; sElapsed, sRemaining: String);
- procedure InitializeWizardEve();
Code:
* Added Classes:
- TApplication
- TMemoryStream
- TResourceStream
- TImgSlideshow → SlideShow
- TSplashImage → SplashScreen
- TSplashImageAnimated → SplashScreenAnimated
- TWaterRipples → WaterRipples
* Added Class Variables:
- Application: TApplication
* Added Properties and Functions:
- WizardForm:
- WizardForm.AlphaBlendValue: Byte;
- WizardForm.DoubleBuffered: Boolean;
- WizardForm.BlendOnMoveEnable(const AllowOnDeactive: Boolean);
- WizardForm.BlendOnMovePause(const Paused: Boolean);
- WizardForm.BlendOnMoveOpacity(const AlphaValue: Byte);
- WizardForm.BlendOnMoveIsPaused: Boolean;
- WizardForm.CreateRgn(const sMaskBmp: WideString; iTrRGBColor: Integer): Integer;
- WizardForm.CreateRgnFromBuffer(const Buffer: PAnsiChar; const Count: Cardinal; iTrRGBColor: Integer): Integer;
- WizardForm.CreateFormFromBmp(const sBmpFile: WideString; bACPremultiplied, bDraggableForm: Boolean; iOpacityPct: Byte): Integer;
- WizardForm.CreateFormFromBmpBuffer(const Buffer: PAnsiChar; const Count: Cardinal; bACPremultiplied, bDraggableForm: Boolean; iOpacityPct: Byte): Integer;
- WizardForm.JumpToPage(const NewPageID: Integer);
- UninstallProgressForm:
- UninstallProgressForm.DoubleBuffered: Boolean;
Code:
* Added Preprocessor (ISPP) Predefined Variable:
- IS_PRIVATE_EDITION
* New Built-in Support for Partially Encrypted Scripts:
- Ability to encrypt portions of the code for sharing scripts,
while leaving the rest as plain text.
- I already explained what partially encrypted scripts mean here.
* Changes:
- IDE:
- Minor syntax highlighting adjustments.
* All the changes in the Private Edition are documented, so you can easily find help. InnoSetup - Private Edition Documentation
Code:
#ifndef IS_PRIVATE_EDITION #error InnoSetup 'Private Edition' is required to compile this script #endif 1). Cursor
Code:
[Setup] Cursor=.\Cursor\Dark.Ani
Code:
function ExtractResourceFile(const ResourceName: string; const OutFile: string): Boolean; function ExtractResourceFileSize(const ResourceName: string): Cardinal; function ExtractResourceFileToBuffer(const ResourceName: string; Buffer: Integer): Boolean; function ExtractResourceFileToStream(const BaseName: string; const Stream: TStream): Boolean; Code:
[Setup] ResourceFiles=Resource1:".\File1.ext"|Resource2:".\File2.ext"
Code:
procedure ExtractTemporaryFileEx(const BaseName: string; const DestDir: string); function ExtractTemporaryFilesEx(const Pattern: string; const DestDir: string): Integer; function ExtractTemporaryFileSize(const BaseName: string): Cardinal; function ExtractTemporaryFileToBuffer(const BaseName: string; Buffer: Integer): Boolean; function ExtractTemporaryFileToStream(const BaseName: string; const Stream: TStream): Boolean;
* Using `ExtractTemporaryFile`: Code:
[Files]
Source: ".\XBass\{#MusicFileOnly}"; DestDir: {tmp}; Flags: dontcopy;
[Code}
procedure InitializeWizard();
var
Buffer: AnsiString;
Count: Cardinal;
begin
Count := ExtractTemporaryFileSize('{#MusicFileOnly}');
SetLength(Buffer, Count);
ExtractTemporaryFileToBuffer('{#MusicFileOnly}', CastAnsiStringToInteger(Buffer));
if not xbassCreateFromMem(WizardForm.Handle,
Buffer, Count, C_XBASS_OGG,
1, True, @MusicCallback) then
MsgBox('XBass - error(s) occured while creating.', mbError, MB_OK);
SetLength(Buffer, 0);
end;
Code:
[Setup]
ResourceFiles=MusicX:".\XBass\{#MusicFileOnly}"
[Code}
procedure InitializeWizard();
var
Buffer: AnsiString;
Count: Cardinal;
begin
// InnoSetup-Private: ( Don't forget the prefix: "_IS_" )
Count := ExtractResourceFileSize('_IS_MUSICX');
SetLength(Buffer, Count);
ExtractResourceFileToBuffer('_IS_MUSICX', CastAnsiStringToInteger(Buffer));
if not xbassCreateFromMem(WizardForm.Handle,
Buffer, Count, C_XBASS_OGG,
1, True, @MusicCallback) then
MsgBox('XBass - error(s) occured while creating.', mbError, MB_OK);
SetLength(Buffer, 0);
end;
Code:
[Setup]
// Encryption
Encryption=True
Password=HelloPwd_123
StorePrivateKey=HelloPwd_123
//
[Code}
var
IsPwdPg: Boolean;
// function GetStoredPrivateKey(const TheRealKey: Boolean): String;
// - TheRealKey: If False, the function returns garbage instead of real key.
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
begin
IsPwdPg := True;
WizardForm.PasswordEdit.Text := GetStoredPrivateKey(IsPwdPg);
end else
begin
IsPwdPg := False;
WizardForm.PasswordEdit.Text := 'wrng_pwd';
end;
end;
Code:
[Setup] StyleFile=".\Styles\AquaGraphite.vsf" Code:
[Setup] EnableTaskbarPreview=True // 0 - 255 AlphaBlendValue=200
Code:
procedure CurInstallProgressChangedEx(CurProgress, MaxProgress, iPercentage: Integer; sElapsed, sRemaining: String); begin WzdProgressLbs[1].Vl.Caption := IntToStr(iPercentage) + '%'; WzdProgressLbs[2].Vl.Caption := sElapsed; WzdProgressLbs[3].Vl.Caption := sRemaining; WzdProgressLbs[4].Vl.Caption := sElapsed; end;
Code:
[Code}
var
Btn: array [1..2] of TNewButton;
procedure CommonBtnOnClick(Sender: TObject);
begin
case Sender of
Btn[1] : WizardForm.JumpToPage(wpWelcome);
Btn[2] : WizardForm.JumpToPage(wpReady);
end;
end;
Code:
procedure InitializeWizardEve(); begin WizardForm.JumpToPage(wpReady); end; 1). TImgSlideshow Code:
[Files]
Source: ".\Wallpapers\*.jpg"; DestDir: "{tmp}"; Flags: dontcopy;
[Code}
var
ImgSlideshow: TImgSlideshow;
procedure InitializeWizard();
var
sFile: String;
ImgEffectsArray: TIntEffectArray;
Buffer: AnsiString;
i, Count: Cardinal;
begin
SetLength(ImgEffectsArray, 3);
ImgEffectsArray[0] := IMG_ANIM_RANDOM_SQUARES_APPEAR;
ImgEffectsArray[1] := IMG_ANIM_SPECKLE_APPEAR_FROM_LEFT;
ImgEffectsArray[2] := IMG_ANIM_SPIRAL_RECTANGLE;
ImgSlideshow := TImgSlideshow.Create(WizardForm, IMG_ANIM_DIAGONAL_BOX_OUT);
ImgSlideshow.SetBounds(0, 0, WizardForm.Width + ScaleX(85), ScaleY(269));
ImgSlideshow.PlayCustom(ImgEffectsArray, False);
ImgSlideshow.Interval(1000, 50, 5);
for i:= 1 to 5 do
begin
sFile := 'wallpapers' + IntToStr(i) + '.jpg';
Count := ExtractTemporaryFileSize(sFile);
SetLength(Buffer, Count);
ExtractTemporaryFileToBuffer(sFile, CastAnsiStringToInteger(Buffer));
ImgSlideshow.AddImageFromBuffer(Buffer, Count);
SetLength(Buffer, 0);
Count := 0;
end;
ImgSlideshow.Start(True);
end;
Code:
[Setup]
ResourceFiles=SplshImg:".\Splash\Splash.png"|SplshWav:".\Splash\Splash.wav"
[Code}
var
SplashScreen: TSplashImage;
procedure InitializeWizard();
var
Buffer1, Buffer2: AnsiString;
Count1, Count2: Cardinal;
begin
// Image
Count1 := ExtractResourceFileSize('_IS_SplshImg');
SetLength(Buffer1, Count1);
ExtractResourceFileToBuffer('_IS_SplshImg', CastAnsiStringToInteger(Buffer1));
// Sound
Count2 := ExtractResourceFileSize('_IS_SplshWav');
SetLength(Buffer2, Count2);
ExtractResourceFileToBuffer('_IS_SplshWav', CastAnsiStringToInteger(Buffer2));
SplashScreen := TSplashImage.CreateFromBuffer(WizardForm, Buffer1, Count1, Buffer2, Count2, 1500);
SplashScreen.Play;
// Freeup
SetLength(Buffer1, 0);
SetLength(Buffer2, 0);
end;
Code:
[Setup]
ResourceFiles=Img1:".\WaterRipple\Img.bmp"
[Code}
var
WaterRipples: TWaterRipples;
procedure InitializeWizard();
var
Buffer: AnsiString;
Count: Cardinal;
begin
WizardForm.DoubleBuffered := True;
Count := ExtractResourceFileSize('_IS_Img1');
SetLength(Buffer, Count);
ExtractResourceFileToBuffer('_IS_Img1', CastAnsiStringToInteger(Buffer));
WaterRipples := TWaterRipples.CreateFromBuffer(WizardForm, 0, 0,
WizardForm.Width + ScaleX(85), ScaleY(269), Buffer, Count);
if not WaterRipples.IsStarted then
WaterRipples.Start;
if not WaterRipples.IsRaining then
WaterRipples.StartRainDrops;
SetLength(Buffer, 0);
end;
1). Blend OnMove Code:
procedure InitializeWizard(); begin WizardForm.BlendOnMoveEnable(True); end; Code:
[Files]
Source: ".\MaskImg\*.bmp"; DestDir: {tmp}; Flags: dontcopy;
[Code}
procedure InitializeWizard();
var
Buffer: AnsiString;
Count: Cardinal;
begin
{ Custom Shape }
// Rgn
Count := ExtractTemporaryFileSize('mask.bmp');
SetLength(Buffer, Count);
ExtractTemporaryFileToBuffer('mask.bmp', CastAnsiStringToInteger(Buffer));
WizardForm.CreateRgnFromBuffer(Buffer, Count, clBlack);
SetLength(Buffer, 0);
// Form
Count := ExtractTemporaryFileSize('base.bmp');
SetLength(Buffer, Count);
ExtractTemporaryFileToBuffer('base.bmp', CastAnsiStringToInteger(Buffer));
WizardForm.CreateFormFromBmpBuffer(Buffer, Count, False, True, 100);
SetLength(Buffer, 0);
end;
. |
| The Following 15 Users Say Thank You to BLACKFIRE69 For This Useful Post: | ||
Aschenputtell (22-03-2025), audiofeel (19-09-2024), Behnam2018 (28-09-2024), Carldric Clement (24-11-2025), Cesar82 (13-09-2024), Ele (17-09-2024), hitman797 (24-09-2024), Jawahir95 (31-08-2025), Lord.Freddy (13-09-2024), mausschieber (13-09-2024), nordi (25-10-2024), ScOOt3r (13-09-2024), shazzla (14-09-2024), Valtus (14-09-2024), Wanterlude (25-04-2025) | ||
| Sponsored Links |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Best Compression Methods for 'Specific' Games INDEX | JustFun | Conversion Tutorials | 58 | 30-03-2026 18:03 |
| INDEX - CD2DVD Conversion Index **UPDATED: 17-07-2024** | Grumpy | PC Games - CD/DVD Conversions | 252 | 16-07-2024 20:35 |
| Fallout Nv Ultimate Edition 3xDVD9 to 2xDVD5 InnoSetup 1 LANGUAGE | THADEADMAN2011 | PC Games - CD/DVD Conversions | 9 | 04-09-2022 05:40 |