diff options
| author | xiphon <xiphon@protonmail.com> | 2020-04-23 14:19:20 +0000 |
|---|---|---|
| committer | xiphon <xiphon@protonmail.com> | 2020-04-23 16:08:10 +0000 |
| commit | 9b98e0a2f5b28279fa4cbe37be44f4866360a17d (patch) | |
| tree | fc950b6ad0f67aa098cd5f1fece165ab75be8347 /src/main/oshelper.cpp | |
| parent | 585fb2810dc0d9b79255b9bd479559b36aa087d8 (diff) | |
| download | monzero-gui-9b98e0a2f5b28279fa4cbe37be44f4866360a17d.tar.gz monzero-gui-9b98e0a2f5b28279fa4cbe37be44f4866360a17d.tar.xz monzero-gui-9b98e0a2f5b28279fa4cbe37be44f4866360a17d.zip | |
checkUpates: installer support (Win), use GUI buildTag and version
Diffstat (limited to 'src/main/oshelper.cpp')
| -rw-r--r-- | src/main/oshelper.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
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 +} |
