aboutsummaryrefslogtreecommitdiff
path: root/installer/process/removeworker.cpp
diff options
context:
space:
mode:
authorVictor Tran <vicr12345@gmail.com>2018-07-13 14:55:07 +1000
committerVictor Tran <vicr12345@gmail.com>2018-07-13 14:55:07 +1000
commite8ca150c38478cfd4a762dccd3da1752ee19ab29 (patch)
tree57038a26154d95206940fadc3e823f8038b70c11 /installer/process/removeworker.cpp
parentabc4021919f406ee25e101122144879f8770d51d (diff)
downloadtheInstaller-e8ca150c38478cfd4a762dccd3da1752ee19ab29.tar.gz
theInstaller-e8ca150c38478cfd4a762dccd3da1752ee19ab29.tar.bz2
theInstaller-e8ca150c38478cfd4a762dccd3da1752ee19ab29.zip
Add/Remove Programs support
Diffstat (limited to 'installer/process/removeworker.cpp')
-rw-r--r--installer/process/removeworker.cpp24
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();