From 6fa0e11927675ae470a1a8c91e4b2814957d8f98 Mon Sep 17 00:00:00 2001 From: zty199 <46324746+zty199@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:18:49 +0800 Subject: [PATCH] fix: wrong app name displayed when checking app upgrade grep Name[$locale] from .desktop directly might return from other sections like [Desktop Action xxx] instead of [Desktop entry] section only Log: modify awk params in ss-do-upgrade.sh and format the script --- tool/update-upgrade/ss-do-upgrade.sh | 112 +++++++++++++-------------- 1 file changed, 52 insertions(+), 60 deletions(-) diff --git a/tool/update-upgrade/ss-do-upgrade.sh b/tool/update-upgrade/ss-do-upgrade.sh index 80e6c90..dd78410 100755 --- a/tool/update-upgrade/ss-do-upgrade.sh +++ b/tool/update-upgrade/ss-do-upgrade.sh @@ -1,16 +1,16 @@ #!/bin/bash + if [ "$(id -u)" != "0" ] ; then - if [ "$IS_ACE_ENV" = "1" ];then - /opt/durapps/spark-store/bin/store-helper/pass-auth.sh "$0" "$@" - else - xhost + - pkexec "$0" "$@" - exit - fi + if [ "$IS_ACE_ENV" = "1" ] ; then + /opt/durapps/spark-store/bin/store-helper/pass-auth.sh "$0" "$@" + else + xhost + + pkexec "$0" "$@" + exit + fi fi - -trap "rm -f /tmp/spark-store/upgradeStatus.txt" EXIT +trap "rm -f /tmp/spark-store/upgradeStatus.txt" EXIT source /opt/durapps/spark-store/bin/bashimport/transhell.amber load_transhell_debug @@ -20,40 +20,41 @@ function get_name_from_desktop_file() { local name_i18n local package_name package_name=$1 - for desktop_file_path in $(dpkg -L "$package_name" |grep /usr/share/applications/ | awk '/\.desktop$/ {print}'); do -if [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "true" ] || [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "True" ];then - continue - else - name_orig=$(grep -m 1 '^Name=' "$desktop_file_path" | cut -d '=' -f 2) - name_i18n=$(grep -m 1 "^Name\[${LANGUAGE}\]\=" "$desktop_file_path" | cut -d '=' -f 2) - if [ -z "$name_i18n" ] ;then - app_name_in_desktop=$name_orig + for desktop_file_path in $(dpkg -L "$package_name" |grep /usr/share/applications/ | awk '/\.desktop$/ {print}') ; do + if [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "true" ] || [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "True" ] ; then + continue else - app_name_in_desktop=$name_i18n + name_orig=$(awk -F= '/^\[Desktop Entry\]$/ {found=1} found && /^Name=/ {print $2; exit} /^\[.*\]$/ && !/\[Desktop Entry\]/ {exit}' "$desktop_file_path") + name_i18n=$(awk -v lang="Name[$LANGUAGE]" -F= '/^\[Desktop Entry\]$/ {found=1} found && /^Name\[/ && $1 == lang {print $2; exit} /^\[.*\]$/ && !/\[Desktop Entry\]/ {exit}' "$desktop_file_path") + if [ -z "$name_i18n" ] ; then + app_name_in_desktop=$name_orig + else + app_name_in_desktop=$name_i18n + fi fi - - fi done - for desktop_file_path in $(dpkg -L "$package_name" |grep /opt/apps/$package_name/entries/applications | awk '/\.desktop$/ {print}'); do - if [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "true" ] || [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "True" ];then - continue - else - name_orig=$(grep -m 1 '^Name=' "$desktop_file_path" | cut -d '=' -f 2) - name_i18n=$(grep -m 1 "^Name\[${LANGUAGE}\]\=" "$desktop_file_path" | cut -d '=' -f 2) - if [ -z "$name_i18n" ] ;then - app_name_in_desktop=$name_orig - else - app_name_in_desktop=$name_i18n - fi - - fi - done -if [ -z "$app_name_in_desktop" ] ;then -app_name_in_desktop=${package_name} -fi -echo ${app_name_in_desktop} + for desktop_file_path in $(dpkg -L "$package_name" |grep /opt/apps/$package_name/entries/applications | awk '/\.desktop$/ {print}') ; do + if [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "true" ] || [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "True" ] ; then + continue + else + name_orig=$(awk -F= '/^\[Desktop Entry\]$/ {found=1} found && /^Name=/ {print $2; exit} /^\[.*\]$/ && !/\[Desktop Entry\]/ {exit}' "$desktop_file_path") + name_i18n=$(awk -v lang="Name[$LANGUAGE]" -F= '/^\[Desktop Entry\]$/ {found=1} found && /^Name\[/ && $1 == lang {print $2; exit} /^\[.*\]$/ && !/\[Desktop Entry\]/ {exit}' "$desktop_file_path") + if [ -z "$name_i18n" ] ; then + app_name_in_desktop=$name_orig + else + app_name_in_desktop=$name_i18n + fi + fi + done + + if [ -z "$app_name_in_desktop" ] ; then + app_name_in_desktop=${package_name} + fi + + echo ${app_name_in_desktop} } + touch /tmp/spark-store/upgradeStatus.txt # 执行 apt update @@ -118,32 +119,23 @@ done) ## 如果没有选择,则直接退出 if [ -z "$PKG_UPGRADE_LIST" ] ; then zenity --info --text "${TRANSHELL_CONTENT_NO_APP_IS_CHOSEN}" --title "${TRANSHELL_CONTENT_SPARK_STORE_UPGRADE_MODEL}" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg - else - ### 更新用户选择的应用 - - -(for PKG_UPGRADE in $PKG_UPGRADE_LIST; do - APP_UPGRADE="$(get_name_from_desktop_file $PKG_UPGRADE)" - update_transhell - - # 启动升级任务 - (pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgrade-app $PKG_UPGRADE -y 2>&1 > /dev/null ) & - cmd_pid=$! - # 动态修改zenity的文本 - echo "# ${TRANSHELL_CONTENT_UPGRADING_PLEASE_WAIT}" - wait -done) | zenity --progress --auto-close --no-cancel --pulsate --text="Preparing..." --height 70 --width 400 --title="${TRANSHELL_CONTENT_SPARK_STORE_UPGRADE_MODEL}" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg - - - - + else ### 更新用户选择的应用 + (for PKG_UPGRADE in $PKG_UPGRADE_LIST ; do + APP_UPGRADE="$(get_name_from_desktop_file $PKG_UPGRADE)" + update_transhell + # 启动升级任务 + (pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgrade-app $PKG_UPGRADE -y 2>&1 > /dev/null ) & + cmd_pid=$! + # 动态修改zenity的文本 + echo "# ${TRANSHELL_CONTENT_UPGRADING_PLEASE_WAIT}" + wait + done) | zenity --progress --auto-close --no-cancel --pulsate --text="Preparing..." --height 70 --width 400 --title="${TRANSHELL_CONTENT_SPARK_STORE_UPGRADE_MODEL}" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg #### 更新成功 if [ -z "`cat /tmp/spark-store-app-upgrade-status.txt`" ] ; then zenity --info --text "${TRANSHELL_CONTENT_CHOSEN_APP_UPGRADE_FINISHED}" --title "${TRANSHELL_CONTENT_SPARK_STORE_UPGRADE_MODEL}" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg - else - #### 更新异常 + else #### 更新异常 zenity --error --text "${TRANSHELL_CONTENT_APP_UGRADE_PROCESS_ERROR_PRESS_CONFIRM_TO_CHECK}" --title "${TRANSHELL_CONTENT_SPARK_STORE_UPGRADE_MODEL}" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg zenity --text-info --filename=/tmp/spark-store-app-upgrade-log.txt --checkbox="${TRANSHELL_CONTENT_I_ALREDY_COPIED_THE_LOG_HERE_AND_WILL_USE_IT_TO_FEEDBACK}" --title="${TRANSHELL_CONTENT_FEEDBACK_CAN_BE_FOUND_IN_THE_SETTINGS}" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg fi @@ -151,5 +143,5 @@ done) | zenity --progress --auto-close --no-cancel --pulsate --text="Preparing.. fi fi -rm -f /tmp/spark-store/upgradeStatus.txt +rm -f /tmp/spark-store/upgradeStatus.txt # 从最开头