From 7c071ecfbf73f3c89464560c5db3cc8d858b5d50 Mon Sep 17 00:00:00 2001 From: dengzhongyuan Date: Wed, 4 Feb 2026 13:11:20 +0800 Subject: [PATCH] fix: update QProcess command syntax for package management Refactor the way QProcess is used to execute package management commands by replacing string concatenation with QStringList for better readability and reliability. This change affects the installation, uninstallation, and status checking of packages in both the device manager and driver manager components. bug: https://pms.uniontech.com/task-view-386519.html --- .../src/drivercontrol/drivermanager.cpp | 7 +++---- .../deepin-devicecontrol/src/drivercontrol/utils.cpp | 2 +- deepin-devicemanager/src/Page/PageInfo.cpp | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.cpp index d4106e589..5d278eed8 100644 --- a/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.cpp @@ -610,8 +610,7 @@ QList DriverManager::parsePrinterInfo(const QByteArr bool DriverManager::printerHasInstalled(const QString &packageName) { QProcess p; - QString cmd = "sudo dpkg -s " + packageName; - p.start(cmd); + p.start("dpkg", QStringList() << "-s" << packageName); p.waitForFinished(-1); QByteArray r = p.readAll(); @@ -626,7 +625,7 @@ bool DriverManager::printerHasInstalled(const QString &packageName) bool DriverManager::installPrinter(const QString &packageName) { QProcess p; - p.start("sudo apt install " + packageName); + p.start("apt", QStringList() << "install" << packageName); p.waitForFinished(-1); return printerHasInstalled(packageName); @@ -640,7 +639,7 @@ bool DriverManager::installPrinter(const QString &packageName) bool DriverManager::unInstallPrinter(const QString &packageName) { QProcess p; - p.start("sudo dpkg -r " + packageName); + p.start("dpkg", QStringList() << "-r" << packageName); p.waitForFinished(-1); return !printerHasInstalled(packageName); diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.cpp index 796983c16..085b6efc2 100644 --- a/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.cpp @@ -89,7 +89,7 @@ bool Utils::addModBlackList(const QString &moduleName) bool Utils::unInstallPackage(const QString &packageName) { QProcess process; - process.start(QString("apt remove %1").arg(packageName)); + process.start("apt", QStringList() << "remove" << packageName); if (!process.waitForFinished()) return false; return true; diff --git a/deepin-devicemanager/src/Page/PageInfo.cpp b/deepin-devicemanager/src/Page/PageInfo.cpp index 7d0b03e93..be81451a8 100644 --- a/deepin-devicemanager/src/Page/PageInfo.cpp +++ b/deepin-devicemanager/src/Page/PageInfo.cpp @@ -67,8 +67,7 @@ bool PageInfo::getMultiFlag() bool PageInfo::packageHasInstalled(const QString &packageName) { QProcess p; - QString cmd = "dpkg -s " + packageName; - p.start(cmd); + p.start("dpkg", QStringList() << "-s" << packageName); p.waitForFinished(-1); QByteArray r = p.readAll();