Alternatively is it possible to manually update the built in progress bar? Basically I have 2 MSIs included and using Inno Setup as a bootstrapper, and depending on user input one or both of the MSIs are to be installed. I have something working using Exec statements in CurStepChanged but it doesn’t update the progress bar as the files are extracted and it looks like the installer is stalled. I guess the end result is I want some progress bar updates while the files are extracted to the temp folder. The following is my current code:
procedure CurStepChanged(CurStep: TSetupStep); var ResultCode: Integer; begin if(CurStep = ssInstall) then begin if(InstallServer) then begin ExtractTemporaryFile('ServerSetup.msi'); Exec('msiexec',ExpandConstant('/i '{tmp}\ServerSetup.msi' /qb INSTALLDIR='{code:GetInstallPath}\Server\' ALLUSERS=2'),'', SW_SHOW, ewWaitUntilTerminated, ResultCode); end; if(InstallClient) then begin ExtractTemporaryFile('ClientSetup.msi'); Exec('msiexec',ExpandConstant('/i '{tmp}\ClientSetup.msi' /qb INSTALLDIR='{code:GetInstallPath}\Client\' ALLUSERS=2'),'', SW_SHOW, ewWaitUntilTerminated, ResultCode); end; end; end;
Why not simply try something like this:
Of course you don’t necessarily have to use
Components. You did not write how you decide which installer to run. If you need more complex logic you could also useCheckfunctions as in: