WIN_SPARKLE_API void win_sparkle_check_update_with_ui() { try { // Initialize UI thread and show progress indicator. UI::ShowCheckingUpdates(); // Then run the actual check in the background. UpdateChecker *check = new ManualUpdateChecker(); check->Start(); } CATCH_ALL_EXCEPTIONS }
WIN_SPARKLE_API void win_sparkle_init() { try { bool checkUpdates; if ( Settings::ReadConfigValue("CheckForUpdates", checkUpdates) ) { if ( checkUpdates ) { static const time_t ONE_DAY = 60*60*24; time_t lastCheck = 0; Settings::ReadConfigValue("LastCheckTime", lastCheck); const time_t currentTime = time(NULL); // Only check for updates in reasonable intervals: const int interval = win_sparkle_get_update_check_interval(); if ( currentTime - lastCheck >= interval ) { // Run the check in background. Only show UI if updates // are available. UpdateChecker *check = new UpdateChecker(); check->Start(); } } } else // not yet configured { bool didRunOnce; Settings::ReadConfigValue("DidRunOnce", didRunOnce, false); if ( !didRunOnce ) { // Do nothing on the first execution of the app, for better // first-time impression. Settings::WriteConfigValue("DidRunOnce", true); } else { // Only when the app is launched for the second time, ask the // user for their permission to check for updates. UI::AskForPermission(); } } } CATCH_ALL_EXCEPTIONS }