diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2020-04-28 15:14:40 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2020-04-28 15:14:40 -0500 |
| commit | 286c75aa5bb29bb54ea8b3b060e925ecfc3c6f69 (patch) | |
| tree | b9a5c1519f232da6e27e9a3c258a999200a5fe2b /src | |
| parent | 0a4d65dd99b6cf8973f30a32f70f298f52f6cbfe (diff) | |
| parent | 9b98e0a2f5b28279fa4cbe37be44f4866360a17d (diff) | |
| download | monzero-gui-286c75aa5bb29bb54ea8b3b060e925ecfc3c6f69.tar.gz monzero-gui-286c75aa5bb29bb54ea8b3b060e925ecfc3c6f69.tar.xz monzero-gui-286c75aa5bb29bb54ea8b3b060e925ecfc3c6f69.zip | |
Merge pull request #2850
9b98e0a checkUpates: installer support (Win), use GUI buildTag and version (xiphon)
Diffstat (limited to 'src')
| -rw-r--r-- | src/libwalletqt/WalletManager.cpp | 14 | ||||
| -rw-r--r-- | src/libwalletqt/WalletManager.h | 6 | ||||
| -rw-r--r-- | src/main/oshelper.cpp | 45 | ||||
| -rw-r--r-- | src/main/oshelper.h | 5 |
4 files changed, 66 insertions, 4 deletions
diff --git a/src/libwalletqt/WalletManager.cpp b/src/libwalletqt/WalletManager.cpp index ed4f5776..a5c9e0ff 100644 --- a/src/libwalletqt/WalletManager.cpp +++ b/src/libwalletqt/WalletManager.cpp @@ -463,10 +463,18 @@ bool WalletManager::saveQrCode(const QString &code, const QString &path) const return QRCodeImageProvider::genQrImage(code, &size).scaled(size.expandedTo(QSize(240, 240)), Qt::KeepAspectRatio).save(path, "PNG", 100); } -void WalletManager::checkUpdatesAsync(const QString &software, const QString &subdir) +void WalletManager::checkUpdatesAsync( + const QString &software, + const QString &subdir, + const QString &buildTag, + const QString &version) { - m_scheduler.run([this, software, subdir] { - const auto updateInfo = Monero::WalletManager::checkUpdates(software.toStdString(), subdir.toStdString()); + m_scheduler.run([this, software, subdir, buildTag, version] { + const auto updateInfo = Monero::WalletManager::checkUpdates( + software.toStdString(), + subdir.toStdString(), + buildTag.toStdString().c_str(), + version.toStdString().c_str()); if (!std::get<0>(updateInfo)) { return; diff --git a/src/libwalletqt/WalletManager.h b/src/libwalletqt/WalletManager.h index 6470152d..01767716 100644 --- a/src/libwalletqt/WalletManager.h +++ b/src/libwalletqt/WalletManager.h @@ -175,7 +175,11 @@ public: Q_INVOKABLE bool parse_uri(const QString &uri, QString &address, QString &payment_id, uint64_t &amount, QString &tx_description, QString &recipient_name, QVector<QString> &unknown_parameters, QString &error) const; Q_INVOKABLE QVariantMap parse_uri_to_object(const QString &uri) const; Q_INVOKABLE bool saveQrCode(const QString &, const QString &) const; - Q_INVOKABLE void checkUpdatesAsync(const QString &software, const QString &subdir); + Q_INVOKABLE void checkUpdatesAsync( + const QString &software, + const QString &subdir, + const QString &buildTag, + const QString &version); Q_INVOKABLE QString checkUpdates(const QString &software, const QString &subdir) const; // clear/rename wallet cache diff --git a/src/main/oshelper.cpp b/src/main/oshelper.cpp index 75c668f5..c4923f35 100644 --- a/src/main/oshelper.cpp +++ b/src/main/oshelper.cpp @@ -27,6 +27,7 @@ // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "oshelper.h" +#include <QCoreApplication> #include <QFileDialog> #include <QStandardPaths> #include <QTemporaryFile> @@ -164,3 +165,47 @@ QString OSHelper::temporaryPath() const { return QDir::tempPath(); } + +bool OSHelper::installed() const +{ +#ifdef Q_OS_WIN + static constexpr const wchar_t installKey[] = + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Monero GUI Wallet_is1"; + static constexpr const wchar_t installValue[] = L"InstallLocation"; + + DWORD size; + LSTATUS status = + ::RegGetValueW(HKEY_LOCAL_MACHINE, installKey, installValue, RRF_RT_REG_SZ, nullptr, nullptr, &size); + if (status == ERROR_FILE_NOT_FOUND) + { + return false; + } + if (status != ERROR_SUCCESS) + { + qCritical() << "RegGetValueW failed (get size)" << status; + return false; + } + + std::wstring installLocation; + installLocation.resize(size / sizeof(std::wstring::value_type)); + size = installLocation.size() * sizeof(std::wstring::value_type); + status = ::RegGetValueW( + HKEY_LOCAL_MACHINE, + installKey, + installValue, + RRF_RT_REG_SZ, + nullptr, + &installLocation[0], + &size); + if (status != ERROR_SUCCESS) + { + qCritical() << "RegGetValueW Failed (read)" << status; + return false; + } + + const QDir installDir(QString(reinterpret_cast<const QChar *>(&installLocation[0]))); + return installDir == QDir(QCoreApplication::applicationDirPath()); +#else + return false; +#endif +} diff --git a/src/main/oshelper.h b/src/main/oshelper.h index ba498554..f3bc4c04 100644 --- a/src/main/oshelper.h +++ b/src/main/oshelper.h @@ -36,6 +36,8 @@ class OSHelper : public QObject { Q_OBJECT + Q_PROPERTY(bool installed READ installed CONSTANT); + public: explicit OSHelper(QObject *parent = 0); @@ -47,6 +49,9 @@ public: Q_INVOKABLE bool removeTemporaryWallet(const QString &walletName) const; Q_INVOKABLE bool isCapsLock() const; +private: + bool installed() const; + signals: public slots: |
