Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make the silent installation by using Inno Setup?

Tags:

inno-setup

I need to start the silent installation for my application without Next buttons in the installation wizard process. Please any one help me.

enter image description here

like image 312
satheesh Avatar asked Feb 05 '14 10:02

satheesh


People also ask

How do I use Inno installer?

Go to Menu, Project, then Compile to compile and create the setup file. This will create a complete installer. Run the Setup and your application will be installed correctly. Innosetup offers an awesome alternative to create great looking Installers for free.


1 Answers

Proper way to run the setup in silent mode is, and always be executing it with /SILENT command line parameter. For instance this way:

setup.exe /SILENT

After we clarified your requirement in comments I see, that you actually want to build a setup, which will run in silent mode without the mentioned command line parameter. Currently, there's no built-in way to tell the compiler, that you want to build a silent setup, so we need to workaround this by re-running the setup with the /SILENT command line parameter when the setup is being initialized.

The following script shows this workaround:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif
type
  HINSTANCE = THandle;

function ShellExecute(hwnd: HWND; lpOperation: string; lpFile: string;
  lpParameters: string; lpDirectory: string; nShowCmd: Integer): HINSTANCE;
  external 'ShellExecute{#AW}@shell32.dll stdcall';

function InitializeSetup: Boolean;
begin
  // if this instance of the setup is not silent which is by running
  // setup binary without /SILENT parameter, stop the initialization
  Result := WizardSilent;
  // if this instance is not silent, then...
  if not Result then
  begin
    // re-run the setup with /SILENT parameter; because executing of
    // the setup loader is not possible with ShellExec function, we
    // need to use a WinAPI workaround
    if ShellExecute(0, '', ExpandConstant('{srcexe}'), '/SILENT', '',
      SW_SHOW) <= 32
    then
      // if re-running this setup to silent mode failed, let's allow
      // this non-silent setup to be run
      Result := True;
  end;
end;
like image 61
TLama Avatar answered Oct 12 '22 22:10

TLama