InnoSetup - Private Edition

BLACKFIRE69

Новичок
Форматирование (BB-код):
Project:      InnoSetup - Private Edition 
Based on:     v6.4.0-dev (latest) 
Changes by:   BLACKFIRE69
Форматирование (BB-код):
  * 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;
Форматирование (BB-код):
   - Casting Type:
    - 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;
 
  - Installation Control:
    - procedure BeginInstallProcPause;
    - procedure EndInstallProcPause;
    - function IsInstallProcPaused: Boolean;
Форматирование (BB-код):
   - 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();
Форматирование (BB-код):
 * Added Classes:
    - TApplication
    - TMemoryStream
    - TResourceStream
    - TImgSlideshow → SlideShow
    - TSplashImage → SplashScreen
    - TSplashImageAnimated → SplashScreenAnimated
    - TWaterRipples → WaterRipples

* Added Class Variables:
    - Application: TApplication
Форматирование (BB-код):
 * 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;
Форматирование (BB-код):
  * 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
  • InnoSetup Private Edition is based on v6.4.0-dev, the latest version available on GitHub.
  • Ensure that the following lines remain in the script to guarantee the use of the Private Edition:
Форматирование (BB-код):
#ifndef IS_PRIVATE_EDITION
  #error InnoSetup 'Private Edition' is required to compile this script
#endif

Setup Directives

1). Cursor

  • The cursor can be applied to specific forms such as `SelectLanguageForm`, `WizardForm`, `SelectFolderForm`, and `NewDiskForm`.
  • Supported cursor file types: `.cur` and `.ani`.
Форматирование (BB-код):
[Setup]
Cursor=.\Cursor\Dark.Ani
2). ResourceFiles and Extracting Files to Buffer
  • The Private Edition allows storing files in resources, encrypting them internally so they cannot be extracted outside the `setup.exe`.
  • Multiple files can be included, separated by the pipe (` | `) symbol.
  • When using the extraction functions, prepend the resource name with ` _IS_ `.
Форматирование (BB-код):
[Setup]
ResourceFiles=Resource1:".\File1.ext"|Resource2:".\File2.ext"
Форматирование (BB-код):
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;
  • Additional Functions:
Форматирование (BB-код):
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;
  • Example: Playing Music from Memory
* Using `ExtractTemporaryFile`:

Форматирование (BB-код):
[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;
* Using `ExtractResourceFile`:

Форматирование (BB-код):
[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;
3. StorePrivateKey
  • The `StorePrivateKey` directive securely stores the encryption key within the setup, preventing exposure of the key in plain text.
  • The key can be retrieved dynamically at runtime using the `GetStoredPrivateKey` function, protecting it from reverse engineering.
Форматирование (BB-код):
[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;
4. StyleFile
  • The `StyleFile` directive allows you to apply a VCL style to various forms during setup.
Форматирование (BB-код):
[Setup]
StyleFile=".\Styles\AquaGraphite.vsf"
5. Other Directives

Форматирование (BB-код):
[Setup]
EnableTaskbarPreview=True
// 0 - 255
AlphaBlendValue=200
Installation Progress Tracking and Controls
  • The Private Edition introduces a new event to track installation progress with elapsed time , remaining time , and percentage progress. It also supports ` Pause `/` Resume ` functionality.
Форматирование (BB-код):
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;
Page Navigation with `JumpToPage`
  • The ` JumpToPage ` method allows you to jump directly to specific pages in the setup process, bypassing validation checks like license acceptance. Use it carefully.
Форматирование (BB-код):
[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;
  • - A new event function, ` InitializeWizardEve `, triggers after ` InitializeWizard ` but before ` WizardForm ` is shown. It can be used to jump to specific pages at startup.
Форматирование (BB-код):
procedure InitializeWizardEve();
begin
  WizardForm.JumpToPage(wpReady);
end;
Special Effects and Graphics

1).TImgSlideshow


Форматирование (BB-код):
[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;
2). TSplashImage and TSplashImageAnimated

Форматирование (BB-код):
[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;
3). TWaterRipples

Форматирование (BB-код):
[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;
Advanced Features

1). Blend On Move


Форматирование (BB-код):
procedure InitializeWizard();
begin
  WizardForm.BlendOnMoveEnable(True);
end;
2). Create Form from BMP

Форматирование (BB-код):
[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;


0.png0a.png0b.png0c.png0d.png0e.png0f.png0g.png01.gif02.gif




 

Cyberworm

Новичок
Вчера немного поковырял эту сборку. Довольно широкий функционал, но не разобрался сразу по нескольким аспектам:

1. Как через ресурс встроить логотип png в левую нижнюю область, чтобы по клику на изображение в браузере открывалось сразу две гиперссылки? Я так понял, что в этой сборке есть возможность реализовать данную функцию. Не хочу использовать стороннюю библиотеку (морально устаревшую) TLogo.
Пример.jpg

2. Как через ресурсы добавить изображения jpg или png с прозрачностью на кастомную страницу? Допустим после клика на большой баннер png в теле новой страницы будет переход по гиперссылке.
procedure CreateTheWizardPages;
var
Page: TWizardPage;
Panel, Panel2,Panel3: TPanel;
StaticText, StaticText2, StaticText3: TNewStaticText;
PicImage4, PicImage5: TImage;
rig_b, rig_vk: String;
За место TImage в этой сборке используются ресурсы или оператор для вывода изображений имеет другое название. В общем нужна помощь.
 

MarsBar

Участник
Вчера немного поковырял эту сборку. Довольно широкий функционал, но не разобрался сразу по нескольким аспектам:

1. Как через ресурс встроить логотип png в левую нижнюю область, чтобы по клику на изображение в браузере открывалось сразу две гиперссылки? Я так понял, что в этой сборке есть возможность реализовать данную функцию. Не хочу использовать стороннюю библиотеку (морально устаревшую) TLogo.

2. Как через ресурсы добавить изображения jpg или png с прозрачностью на кастомную страницу? Допустим после клика на большой баннер png в теле новой страницы будет переход по гиперссылке.
procedure CreateTheWizardPages;
var
Page: TWizardPage;
Panel, Panel2,Panel3: TPanel;
StaticText, StaticText2, StaticText3: TNewStaticText;
PicImage4, PicImage5: TImage;
rig_b, rig_vk: String;
За место TImage в этой сборке используются ресурсы или оператор для вывода изображений имеет другое название. В общем нужна помощь.
Пользуйтесь FMX :))))
 

Cyberworm

Новичок
@BLACKFIRE69 A very good build, but among the examples I could not find a custom page for working with PNG/JPG files + a PNG logo with a link to the URL page. Will you be able to add it in the future, or send an example for demonstration? Thank you very much.
Example.jpg
 

hitman797

Новичок
@BLACKFIRE69 A very good build, but among the examples I could not find a custom page for working with PNG/JPG files + a PNG logo with a link to the URL page. Will you be able to add it in the future, or send an example for demonstration? Thank you very much.
see this library if you use VCL Form.
DLL - ISLogo and GLogo | Форум Krinkels.org

Код:
procedure ImageOnClick(Sender: TObject);
begin
  ShellExecute(0, 'open', 'https://krinkels.org/', nil, nil, SW_SHOWNORMAL);
end;
 
Последнее редактирование:

Andreo Fadio

Ветеран
Я так понял, что в этой сборке есть возможность реализовать данную функцию.
в этой сборке нет такого функционала, чтобы .png и .jpg задействовать. Если только через класс TImgSlideshow - это такая ересь получится...

Вот бы функционала из расширенной inno setup еще добавить, было бы хорошим решением.
 

Leserg

Участник
Всем привет!
Ни у кого нет никаких замечаний в плане применения стилей?
Проверяется очень просто. Берётся пример сценария CodeClasses.iss из стандартной поставки Inno Setup и применяется к нему стиль.
1) Компонент TNewCheckListBox - некорректное отображение фона
VCL_Bug01.png

2) Компонент TFolderTreeView - некорректное отображение скроллбара, а точнее его полное отсутствие. На примере компонента TBevel видно, что если используется свойство Enabled=False, то некорректно проявляется эффект тень, из-за чего текст становится трудно читаемый.
VCL_Bug02.png

В случае вызова окна выбора каталога установки с этим компонентом у этого скроллбара отсутствует стиль.
VCL_Bug04.png

3) Диалог задач - некорректное отображение стиля
VCL_Bug03.png

4) Берем другой стиль. По-моему без слов всё видно.
VCL_Bug09.png

Ок, некоторые баги можно исправить настройкой стиля. Но что проще: просто подключить стиль или настраивать каждый стиль? Хотя, как показывает практика, некоторые стили все же приходится настраивать.

5) Деинсталлятор. Упс.. А здесь и нет никакого стиля. Хотя, возможно так и было задумано автором.
VCL_Bug05.png

Но основная засада при использовании стилей кроется в масштабе (DPI) отличном от 100%. Сам недавно с этим столкнулся. К примеру, установим 125%.

6) При использовании стиля интерфейс диалога с выбором каталога "расползается"
VCL_Bug06.png

Аналогично, если стиль не использовать
VCL_Bug07.png

Но на самом деле программа использует стиль "Windows". И в любом случае необходимо принимать соответствующие меры.

7) Если ещё больше увеличивать DPI, то там наступает полный мрак. Например, DPI=150%
VCL_Bug08.png

Заголовок окна не масштабируется. Чекбоксы и радиобоксы не масштабируются. Малое изображение съезжает в сторону. Под кнопками перехода по страницам появляется пустое поле, которое становится тем больше, чем больше DPI и т.д.

В общем интересная компиляция. Некоторые функции довольно спорные, но если автор их добавил, значит у пользователей был соответствующий запрос.
 

Cyberworm

Новичок
Всем привет!
Ни у кого нет никаких замечаний в плане применения стилей?
Проверяется очень просто. Берётся пример сценария CodeClasses.iss из стандартной поставки Inno Setup и применяется к нему стиль.
1) Компонент TNewCheckListBox - некорректное отображение фона
Посмотреть вложение 9025

2) Компонент TFolderTreeView - некорректное отображение скроллбара, а точнее его полное отсутствие. На примере компонента TBevel видно, что если используется свойство Enabled=False, то некорректно проявляется эффект тень, из-за чего текст становится трудно читаемый.
Посмотреть вложение 9026

В случае вызова окна выбора каталога установки с этим компонентом у этого скроллбара отсутствует стиль.
Посмотреть вложение 9027

3) Диалог задач - некорректное отображение стиля
Посмотреть вложение 9028

4) Берем другой стиль. По-моему без слов всё видно.
Посмотреть вложение 9029

Ок, некоторые баги можно исправить настройкой стиля. Но что проще: просто подключить стиль или настраивать каждый стиль? Хотя, как показывает практика, некоторые стили все же приходится настраивать.

5) Деинсталлятор. Упс.. А здесь и нет никакого стиля. Хотя, возможно так и было задумано автором.
Посмотреть вложение 9030

Но основная засада при использовании стилей кроется в масштабе (DPI) отличном от 100%. Сам недавно с этим столкнулся. К примеру, установим 125%.

6) При использовании стиля интерфейс диалога с выбором каталога "расползается"
Посмотреть вложение 9031

Аналогично, если стиль не использовать
Посмотреть вложение 9032

Но на самом деле программа использует стиль "Windows". И в любом случае необходимо принимать соответствующие меры.

7) Если ещё больше увеличивать DPI, то там наступает полный мрак. Например, DPI=150%
Посмотреть вложение 9033

Заголовок окна не масштабируется. Чекбоксы и радиобоксы не масштабируются. Малое изображение съезжает в сторону. Под кнопками перехода по страницам появляется пустое поле, которое становится тем больше, чем больше DPI и т.д.

В общем интересная компиляция. Некоторые функции довольно спорные, но если автор их добавил, значит у пользователей был соответствующий запрос.
С этим никто и не спорит. Реализация стилей VCL в этой сборке реализована крайне криво и это ещё мягко сказано. Класс ImgSlideshow: TImgSlideshow не дружит с формой стилей VCL. Иначе как объяснить то, что на скриншоте??
Пример.jpg
После отключения стиля VCL нет данного перекоса между элементами на всех страницах в процессе инсталляции.
Помимо этого при активации класса Blend On Move на странице приветствия, да и вообще на любой первой странице появляется кнопка "Назад" для перехода в пустоту. При отключении данного класса установщик работает в штатном режиме и кнопка "Назад" уже не отображается.
Понятное дело, что Private Edition является урезанной технодемкой по части FMXInno, но вышеупомянутые косяки лучше по возможности исправить. Ещё крайне удручает, что нет поддержки JPG/PNG для создания простых баннеров/логотипов на кастомных страницах.
 

Cyberworm

Новичок
see this library if you use VCL Form.
DLL - ISLogo and GLogo | Форум Krinkels.org

Код:
procedure ImageOnClick(Sender: TObject);
begin
  ShellExecute(0, 'open', 'https://krinkels.org/', nil, nil, SW_SHOWNORMAL);
end;
С логотипом всё понятно, а как с помощью этого плагина разместить в середине кастомной страницы Page := CreateCustomPage допустим wpInfoAfter два больших баннера?
 

BLACKFIRE69

Новичок
Upcoming InnoSetup Private Edition - v1.8 Update


Форматирование (BB-код):
1. Updated InnoSetup version to the latest available on GitHub.

2. Added built-in Botva2-like components/classes:

* Ability to use Botva2-like implementations without any third-party DLL.

   A.  TImgButton (with CheckBox) 
   B.  TImgProgressbar   
   C.  TImgTrackbar
Форматирование (BB-код):
[Code}
var
  ImgBtn: TImgButton;
  ImgPB:TImgProgressbar;
  ImgTrackBar: TImgTrackBar;

procedure InitializeWizard();
begin
  ImgBtn := TImgButton.Create(WizardForm, ExtractAndLoad('Button.png'));
  ImgBtn.SetBounds(252, 384, 120, 50);
  ImgBtn.Text('< &Back');
  ImgBtn.OnClick(@CommonOnClick);

  ImgPB := TImgProgressbar.Create(WizardForm, ExtractAndLoad('pb3.png'), ExtractAndLoad('pbbkg3.png'), False);
  ImgPB.Value(0, 100);

  ImgTrackBar:TImgTrackbar.Create(WizardForm, ExtractAndLoad( 'trackbar_bkg.png' ), ExtractAndLoad('trackbar_btn.png'));
  ImgTrackBar.SetBounds(20, 403, 150, 10);
  ImgTrackBar.BtnOffset(393, 18, 33);
  ImgTrackBar.SetValue(69);
end;

a0.png



Форматирование (BB-код):
3. Added Any Image support (TAnyImage)

* Ability to draw any image format (.bmp, .jpg, .png, .gif, .webp, .svg, etc.) in InnoSetup.
  
* More image manipulations will be available in the future, including:
  - Hue and Saturation adjustments
  - BlendToMask, BlendToAlpha,  BlendToDark,   BlendToLight
  - Draw Shadow, Glow
  - Tile images
  - Sharpen
  - Cropping
  - Rotate
  - Reduce colors
  - Grayscale, Invert Colors
  
* Currently, images are detected by their file extensions.
  - In IS-PE v2.0, a better detection method will be implemented.

* Support for image layers:
  - TAnyImageImgLyr : Image Layer (for overlaying images)
  - TAnyImageBlurLyr : Blur Layer (Linear, Radial, Custom Shape, etc.)
  -  Hue and Saturation layers  will be added in the future.
Форматирование (BB-код):
 [Code}
var
  Img: TAnyImage;
  ImgBlur: TAnyImageBlurLyr;
  ImgLogo: TAnyImageImgLyr

procedure  InitializeWizard ();
begin
  Img := TAnyImage.Create(WizardForm);
  Img.SetBounds(382, 110, 230, 300);
  // Img.LoadImageEx(ExtractAndLoad('base.dat'), IS_IMG_PNG);
  Img.LoadImage(ExtractAndLoad('base.png'));
  Img.Stretch(True);

  ImgBlur := Img.AddGaussinaBlurLayer;
  ImgBlur.Amount(20); // 0-100
  ImgBlur.AutoSize(True);

  ImgLogo := Img.AddImageLayer;
  ImgLogo.SetBounds(15, 100, 200, 200);
  ImgLogo.LoadImage(ExtractAndLoad ('base.png'));
  ImgLogo.Stretch(True);
  ImgLogo.BringToFront;
end;

a1.png

a2.png

a3.gif


Форматирование (BB-код):
4. Enhanced Auto-Completion:

* Currently in beta stage.
* This feature will be improved in the next major update.

a4.png

Форматирование (BB-код):
5. Added built-in Audio/Video classes:

   A. TVideoPlay (supports .avi, .mp4 formats) 
   B. TAudioPlay (supports .mp3, .ogg, ...)

6. Added ability to load DLLs from memory:

* No need to extract third-party DLLs to the HDD.
* DLLs can be extracted into memory and functions can be called directly from there.

7. Added support for modern Delphi classes/functions.

8. Features on request:

* Individual users can request specific features to be included.

   A. Built-in support for `UnArc.dll` or `TISArcEx` 
   B. Built-in support for `CmdOut.dll` or `TCmdOut` 
   C. Built-in support for  `XHashEx.dll`  or  `TXHashEx`

Notice:

Форматирование (BB-код):
1. This update WILL NOT be available to the public.

- The update will only be provided to users who requested it and can give credit for my effort.
- You are not allowed to share your IS-PE update with others. Doing so will result in being permanently banned from receiving future updates.

2. The update is not yet finalized.

- If you have suggestions or feature requests, feel free to drop a comment.

3. Update delay.
  
- I'm currently busy with my job, so updates may not be released quickly.
- I'll notify you when the updates are ready.

4. Future improvements in IS-PE v2.0:
  
- The new features will be further improved and optimized in the next major update, IS-PE v2.0.
 

hitman797

Новичок
Upcoming InnoSetup Private Edition - v1.8 Update


Форматирование (BB-код):
1. Updated InnoSetup version to the latest available on GitHub.

2. Added built-in Botva2-like components/classes:

* Ability to use Botva2-like implementations without any third-party DLL.

   A.  TImgButton (with CheckBox)
   B.  TImgProgressbar  
   C.  TImgTrackbar
Форматирование (BB-код):
[Code}
var
  ImgBtn: TImgButton;
  ImgPB:TImgProgressbar;
  ImgTrackBar: TImgTrackBar;

procedure InitializeWizard();
begin
  ImgBtn := TImgButton.Create(WizardForm, ExtractAndLoad('Button.png'));
  ImgBtn.SetBounds(252, 384, 120, 50);
  ImgBtn.Text('< &Back');
  ImgBtn.OnClick(@CommonOnClick);

  ImgPB := TImgProgressbar.Create(WizardForm, ExtractAndLoad('pb3.png'), ExtractAndLoad('pbbkg3.png'), False);
  ImgPB.Value(0, 100);

  ImgTrackBar:TImgTrackbar.Create(WizardForm, ExtractAndLoad( 'trackbar_bkg.png' ), ExtractAndLoad('trackbar_btn.png'));
  ImgTrackBar.SetBounds(20, 403, 150, 10);
  ImgTrackBar.BtnOffset(393, 18, 33);
  ImgTrackBar.SetValue(69);
end;

Посмотреть вложение 9078



Форматирование (BB-код):
3. Added Any Image support (TAnyImage)

* Ability to draw any image format (.bmp, .jpg, .png, .gif, .webp, .svg, etc.) in InnoSetup.
 
* More image manipulations will be available in the future, including:
  - Hue and Saturation adjustments
  - BlendToMask, BlendToAlpha,  BlendToDark,   BlendToLight
  - Draw Shadow, Glow
  - Tile images
  - Sharpen
  - Cropping
  - Rotate
  - Reduce colors
  - Grayscale, Invert Colors
 
* Currently, images are detected by their file extensions.
  - In IS-PE v2.0, a better detection method will be implemented.

* Support for image layers:
  - TAnyImageImgLyr : Image Layer (for overlaying images)
  - TAnyImageBlurLyr : Blur Layer (Linear, Radial, Custom Shape, etc.)
  -  Hue and Saturation layers  will be added in the future.
Форматирование (BB-код):
 [Code}
var
  Img: TAnyImage;
  ImgBlur: TAnyImageBlurLyr;
  ImgLogo: TAnyImageImgLyr

procedure  InitializeWizard ();
begin
  Img := TAnyImage.Create(WizardForm);
  Img.SetBounds(382, 110, 230, 300);
  // Img.LoadImageEx(ExtractAndLoad('base.dat'), IS_IMG_PNG);
  Img.LoadImage(ExtractAndLoad('base.png'));
  Img.Stretch(True);

  ImgBlur := Img.AddGaussinaBlurLayer;
  ImgBlur.Amount(20); // 0-100
  ImgBlur.AutoSize(True);

  ImgLogo := Img.AddImageLayer;
  ImgLogo.SetBounds(15, 100, 200, 200);
  ImgLogo.LoadImage(ExtractAndLoad ('base.png'));
  ImgLogo.Stretch(True);
  ImgLogo.BringToFront;
end;

Посмотреть вложение 9079

Посмотреть вложение 9080

Посмотреть вложение 9081


Форматирование (BB-код):
4. Enhanced Auto-Completion:

* Currently in beta stage.
* This feature will be improved in the next major update.

Посмотреть вложение 9082

Форматирование (BB-код):
5. Added built-in Audio/Video classes:

   A. TVideoPlay (supports .avi, .mp4 formats)
   B. TAudioPlay (supports .mp3, .ogg, ...)

6. Added ability to load DLLs from memory:

* No need to extract third-party DLLs to the HDD.
* DLLs can be extracted into memory and functions can be called directly from there.

7. Added support for modern Delphi classes/functions.

8. Features on request:

* Individual users can request specific features to be included.

   A. Built-in support for `UnArc.dll` or `TISArcEx`
   B. Built-in support for `CmdOut.dll` or `TCmdOut`
   C. Built-in support for  `XHashEx.dll`  or  `TXHashEx`

Notice:

Форматирование (BB-код):
1. This update WILL NOT be available to the public.

- The update will only be provided to users who requested it and can give credit for my effort.
- You are not allowed to share your IS-PE update with others. Doing so will result in being permanently banned from receiving future updates.

2. The update is not yet finalized.

- If you have suggestions or feature requests, feel free to drop a comment.

3. Update delay.
 
- I'm currently busy with my job, so updates may not be released quickly.
- I'll notify you when the updates are ready.

4. Future improvements in IS-PE v2.0:
 
- The new features will be further improved and optimized in the next major update, IS-PE v2.0.
welcome back the community misses you. :hi:
 

Cyberworm

Новичок
Ох уж эта монетизация...
На этом месте можно поподробнее... Допустим я могу использовать сборку IS-PE 1.8 исключительно в личных целях, а если будет коммерческое использование, то в таком случае уже требуется занести на кассу автору модификации. Иначе можно попасть в санкционный список, хотя я может что-то не так понял.
 

Andreo Fadio

Ветеран
@Cyberworm, вам показали что будет в обновлении, но само обновление:
Это обновление НЕ БУДЕТ доступно для общественности.
Лично пишите автору и покупайте версию для своего пользования, не делясь в последствии ни с кем другим, иначе он вас занесет в черный список и улучшений/исправлений вы не увидите. И не важно как вы используете для себя собираете или за деньги.
 
Сверху