恍兮惚兮 9efb4eb4be fix
2024-05-03 23:19:32 +08:00

36 lines
1.2 KiB
C++

#pragma comment(linker, "/subsystem:windows /entry:wmainCRTStartup")
int updatewmain(int argc, wchar_t *argv[])
{
if (argc <= 1)
return 0;
AutoHandle hMutex = CreateMutex(NULL, FALSE, L"LUNA_UPDATER_SINGLE");
if (GetLastError() == ERROR_ALREADY_EXISTS)
return 0;
while (true)
{
AutoHandle semaphore = CreateMutex(NULL, FALSE, L"LUNA_UPDATER_BLOCK");
if (GetLastError() != ERROR_ALREADY_EXISTS)
break;
Sleep(1000);
}
WCHAR path[MAX_PATH];
GetModuleFileNameW(GetModuleHandle(0), path, MAX_PATH);
*(wcsrchr(path, '\\')) = 0;
*(wcsrchr(path, '\\')) = 0;
SetCurrentDirectory(path);
try
{
std::filesystem::copy(argv[1], L".\\", std::filesystem::copy_options::recursive | std::filesystem::copy_options::overwrite_existing);
MessageBoxW(GetForegroundWindow(), L"Update success", L"Success", 0);
}
catch (std::exception &e)
{
MessageBoxW(GetForegroundWindow(), (StringToWideString(e.what()) + L"\r\nUpdate failed, maybe you should download again to fix errors").c_str(), L"Error", 0);
ShellExecute(0, L"open", L"https://github.com/HIllya51/LunaTranslator/releases", NULL, NULL, SW_SHOWNORMAL);
}
return 0;
}