static void OnButtonInstall() { CrashAlwaysIf(gForceCrash); if (gShowOptions) OnButtonOptions(); KillSumatra(); if (!CheckInstallUninstallPossible()) return; WCHAR *userInstallDir = win::GetText(gHwndTextboxInstDir); if (!str::IsEmpty(userInstallDir)) str::ReplacePtr(&gGlobalData.installDir, userInstallDir); free(userInstallDir); // note: this checkbox isn't created if we're already registered as default // (in which case we're just going to re-register) gGlobalData.registerAsDefault = gHwndCheckboxRegisterDefault == nullptr || IsCheckboxChecked(gHwndCheckboxRegisterDefault); // note: this checkbox isn't created when running inside Wow64 gGlobalData.installPdfFilter = gHwndCheckboxRegisterPdfFilter != nullptr && IsCheckboxChecked(gHwndCheckboxRegisterPdfFilter); // note: this checkbox isn't created on Windows 2000 and XP gGlobalData.installPdfPreviewer = gHwndCheckboxRegisterPdfPreviewer != nullptr && IsCheckboxChecked(gHwndCheckboxRegisterPdfPreviewer); // note: this checkbox isn't created if the browser plugin hasn't been installed before gGlobalData.keepBrowserPlugin = gHwndCheckboxKeepBrowserPlugin != nullptr && IsCheckboxChecked(gHwndCheckboxKeepBrowserPlugin); // create a progress bar in place of the Options button RectI rc(0, 0, dpiAdjust(INSTALLER_WIN_DX / 2), gButtonDy); rc = MapRectToWindow(rc, gHwndButtonOptions, gHwndFrame); gHwndProgressBar = CreateWindow(PROGRESS_CLASS, nullptr, WS_CHILD | WS_VISIBLE, rc.x, rc.y, rc.dx, rc.dy, gHwndFrame, 0, GetModuleHandle(nullptr), nullptr); SendMessage(gHwndProgressBar, PBM_SETRANGE32, 0, GetInstallationStepCount()); SendMessage(gHwndProgressBar, PBM_SETSTEP, 1, 0); // disable the install button and remove all the installation options SafeDestroyWindow(&gHwndStaticInstDir); SafeDestroyWindow(&gHwndTextboxInstDir); SafeDestroyWindow(&gHwndButtonBrowseDir); SafeDestroyWindow(&gHwndCheckboxRegisterDefault); SafeDestroyWindow(&gHwndCheckboxRegisterPdfFilter); SafeDestroyWindow(&gHwndCheckboxRegisterPdfPreviewer); SafeDestroyWindow(&gHwndCheckboxKeepBrowserPlugin); SafeDestroyWindow(&gHwndButtonOptions); EnableWindow(gHwndButtonInstUninst, FALSE); SetMsg(_TR("Installation in progress..."), COLOR_MSG_INSTALLATION); InvalidateFrame(); gGlobalData.hThread = CreateThread(nullptr, 0, InstallerThread, nullptr, 0, 0); }
static void OnButtonUninstall() { KillSumatra(); if (!CheckInstallUninstallPossible()) return; // disable the button during uninstallation EnableWindow(gHwndButtonInstUninst, FALSE); SetMsg(L"Uninstallation in progress...", COLOR_MSG_INSTALLATION); InvalidateFrame(); gGlobalData.hThread = CreateThread(NULL, 0, UninstallerThread, NULL, 0, 0); }