aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt51
-rw-r--r--MultiMC.cpp4
-rw-r--r--MultiMC.h7
-rw-r--r--config.h.in20
-rw-r--r--gui/MainWindow.cpp29
-rw-r--r--gui/MainWindow.h2
-rw-r--r--gui/dialogs/UpdateDialog.cpp28
-rw-r--r--gui/dialogs/UpdateDialog.h46
-rw-r--r--gui/dialogs/UpdateDialog.ui63
-rw-r--r--logic/GoUpdate.cpp99
-rw-r--r--logic/GoUpdate.h43
-rw-r--r--mmc_updater/CMakeLists.txt44
-rw-r--r--mmc_updater/LICENSE19
-rw-r--r--mmc_updater/README.md138
-rw-r--r--mmc_updater/cmake/modules/GenerateCppResourceFile.cmake23
-rw-r--r--mmc_updater/depends/AnyOption/CMakeLists.txt9
-rw-r--r--mmc_updater/depends/AnyOption/README16
-rw-r--r--mmc_updater/depends/AnyOption/anyoption.cpp1176
-rw-r--r--mmc_updater/depends/AnyOption/anyoption.h270
-rw-r--r--mmc_updater/depends/tinyxml/CMakeLists.txt24
-rw-r--r--mmc_updater/depends/tinyxml/readme.txt530
-rw-r--r--mmc_updater/depends/tinyxml/tinystr.cpp111
-rw-r--r--mmc_updater/depends/tinyxml/tinystr.h305
-rw-r--r--mmc_updater/depends/tinyxml/tinyxml.cpp1886
-rw-r--r--mmc_updater/depends/tinyxml/tinyxml.h1805
-rw-r--r--mmc_updater/depends/tinyxml/tinyxmlerror.cpp52
-rw-r--r--mmc_updater/depends/tinyxml/tinyxmlparser.cpp1638
-rw-r--r--mmc_updater/depends/win32cpp/controls.h1074
-rw-r--r--mmc_updater/depends/win32cpp/copyright.txt33
-rw-r--r--mmc_updater/depends/win32cpp/cstring.h905
-rw-r--r--mmc_updater/depends/win32cpp/default_resource.h94
-rw-r--r--mmc_updater/depends/win32cpp/default_resource.rc250
-rw-r--r--mmc_updater/depends/win32cpp/dialog.h876
-rw-r--r--mmc_updater/depends/win32cpp/docking.h4214
-rw-r--r--mmc_updater/depends/win32cpp/file.h392
-rw-r--r--mmc_updater/depends/win32cpp/frame.h3303
-rw-r--r--mmc_updater/depends/win32cpp/gdi.h3944
-rw-r--r--mmc_updater/depends/win32cpp/info.txt205
-rw-r--r--mmc_updater/depends/win32cpp/listview.h867
-rw-r--r--mmc_updater/depends/win32cpp/mdi.h783
-rw-r--r--mmc_updater/depends/win32cpp/menu.h600
-rw-r--r--mmc_updater/depends/win32cpp/propertysheet.h960
-rw-r--r--mmc_updater/depends/win32cpp/rebar.h709
-rw-r--r--mmc_updater/depends/win32cpp/release notes.txt116
-rw-r--r--mmc_updater/depends/win32cpp/ribbon.h527
-rw-r--r--mmc_updater/depends/win32cpp/shared_ptr.h199
-rw-r--r--mmc_updater/depends/win32cpp/socket.h778
-rw-r--r--mmc_updater/depends/win32cpp/statusbar.h226
-rw-r--r--mmc_updater/depends/win32cpp/stdcontrols.h1000
-rw-r--r--mmc_updater/depends/win32cpp/tab.h1658
-rw-r--r--mmc_updater/depends/win32cpp/taskdialog.h811
-rw-r--r--mmc_updater/depends/win32cpp/thread.h241
-rw-r--r--mmc_updater/depends/win32cpp/toolbar.h1361
-rw-r--r--mmc_updater/depends/win32cpp/treeview.h624
-rw-r--r--mmc_updater/depends/win32cpp/wceframe.h420
-rw-r--r--mmc_updater/depends/win32cpp/wcestddef.h58
-rw-r--r--mmc_updater/depends/win32cpp/webbrowser.h760
-rw-r--r--mmc_updater/depends/win32cpp/wincore.h2977
-rw-r--r--mmc_updater/depends/win32cpp/winutils.h649
-rw-r--r--mmc_updater/src/AppInfo.cpp23
-rw-r--r--mmc_updater/src/AppInfo.h39
-rw-r--r--mmc_updater/src/CMakeLists.txt121
-rw-r--r--mmc_updater/src/DirIterator.cpp85
-rw-r--r--mmc_updater/src/DirIterator.h43
-rw-r--r--mmc_updater/src/FileUtils.cpp557
-rw-r--r--mmc_updater/src/FileUtils.h141
-rw-r--r--mmc_updater/src/Log.cpp65
-rw-r--r--mmc_updater/src/Log.h46
-rw-r--r--mmc_updater/src/MacBundle.cpp53
-rw-r--r--mmc_updater/src/MacBundle.h35
-rw-r--r--mmc_updater/src/Platform.h30
-rw-r--r--mmc_updater/src/ProcessUtils.cpp536
-rw-r--r--mmc_updater/src/ProcessUtils.h97
-rw-r--r--mmc_updater/src/StandardDirs.cpp63
-rw-r--r--mmc_updater/src/StandardDirs.h22
-rw-r--r--mmc_updater/src/StandardDirs.mm18
-rw-r--r--mmc_updater/src/StlSymbolsLeopard.cpp75
-rw-r--r--mmc_updater/src/StringUtils.h46
-rw-r--r--mmc_updater/src/UpdateDialog.cpp25
-rw-r--r--mmc_updater/src/UpdateDialog.h29
-rw-r--r--mmc_updater/src/UpdateDialogAscii.cpp70
-rw-r--r--mmc_updater/src/UpdateDialogAscii.h32
-rw-r--r--mmc_updater/src/UpdateDialogCocoa.h32
-rw-r--r--mmc_updater/src/UpdateDialogCocoa.mm194
-rw-r--r--mmc_updater/src/UpdateDialogGtk.cpp155
-rw-r--r--mmc_updater/src/UpdateDialogGtk.h42
-rw-r--r--mmc_updater/src/UpdateDialogGtkFactory.cpp59
-rw-r--r--mmc_updater/src/UpdateDialogGtkFactory.h13
-rw-r--r--mmc_updater/src/UpdateDialogWin32.cpp215
-rw-r--r--mmc_updater/src/UpdateDialogWin32.h39
-rw-r--r--mmc_updater/src/UpdateInstaller.cpp439
-rw-r--r--mmc_updater/src/UpdateInstaller.h70
-rw-r--r--mmc_updater/src/UpdateMessage.h42
-rw-r--r--mmc_updater/src/UpdateObserver.h15
-rw-r--r--mmc_updater/src/UpdateScript.cpp98
-rw-r--r--mmc_updater/src/UpdateScript.h86
-rw-r--r--mmc_updater/src/UpdaterOptions.cpp156
-rw-r--r--mmc_updater/src/UpdaterOptions.h27
-rw-r--r--mmc_updater/src/main.cpp201
-rw-r--r--mmc_updater/src/resources/Info.plist38
-rw-r--r--mmc_updater/src/resources/icon128.pngbin0 -> 3802 bytes
-rw-r--r--mmc_updater/src/resources/icon64.pngbin0 -> 2182 bytes
-rw-r--r--mmc_updater/src/resources/mac.icnsbin0 -> 43606 bytes
-rw-r--r--mmc_updater/src/resources/updater.icobin0 -> 82726 bytes
-rw-r--r--mmc_updater/src/resources/updater.rc30
-rw-r--r--mmc_updater/src/tests/CMakeLists.txt51
-rw-r--r--mmc_updater/src/tests/TestFileUtils.cpp50
-rw-r--r--mmc_updater/src/tests/TestFileUtils.h10
-rw-r--r--mmc_updater/src/tests/TestUpdateScript.cpp48
-rw-r--r--mmc_updater/src/tests/TestUpdateScript.h9
-rw-r--r--mmc_updater/src/tests/TestUpdaterOptions.cpp68
-rw-r--r--mmc_updater/src/tests/TestUpdaterOptions.h8
-rw-r--r--mmc_updater/src/tests/TestUtils.h108
-rw-r--r--mmc_updater/src/tests/file_list.xml52
-rw-r--r--mmc_updater/src/tests/new_app.cpp8
-rw-r--r--mmc_updater/src/tests/old_app.cpp7
-rwxr-xr-xmmc_updater/src/tests/test-update.rb218
-rw-r--r--mmc_updater/src/tests/v2_file_list.xml67
118 files changed, 44913 insertions, 45 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 79a69225..95b1c18f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -97,6 +97,9 @@ include_directories(${LIBSETTINGS_INCLUDE_DIR})
add_subdirectory(depends/groupview)
include_directories(${LIBGROUPVIEW_INCLUDE_DIR})
+# Add the updater
+add_subdirectory(mmc_updater)
+
################################ SET UP BUILD OPTIONS ################################
######## Check endianness ########
@@ -129,10 +132,10 @@ ENDIF ()
MESSAGE(STATUS "MultiMC 5 version ${MultiMC_VERSION_STRING}")
-# Custom target to just print the version.
+#### Custom target to just print the version.
ADD_CUSTOM_TARGET(version echo "Version: ${MultiMC_VERSION_STRING}")
-# Check the current Git commit
+#### Check the current Git commit
execute_process(COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE GIT_COMMIT_CHECK_RESULTVAR
@@ -140,7 +143,6 @@ execute_process(COMMAND git rev-parse HEAD
OUTPUT_STRIP_TRAILING_WHITESPACE
)
-# If Git executed successfully
IF(GIT_COMMIT_CHECK_RESULTVAR EQUAL 0)
SET(MultiMC_GIT_COMMIT "${GIT_COMMIT_CHECK_OUTVAR}")
MESSAGE(STATUS "Git commit: ${MultiMC_GIT_COMMIT}")
@@ -149,41 +151,12 @@ ELSE()
MESSAGE(STATUS "Failed to check Git commit. ${GIT_COMMIT_CHECK_RESULTVAR}")
ENDIF()
-
-######## Set Jenkins info ########
-# Jenkins build tag
-IF(DEFINED MultiMC_BUILD_TAG)
- MESSAGE(STATUS "Build tag: ${MultiMC_BUILD_TAG}")
-ELSE()
- MESSAGE(STATUS "No build tag specified.")
- SET(MultiMC_BUILD_TAG custom)
-ENDIF()
-
-# Architecture detection
-IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
- SET(MultiMC_ARCH "x64" CACHE STRING "Architecture we're building for.")
-ELSE()
- SET(MultiMC_ARCH "x86" CACHE STRING "Architecture we're building for.")
-ENDIF()
-MESSAGE(STATUS "Architecture is ${MultiMC_ARCH}")
-
-# Jenkins job name
-IF(WIN32)
- SET(MultiMC_JOB_NAME "MultiMC5Windows" CACHE STRING "Jenkins job name.")
-ELSEIF(UNIX AND APPLE)
- SET(MultiMC_JOB_NAME "MultiMC5OSX" CACHE STRING "Jenkins job name.")
-ELSE()
- SET(MultiMC_JOB_NAME "MultiMC5Linux" CACHE STRING "Jenkins job name.")
-ENDIF()
-
-# Jenkins URL
-SET(MultiMC_JOB_URL "http://ci.forkk.net/job/${MultiMC_JOB_NAME}/arch=${MultiMC_ARCH}${MultiMC_Extra_Label}/"
- CACHE STRING "URL of the jenkins job to pull updates from.")
-MESSAGE(STATUS "Job URL: ${MultiMC_JOB_URL}")
+#### GoUpdate URL
+SET(MultiMC_REPO_BASE_URL "invalid" CACHE STRING "Base URL for the updater.")
+SET(MultiMC_VERSION_BRANCH "invalid" CACHE STRING "URL of the stable update repo.")
######## Configure header ########
-configure_file("${PROJECT_SOURCE_DIR}/config.h.in"
- "${PROJECT_BINARY_DIR}/include/config.h")
+configure_file("${PROJECT_SOURCE_DIR}/config.h.in" "${PROJECT_BINARY_DIR}/include/config.h")
######## Other Stuff ########
@@ -251,6 +224,8 @@ gui/dialogs/AccountListDialog.h
gui/dialogs/AccountListDialog.cpp
gui/dialogs/AccountSelectDialog.h
gui/dialogs/AccountSelectDialog.cpp
+gui/dialogs/UpdateDialog.h
+gui/dialogs/UpdateDialog.cpp
# GUI - widgets
gui/widgets/InstanceDelegate.h
@@ -383,7 +358,8 @@ logic/NagUtils.h
logic/NagUtils.cpp
logic/SkinUtils.h
logic/SkinUtils.cpp
-
+logic/GoUpdate.h
+logic/GoUpdate.cpp
)
@@ -410,6 +386,7 @@ gui/dialogs/EditNotesDialog.ui
gui/dialogs/AccountListDialog.ui
gui/dialogs/AccountSelectDialog.ui
gui/dialogs/EditAccountDialog.ui
+gui/dialogs/UpdateDialog.ui
# Widgets/other
gui/widgets/MCModInfoFrame.ui
diff --git a/MultiMC.cpp b/MultiMC.cpp
index e10292ab..3df73c18 100644
--- a/MultiMC.cpp
+++ b/MultiMC.cpp
@@ -20,6 +20,7 @@
#include "logic/net/HttpMetaCache.h"
#include "logic/JavaUtils.h"
+#include "logic/GoUpdate.h"
#include "pathutils.h"
#include "cmdutils.h"
@@ -138,6 +139,9 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv),
// load settings
initGlobalSettings();
+ // initialize the updater
+ m_go_update.reset(new GoUpdate());
+
// and instances
auto InstDirSetting = m_settings->getSetting("InstanceDir");
m_instances.reset(new InstanceList(InstDirSetting->get().toString(), this));
diff --git a/MultiMC.h b/MultiMC.h
index cae6eee0..0ab7a8b5 100644
--- a/MultiMC.h
+++ b/MultiMC.h
@@ -17,6 +17,7 @@ class IconList;
class QNetworkAccessManager;
class ForgeVersionList;
class JavaVersionList;
+class GoUpdate;
#if defined(MMC)
#undef MMC
@@ -84,6 +85,11 @@ public:
return m_metacache;
}
+ std::shared_ptr<GoUpdate> goupdate()
+ {
+ return m_go_update;
+ }
+
std::shared_ptr<LWJGLVersionList> lwjgllist();
std::shared_ptr<ForgeVersionList> forgelist();
@@ -106,6 +112,7 @@ private:
std::shared_ptr<QTranslator> m_mmc_translator;
std::shared_ptr<SettingsObject> m_settings;
std::shared_ptr<InstanceList> m_instances;
+ std::shared_ptr<GoUpdate> m_go_update;
std::shared_ptr<MojangAccountList> m_accounts;
std::shared_ptr<IconList> m_icons;
std::shared_ptr<QNetworkAccessManager> m_qnam;
diff --git a/config.h.in b/config.h.in
index 34841817..26c8b1e9 100644
--- a/config.h.in
+++ b/config.h