mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 09:33:25 -08:00
The in-app updater starts the installer and only then quits itself, so the installer has to decide whether the launching process is still alive while it is running. It did that by polling powershell.exe for an image name under the install directory, which is a proxy for the real question - is the process that started me still holding its Qt DLLs mapped - and a proxy that can answer "not running" or "could not determine" while the process is very much alive. Either answer let the install carry on into the mixed Qt DLL set. Take /PID= from the command line and wait on that process handle directly: - OpenProcess with PROCESS_SYNCHRONIZE only, which is all that is needed to wait and the least likely to be refused for an unrelated reason - WaitForSingleObject for the same 60 s the name based check allows, so a client slow to flush its card database is not squeezed - Treat an unopenable handle as "already exited", which is what it means for a dead process - Cancel the upgrade if the launcher has not exited, rather than replacing files it is still using Run it before EnsureAppsNotRunning, not after: it needs no powershell.exe, so it is the one check that still works on a machine where the process lookup cannot run, and it is what lets that case keep upgrading instead of being cancelled by what was only ever a proxy for it. Keep an older client, which passes no /PID=, on the existing path. An older installer ignores /PID=, and /D= stays the last parameter either way. |
||
|---|---|---|
| .. | ||
| pch | ||
| CMakeDMGSetup.script | ||
| createversionfile.cmake | ||
| dmgBackground.tif | ||
| FindLibexecinfo.cmake | ||
| FindQtRuntime.cmake | ||
| FindVCredistRuntime.cmake | ||
| getversion.cmake | ||
| gtest-CMakeLists.txt.in | ||
| headerimage.bmp | ||
| Info.plist | ||
| launch-c.in | ||
| launch-cxx.in | ||
| leftimage.bmp | ||
| NSIS.definitions.nsh.in | ||
| NSIS.template.in | ||
| SignMacApplications.cmake | ||