// Wait until GliderMaintenance is closed
while (GmIsRunning(strProgram) <> 0) do bActive := True; // GliderMaintenance.exe
// Delete archived previous version
DeleteFile(PChar(strOldProgram)); // GliderMaintenance-old.exe «-------- This fails in Windows 11
// Rename current main program to old and after that rename new main version to current name
if RenameFile(strProgram, strOldProgram) // GliderMaintenance.exe -> GliderMaintenance-old.exe
then RenameFile(strNewProgram, strProgram); // GliderMaintenance.new -> GliderMaintenance.exe
// Start new version of GliderMaintenance
ShellExecute(Handle, 'open', PChar(strProgram), nil, nil, 1);
// Close this update program
Close;