【发布时间】:2020-11-29 15:35:48
【问题描述】:
我需要在安装向导过程中为我的应用程序启动静默安装,而无需“下一步”按钮。请任何人帮助我。
【问题讨论】:
标签: inno-setup
我需要在安装向导过程中为我的应用程序启动静默安装,而无需“下一步”按钮。请任何人帮助我。
【问题讨论】:
标签: inno-setup
在静默模式下运行安装程序的正确方法是,并且始终使用/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;
【讨论】: