diff --git a/UI/win-update/updater/updater.cpp b/UI/win-update/updater/updater.cpp index 6da47d414..315709531 100644 --- a/UI/win-update/updater/updater.cpp +++ b/UI/win-update/updater/updater.cpp @@ -40,7 +40,6 @@ HCRYPTPROV hProvider = 0; static bool bExiting = false; static bool updateFailed = false; -static bool is32bit = false; static bool downloadThreadFailure = false; @@ -62,18 +61,14 @@ void FreeWinHttpHandle(HINTERNET handle) /* ----------------------------------------------------------------------- */ -static inline bool is_64bit_windows(void); - static inline bool HasVS2019Redist2() { wchar_t base[MAX_PATH]; wchar_t path[MAX_PATH]; WIN32_FIND_DATAW wfd; HANDLE handle; - int folder = (is32bit && is_64bit_windows()) ? CSIDL_SYSTEMX86 - : CSIDL_SYSTEM; - SHGetFolderPathW(NULL, folder, NULL, SHGFP_TYPE_CURRENT, base); + SHGetFolderPathW(NULL, CSIDL_SYSTEM, NULL, SHGFP_TYPE_CURRENT, base); #define check_dll_installed(dll) \ do { \ @@ -89,9 +84,7 @@ static inline bool HasVS2019Redist2() check_dll_installed(L"msvcp140"); check_dll_installed(L"vcruntime140"); - if (!is32bit) { - check_dll_installed(L"vcruntime140_1"); - } + check_dll_installed(L"vcruntime140_1"); #undef check_dll_installed @@ -558,7 +551,6 @@ static inline DWORD WaitIfOBS(DWORD id, const wchar_t *expected) static bool WaitForOBS() { DWORD proc_ids[1024], needed, count; - const wchar_t *name = is32bit ? L"obs32" : L"obs64"; if (!EnumProcesses(proc_ids, sizeof(proc_ids), &needed)) { return true; @@ -569,7 +561,7 @@ static bool WaitForOBS() for (DWORD i = 0; i < count; i++) { DWORD id = proc_ids[i]; if (id != 0) { - switch (WaitIfOBS(id, name)) { + switch (WaitIfOBS(id, L"obs64")) { case WAITIFOBS_SUCCESS: return true; case WAITIFOBS_WRONG_PROCESS: @@ -676,39 +668,12 @@ static inline bool FileExists(const wchar_t *path) static bool NonCorePackageInstalled(const char *name) { - if (strcmp(name, "obs-browser") == 0) { - if (is32bit) - return FileExists( - L"obs-plugins\\32bit\\obs-browser.dll"); - else - return FileExists( - L"obs-plugins\\64bit\\obs-browser.dll"); - } + if (strcmp(name, "obs-browser") == 0) + return FileExists(L"obs-plugins\\64bit\\obs-browser.dll"); return false; } -static inline bool is_64bit_windows(void) -{ -#ifdef _WIN64 - return true; -#else - BOOL x86 = false; - bool success = !!IsWow64Process(GetCurrentProcess(), &x86); - return success && !!x86; -#endif -} - -static inline bool is_64bit_file(const char *file) -{ - if (!file) - return false; - - return strstr(file, "64bit") != nullptr || - strstr(file, "64.dll") != nullptr || - strstr(file, "64.exe") != nullptr; -} - #define UPDATE_URL L"https://cdn-fastly.obsproject.com/update_studio" static bool AddPackageUpdateFiles(const Json &root, size_t idx, @@ -719,8 +684,6 @@ static bool AddPackageUpdateFiles(const Json &root, size_t idx, const Json &name = package["name"]; const Json &files = package["files"]; - bool isWin64 = is_64bit_windows(); - if (!files.is_array()) return true; if (!name.is_string()) @@ -757,15 +720,6 @@ static bool AddPackageUpdateFiles(const Json &root, size_t idx, if (hashUTF8.size() != BLAKE2_HASH_LENGTH * 2) continue; - if (!isWin64 && is_64bit_file(fileUTF8.c_str())) - continue; - - /* ignore update files of opposite arch to reduce download */ - - if ((is32bit && fileUTF8.find("/64bit/") != string::npos) || - (!is32bit && fileUTF8.find("/32bit/") != string::npos)) - continue; - /* convert strings to wide */ wchar_t sourceURL[1024]; @@ -1241,19 +1195,14 @@ static bool UpdateVS2019Redists(const Json &root) /* ------------------------------------------ * * Download redist */ - Status(L"Downloading %s", L"Visual C++ 2019 Redistributable"); + Status(L"Downloading Visual C++ 2019 Redistributable"); - const wchar_t *file = (is32bit) ? L"VC_redist.x86.exe" - : L"VC_redist.x64.exe"; - - wstring sourceURL; - sourceURL += L"https://cdn-fastly.obsproject.com/downloads/"; - sourceURL += file; + wstring sourceURL = + L"https://cdn-fastly.obsproject.com/downloads/VC_redist.x64.exe"; wstring destPath; destPath += tempPath; - destPath += L"\\"; - destPath += file; + destPath += L"\\VC_redist.x64.exe"; if (!HTTPGetFile(hConnect, sourceURL.c_str(), destPath.c_str(), L"Accept-Encoding: gzip", &responseCode)) { @@ -1268,8 +1217,7 @@ static bool UpdateVS2019Redists(const Json &root) /* ------------------------------------------ * * Get expected hash */ - const char *which = is32bit ? "vc2019_redist_x86" : "vc2019_redist_x64"; - const Json &redistJson = root[which]; + const Json &redistJson = root["vc2019_redist_x64"]; if (!redistJson.is_string()) { Status(L"Update failed: Could not parse VC2019 redist json"); return false; @@ -1778,11 +1726,9 @@ static bool Update(wchar_t *cmdLine) StringCbCat(tmp2, sizeof(tmp2), L"32.dll\""); runcommand(tmp2); - if (is_64bit_windows()) { - StringCbCopy(tmp2, sizeof(tmp2), tmp); - StringCbCat(tmp2, sizeof(tmp2), L"64.dll\""); - runcommand(tmp2); - } + StringCbCopy(tmp2, sizeof(tmp2), tmp); + StringCbCat(tmp2, sizeof(tmp2), L"64.dll\""); + runcommand(tmp2); } /* ------------------------------------- * @@ -1872,26 +1818,15 @@ static void LaunchOBS(bool portable) GetCurrentDirectory(_countof(cwd) - 1, cwd); StringCbCopy(obsPath, sizeof(obsPath), cwd); - StringCbCat(obsPath, sizeof(obsPath), - is32bit ? L"\\bin\\32bit" : L"\\bin\\64bit"); + StringCbCat(obsPath, sizeof(obsPath), L"\\bin\\64bit"); SetCurrentDirectory(obsPath); StringCbCopy(newCwd, sizeof(newCwd), obsPath); - StringCbCat(obsPath, sizeof(obsPath), - is32bit ? L"\\obs32.exe" : L"\\obs64.exe"); + StringCbCat(obsPath, sizeof(obsPath), L"\\obs64.exe"); if (!FileExists(obsPath)) { - StringCbCopy(obsPath, sizeof(obsPath), cwd); - StringCbCat(obsPath, sizeof(obsPath), L"\\bin\\32bit"); - SetCurrentDirectory(obsPath); - StringCbCopy(newCwd, sizeof(newCwd), obsPath); - - StringCbCat(obsPath, sizeof(obsPath), L"\\obs32.exe"); - - if (!FileExists(obsPath)) { - /* TODO: give user a message maybe? */ - return; - } + /* TODO: give user a message maybe? */ + return; } SHELLEXECUTEINFO execInfo; @@ -2023,7 +1958,6 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR lpCmdLine, int) wchar_t newPath[MAX_PATH]; GetCurrentDirectoryW(_countof(cwd) - 1, cwd); - is32bit = wcsstr(cwd, L"bin\\32bit") != nullptr; bool isPortable = wcsstr(lpCmdLine, L"Portable") != nullptr || wcsstr(lpCmdLine, L"--portable") != nullptr;