Quando eseguo un'installazione da Inno Setup con:
Installer.exe /VERYSILENT
Il comando ritorna immediatamente anche se l'installazione richiede circa 10 minuti. Quindi, se corro:
Installer.exe /VERYSILENT
DoNextThing.exe
DoNextThing.exe viene eseguito mentre installer.exe è ancora in fase di installazione.
Vorrei eseguire una configurazione dopo che l'installazione è andata a buon fine. In questo momento, in PowerShell, faccio quanto segue:
$h = Start-job -name Installer -ScriptBlock {."Installer.exe" /VERYSILENT}
$h # the ps job control commands show this job as complete very quickly
sleep 10
$x = Get-Process -ProcessName Installer
while ($x -and ! $x.HasExited)
{
write-output "waiting ..."
sleep 10
}
# Do some configuration
Anche se questo sembra funzionare, penso che mi debba mancare un modo migliore per farlo. Non voglio renderlo parte dell'installer poiché questa configurazione è solo per l'ambiente di test Jenkins.
Qualche idea sul perché la gestione dei lavori PowerShell lo faccianon lavorare per questo? Sto usando PowerShell in modo errato o Installer.exe generato da Inno Setup non funziona bene con PowerShell? [dovrei usare cmd.exe invece di powershell?]
risposte:
1 per risposta № 1Potrebbe essere sufficiente aggiungere un comando alla sezione RUN in inno-setup per creare un file "IamFinishedInstalling.txt" come ultima cosa che fa.
Il tuo PowerShell può quindi bloccare quel file invece di provare a capire lo stato del processo o del lavoro.
while (! (Test-Path "IamFinishedInstalling.txt")) { sleep 10 }
Se installer.exe sta davvero tornando prima che l'installazione sia terminata, questa potrebbe essere la cosa più semplice che puoi provare.
0 per risposta № 2
Perché usare un lavoro? Basta eseguire il programma di installazione usando il comando installer. Al termine dell'eseguibile, PowerShell continuerà alla riga successiva dello script.