FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   FMXInno - Windows Fluent Design Installer UI for Inno (https://fileforums.com/showthread.php?t=104852)

BLACKFIRE69 24-01-2024 19:11

Quote:

Originally Posted by hitman797 (Post 503449)
@BLACKFIRE69, can you add these two events to the form object.
FForm:
Code:

    procedure OnActivate(Event: TNotifyEvent);
    procedure OnDeactivate(Event: TNotifyEvent);




these two events don't get triggered for 'FForm', so nothing will change with these two events, and they'll never get triggered.

BLACKFIRE69 26-01-2024 23:11

FMXInno - Modern FitGirl Installer
 
10 Attachment(s)
Modern FitGirl Installer for Windows 11+



Quote:

How would it look if FitGirl's installer is created in 2024 and specifically targeted Windows 11+?

Let's give a modern look to a classic interface and compare it with modern styles.
Quote:

What's new:

* Nothing new; i just gave a retouch to the classic interface.
Quote:

Notes:

* This is just a concept, not for general use. if you need the complete script with all the features, let me know.
* Remember to change 'Opacity' as you prefer in your case.
Quote:

; Setup: Theme
#define Opacity "0.0" /* Opacity Level: <0.0> to <1.0> */


.

BLACKFIRE69 01-02-2024 12:20

FMXInno v1.0.0.2 - Updates
 
FMXInno Final Release: [2024-Jan-31]




New update uploaded to first post, check it out.



Code:

What's new:

1. Added FMXInno WebView2 custom class.
2. Updated HTML text (updated _HTML-Syntax.txt).
3. Updated ISArcExCleanUp.
4. Added a simple tool (Installer Template Generator).
5. Addressed known issues.
6. Quality fixes and improvements.


1. FMXInno WebView2:

Code:

1. Support for the latest Windows 10 and Windows 11 only.

  -- This requires the WebView2 Runtime package.
  -- Alternatively, download it manually:  Microsoft Edge WebView2

2. Support for HTML 5.

3. FWebview is always on top of all other controls, just like the FVideoPlayer.
  Therefore, it's better to create this on an FCustomFluentWindow in real use.


https://i.ibb.co/FsGLSKk/0r.pnghttps://i.ibb.co/h8q26Ry/00r2.png







2. Installer Template Generator:

Code:

1. A simple tool to generate installer templates.

  - The script will include all the fundamental functions that the installer requires.



.

Tihiy_Don 07-02-2024 08:43

Maybe it will be useful to someone.
Automatically set the unpacking parameters depending on the amount of RAM:

Quote:

function GetRamMemory: Integer;
var i: Integer;
s: String;
begin
s:=MbOrTb(RamInfo.TotalRam, 0);
for i:=length(s) downto 1 do
if not (s[i] in ['0','1','2','3','4','5','6','7','8','9']) then delete(s,i,1);

Result:=StrToInt(s);
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
XValue, LRamValue, LCpuValue, SValue: String;
begin
case GetRamMemory of
0..2:
begin
XValue:= 't4';
SValue:= '512mb';
LRamValue:= '512mb';
LCpuValue:= '4';
end;
3..4:
begin
XValue:= 't4';
SValue:= '768mb';
LRamValue:= '768mb';
LCpuValue:= '4';
end;
5..6:
begin
XValue:= 't45p';
SValue:= '1024mb';
LRamValue:= '1024mb';
LCpuValue:= '4';
end;
7..8:
begin
XValue:= 't65p';
SValue:= '1536mb';
LRamValue:= '1536mb';
LCpuValue:= '4';
end;
9..12:
begin
XValue:= 't75p';
SValue:= '2064mb';
LRamValue:= '2064mb';
LCpuValue:= '4';
end;
13..16:
begin
XValue:= 't85p';
SValue:= '20%';
LRamValue:= '50%';
LCpuValue:= '6';
end;
17..32:
begin
XValue:= 't85p';
SValue:= '40%';
LRamValue:= '40%';
LCpuValue:= '6';
end;
33..150:
begin
XValue:= 't85p';
SValue:= '40%';
LRamValue:= '40%';
LCpuValue:= '6';
end;
end;

if CurStep = ssInstall then
begin
ISArcExCancel:= 0;
ISArcExDiskCount:= 0;
ISArcDiskAddingSuccess:= False;
ISArcExError:= True;

ExtractTemporaryFile('Russian.ini');
ExtractTemporaryFile('unarc.dll');
ExtractTemporaryFile('arc.ini');
ExtractTemporaryFile('cls.ini');
ExtractTemporaryFile('Facompress.dll');

#ifdef xtool_zlib
ExtractTemporaryFile('zlibwapi.dll');
ExtractTemporaryFile('xtool.exe');
if IsWin64 then
begin
SetIniString('External compressor:xtool', 'unpackcmd', ' "xtool" d:precomp:' + XValue + ' - - <stdin> <stdout>', ExpandConstant('{tmp}\arc.ini'));
end else
begin
SetIniString('External compressor:xtool', 'unpackcmd', ' "xtool" d:precomp:' + XValue + ' - - <stdin> <stdout>', ExpandConstant('{tmp}\arc.ini'));
end;
#endif

#ifdef srep
ExtractTemporaryFile('cls-srep.dll');
if IsWin64 then
begin
ExtractTemporaryFile('cls-srep_x64.exe');
SetIniString('Srep', 'Memory', SValue, ExpandConstant('{tmp}\cls.ini'));
end else
begin
ExtractTemporaryFile('cls-srep_x86.exe');
SetIniString('Srep', 'Memory', SValue, ExpandConstant('{tmp}\cls.ini'));
end;
#endif

#ifdef lolz
ExtractTemporaryFile('cls-lolz.dll');
if IsWin64 then
begin
ExtractTemporaryFile('cls-lolz_x64.exe');
SetIniString('lolz', 'MaxThreadsUsage', '4', ExpandConstant('{tmp}\cls.ini'));
SetIniString('lolz', 'MaxMemoryUsage', LRamValue, ExpandConstant('{tmp}\cls.ini'));
end else
begin
ExtractTemporaryFile('cls-lolz_x86.exe');
SetIniString('lolz', 'MaxThreadsUsage', '4', ExpandConstant('{tmp}\cls.ini'));
SetIniString('lolz', 'MaxMemoryUsage', LRamValue, ExpandConstant('{tmp}\cls.ini'));
end;
#endif
....

BLACKFIRE69 08-02-2024 00:11

Quote:

Originally Posted by Tihiy_Don (Post 503554)
Maybe it will be useful to someone.
Automatically set the unpacking parameters depending on the amount of RAM:


Code:

function GetRamMemory: Integer;
var i: Integer;
s: String;
begin
s:=MbOrTb(RamInfo.TotalRam, 0);
for i:=length(s) downto 1 do
if not (s[i] in ['0','1','2','3','4','5','6','7','8','9']) then delete(s,i,1);

Result:=StrToInt(s);
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
XValue, LRamValue, LCpuValue, SValue: String;
begin
case GetRamMemory of
0..2:
begin
XValue:= 't4';
SValue:= '512mb';
LRamValue:= '512mb';
LCpuValue:= '4';
end;
3..4:
begin
XValue:= 't4';
SValue:= '768mb';
LRamValue:= '768mb';
LCpuValue:= '4';
end;

// ....
end;




how about this way? i think it's more convenient.


Code:

procedure _GetMeRAMInGB;
var
  MyRamInGB: Integer;
begin
  // Note:  ARamUsage.TotalRam --> Total RAM in MB.

  MyRamInGB := Round(ARamUsage.TotalRam / 1024)// 0, 1, 2, 3, ....

  case MyRamInGB of
    0..2:
    begin
      MsgBox('RAM: 0..2 GB', mbInformation, MB_OK);
    end;

    3..4:
    begin
      MsgBox('RAM: 3..4 GB', mbInformation, MB_OK);
    end;

    // ....

    else
    begin
      MsgBox('Are you sure you really have RAM installed?  ;)', mbError, MB_OK);
    end;
  end;
end;


Tihiy_Don 08-02-2024 01:58

Quote:

Originally Posted by BLACKFIRE69 (Post 503559)
how about this way? i think it's more convenient.


Code:

procedure _GetMeRAMInGB;
var
  MyRamInGB: Integer;
begin
  // Note:  ARamUsage.TotalRam --> Total RAM in MB.

  MyRamInGB := Round(ARamUsage.TotalRam / 1024)// 0, 1, 2, 3, ....

  case MyRamInGB of
    0..2:
    begin
      MsgBox('RAM: 0..2 GB', mbInformation, MB_OK);
    end;

    3..4:
    begin
      MsgBox('RAM: 3..4 GB', mbInformation, MB_OK);
    end;

    // ....

    else
    begin
      MsgBox('Are you sure you really have RAM installed?  ;)', mbError, MB_OK);
    end;
  end;
end;


It's more convenient, yes. I did this because I thought that it could only be done through the MbOrTb function and asked about it in the FMX Q&A topic, but I never got an answer, so I did and already released a repack on the torrent tracker, the main thing is that it works.

I was not afraid to make it on FMX and release it, I even worked on supporting 32-bit machines.

Tihiy_Don 08-02-2024 01:59

Quote:

Originally Posted by audiofeel (Post 503555)
If it comes to that, then you can do the same with the number of processor cores and with its frequency (where necessary).
Can also implement a comparison of free disk space and, based on the results, place a temporary folder there for unpacking. ;)

I know what can be done with kernels in mind, but it doesn't make sense for my repack.

BLACKFIRE69 12-02-2024 11:13

FMXInno - documentation
 
3 Attachment(s)
FMXInno - documentation




Quote:

* A documentation for FMXInno may arrive someday, but not in the near future. what are your thoughts on this? ;)



.

Ponasss 22-02-2024 06:18

Why does it show so many Trojans?

(че столько троянов показывает?)

Joe Forster/STA 23-02-2024 06:01

Quote:

Originally Posted by Ponasss (Post 503714)
Why does it show so many Trojans?

(This is an English-only forum.) Your virus scanner may be overreacting. I suggest that you upload suspicious files to https://www.virustotal.com, an online multi-engine virus scanner.

BLACKFIRE69 24-02-2024 05:40

FMXInno - Updates
 
1 Attachment(s)
* FMXInno - Updates [2024-Feb-24]


Code:

1. Integrated all updates up to this point.
2. Removed FMXInno's memory (RAM) truncation.
3. Fixed issues with invalid handles and owners.
4. Resolved some memory leaks.
5. Addressed previously encountered issues.
6. Implemented various improvements.
7. Updated all examples to Inno Setup 6.2.2.
8. Compiled with RadStudio 12 Athens + Patch 01.
9. This build is free from false positive trojans.



The first post has been updated; check it out.



.

BLACKFIRE69 26-02-2024 06:44

FMXInno - Final Release: Hotfix_01
 
FMXInno - Final Release: Hotfix_01


* The FMXInno final build includes three main types of FMXInno libs. (yes, i should have mentioned these facts earlier; i really forgot, sorry.)


Code:

1. FMXInno Standard:
  - Contains all FMXInno features.
  - Path1: .\Files\FMXInno.dll
  - Path2: .\FMXInno+FXPacker\Files\FMXInno.dll

2. FMXInno Standard + SKIA:
  - Includes all Standard features and SKIA features.
  - Path: .\SKIA\FMXInno.dll
  - Requires 'sk4d.dll' to be next to 'FMXInno.dll'.

3. FMXInno Standard + Blend2D:
  - Combines Standard features with Blend2D features.
  - Path: .\_Blend2D\Files\FMXInno.dll
  - Requires 'blend2d_win32.dll' to be next to 'FMXInno.dll'.



================================================== =========

* in the latest final release (FMXInno + SKIA + Blend2D - Final Release [2024-Feb-24]), i also forgot the following:

Code:

1. For SKIA:
  a. To replace Firemonkey canvas with SKIA canvas.
  b. To enable GPU Acceleration.

  >> Resulting in the lowest FPS rate and the experience of slow animations and lags.

2. For XBass_F:
  a. To adjust to be compatible with new changes.

  >> Resulting in unexpected behavior and crashes when closing the 'setup.exe'.

3. Additionally, i slightly sped up the Dark-Light mode transition.



thanks to @audiofeel for reporting these bugs.



================================================== =========

* to apply Hotfix_01:

Code:

1. Just replace the old files with the new ones.



.

BLACKFIRE69 27-02-2024 17:30

FMXInno - News
 
FMXInno - News


Quote:

1. just uploaded the FMXInno project to GitHub, but it's not published yet. it'll be available for everyone someday (, or perhaps never). ;)




.

hitman797 01-03-2024 02:29

FMXInno features
 
1 Attachment(s)
HI, @BLACKFIRE69, :o can you add Radiant Shapes to the FMXInno. ;)
  • Radiant Parallelogram.
  • Radiant Hexagon.

Fak Eid 05-03-2024 11:21

Auto Update Directory Space on Directory Edit
 
1 Attachment(s)
Code for Edit Box
Code:

  Page2Edit.FCreate(Page2.Handle);
  Page2Edit.SetBounds(NSSX(100), NSSY(190), NSSX(520), NSSY(35));
  Page2Edit.FontSetting('{#FontName}', VCLFontSizeToFMX2(13), ALGainsBoro);
  Page2Edit.CanFocus(True);
  Page2Edit.Enabled(True);
  Page2Edit.Text(MinimizePathName(WizardForm.DirEdit.Text, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
  Page2Edit.OnTyping(@BrowseEditOnChange);


Logic for procedure
Code:

procedure BrowseEditOnChange(Sender: TObject);
var
  PrevDrive, CurrentDrive: String;
begin
  PrevDrive := ExtractFileDrive(WizardForm.DirEdit.Text);
  CurrentDrive := ExtractFileDrive(Page2Edit.GetText);

  // Set the installation path to the edited text value
  WizardForm.DirEdit.Text := Page2Edit.GetText;

  if PrevDrive <> CurrentDrive then
    DirUpdateProc(nil);
end;

Logic for Directory Update Procedure:
Code:

procedure DirUpdateProc(Sender: TObject);
begin
  DiskUsage.SetDir(WizardForm.DirEdit.Text);
  SelectDirLabel[3].Text('Total Space - ' + MbOrTb(DiskUsage.TotalSpace, 1) + #13 +
                        'Available Space - '+ MbOrTb(DiskUsage.FreeSpace, 1) + #13 +
                        'Repack Size - ' + MbOrTb({#RepackSize}, 1));
  if Round(DiskUsage.FreeSpace) > StrToInt('{#RequiredSpace}') then
  begin
    WizardBtn[4].Enabled(True);  //Install Button enabled if there is space
  end else
  begin
    WizardBtn[4].Enabled(False); //Install Button disabled if no space
    ShowMessage('Not Enough Space', 'Selected Directory does not have required space. Please select a different directory location.');
  end;
end;



All times are GMT -7. The time now is 02:10.

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