/* Copyright 2016 Amebis This file is part of Updater. Updater is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Updater is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Updater. If not, see . */ #include "stdafx.h" /// /// Main function /// int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) { wxApp::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, "program"); // Initialize wxWidgets. wxInitializer initializer; if (!initializer.IsOk()) return -1; // Create output folder. wxString path(wxFileName::GetTempDir()); if (!wxEndsWithPathSeparator(path)) path += wxFILE_SEP_PATH; if (!wxDirExists(path)) wxMkdir(path); // Prepare log file. wxFFile log_file(path + wxT("Updater-") wxT(UPDATER_CFG_APPLICATION) wxT(".log"), wxT("wt")); if (log_file.IsOpened()) delete wxLog::SetActiveTarget(new wxLogStderr(log_file.fp())); // Set desired locale. wxConfig config(wxT(UPDATER_CFG_APPLICATION) wxT("\\Updater"), wxT(UPDATER_CFG_VENDOR)); wxLanguage language = (wxLanguage)config.Read(wxT("Language"), wxLANGUAGE_DEFAULT); wxLocale locale; if (wxLocale::IsAvailable(language)) { wxVERIFY(locale.Init(language)); // Do not add translation catalog, to keep log messages in English. // Log files are for help-desk and should remain globally intelligible. //wxVERIFY(locale.AddCatalog(wxT("Updater") wxT(wxExtendVersion))); } wxUpdCheckThread worker(locale.GetCanonicalName()); wxUpdCheckThread::wxResult res = worker.CheckForUpdate(); switch (res) { case wxUpdCheckThread::wxUpdUpdateAvailable: return worker.LaunchUpdate(NULL, true) ? 0 : 1; case wxUpdCheckThread::wxUpdUpToDate : return 0; default : return res; } }