diff options
Diffstat (limited to 'installer/process/removeworker.cpp')
| -rw-r--r-- | installer/process/removeworker.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/installer/process/removeworker.cpp b/installer/process/removeworker.cpp index bdc1f64..2bca275 100644 --- a/installer/process/removeworker.cpp +++ b/installer/process/removeworker.cpp @@ -7,16 +7,19 @@ RemoveWorker::RemoveWorker(QObject *parent) : QObject(parent) bool RemoveWorker::startWork() { QLocalSocket* sock = new QLocalSocket(); + QString metadataFilePath; QString previousToken; for (QString arg : QApplication::arguments()) { if (previousToken != "") { if (previousToken == "--socket") { sock->setServerName(arg); + } else if (previousToken == "--uninstallmetadata") { + metadataFilePath = arg; } previousToken = ""; } else { - if (arg == "--socket") { + if (arg == "--socket" || arg == "--uninstallmetadata") { previousToken = arg; } } @@ -27,6 +30,11 @@ bool RemoveWorker::startWork() { return false; } + if (metadataFilePath == "") { + qDebug() << "Required argument --uninstallmetadata missing"; + return false; + } + qDebug() << "Connecting to socket server..."; sock->connectToServer(); if (!sock->waitForConnected()) { @@ -38,9 +46,10 @@ bool RemoveWorker::startWork() { QApplication::exit(1); }); - QFile metadataFile(QApplication::applicationDirPath() + "/uninstall.json"); + QFile metadataFile(metadataFilePath); metadataFile.open(QFile::ReadOnly); QJsonObject metadata = QJsonDocument::fromJson(metadataFile.readAll()).object(); + metadataFile.close(); QString name = metadata.value("name").toString(); QString vendor = metadata.value("vendor").toString(); @@ -65,6 +74,17 @@ bool RemoveWorker::startWork() { QDir dest(metadata.value("installPath").toString()); dest.removeRecursively(); + //Remove registry entry + + QSettings* settings; + if (metadata.value("global").toBool()) { + settings = new QSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", QSettings::NativeFormat); + } else { + settings = new QSettings("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", QSettings::NativeFormat); + } + settings->remove(metadata.value("registryUuid").toString()); + settings->sync(); + sock->write("COMPLETE\n"); sock->flush(); sock->waitForBytesWritten(); |
