diff --git a/control.cpp b/control.cpp index 25be0d0..1747771 100644 --- a/control.cpp +++ b/control.cpp @@ -464,7 +464,7 @@ void Control::executeUpdate() QuaZip zip("GitAddonsManager.zip"); if (!zip.open(QuaZip::mdUnzip)) return; - QDir root(QApplication::applicationDirPath()); + QDir root(QApplication::applicationDirPath() + "/update"); unsigned int size = 0; foreach (const QuaZipFileInfo &info, zip.getFileInfoList()) size += info.uncompressedSize; @@ -473,9 +473,9 @@ void Control::executeUpdate() foreach (const QuaZipFileInfo &info, zip.getFileInfoList()) { QuaZipFile z(zip.getZipName(), info.name); z.open(QuaZipFile::ReadOnly); - QFileInfo finfo(root.absolutePath() + "/" + info.name); - QFile f(finfo.absoluteFilePath()); + QFileInfo finfo(root.absoluteFilePath(info.name.section("/",1))); root.mkpath(finfo.absolutePath()); + QFile f(finfo.absoluteFilePath()); f.open(QFile::WriteOnly); QByteArray chunk; while (!(chunk = z.read(32*1024)).isEmpty()) { @@ -485,10 +485,11 @@ void Control::executeUpdate() } f.close(); } - + QFile exe(root.absoluteFilePath("GitAddonsManager")); + exe.setPermissions(QFile::ExeOwner | exe.permissions()); },[this](){ setUpdateStatus(UpdateStatus::UpdateDone); - exit(2); + QApplication::exit(2); }); } diff --git a/main.cpp b/main.cpp index e6ebc14..dd6aff6 100644 --- a/main.cpp +++ b/main.cpp @@ -83,7 +83,7 @@ int main(int argc, char *argv[]) if (res == 2) { QStringList args = app.arguments().mid(1); args << "--update" << QString("\"%1\"").arg(app.applicationDirPath()); - QProcess().startDetached(app.applicationDirPath()+"/GitAddonsManager/GitAddonsManager", args); + QProcess().startDetached(app.applicationDirPath()+"/update/GitAddonsManager", args); } if (res == 3) QProcess().startDetached(update + "/GitAddonsManager", QApplication::arguments().mid(1) << "--update" << "");