是否暂停Inno Setup安装



在Inno设置中,我使用以下代码执行另一个设置文件:

[Run]
Filename: "{app}MySetup2.exe"; WorkingDir: "{app}"; Flags: waituntilterminated

此安装文件执行另一个安装文件并自行关闭。但是Inno Setup不等待第二次设置;完成";对话如何暂停安装,直到第二个安装程序关闭?

Inno Setup Exec((函数Wait for a limited time显示如何等待进程。但是如何在安装过程中应用它呢?

我找到了这个问题的解决方案。您需要使用VBScript来运行第一个安装程序,并使其同时等待第一个子安装程序和第二个子安装程序。它运行第一个安装程序并等待它关闭。关闭后,VBScript转到下一个代码,该代码检查第二个子安装程序的进程名称并等待,直到关闭为止。您可以在Inno设置中运行此VBScript。这是您需要保存的VBScript代码,文件扩展名为.vbs

on error resume Next
Set objArgs = Wscript.Arguments
dim strArg0
strArg0 = objArgs(0)
strArg1 = objArgs(1)
Dim FSO, CurrentFolder
Set FSO = CreateObject("Scripting.FileSystemObject")
CurrentFolder = FSO.GetAbsolutePathName(".")
const DontWaitUntilFinished = false, ShowWindow = 1, DontShowWindow = 0, WaitUntilFinished = true
set oShell = WScript.CreateObject("WScript.Shell")
command = strArg0
oShell.Run command, ShowWindow, WaitUntilFinished
'''''''''''''''''''''''''''''''
if strArg1 <> "" then
strProcess = strArg1    
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootcimv2")
Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = '"& strProcess &"'")
Do While colProcesses.Count > 0
Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = '"& strProcess &"'")
Wscript.Sleep(1000) 'Sleep 1 second
Loop
end if

这是您放入Run部分的Inno Setup代码(假设您将VBScript文件保存为MyVBS1.vbs(,

[Run]
Filename: "wscript.exe"; Parameters: """{app}MyVBS1.vbs"" ""{app}MySetup2.exe"" ""MySubSetup.exe"""; Flags: waituntilterminated

wscript.exe

运行Windows脚本主机

{app}\MyVBS1.vbs

VBScript文件的文件位置

{app}\MySetup2.exe

第一个安装程序的文件位置

MySubSetup.exe

第二个安装程序的进程名称。

相关内容

  • 没有找到相关文章

最新更新