Created a scaffold for Linux installation

This commit is contained in:
aiamnezia 2024-11-28 11:36:50 +04:00
parent a71ca29b2f
commit efdd47a63d
4 changed files with 16 additions and 5 deletions

View file

@ -62,7 +62,7 @@ void UpdateController::checkForUpdates()
for (auto asset : assets) {
QJsonObject assetObject = asset.toObject();
if (assetObject.value("name").toString().contains(".dmg")) {
if (assetObject.value("name").toString().contains(".tar.gz")) {
m_downloadUrl = assetObject.value("browser_download_url").toString();
}
}
@ -112,10 +112,11 @@ void UpdateController::runInstaller()
QFutureWatcher<int> watcher;
QFuture<int> future = QtConcurrent::run([this]() {
QString t = installerPath;
QRemoteObjectPendingReply<int> ipcReply = IpcClient::Interface()->mountDmg(t, true);
ipcReply.waitForFinished();
QProcess::execute("/Volumes/AmneziaVPN/AmneziaVPN.app/Contents/MacOS/AmneziaVPN");
ipcReply = IpcClient::Interface()->mountDmg(t, false);
QRemoteObjectPendingReply<int> ipcReply = IpcClient::Interface()->installApp(t);
// QRemoteObjectPendingReply<int> ipcReply = IpcClient::Interface()->mountDmg(t, true);
// ipcReply.waitForFinished();
// QProcess::execute("/Volumes/AmneziaVPN/AmneziaVPN.app/Contents/MacOS/AmneziaVPN");
// ipcReply = IpcClient::Interface()->mountDmg(t, false);
ipcReply.waitForFinished();
return ipcReply.returnValue();
});

View file

@ -34,5 +34,6 @@ class IpcInterface
SLOT( bool updateResolvers(const QString& ifname, const QList<QHostAddress>& resolvers) );
SLOT( int mountDmg(const QString &path, bool mount) );
SLOT (int installApp(const QString &path));
};

View file

@ -377,3 +377,11 @@ int IpcServer::mountDmg(const QString &path, bool mount)
#endif
return 0;
}
int IpcServer::installApp(const QString &path)
{
#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
return QProcess::execute(QString("sudo dpkg -i %1").arg(path));
#endif
return 0;
}

View file

@ -39,6 +39,7 @@ public:
virtual bool disableKillSwitch() override;
virtual bool updateResolvers(const QString& ifname, const QList<QHostAddress>& resolvers) override;
virtual int mountDmg(const QString &path, bool mount) override;
virtual int installApp(const QString &path) override;
private:
int m_localpid = 0;