How to make the silent installation by using Inno Setup?

后端 未结 1 2020
忘掉有多难
忘掉有多难 2020-12-06 11:31

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

相关标签:
1条回答
  • 2020-12-06 12:08

    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;
    
    0 讨论(0)
提交回复
热议问题