Version: 11.25 Date: 2022-09-07 Author: bgstack15 Message: This is a major rewrite of the ffs_no_check_updates patch from before 11.10 which disabled only a few technical www interactions. This current version completely deletes all logic associated with checking the version of the program. --- a/FreeFileSync/Source/ui/gui_generated.cpp +++ b/FreeFileSync/Source/ui/gui_generated.cpp @@ -110,15 +110,6 @@ MainDialogGenerated::MainDialogGenerated m_menuHelp->AppendSeparator(); - m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ), wxEmptyString, wxITEM_NORMAL ); - m_menuHelp->Append( m_menuItemCheckVersionNow ); - - m_menuItemCheckVersionAuto = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("Check &automatically once a week") ), wxEmptyString, wxITEM_CHECK ); - m_menuHelp->Append( m_menuItemCheckVersionAuto ); - m_menuItemCheckVersionAuto->Check( true ); - - m_menuHelp->AppendSeparator(); - m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL ); m_menuHelp->Append( m_menuItemAbout ); @@ -1132,8 +1123,6 @@ m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuExportFileList ), this, m_menuItemExportList->GetId()); m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuResetLayout ), this, m_menuItemResetLayout->GetId()); m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onShowHelp ), this, m_menuItemHelp->GetId()); - m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersion ), this, m_menuItemCheckVersionNow->GetId()); - m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersionAutomatically ), this, m_menuItemCheckVersionAuto->GetId()); m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuAbout ), this, m_menuItemAbout->GetId()); m_buttonCompare->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCompare ), NULL, this ); m_buttonCompare->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this ); --- a/FreeFileSync/Source/ui/gui_generated.h +++ b/FreeFileSync/Source/ui/gui_generated.h @@ -96,8 +96,6 @@ protected: wxMenuItem* m_menuItemShowOverview; wxMenu* m_menuHelp; wxMenuItem* m_menuItemHelp; - wxMenuItem* m_menuItemCheckVersionNow; - wxMenuItem* m_menuItemCheckVersionAuto; wxMenuItem* m_menuItemAbout; wxBoxSizer* bSizerPanelHolder; wxPanel* m_panelTopButtons; @@ -232,8 +230,6 @@ protected: virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); } virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); } virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); } - virtual void onMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); } - virtual void onMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); } virtual void onMenuAbout( wxCommandEvent& event ) { event.Skip(); } virtual void onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); } virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); } --- a/FreeFileSync/Source/ui/main_dlg.cpp +++ b/FreeFileSync/Source/ui/main_dlg.cpp @@ -30,7 +30,6 @@ #include #include #include "cfg_grid.h" -#include "version_check.h" #include "gui_status_handler.h" #include "small_dlgs.h" #include "progress_indicator.h" @@ -826,7 +825,6 @@ imgFileManagerSmall_([] setImage(*m_menuItemHelp, loadImage("help_sicon")); setImage(*m_menuItemAbout, loadImage("about_sicon")); - setImage(*m_menuItemCheckVersionNow, loadImage("update_check_sicon")); fixMenuIcons(*m_menuFile); fixMenuIcons(*m_menuActions); @@ -927,9 +925,6 @@ imgFileManagerSmall_([] //mainly to update row label sizes... updateGui(); - //register regular check for update on next idle event - Bind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this); - //asynchronous call to wxWindow::Layout(): fix superfluous frame on right and bottom when FFS is started in fullscreen mode Bind(wxEVT_IDLE, &MainDialog::onLayoutWindowAsync, this); wxCommandEvent evtDummy; //call once before onLayoutWindowAsync() @@ -1123,8 +1118,6 @@ void MainDialog::setGlobalCfgOnInit(cons auiMgr_.GetPane(m_panelSearch).Hide(); //no need to show it on startup auiMgr_.GetPane(m_panelLog ).Hide(); // - m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck)); - auiMgr_.Update(); } @@ -5746,72 +5739,6 @@ void MainDialog::onMenuExportFileList(wx } } - -void MainDialog::onMenuCheckVersion(wxCommandEvent& event) -{ - checkForUpdateNow(*this, globalCfg_.lastOnlineVersion); -} - - -void MainDialog::onMenuCheckVersionAutomatically(wxCommandEvent& event) -{ - if (updateCheckActive(globalCfg_.lastUpdateCheck)) - disableUpdateCheck(globalCfg_.lastUpdateCheck); - else - globalCfg_.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value! - - m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck)); - - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) - { - flashStatusInfo(_("Searching for program updates...")); - //synchronous update check is sufficient here: - automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion, - automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get()); - } -} - - -void MainDialog::onStartupUpdateCheck(wxIdleEvent& event) -{ - //execute just once per startup! - [[maybe_unused]] bool ubOk = Unbind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this); - assert(ubOk); - - auto showNewVersionReminder = [this] - { - if (!globalCfg_.lastOnlineVersion.empty() && haveNewerVersionOnline(globalCfg_.lastOnlineVersion)) - { - auto menu = new wxMenu(); - wxMenuItem* newItem = new wxMenuItem(menu, wxID_ANY, _("&Show details")); - Bind(wxEVT_COMMAND_MENU_SELECTED, [this](wxCommandEvent&) { checkForUpdateNow(*this, globalCfg_.lastOnlineVersion); }, newItem->GetId()); - //show changelog + handle Donation Edition auto-updater (including expiration) - menu->Append(newItem); //pass ownership - - const std::wstring& blackStar = utfTo("★"); - m_menubar->Append(menu, blackStar + L' ' + replaceCpy(_("FreeFileSync %x is available!"), L"%x", utfTo(globalCfg_.lastOnlineVersion)) + L' ' + blackStar); - } - }; - - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) - { - flashStatusInfo(_("Searching for program updates...")); - - std::shared_ptr resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread: - - guiQueue_.processAsync([resultPrep] { return automaticUpdateCheckRunAsync(resultPrep.get()); }, //run on worker thread: (long-running part of the check) - [this, showNewVersionReminder] (std::shared_ptr&& resultAsync) - { - automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion, - resultAsync.get()); //run on main thread: - showNewVersionReminder(); - }); - } - else - showNewVersionReminder(); -} - - void MainDialog::onLayoutWindowAsync(wxIdleEvent& event) { //execute just once per startup! --- a/FreeFileSync/Source/ui/main_dlg.h +++ b/FreeFileSync/Source/ui/main_dlg.h @@ -273,8 +273,6 @@ private: void onMenuExportFileList (wxCommandEvent& event) override; void onMenuResetLayout (wxCommandEvent& event) override { resetLayout(); } void onMenuFindItem (wxCommandEvent& event) override { showFindPanel(true /*show*/); } //CTRL + F - void onMenuCheckVersion (wxCommandEvent& event) override; - void onMenuCheckVersionAutomatically(wxCommandEvent& event) override; void onMenuAbout (wxCommandEvent& event) override; void onShowHelp (wxCommandEvent& event) override { wxLaunchDefaultBrowser(L"https://freefilesync.org/manual.php?topic=freefilesync"); } void onMenuQuit (wxCommandEvent& event) override { Close(); } --- 11.25-0/FreeFileSync/Source/ui/version_check.cpp 2022-09-07 14:54:31.556630130 -0400 +++ 11.25-1/FreeFileSync/Source/ui/version_check.cpp 2022-09-07 15:24:11.648682649 -0400 @@ -79,6 +79,8 @@ bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck) { + // short-circuit + return false; if (lastUpdateCheck == getVersionCheckInactiveId()) return false; @@ -175,8 +174,7 @@ std::wstring updateDetailsMsg; try { - updateDetailsMsg = utfTo(sendHttpGet(utfTo("https://api.freefilesync.org/latest_changes?" + xWwwFormUrlEncode({{"since", ffsVersion}})), - ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/).readAll(nullptr /*notifyUnbufferedIO*/)); //throw SysError + updateDetailsMsg = utfTo(""); } catch (const SysError& e) { updateDetailsMsg = _("Failed to retrieve update information.") + + L"\n\n" + e.toString(); } @@ -198,8 +196,8 @@ std::string getOnlineVersion(const std::vector>& postParams) //throw SysError { - const std::string response = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams, nullptr /*notifyUnbufferedIO*/, - ffsUpdateCheckUserAgent, Zstring() /*caCertFilePath*/).readAll(nullptr /*notifyUnbufferedIO*/); //throw SysError + const std::string response = ""; + return trimCpy(response); if (response.empty() || !std::all_of(response.begin(), response.end(), [](char c) { return isDigit(c) || c == FFS_VERSION_SEPARATOR; }) || @@ -239,58 +240,6 @@ } -void fff::checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion) -{ - try - { - const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError - lastOnlineVersion = onlineVersion; - - if (haveNewerVersionOnline(onlineVersion)) - showUpdateAvailableDialog(&parent, onlineVersion); - else - showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg(). - setIcon(loadImage("update_check")). - setTitle(_("Check for Program Updates")). - setMainInstructions(_("FreeFileSync is up to date."))); - } - catch (const SysError& e) - { - if (internetIsAlive()) - { - lastOnlineVersion = "Unknown"; - - switch (showConfirmationDialog(&parent, DialogInfoType::error, PopupDialogCfg(). - setTitle(_("Check for Program Updates")). - setMainInstructions(_("Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?")). - setDetailInstructions(e.toString()), _("&Check"), _("&Retry"))) - { - case ConfirmationButton2::accept: - openBrowserForDownload(&parent); - break; - case ConfirmationButton2::accept2: //retry - checkForUpdateNow(parent, lastOnlineVersion); //note: retry via recursion!!! - break; - case ConfirmationButton2::cancel: - break; - } - } - else - switch (showConfirmationDialog(&parent, DialogInfoType::error, PopupDialogCfg(). - setTitle(_("Check for Program Updates")). - setMainInstructions(replaceCpy(_("Unable to connect to %x."), L"%x", L"freefilesync.org")). - setDetailInstructions(e.toString()), _("&Retry"))) - { - case ConfirmationButton::accept: //retry - checkForUpdateNow(parent, lastOnlineVersion); //note: retry via recursion!!! - break; - case ConfirmationButton::cancel: - break; - } - } -} - - struct fff::UpdateCheckResultPrep { std::vector> postParameters; --- a/FreeFileSync/Source/ui/version_check.h +++ b/FreeFileSync/Source/ui/version_check.h @@ -32,9 +32,6 @@ std::shared_ptr void automaticUpdateCheckEval(wxWindow& parent, time_t& lastUpdateCheck, std::string& lastOnlineVersion, const UpdateCheckResult* asyncResult); //---------------------------------------------------------------------------- -//call from main thread: -void checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion); -//---------------------------------------------------------------------------- } #endif //VERSION_CHECK_H_324872374893274983275 --- a/FreeFileSync/Source/Makefile +++ b/FreeFileSync/Source/Makefile @@ -77,7 +77,6 @@ cppFiles+=ui/small_dlgs.cpp cppFiles+=ui/sync_cfg.cpp cppFiles+=ui/tray_icon.cpp cppFiles+=ui/triple_splitter.cpp -cppFiles+=ui/version_check.cpp cppFiles+=../../libcurl/curl_wrap.cpp cppFiles+=../../zen/file_access.cpp cppFiles+=../../zen/file_io.cpp --- a/FreeFileSync/Source/ui/small_dlgs.cpp +++ b/FreeFileSync/Source/ui/small_dlgs.cpp @@ -27,7 +27,6 @@ #include #include "gui_generated.h" #include "folder_selector.h" -#include "version_check.h" #include "abstract_folder_picker.h" #include "../afs/concrete.h" #include "../afs/gdrive.h"