name: "Install exe" description: "Download and install exe" inputs: url: description: "URL of the exe installer" required: true args: description: "Installer arguments" required: true timeout: description: "Timeout (in ms)" required: false default: "600000" runs: using: "composite" steps: - name: Install EXE shell: pwsh run: | $ErrorActionPreference = "Stop" write-host "Downloading Installer EXE" Invoke-WebRequest -Uri "${{ inputs.url }}" -OutFile "${env:RUNNER_TEMP}\temp-install.exe" write-host "Installing" $proc = Start-Process "${env:RUNNER_TEMP}\temp-install.exe" -ArgumentList '${{ inputs.args }}' -NoNewWindow -PassThru $completed = $proc.WaitForExit(${{ inputs.timeout }}) if (-not $completed) { Write-Error "Installer timed out. Killing the process" $proc.Kill() exit 1 } if ($proc.ExitCode -ne 0) { Write-Error "Installer failed with exit code $($proc.ExitCode)" exit 1 } write-host "Completed installation"