Installer: Add global mutex to find running instance.

This commit is contained in:
Nodir Temirkhodjaev 2017-09-11 16:17:27 +05:00
parent 85fd86c1cb
commit 51e7fc4d2c
5 changed files with 15 additions and 2 deletions

View File

@ -9,6 +9,7 @@
; NOTE: The value of AppId uniquely identifies this application. ; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications. ; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppMutex={#APP_NAME}
AppName={#APP_NAME} AppName={#APP_NAME}
AppVersion={#APP_VERSION_STR} AppVersion={#APP_VERSION_STR}
AppVerName={#APP_NAME} AppVerName={#APP_NAME}

View File

@ -1,7 +1,6 @@
#include "fortcommon.h" #include "fortcommon.h"
#define _WIN32_WINNT 0x0600 #define _WIN32_WINNT 0x0600
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
#include <winioctl.h> #include <winioctl.h>

View File

@ -5,9 +5,12 @@
#include "fortcommon.h" #include "fortcommon.h"
#include "fortmanager.h" #include "fortmanager.h"
#include "fortsettings.h" #include "fortsettings.h"
#include "util/osutil.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
OsUtil::createGlobalMutex(APP_NAME);
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv); QApplication app(argc, argv);

View File

@ -5,6 +5,9 @@
#include <QPixmap> #include <QPixmap>
#include <QImage> #include <QImage>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "processinfo.h" #include "processinfo.h"
OsUtil::OsUtil(QObject *parent) : OsUtil::OsUtil(QObject *parent) :
@ -33,3 +36,8 @@ QString OsUtil::pidToDosPath(quint32 pid)
const ProcessInfo pi(pid); const ProcessInfo pi(pid);
return pi.dosPath(); return pi.dosPath();
} }
bool OsUtil::createGlobalMutex(const char *name)
{
return !CreateMutexA(NULL, FALSE, name);
}

View File

@ -14,6 +14,8 @@ public:
Q_INVOKABLE static void setClipboardData(const QVariant &data); Q_INVOKABLE static void setClipboardData(const QVariant &data);
Q_INVOKABLE static QString pidToDosPath(quint32 pid); Q_INVOKABLE static QString pidToDosPath(quint32 pid);
static bool createGlobalMutex(const char *name);
}; };
#endif // OSUTIL_H #endif // OSUTIL_H