From 6b7c5de79d9c04737aa307bc69b66e46cf2dec46 Mon Sep 17 00:00:00 2001 From: muyuankai Date: Fri, 8 Dec 2023 17:29:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A7=A3=E5=8E=8B?= =?UTF-8?q?=E5=8A=A0=E5=AF=86=E4=B9=8B=E5=90=8E=E7=9A=84rar=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9=E6=96=87=E4=BB=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复解压加密之后的rar压缩文件问题 Bug: https://pms.uniontech.com/bug-view-232911.html Log: 修复解压加密之后的rar压缩文件问题 --- 3rdparty/interface/archiveinterface/cliinterface.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/3rdparty/interface/archiveinterface/cliinterface.cpp b/3rdparty/interface/archiveinterface/cliinterface.cpp index 2be283ba..ae3b68d8 100644 --- a/3rdparty/interface/archiveinterface/cliinterface.cpp +++ b/3rdparty/interface/archiveinterface/cliinterface.cpp @@ -201,13 +201,16 @@ PluginFinishType CliInterface::extractFiles(const QList &files, const ArchiveData arcData = DataManager::get_instance().archiveData(); if(!bDlnfs) { if(arcData.listRootEntry.isEmpty() && options.qSize < FILE_MAX_SIZE) { //对于长文件解压,压缩包小于10M,右键解压支持,先获取文件列表,再根据列表数据判断是否为长文件,以后应用加开关表明是否为唱文件解压 + setProperty("list", "tmpList"); list(); if(m_process) { m_process->waitForFinished(); m_process->deleteLater(); m_process = nullptr; } + m_workStatus = WT_Extract; arcData = DataManager::get_instance().archiveData(); + setProperty("list", ""); } for (QMap::const_iterator iter = arcData.mapFileEntry.begin(); iter != arcData.mapFileEntry.end(); iter++) { if(NAME_MAX < iter.value().strFileName.toLocal8Bit().length()) @@ -646,7 +649,7 @@ bool CliInterface::runProcess(const QString &programName, const QStringList &arg if (m_workStatus == WT_Extract) { // Extraction jobs need a dedicated post-processing function. connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(extractProcessFinished(int, QProcess::ExitStatus))); - } else { + } else if(property("list").toString() != "tmpList"){ connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished(int, QProcess::ExitStatus))); }