Extract update in a directory with safer name
This commit is contained in:
+6
-5
@@ -464,7 +464,7 @@ void Control::executeUpdate()
|
|||||||
QuaZip zip("GitAddonsManager.zip");
|
QuaZip zip("GitAddonsManager.zip");
|
||||||
if (!zip.open(QuaZip::mdUnzip))
|
if (!zip.open(QuaZip::mdUnzip))
|
||||||
return;
|
return;
|
||||||
QDir root(QApplication::applicationDirPath());
|
QDir root(QApplication::applicationDirPath() + "/update");
|
||||||
unsigned int size = 0;
|
unsigned int size = 0;
|
||||||
foreach (const QuaZipFileInfo &info, zip.getFileInfoList())
|
foreach (const QuaZipFileInfo &info, zip.getFileInfoList())
|
||||||
size += info.uncompressedSize;
|
size += info.uncompressedSize;
|
||||||
@@ -473,9 +473,9 @@ void Control::executeUpdate()
|
|||||||
foreach (const QuaZipFileInfo &info, zip.getFileInfoList()) {
|
foreach (const QuaZipFileInfo &info, zip.getFileInfoList()) {
|
||||||
QuaZipFile z(zip.getZipName(), info.name);
|
QuaZipFile z(zip.getZipName(), info.name);
|
||||||
z.open(QuaZipFile::ReadOnly);
|
z.open(QuaZipFile::ReadOnly);
|
||||||
QFileInfo finfo(root.absolutePath() + "/" + info.name);
|
QFileInfo finfo(root.absoluteFilePath(info.name.section("/",1)));
|
||||||
QFile f(finfo.absoluteFilePath());
|
|
||||||
root.mkpath(finfo.absolutePath());
|
root.mkpath(finfo.absolutePath());
|
||||||
|
QFile f(finfo.absoluteFilePath());
|
||||||
f.open(QFile::WriteOnly);
|
f.open(QFile::WriteOnly);
|
||||||
QByteArray chunk;
|
QByteArray chunk;
|
||||||
while (!(chunk = z.read(32*1024)).isEmpty()) {
|
while (!(chunk = z.read(32*1024)).isEmpty()) {
|
||||||
@@ -485,10 +485,11 @@ void Control::executeUpdate()
|
|||||||
}
|
}
|
||||||
f.close();
|
f.close();
|
||||||
}
|
}
|
||||||
|
QFile exe(root.absoluteFilePath("GitAddonsManager"));
|
||||||
|
exe.setPermissions(QFile::ExeOwner | exe.permissions());
|
||||||
},[this](){
|
},[this](){
|
||||||
setUpdateStatus(UpdateStatus::UpdateDone);
|
setUpdateStatus(UpdateStatus::UpdateDone);
|
||||||
exit(2);
|
QApplication::exit(2);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
|
|||||||
if (res == 2) {
|
if (res == 2) {
|
||||||
QStringList args = app.arguments().mid(1);
|
QStringList args = app.arguments().mid(1);
|
||||||
args << "--update" << QString("\"%1\"").arg(app.applicationDirPath());
|
args << "--update" << QString("\"%1\"").arg(app.applicationDirPath());
|
||||||
QProcess().startDetached(app.applicationDirPath()+"/GitAddonsManager/GitAddonsManager", args);
|
QProcess().startDetached(app.applicationDirPath()+"/update/GitAddonsManager", args);
|
||||||
}
|
}
|
||||||
if (res == 3)
|
if (res == 3)
|
||||||
QProcess().startDetached(update + "/GitAddonsManager", QApplication::arguments().mid(1) << "--update" << "");
|
QProcess().startDetached(update + "/GitAddonsManager", QApplication::arguments().mid(1) << "--update" << "");
|
||||||
|
|||||||
Reference in New Issue
Block a user