Files
qt5/coin/provisioning/common/windows/install-notepad++.ps1
Joerg Bornemann 02df2a107d Windows: add Run-Executable-With-Timeout and mitigate Notepad++ hang
Add Run-Executable-With-Timeout, a wrapper around Run-Executable that
takes a timeout in seconds as its first argument. Run-Executable gains
an internal -TimeoutSeconds parameter (default 0 = no timeout, all
existing callers unaffected) used by the new wrapper.

Apply a generous timeout to the Notepad++ silent installer, which was
observed hanging for ~14 hours and causing provisioning CANCELED
failures on Windows 11 24H2 machines.

Cache the process handle ($null = $p.Handle) immediately after
Start-Process -PassThru. Without this, $p.ExitCode reads back as $null
after the process exits, which made Run-Executable spuriously throw
"Process <exe> exited with exit code " (blank) on successful runs.
This race was observed in provisioning logs for certutil.exe in the
certificate-updates step.

Change-Id: Icc66b670a3d40d67d1b6251913a06dbffeffaec2
Reviewed-by: Elias Toivola <elias.toivola@qt.io>
Reviewed-by: Simo Fält <simo.falt@qt.io>
2026-07-15 09:52:23 +00:00

48 lines
1.3 KiB
PowerShell

# Copyright (C) 2017 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
. "$PSScriptRoot\helpers.ps1"
# This script will install Notepad++
$version = "8.6.5"
$cpu_arch = Get-CpuArchitecture
switch ($cpu_arch) {
arm64 {
$arch = ".arm64"
$sha1 = "eecb8a6b6ed3cb1e467d227b8b7751283c35434e"
Break
}
x64 {
$arch = ".x64"
$sha1 = "a0bf3fb15015bc1fbcb819d9a9c61f4762f4a10f"
Break
}
x86 {
$arch = ""
$sha1 = "ba940c6b526da1ce127f43b835b4d8c9d5c4b59c"
Break
}
default {
throw "Unknown architecture $cpu_arch"
}
}
$filename_exe = "npp." + $version + ".Installer" + $arch + ".exe"
$url_cache = "https://ci-files01-hki.ci.qt.io/input/windows/" + $filename_exe
$url_official = "https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v" + $version + "/" + $filename_exe
$nppPackage = "C:\Windows\Temp\npp-$version.exe"
Download $url_official $url_cache $nppPackage
Verify-Checksum $nppPackage $sha1
Run-Executable-With-Timeout 1800 "$nppPackage" "/S"
Write-Host "Cleaning $nppPackage.."
Remove "$nppPackage"
Write-Output "Notepad++ = $version" >> ~\versions.txt
Write-Host "Disabling auto updates."
Rename-Item -Path "C:\Program Files\Notepad++\updater" -NewName "updater_disabled"