From 9078aa6b5ab731aeab0d54fd5bb86c2aa273be76 Mon Sep 17 00:00:00 2001 From: zhuyonghao Date: Tue, 2 Jul 2024 14:44:01 +0800 Subject: [PATCH] fix: Error message during installation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将无权限和不在本地两种情况分开处理,走各自的业务,触发不同信号,弹出准确的警告信息 Log: 修复安装时的错误提示 Bug: https://pms.uniontech.com/bug-view-258605.html --- .../manager/AddPackageThread.cpp | 20 +- src/deb-installer/manager/AddPackageThread.h | 7 + src/deb-installer/manager/packagesmanager.cpp | 22 ++- src/deb-installer/manager/packagesmanager.h | 7 + src/deb-installer/model/deblistmodel.cpp | 3 + src/deb-installer/model/deblistmodel.h | 8 + src/deb-installer/utils/utils.cpp | 19 +- src/deb-installer/view/pages/debinstaller.cpp | 13 +- src/deb-installer/view/pages/debinstaller.h | 5 + translations/deepin-deb-installer_zh_CN.ts | 171 +++++++++--------- translations/deepin-deb-installer_zh_HK.ts | 171 +++++++++--------- translations/deepin-deb-installer_zh_TW.ts | 171 +++++++++--------- 12 files changed, 349 insertions(+), 268 deletions(-) diff --git a/src/deb-installer/manager/AddPackageThread.cpp b/src/deb-installer/manager/AddPackageThread.cpp index c46cd5de..30b39373 100644 --- a/src/deb-installer/manager/AddPackageThread.cpp +++ b/src/deb-installer/manager/AddPackageThread.cpp @@ -43,10 +43,24 @@ void AddPackageThread::setSamePackageMd5(const QMap &packag bool AddPackageThread::dealInvalidPackage(const QString &packagePath) { if (!Utils::checkPackageReadable(packagePath)) { - emit signalNotLocalPackage(); - return false; + QFileInfo debFileIfo(packagePath); + // 查看包是否能够打开,无法打开说明包不在本地或无权限。 + QFile outfile(packagePath.toUtf8()); + outfile.open(QFile::ReadOnly); + + if (!outfile.isOpen()) { // 打不开,文件不在本地或无安装权限 + QFile::FileError error = outfile.error(); + if (error == QFile::FileError::NoError) { + // 文件不存在或路径错误 + emit signalNotLocalPackage(); + return false; + } else { + //无安装权限 + emit signalNotInstallablePackage(); + return false; + } + } } - return true; } diff --git a/src/deb-installer/manager/AddPackageThread.h b/src/deb-installer/manager/AddPackageThread.h index a3a1ba93..9d4f256f 100644 --- a/src/deb-installer/manager/AddPackageThread.h +++ b/src/deb-installer/manager/AddPackageThread.h @@ -74,6 +74,13 @@ class AddPackageThread : public QThread */ void signalNotLocalPackage(); + /** + * @brief notInstallablePackage 包无安装权限的信号 + * + * 包无安装权限无法安装 + */ + void signalNotInstallablePackage(); + /** * @brief packageAlreadyExists 当前包已经被添加到应用中 */ diff --git a/src/deb-installer/manager/packagesmanager.cpp b/src/deb-installer/manager/packagesmanager.cpp index bc9c6ec1..4a023956 100644 --- a/src/deb-installer/manager/packagesmanager.cpp +++ b/src/deb-installer/manager/packagesmanager.cpp @@ -319,6 +319,9 @@ PackagesManager::PackagesManager(QObject *parent) //转发不是本地包的信号 connect(m_pAddPackageThread, &AddPackageThread::signalNotLocalPackage, this, &PackagesManager::signalNotLocalPackage); + //转发无安装权限的信号 + connect(m_pAddPackageThread, &AddPackageThread::signalNotInstallablePackage, this, &PackagesManager::signalNotInstallablePackage); + //转发包已经添加的信号 connect(m_pAddPackageThread, &AddPackageThread::signalPackageAlreadyExists, this, &PackagesManager::signalPackageAlreadyExists); @@ -1426,8 +1429,23 @@ bool PackagesManager::dealInvalidPackage(const QString &packagePath) { //判断路径信息是不是本地路径 if (!Utils::checkPackageReadable(packagePath)) { - emit signalNotLocalPackage(); - return false; + QFileInfo debFileIfo(packagePath); + // 查看包是否能够打开,无法打开说明包不在本地或无权限。 + QFile outfile(packagePath.toUtf8()); + outfile.open(QFile::ReadOnly); + + if (!outfile.isOpen()) { // 打不开,文件不在本地或无安装权限 + QFile::FileError error = outfile.error(); + if (error == QFile::FileError::NoError) { + // 文件不存在或路径错误 + emit signalNotLocalPackage(); + return false; + } else { + //无安装权限 + emit signalNotInstallablePackage(); + return false; + } + } } return true; } diff --git a/src/deb-installer/manager/packagesmanager.h b/src/deb-installer/manager/packagesmanager.h index 4eaa5992..9bf20c46 100644 --- a/src/deb-installer/manager/packagesmanager.h +++ b/src/deb-installer/manager/packagesmanager.h @@ -143,6 +143,13 @@ public slots: */ void signalNotLocalPackage(); + /** + * @brief notInstallablePackage 包无安装权限的信号 + * + * 包无安装权限无法安装 + */ + void signalNotInstallablePackage(); + /** * @brief packageAlreadyExists 包重复添加的信号 */ diff --git a/src/deb-installer/model/deblistmodel.cpp b/src/deb-installer/model/deblistmodel.cpp index ccafdbcd..1fd80246 100644 --- a/src/deb-installer/model/deblistmodel.cpp +++ b/src/deb-installer/model/deblistmodel.cpp @@ -139,6 +139,9 @@ void DebListModel::initAppendConnection() //添加的包不在本地 connect(m_packagesManager, &PackagesManager::signalNotLocalPackage, this, &DebListModel::signalNotLocalPackage); + //添加的包无安装权限 + connect(m_packagesManager, &PackagesManager::signalNotInstallablePackage, this, &DebListModel::signalNotInstallablePackage); + //要添加的包早就已经被添加到程序中 connect(m_packagesManager, &PackagesManager::signalPackageAlreadyExists, this, &DebListModel::signalPackageAlreadyExists); diff --git a/src/deb-installer/model/deblistmodel.h b/src/deb-installer/model/deblistmodel.h index 42544d5f..7ce4b95d 100644 --- a/src/deb-installer/model/deblistmodel.h +++ b/src/deb-installer/model/deblistmodel.h @@ -383,6 +383,14 @@ class DebListModel : public QAbstractListModel */ void signalNotLocalPackage(); + /** + * @brief notInstallablePackage 包无安装权限的信号 + * + * 包无安装权限无法安装 + */ + void signalNotInstallablePackage(); + + /** * @brief signalPackageCannotFind 包已经被移动的信号 通知前端发送浮动消息 * @param packageName 被移动的文件名 diff --git a/src/deb-installer/utils/utils.cpp b/src/deb-installer/utils/utils.cpp index 121f2fe3..6f7a91ba 100644 --- a/src/deb-installer/utils/utils.cpp +++ b/src/deb-installer/utils/utils.cpp @@ -293,7 +293,7 @@ QString Utils::holdTextInRect(const QFont &font, const QString &srcText, const i /*! @brief 检测软件包 `packagePath` 是否可读,首先判断路径指向的挂载设备信息, 若为 gvfs 或 cifs 文件系统(文管当前及V6后的远程挂载系统),抛出false。 - 同时判断文件是否可读/读取权限,无对应权限抛出异常。 + 同时判断文件是否有权限安装,无权限则抛出异常。 @param[in] packagePath 软件包路径 @note 只能安装本地的软件包,samba/ftp等远程目录不允许。 @@ -316,22 +316,21 @@ bool Utils::checkPackageReadable(const QString &packagePath) QFile outfile(packagePath.toUtf8()); outfile.open(QFile::ReadOnly); - if (!outfile.isOpen()) { // 打不开,文件不在本地或无权限 - if (debFileIfo.permission(QFile::Permission::ReadOwner) && debFileIfo.permission(QFile::Permission::ReadUser)) { + if (!outfile.isOpen()) { // 打不开,文件不在本地或无安装权限 + QFile::FileError error = outfile.error(); + if (error == QFile::FileError::NoError) { + // 文件不存在或路径错误 qWarning() << "Package has permission but cannot open!"; - // 文件有权限 打不开,说明不在本地 - outfile.close(); + return false; + } else { + //无安装权限 + qWarning() << "Package has no read permission!"; return false; } } else { // 文件能打开,说明文件在本地且有权限 outfile.close(); return true; } - - // 文件在本地但是因为没有权限打不开 - qWarning() << "Package has no read permission!"; - outfile.close(); - return false; } DebApplicationHelper *DebApplicationHelper::instance() diff --git a/src/deb-installer/view/pages/debinstaller.cpp b/src/deb-installer/view/pages/debinstaller.cpp index d7ec97de..542c95f1 100644 --- a/src/deb-installer/view/pages/debinstaller.cpp +++ b/src/deb-installer/view/pages/debinstaller.cpp @@ -130,9 +130,12 @@ void DebInstaller::initConnections() slotShowDdimFloatingMessage(tr("Installing other packages... Please open it later.")); }); - //接收到添加无效包的信号则弹出无效包的弹窗 + //接收到添加非本地包的信号则弹出无效包的弹窗 connect(m_fileListModel, &DebListModel::signalNotLocalPackage, this, &DebInstaller::slotShowNotLocalPackageMessage); + //接收到添加无安装权限包的信号则弹出无效包的弹窗 + connect(m_fileListModel, &DebListModel::signalNotInstallablePackage, this, &DebInstaller::slotShowNotInstallablePackageMessage); + //接收到包已经添加的信号则弹出已添加的弹窗 connect(m_fileListModel, &DebListModel::signalPackageAlreadyExists, this, &DebInstaller::slotShowPkgExistMessage); @@ -644,6 +647,14 @@ void DebInstaller::slotShowNotLocalPackageMessage() DMessageManager::instance()->sendMessage(this, floatingMsg); //如果损坏,提示 } +void DebInstaller::slotShowNotInstallablePackageMessage() +{ + DFloatingMessage *floatingMsg = new DFloatingMessage; + floatingMsg->setMessage(tr("No permission to access this folder")); + floatingMsg->setIcon(QIcon::fromTheme("di_warning")); + DMessageManager::instance()->sendMessage(this, floatingMsg); //如果损坏,提示 +} + void DebInstaller::slotShowPkgExistMessage() { if (SingleInstallerApplication::mode == SingleInstallerApplication::DdimChannel && m_ddimView == nullptr) { //如果选择界面未创建,则表示是第一次进入且只有必装包和依赖包 diff --git a/src/deb-installer/view/pages/debinstaller.h b/src/deb-installer/view/pages/debinstaller.h index ff9ca6a9..10eef55f 100644 --- a/src/deb-installer/view/pages/debinstaller.h +++ b/src/deb-installer/view/pages/debinstaller.h @@ -78,6 +78,11 @@ private slots: */ void slotShowNotLocalPackageMessage(); + /** + * @brief slotShowNotInstallablePackageMessage 弹出无安装权限的消息通知 + */ + void slotShowNotInstallablePackageMessage(); + /** * @brief slotShowPkgExistMessage 弹出包已存在的消息通知 */ diff --git a/translations/deepin-deb-installer_zh_CN.ts b/translations/deepin-deb-installer_zh_CN.ts index 1f1291c2..037cc093 100644 --- a/translations/deepin-deb-installer_zh_CN.ts +++ b/translations/deepin-deb-installer_zh_CN.ts @@ -1,4 +1,6 @@ - + + + AptConfigMessage @@ -53,49 +55,54 @@ - + Installing other packages... Please open it later. 正在执行安装流程,无法打开 - + Parsing failed: An illegal file structure was found in the manifest file! 软件包解析失败,软件包清单包含非法的文件结构! - + Parsing failed: An illegal version number was found in the manifest file! 软件包解析失败,软件包清单包含非法版本号! - + No deb packages found. Please check the folder. 未检测到安装包,请检查安装目录! - + The deb package may be broken 请检查deb包是否损坏 - + You can only install local deb packages 只能安装本地的deb包 - + + No permission to access this folder + 没有权限访问文件夹 + + + Already Added 已添加 - + %1 does not exist, please reselect %1文件不存在,请重新选择文件 - - - + + + Bulk Install 批量安装 @@ -127,14 +134,14 @@ - + Invalid digital signature 数字签名无效 - - + + The administrator has set policies to prevent installation of this package 管理员已限制,该软件禁止安装 @@ -144,88 +151,84 @@ 安装失败 - + Failed to install %1 %1安装失败 - + This package does not have a valid digital signature and has been blocked from installing/running. Go to Security Center > Tools > App Security to change the settings. 安装包没有有效的数字签名,已被禁止安装/运行,请前往安全中心-安全工具-应用安全进行调整。 - Failed to install %1: no valid digital singature - 无法安装%1,安装包无有效的数字签名 - - - + Unable to install - no digital signature 无法安装,安装包无数字签名 - + Please go to Control Center to enable developer mode and try again. Proceed? 请进入控制中心,开启开发者模式后,再尝试继续安装。是否前往? - - + + Cancel button 取 消 - - + + Proceed button 前 往 - - - + + + OK button 确 定 - + Failed to install %1: no valid digital signature 无法安装%1,安装包无有效的数字签名 - + This package does not have a valid digital signature. Continue with the installation? 此安装包没有有效的数字签名,是否继续安装? - + Cancel 取 消 - + Continue button 继续 - - - - + + + + Unable to install 无法安装 - + This package does not have a valid digital signature 此安装包没有有效的数字签名 - + Broken dependencies: %1 依赖关系不满足:%1 @@ -235,7 +238,7 @@ 配置授权失败 - + Unmatched package architecture 软件包架构不匹配 @@ -267,35 +270,35 @@ 收 起 - + Install button 安 装 - + Done button 完 成 - + Back button 返 回 - + Dependencies in the repository 仓库中存在的依赖包 - + Missing dependencies 仓库中缺失的依赖包 - + Installing dependencies: %1 正在安装依赖:%1 @@ -407,12 +410,12 @@ 开发者模式下,检测安装包的签名 - + To install unsigned apps, go to Security Center > Tools > App Security, and select the app types that can be installed. 如需安装未签名应用,前往安全中心-安全工具-应用安全设置允许安装的应用类型。 - + Security Center > Tools > App Security 安全中心-安全工具-应用安全 @@ -420,125 +423,125 @@ SingleInstallPage - + Collapse 收起 - - - + + + Reinstall 重新安装 - - + + Later version installed: %1 已安装较新的版本:%1 - - + + Downgrade 安装旧版本 - - + + Earlier version installed: %1 已安装较早的版本:%1 - + Installing dependencies: %1 正在安装依赖:%1 - + Failed to install %1 %1安装失败 - + Version: 版本: - + Install button 安 装 - + Remove button 卸 载 - + OK button 确 定 - + Back button 返 回 - + Done button 完 成 - + Installed successfully 安装成功 - + Uninstalled successfully 卸载成功 - + Uninstall Failed 卸载失败 - + Dependencies in the repository 仓库中存在的依赖包 - + Missing dependencies 仓库中缺失的依赖包 - - + + Update button 更 新 - + Invalid digital signature 数字签名无效 - + Name: 名称: - - + + Same version installed 已安装相同版本 @@ -547,9 +550,9 @@ SingleInstallPage_Install - - - + + + Show details 显示详细信息 @@ -563,8 +566,8 @@ SingleInstallPage_Uninstall - - + + Show details 显示卸载进程 @@ -622,4 +625,4 @@ The system or other applications may not work properly 软件包安装器用于帮助用户安装和卸载本地软件,支持批量安装。 - \ No newline at end of file + diff --git a/translations/deepin-deb-installer_zh_HK.ts b/translations/deepin-deb-installer_zh_HK.ts index d6aad0e9..fdbeb7a7 100644 --- a/translations/deepin-deb-installer_zh_HK.ts +++ b/translations/deepin-deb-installer_zh_HK.ts @@ -1,4 +1,6 @@ - + + + AptConfigMessage @@ -53,49 +55,54 @@ - + Installing other packages... Please open it later. 正在執行安裝流程,無法打開 - + Parsing failed: An illegal file structure was found in the manifest file! 軟件包解析失敗,軟件包清單包含非法的文件結構! - + Parsing failed: An illegal version number was found in the manifest file! 軟件包解析失敗,軟件包清單包含非法版本號! - + No deb packages found. Please check the folder. 未檢測到安裝包,請檢查安裝目錄! - + The deb package may be broken 請檢查deb包是否損壞 - + You can only install local deb packages 只能安裝本地的deb包 - + + No permission to access this folder + 沒有權限訪問此資料夾 + + + Already Added 已添加 - + %1 does not exist, please reselect %1文件不存在,請重新選擇文件 - - - + + + Bulk Install 批量安裝 @@ -127,14 +134,14 @@ - + Invalid digital signature 數字簽名無效 - - + + The administrator has set policies to prevent installation of this package 管理員已限制,該軟件禁止安裝 @@ -144,88 +151,84 @@ 安裝失敗 - + Failed to install %1 %1安裝失敗 - + This package does not have a valid digital signature and has been blocked from installing/running. Go to Security Center > Tools > App Security to change the settings. 安裝包沒有有效的數字簽名,已被禁止安裝/運行,請前往安全中心-安全工具-應用安全進行調整。 - Failed to install %1: no valid digital singature - 無法安裝%1,安裝包無有效的數字簽名 - - - + Unable to install - no digital signature 無法安裝,安裝包無數字簽名 - + Please go to Control Center to enable developer mode and try again. Proceed? 請進入控制中心,開啟開發者模式後,再嘗試繼續安裝。是否前往? - - + + Cancel button 取 消 - - + + Proceed button 前 往 - - - + + + OK button 確 定 - + Failed to install %1: no valid digital signature 無法安裝%1,安裝包無有效的數字簽名 - + This package does not have a valid digital signature. Continue with the installation? 此安裝包沒有有效的數字簽名,是否繼續安裝? - + Cancel 取 消 - + Continue button 繼續 - - - - + + + + Unable to install 無法安裝 - + This package does not have a valid digital signature 此安裝包沒有有效的數字簽名 - + Broken dependencies: %1 依賴關係不滿足:%1 @@ -235,7 +238,7 @@ 配置授權失敗 - + Unmatched package architecture 軟件包架構不匹配 @@ -267,35 +270,35 @@ 收 起 - + Install button 安 裝 - + Done button 完 成 - + Back button 返 回 - + Dependencies in the repository 倉庫中存在的依賴包 - + Missing dependencies 倉庫中缺失的依賴包 - + Installing dependencies: %1 正在安裝依賴:%1 @@ -407,12 +410,12 @@ 開發者模式下,檢測安裝包的簽名 - + To install unsigned apps, go to Security Center > Tools > App Security, and select the app types that can be installed. 如需安裝未簽名應用,前往安全中心-安全工具-應用安全設定允許安裝的應用類型。 - + Security Center > Tools > App Security 安全中心-安全工具-應用安全 @@ -420,125 +423,125 @@ SingleInstallPage - + Collapse 收起 - - - + + + Reinstall 重新安裝 - - + + Later version installed: %1 已安裝較新的版本:%1 - - + + Downgrade 安裝舊版本 - - + + Earlier version installed: %1 已安裝較早的版本:%1 - + Installing dependencies: %1 正在安裝依賴:%1 - + Failed to install %1 %1安裝失敗 - + Version: 版本: - + Install button 安 裝 - + Remove button 卸 載 - + OK button 確 定 - + Back button 返 回 - + Done button 完 成 - + Installed successfully 安裝成功 - + Uninstalled successfully 卸載成功 - + Uninstall Failed 卸載失敗 - + Dependencies in the repository 倉庫中存在的依賴包 - + Missing dependencies 倉庫中缺失的依賴包 - - + + Update button 更 新 - + Invalid digital signature 數字簽名無效 - + Name: 名稱: - - + + Same version installed 已安裝相同版本 @@ -547,9 +550,9 @@ SingleInstallPage_Install - - - + + + Show details 顯示詳細訊息 @@ -563,8 +566,8 @@ SingleInstallPage_Uninstall - - + + Show details 顯示卸載進程 @@ -622,4 +625,4 @@ The system or other applications may not work properly 軟件包安裝器用於幫助用戶安裝和卸載本地軟件,支持批量安裝。 - \ No newline at end of file + diff --git a/translations/deepin-deb-installer_zh_TW.ts b/translations/deepin-deb-installer_zh_TW.ts index c00b2728..c216c03f 100644 --- a/translations/deepin-deb-installer_zh_TW.ts +++ b/translations/deepin-deb-installer_zh_TW.ts @@ -1,4 +1,6 @@ - + + + AptConfigMessage @@ -53,49 +55,54 @@ - + Installing other packages... Please open it later. 正在執行安裝流程,無法打開 - + Parsing failed: An illegal file structure was found in the manifest file! 套裝軟體解析失敗,套裝軟體清單包含非法的文件結構! - + Parsing failed: An illegal version number was found in the manifest file! 套裝軟體解析失敗,套裝軟體清單包含非法版本號! - + No deb packages found. Please check the folder. 未檢測到安裝包,請檢查安裝目錄! - + The deb package may be broken 請檢查deb包是否損壞 - + You can only install local deb packages 只能安裝本機的deb包 - + + No permission to access this folder + 沒有權限訪問此資料夾 + + + Already Added 已添加 - + %1 does not exist, please reselect %1文件不存在,請重新選擇文件 - - - + + + Bulk Install 批次安裝 @@ -127,14 +134,14 @@ - + Invalid digital signature 數位簽章無效 - - + + The administrator has set policies to prevent installation of this package 管理員已限制,該軟體禁止安裝 @@ -144,88 +151,84 @@ 安裝失敗 - + Failed to install %1 %1安裝失敗 - + This package does not have a valid digital signature and has been blocked from installing/running. Go to Security Center > Tools > App Security to change the settings. 安裝包沒有有效的數位簽章,已被禁止安裝/執行,請前往安全中心-安全工具-應用安全進行調整。 - Failed to install %1: no valid digital singature - 無法安裝%1,安裝包無有效的數位簽章 - - - + Unable to install - no digital signature 無法安裝,安裝包無數位簽章 - + Please go to Control Center to enable developer mode and try again. Proceed? 請進入控制中心,開啟開發者模式後,再嘗試繼續安裝。是否前往? - - + + Cancel button 取 消 - - + + Proceed button 前 往 - - - + + + OK button 確 定 - + Failed to install %1: no valid digital signature 無法安裝%1,安裝包無有效的數位簽章 - + This package does not have a valid digital signature. Continue with the installation? 此安裝包沒有有效的數位簽章,是否繼續安裝? - + Cancel 取 消 - + Continue button 繼續 - - - - + + + + Unable to install 無法安裝 - + This package does not have a valid digital signature 此安裝包沒有有效的數位簽章 - + Broken dependencies: %1 缺少依賴軟體:%1 @@ -235,7 +238,7 @@ 配置授權失敗 - + Unmatched package architecture 軟體套件結構不符合規範 @@ -267,35 +270,35 @@ 隱 藏 - + Install button 安 裝 - + Done button 完 成 - + Back button 返 回 - + Dependencies in the repository 倉庫中存在的依賴包 - + Missing dependencies 倉庫中缺失的依賴包 - + Installing dependencies: %1 正在安裝依賴:%1 @@ -407,12 +410,12 @@ 開發者模式下,檢測安裝包的簽名 - + To install unsigned apps, go to Security Center > Tools > App Security, and select the app types that can be installed. 如需安裝未簽名應用,前往安全中心-安全工具-應用安全設定允許安裝的應用類型。 - + Security Center > Tools > App Security 安全中心-安全工具-應用安全 @@ -420,125 +423,125 @@ SingleInstallPage - + Collapse 隱藏 - - - + + + Reinstall 重 裝 - - + + Later version installed: %1 已安裝較新的版本:%1 - - + + Downgrade 安裝舊版本 - - + + Earlier version installed: %1 已安裝舊版本:%1 - + Installing dependencies: %1 正在安裝依賴:%1 - + Failed to install %1 %1安裝失敗 - + Version: 版本: - + Install button 安 裝 - + Remove button 移 除 - + OK button 確 定 - + Back button 返 回 - + Done button 完 成 - + Installed successfully 安裝成功 - + Uninstalled successfully 解除安裝成功 - + Uninstall Failed 解除安裝失敗 - + Dependencies in the repository 倉庫中存在的依賴包 - + Missing dependencies 倉庫中缺失的依賴包 - - + + Update button 更 新 - + Invalid digital signature 數位簽章無效 - + Name: 名稱: - - + + Same version installed 已安裝相同版本 @@ -547,9 +550,9 @@ SingleInstallPage_Install - - - + + + Show details 顯示詳細訊息 @@ -563,8 +566,8 @@ SingleInstallPage_Uninstall - - + + Show details 顯示卸載進程 @@ -622,4 +625,4 @@ The system or other applications may not work properly 軟體包安裝器用來幫助使用者安裝和移除本機軟體包。支援批次安裝。 - \ No newline at end of file +