diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-11-18 16:04:08 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-11-19 22:11:45 +0100 |
commit | 69be23c5f629884465dec98efcb9d5a2678b4df5 (patch) | |
tree | 9c9135bb995006fac7a6de3b349fe24b325dbe99 /application/UpdateController.h | |
parent | e974950d48e4e8b9500acbeadf9c1abdab1dec72 (diff) | |
download | MultiMC-69be23c5f629884465dec98efcb9d5a2678b4df5.tar MultiMC-69be23c5f629884465dec98efcb9d5a2678b4df5.tar.gz MultiMC-69be23c5f629884465dec98efcb9d5a2678b4df5.tar.lz MultiMC-69be23c5f629884465dec98efcb9d5a2678b4df5.tar.xz MultiMC-69be23c5f629884465dec98efcb9d5a2678b4df5.zip |
GH-1726 better failure detection for updates
Instead of just checking if the new version started, make sure
it is able to write its IPC key to a file and then use the key
to connect to the process.
Diffstat (limited to 'application/UpdateController.h')
-rw-r--r-- | application/UpdateController.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/application/UpdateController.h b/application/UpdateController.h new file mode 100644 index 00000000..2b258701 --- /dev/null +++ b/application/UpdateController.h @@ -0,0 +1,44 @@ +#pragma once + +#include <QString> +#include <QList> +#include <updater/GoUpdate.h> + +class QWidget; + +class UpdateController +{ +public: + UpdateController(QWidget * parent, const QString &root, const QString updateFilesDir, GoUpdate::OperationList operations); + void installUpdates(); + +private: + void fail(); + bool rollback(); + +private: + QString m_root; + QString m_updateFilesDir; + GoUpdate::OperationList m_operations; + QWidget * m_parent; + + struct BackupEntry + { + // path where we got the new file from + QString update; + // path of what is being actually updated + QString original; + // path where the backup of the updated file was placed + QString backup; + }; + QList <BackupEntry> m_replace_backups; + QList <BackupEntry> m_delete_backups; + enum Failure + { + Replace, + Delete, + Start, + Nothing + } m_failedOperationType = Nothing; + QString m_failedFile; +}; |