【问题标题】:How to make the silent installation by using Inno Setup?如何使用 Inno Setup 进行静默安装?
【发布时间】:2020-11-29 15:35:48
【问题描述】:

我需要在安装向导过程中为我的应用程序启动静默安装,而无需“下一步”按钮。请任何人帮助我。

【问题讨论】:

标签: inno-setup


【解决方案1】:

在静默模式下运行安装程序的正确方法是,并且始终使用/SILENT 命令行参数执行它。比如这样:

setup.exe /SILENT

在我们澄清了您在 cmets 中的要求之后,我看到您实际上想要构建一个设置,它将在没有提到的命令行参数的情况下以静默模式运行。目前,没有内置方法告诉编译器您要构建静默设置,因此我们需要通过在初始化设置时使用/SILENT 命令行参数重新运行设置来解决此问题。

以下脚本显示了此解决方法:

[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;

【讨论】:

  • @Miral,被标记为恶意软件正是我们应得的要求。
  • @TLama。很棒的剧本!我一直想知道怎么可能做到这一点。
猜你喜欢
  • 2020-04-21
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多