Block second instance
This commit is contained in:
1 parent
3c807fbcf2
commit
760d8a632e
2 files changed
+19
No files matched your search
@@ -50,6 +50,8 @@ build\Release\ParavisInstaller.exe
|
|||||||
PARAVIS и немедленный выход.
|
PARAVIS и немедленный выход.
|
||||||
- Если рядом с установщиком есть `Change_BootLoader.exe`, он копируется на
|
- Если рядом с установщиком есть `Change_BootLoader.exe`, он копируется на
|
||||||
раздел PARAVIS после распаковки и используется вместо копии из `Data.pf`.
|
раздел PARAVIS после распаковки и используется вместо копии из `Data.pf`.
|
||||||
|
- Повторный запуск установщика запрещён: второй экземпляр активирует уже
|
||||||
|
открытое окно и сразу завершается.
|
||||||
- Служебные режимы: `/selftest`, `/verify=N`, `/testdisk=N`, `/wim=путь`.
|
- Служебные режимы: `/selftest`, `/verify=N`, `/testdisk=N`, `/wim=путь`.
|
||||||
|
|
||||||
## Примечания
|
## Примечания
|
||||||
|
|||||||
@@ -975,6 +975,23 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HANDLE instanceMutex = CreateMutexW(nullptr, FALSE,
|
||||||
|
L"Local\\ParavisInstaller_SingleInstance");
|
||||||
|
if (instanceMutex && GetLastError() == ERROR_ALREADY_EXISTS) {
|
||||||
|
HWND existing = FindWindowW(kMainClass, nullptr);
|
||||||
|
if (existing) {
|
||||||
|
if (IsIconic(existing)) {
|
||||||
|
ShowWindow(existing, SW_RESTORE);
|
||||||
|
}
|
||||||
|
SetForegroundWindow(existing);
|
||||||
|
} else {
|
||||||
|
MessageBoxW(nullptr, L"Paravis installer уже запущен.",
|
||||||
|
L"Paravis installer", MB_ICONINFORMATION | MB_OK);
|
||||||
|
}
|
||||||
|
CloseHandle(instanceMutex);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
INITCOMMONCONTROLSEX commonControls{};
|
INITCOMMONCONTROLSEX commonControls{};
|
||||||
commonControls.dwSize = sizeof(commonControls);
|
commonControls.dwSize = sizeof(commonControls);
|
||||||
commonControls.dwICC = ICC_PROGRESS_CLASS | ICC_STANDARD_CLASSES;
|
commonControls.dwICC = ICC_PROGRESS_CLASS | ICC_STANDARD_CLASSES;
|
||||||
|
|||||||
Reference in new issue
Block a user