fix:修复安装成功后显示为下载完成的bug

This commit is contained in:
2025-08-14 20:03:31 +08:00
parent ef38755e74
commit dd11831dfa

View File

@@ -14,15 +14,16 @@ AppDelegate::AppDelegate(QObject *parent)
[this](const QString &packageName, bool success) { [this](const QString &packageName, bool success) {
if (m_downloads.contains(packageName)) { if (m_downloads.contains(packageName)) {
m_downloads[packageName].isDownloading = false; m_downloads[packageName].isDownloading = false;
m_downloads[packageName].isInstalled = true; // 不要提前设置 isInstalled
emit updateDisplay(packageName); emit updateDisplay(packageName);
qDebug() << (success ? "下载完成:" : "下载失败:") << packageName; qDebug() << (success ? "下载完成:" : "下载失败:") << packageName;
if (success) { if (success) {
enqueueInstall(packageName); enqueueInstall(packageName); // 安装完成后再设置 isInstalled
} }
} }
}); });
connect(m_downloadManager, &DownloadManager::downloadProgress, this, connect(m_downloadManager, &DownloadManager::downloadProgress, this,
[this](const QString &packageName, int progress) { [this](const QString &packageName, int progress) {
if (m_downloads.contains(packageName)) { if (m_downloads.contains(packageName)) {
@@ -277,11 +278,11 @@ void AppDelegate::startNextInstall() {
qDebug().noquote() << QString::fromLocal8Bit(err); qDebug().noquote() << QString::fromLocal8Bit(err);
}); });
connect(m_installProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), connect(m_installProcess, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
this, [this, packageName, logFile](int /*exitCode*/, QProcess::ExitStatus /*status*/) { this, [this, packageName, logFile](int exitCode, QProcess::ExitStatus status) {
if (logFile) logFile->close(); if (logFile) logFile->close();
// 若未检测到“软件包已安装”,此处兜底 m_downloads[packageName].isInstalling = false;
if (!m_downloads[packageName].isInstalled) { if (exitCode == 0) {
m_downloads[packageName].isInstalling = false; m_downloads[packageName].isInstalled = true; // 安装成功
} }
emit updateDisplay(packageName); emit updateDisplay(packageName);
m_installProcess->deleteLater(); m_installProcess->deleteLater();
@@ -289,6 +290,7 @@ void AppDelegate::startNextInstall() {
m_installingPackage.clear(); m_installingPackage.clear();
startNextInstall(); startNextInstall();
}); });
} else { } else {
// 日志文件无法打开时,仍然要连接原有信号 // 日志文件无法打开时,仍然要连接原有信号
connect(m_installProcess, &QProcess::readyReadStandardOutput, this, [this, packageName]() { connect(m_installProcess, &QProcess::readyReadStandardOutput, this, [this, packageName]() {