mirror of
https://github.com/ONLYOFFICE/desktop-apps.git
synced 2026-04-07 14:09:22 +08:00
[win] online-installer: refactoring
This commit is contained in:
@ -40,7 +40,8 @@ int WINAPI _tWinMain(_In_ HINSTANCE hInst, _In_opt_ HINSTANCE hPrevInstance, _In
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hPrevInstance);
|
||||
std::locale::global(std::locale(""));
|
||||
Translator lang(GetUserDefaultUILanguage(), IDT_TRANSLATIONS);
|
||||
LCID lcid = MAKELCID(GetUserDefaultUILanguage(), SORT_DEFAULT);
|
||||
Translator lang(lcid, IDT_TRANSLATIONS);
|
||||
HANDLE hMutex = CreateMutex(NULL, FALSE, _T(VER_PRODUCTNAME_STR));
|
||||
if (GetLastError() == ERROR_ALREADY_EXISTS) {
|
||||
NS_Utils::ShowMessage(_TR(MESSAGE_TEXT_ERR2));
|
||||
|
||||
@ -158,41 +158,28 @@ namespace NS_File
|
||||
|
||||
WinVer getWinVersion()
|
||||
{
|
||||
NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW);
|
||||
*(FARPROC*)&RtlGetVersion = GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion");
|
||||
if (RtlGetVersion != NULL) {
|
||||
OSVERSIONINFOEXW osInfo;
|
||||
osInfo.dwOSVersionInfoSize = sizeof(osInfo);
|
||||
RtlGetVersion(&osInfo);
|
||||
|
||||
if (osInfo.dwMajorVersion == 5L && (osInfo.dwMinorVersion == 1L || osInfo.dwMinorVersion == 2L))
|
||||
return WinVer::WinXP;
|
||||
else
|
||||
if (osInfo.dwMajorVersion == 6L && osInfo.dwMinorVersion == 0L)
|
||||
return WinVer::WinVista;
|
||||
else
|
||||
if (osInfo.dwMajorVersion == 6L && osInfo.dwMinorVersion == 1L)
|
||||
return WinVer::Win7;
|
||||
else
|
||||
if (osInfo.dwMajorVersion == 6L && osInfo.dwMinorVersion == 2L)
|
||||
return WinVer::Win8;
|
||||
else
|
||||
if (osInfo.dwMajorVersion == 6L && osInfo.dwMinorVersion == 3L)
|
||||
return WinVer::Win8_1;
|
||||
else
|
||||
if (osInfo.dwMajorVersion == 10L) {
|
||||
if (osInfo.dwMinorVersion == 0L) {
|
||||
if (osInfo.dwBuildNumber < 22000)
|
||||
return WinVer::Win10;
|
||||
else
|
||||
return WinVer::Win11;
|
||||
} else
|
||||
return WinVer::Win11;
|
||||
} else
|
||||
if (osInfo.dwMajorVersion > 10L)
|
||||
return WinVer::Win11;
|
||||
static WinVer winVer = WinVer::Undef;
|
||||
if (winVer == WinVer::Undef) {
|
||||
if (HMODULE module = GetModuleHandleA("ntdll")) {
|
||||
NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW);
|
||||
*(FARPROC*)&RtlGetVersion = GetProcAddress(module, "RtlGetVersion");
|
||||
if (RtlGetVersion) {
|
||||
OSVERSIONINFOEXW os = {0};
|
||||
os.dwOSVersionInfoSize = sizeof(os);
|
||||
RtlGetVersion(&os);
|
||||
winVer = os.dwMajorVersion == 5L && (os.dwMinorVersion == 1L || os.dwMinorVersion == 2L) ? WinVer::WinXP :
|
||||
os.dwMajorVersion == 6L && os.dwMinorVersion == 0L ? WinVer::WinVista :
|
||||
os.dwMajorVersion == 6L && os.dwMinorVersion == 1L ? WinVer::Win7 :
|
||||
os.dwMajorVersion == 6L && os.dwMinorVersion == 2L ? WinVer::Win8 :
|
||||
os.dwMajorVersion == 6L && os.dwMinorVersion == 3L ? WinVer::Win8_1 :
|
||||
os.dwMajorVersion == 10L && os.dwMinorVersion == 0L && os.dwBuildNumber < 22000 ? WinVer::Win10 :
|
||||
os.dwMajorVersion == 10L && os.dwMinorVersion == 0L && os.dwBuildNumber >= 22000 ? WinVer::Win11 :
|
||||
os.dwMajorVersion == 10L && os.dwMinorVersion > 0L ? WinVer::Win11 :
|
||||
os.dwMajorVersion > 10L ? WinVer::Win11 : WinVer::Undef;
|
||||
}
|
||||
}
|
||||
}
|
||||
return WinVer::Undef;
|
||||
return winVer;
|
||||
}
|
||||
|
||||
// bool verifyEmbeddedSignature(const wstring &fileName)
|
||||
|
||||
Reference in New Issue
Block a user