mirror of
https://github.com/monero-project/monero-gui.git
synced 2026-04-03 19:27:26 -04:00
Merge pull request #2850
9b98e0a checkUpates: installer support (Win), use GUI buildTag and version (xiphon)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user