updater: Remove 32-bit Support

This commit is contained in:
derrod
2023-01-25 04:18:29 +01:00
committed by Ryan Foster
parent f62f370edd
commit 08733a0e1a

View File

@@ -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;