Inno setup Inno安装程序-避免显示子安装程序的文件名

Inno setup Inno安装程序-避免显示子安装程序的文件名,inno-setup,Inno Setup,我正在尝试使用来自 唯一可靠的解决方案是使用[files]部分避免安装您不想显示的文件。请改用代码安装它们。使用提取临时文件和文件复制功能 但是我要隐藏的文件在[Run]部分中使用: [Files] Source: "_Redist\DXWebSetup.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall [Run] Filename: "{tmp}\DXWebSetup.exe"; Components: DirectX; StatusMsg:

我正在尝试使用来自

唯一可靠的解决方案是使用[files]部分避免安装您不想显示的文件。请改用代码安装它们。使用
提取临时文件
文件复制
功能

但是我要隐藏的文件在
[Run]
部分中使用:

[Files]
Source: "_Redist\DXWebSetup.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall

[Run]
Filename: "{tmp}\DXWebSetup.exe"; Components: DirectX; StatusMsg: "Installing DirectX..."; \
  BeforeInstall: StartWaitingForDirectXWindow; AfterInstall: StopWaitingForDirectXWindow

如何使用
[Files]
部分、
提取临时文件
文件复制
功能隐藏(安装时,在filenamelab中)?

最简单的方法是放弃标准的
[Files]
部分,在以下位置自行编码:

[文件]
来源:“dxwebsetup.exe”;标志:dontcopy
[守则]
过程CurStepChanged(CurStep:TSetupStep);
变量
ProgressPage:TOutputProgressWizardPage;
结果代码:整数;
开始
如果CurStep=ssInstall,则{或者可能是ssPostInstall}
开始
如果选择了IsComponentSelected('DirectX'),则
开始
ProgressPage:=CreateOutputProgressPage('安装预请求','');
ProgressPage.SetText('安装DirectX…','');
ProgressPage.Show;
尝试
提取临时文件('dxwebsetup.exe');
StartWaitingForDirectXWindow;
Exec(ExpandConstant({tmp}\dxwebsetup.exe'),'','',SW_SHOW,
EWWAIT未过滤,结果代码);
最后
停止等待DirectXWindow;
进行页面隐藏;
结束;
结束;
结束;
结束;

这甚至让您有机会检查子安装程序的结果。例如,当子安装程序失败或被取消时,您可以阻止安装继续进行

这样就更容易使用而不是
CurStepChanged


另一个选项是在提取子安装程序时显示自定义标签。

请参见开始删除所有
ProgressPage
代码。相反,设置
StatusLabel.Caption:=“安装DirectX…”另请参见和[Inno Setup:在[Run]部分执行Pascal函数](Inno Setup:在[Run]部分执行Pascal函数)。请参见。