diff --git a/src/usr/bin/amber-pm-convert b/src/usr/bin/amber-pm-convert index 962c34f..34e05d4 100755 --- a/src/usr/bin/amber-pm-convert +++ b/src/usr/bin/amber-pm-convert @@ -457,12 +457,26 @@ interactive_copy_entries() { # 函数:处理桌面文件内容 +# 函数:处理桌面文件内容(安全版本,避免重复处理) process_desktop_file() { local desktop_file="$1" local pkgname="$2" log.info "处理桌面文件: $desktop_file" + # 检查文件是否已经处理过(避免重复添加 apm run) + if grep -q "^Exec=apm run $pkgname " "$desktop_file"; then + log.info "桌面文件已经处理过,跳过: $desktop_file" + return 0 + fi + + # 检查是否有其他包的 apm run 前缀(清理旧的) + if grep -q "^Exec=apm run [^ ]* " "$desktop_file"; then + log.info "发现旧的 apm run 前缀,清理后重新添加" + # 移除所有 apm run 前缀 + sed -i "s|^Exec=apm run [^ ]* ||" "$desktop_file" + fi + # 尝试用 busybox dos2unix(若不存在则跳过转换) if command -v busybox >/dev/null 2>&1; then busybox dos2unix "$desktop_file" 2>/dev/null || true @@ -486,8 +500,9 @@ process_desktop_file() { sed -i "s|^Icon=/|Icon=/var/lib/apm/apm/files/ace-env/var/lib/apm/$pkgname/files/core/|" "$desktop_file" fi - # 添加 X-APM-APPID + # 添加 X-APM-APPID(如果不存在) if ! grep -q "X-APM-APPID" "$desktop_file"; then + echo "" >> "$desktop_file" echo "X-APM-APPID=$pkgname" >> "$desktop_file" fi @@ -498,6 +513,7 @@ process_desktop_file() { log.warn "桌面文件可能未正确修改: $desktop_file" fi } +} # 4. 如果有 DEB 文件,进行自动化的检查、解包与修改 if [ -n "$DEB_PATH" ]; then