View Single Post
  #10  
Old 30-04-2024, 11:15
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
Arrow

Quote:
Originally Posted by Tihiy_Don View Post
Good afternoon! Some users, on any systems, have a problem when the installer process hangs in the processes and the form does not open. It occurs extremely rarely, in about 5-10 percent of users. I hope this issue has been fixed in this version. I tried to change different types of forms, the result is the same.


users sometimes report this issue, but until now, i couldn't come up with a better solution.

let's dive a little deeper into this. in FMXInno, all the forms (FluentForm, BlankForm, ImageForm, etc.) are based on a single form called 'TFMXFluentF', which is a modified Firemonkey TForm specifically used for FMXInno. i think this could be the main reason for all of this. So, that's how i came up with this new idea.

i've introduced a new form called 'ClassicForm' into FMXInno. so, what is the 'ClassicForm'? Is it another blank form or something else? actually not, it's an original Firemonkey TForm which is exactly the same as the one Mr. Jiva Newstone used in 'ISFMXFW'.

First of all, let's check out the key differences between FMXInno's TFMXFluentF and ISFMXFW's TForm:

Code:
- FMXInno's TFMXFluentF:
  1. This replaces the WizardForm when creating.
  2. It has more control over this.
  3. It can have Fluent effects on this.

- ISFMXFW's TForm:
  1. This is parented to the WizardForm, nothing is replaced.
  2. It has limited controls.
  3. Fluent effects cannot be used on this.

so, how is the 'Classic' form gonna fix this issue? my idea is to have two modes for the same installer as a backup using 'Classic' forms. to do so, we can use command-line parameters in case the setup is unable to run with the 'TFMXFluentF'. we can easily do that using a batch file, and the following simple example will show you how to do that.


Code:
var
  IsClassicMode: Boolean;

function InitializeSetup(): Boolean;
begin
  IsClassicMode := CmdLineParamExist('/Classic');

  FMXInnoInit;
  Result := True;
end;

procedure InitializeWizard();
begin
  EmptyWizardForm(True, 640, 480);

  // Music ...

  FMXDesigning;
  FMXForm.Show;

  if IsClassicMode then
    pTaskbarPreview(True) // or pTaskbarPreviewEx(WizardForm.Handle, True);
  else
    pTaskbarPreviewEx(FMXForm.HandleHWND, True);
end;

procedure FMXDesigning;
begin
  { FMX Form }
  if IsClassicMode then
    FMXForm.FCreateClassicForm(WizardForm.Handle, ALMoneyGreen, '')
  else
    FMXForm.FCreateFluent(WizardForm.Handle, False, False, 0.56, 0);

  FMXForm.SetCursor(ExtractAndLoad('Dark.cur'));
  ...
end;
Code:
Bat File:

@echo off
cd /d "%~dp0"

start "" "_Setup1.exe" /Classic

in this way, you can try the classic mode if the installer is unable to run with modern forms. (because of the classic form, FMXInno may support old OS like Windows 7. i'm not sure because i don't have any virtual machine or bare metal right now to test it out.)

there're some facts you should notice when using the classic forms:

Code:
1. EmptyWizardForm - the 'Buttons' parameter should always be 'True'.
   eg: EmptyWizardForm(True, 640, 480);

2. pTaskbarPreviewEx - the 'hwnd' parameter should always be 'WizardForm.Handle'.
   eg: pTaskbarPreviewEx(WizardForm.Handle, True);

in the attachment, i've included two examples: a simple example and the Modern FitGirl Installer example with both Normal and Classic modes. run the batch files to see the differences. the following screenshot will show you the Modern FitGirl installer in both normal and classic mode. (remember, classic forms are always borderless rectangle forms, and we cannot control the border style.)

also, the first post has been updated with the new update.


.
Attached Images
File Type: png 0.png (133.5 KB, 196 views)

Last edited by BLACKFIRE69; 11-05-2024 at 08:56.
Reply With Quote
The Following 7 Users Say Thank You to BLACKFIRE69 For This Useful Post:
ADMIRAL (01-05-2024), audiofeel (30-04-2024), Ele (30-04-2024), hitman797 (30-04-2024), Jahan1373 (01-05-2024), ScOOt3r (30-04-2024), Tihiy_Don (01-05-2024)