/ / Determina quando un'installazione verysilent è completa [duplicato] - powershell, inno-setup

Determina quando è completata l'installazione verysilent [duplicato] - powershell, inno-setup

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 № 1

Potrebbe 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.