现在支持在deepin下右键卸载

This commit is contained in:
2026-03-25 19:41:38 +08:00
parent cc3e3c9c12
commit e1070820ee
2 changed files with 78 additions and 75 deletions

View File

@@ -1,5 +1,5 @@
Package: apm Package: apm
Version: 1.1.2 Version: 1.1.3
Maintainer: shenmo <jifengshenmo@outlook.com> Maintainer: shenmo <jifengshenmo@outlook.com>
Priority: optional Priority: optional
Section: utils Section: utils

View File

@@ -1,9 +1,5 @@
#!/bin/bash #!/bin/bash
enumAppInfoList() { enumAppInfoList() {
appInfoList=() appInfoList=()
apps="/var/lib/apm" apps="/var/lib/apm"
@@ -13,6 +9,7 @@ enumAppInfoList() {
done done
echo "${appInfoList[@]}" echo "${appInfoList[@]}"
} }
linkDir() { linkDir() {
ensureTargetDir() { ensureTargetDir() {
targetFile=$1 targetFile=$1
@@ -26,8 +23,6 @@ linkDir() {
targetDir=$(dirname "$target") targetDir=$(dirname "$target")
find "$source" -type f | while read sourceFile; do find "$source" -type f | while read sourceFile; do
targetFile="$targetDir/${sourceFile#$sourceDir/}" targetFile="$targetDir/${sourceFile#$sourceDir/}"
ensureTargetDir "$targetFile" ensureTargetDir "$targetFile"
sourceFile=$(realpath --relative-to="$(dirname $targetFile)" "$sourceFile" ) sourceFile=$(realpath --relative-to="$(dirname $targetFile)" "$sourceFile" )
if [ ! -e "${targetFile}" ];then if [ ! -e "${targetFile}" ];then
@@ -36,7 +31,6 @@ linkDir() {
done done
} }
linkApp() { linkApp() {
appID=$1 appID=$1
appEntriesDir="/var/lib/apm/$appID/entries" appEntriesDir="/var/lib/apm/$appID/entries"
@@ -53,6 +47,21 @@ linkApp() {
if [ ! -d "$folder" ]; then if [ ! -d "$folder" ]; then
continue continue
fi fi
# 对于 applications 目录,先为所有 .desktop 文件添加必要的字段
if [ "$folder" = "$appEntriesDir/applications" ]; then
find "$folder" -name "*.desktop" -type f | while read desktop; do
# 添加 X-APM-APPID
if ! grep -q "^X-APM-APPID=" "$desktop"; then
echo "X-APM-APPID=$appID" >> "$desktop"
fi
# 添加 X-Deepin-PreUninstall
if ! grep -q "^X-Deepin-PreUninstall=" "$desktop"; then
echo "X-Deepin-PreUninstall=amber-pm-app-uninstaller $appID" >> "$desktop"
fi
done
fi
if [ "$folder" = "$appEntriesDir/polkit" ]; then if [ "$folder" = "$appEntriesDir/polkit" ]; then
linkDir "$folder" "/usr/share/polkit-1" linkDir "$folder" "/usr/share/polkit-1"
elif [ "$folder" = "$appEntriesDir/fonts/conf" ]; then elif [ "$folder" = "$appEntriesDir/fonts/conf" ]; then
@@ -64,10 +73,8 @@ linkApp() {
} }
function exec_uos_package_link(){ function exec_uos_package_link(){
for app in $(enumAppInfoList); do for app in $(enumAppInfoList); do
linkApp "$app" & linkApp "$app" &
done done
wait wait
} }
@@ -89,7 +96,6 @@ done
function exec_link_clean(){ function exec_link_clean(){
# remove broken links in /usr/share # remove broken links in /usr/share
find /usr/share/applications -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/applications -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /usr/share/icons -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/icons -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /usr/share/mime/packages -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/mime/packages -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
@@ -98,20 +104,17 @@ function exec_link_clean(){
find /usr/share/fcitx -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/fcitx -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /usr/share/help -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/help -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /usr/share/locale -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/locale -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
# find /usr/lib/$(gcc -dumpmachine)/fcitx -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /usr/lib/mozilla/plugins -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/lib/mozilla/plugins -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /usr/share/polkit-1/actions -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/polkit-1/actions -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /usr/share/fonts -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /usr/share/fonts -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
find /etc/fonts/conf.d -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null & find /etc/fonts/conf.d -xtype l -exec echo '{} is invalid now and going to be cleaned' \; -exec unlink {} \; 2>/dev/null &
} }
function exec_uos_package_update(){ function exec_uos_package_update(){
update-icon-caches /usr/share/icons/* > /dev/null 2>&1 & update-icon-caches /usr/share/icons/* > /dev/null 2>&1 &
update-desktop-database -q > /dev/null 2>&1 & update-desktop-database -q > /dev/null 2>&1 &
update-mime-database -V /usr/share/mime > /dev/null 2>&1 & update-mime-database -V /usr/share/mime > /dev/null 2>&1 &
glib-compile-schemas /usr/share/glib-2.0/schemas/ > /dev/null 2>&1 & glib-compile-schemas /usr/share/glib-2.0/schemas/ > /dev/null 2>&1 &
} }
function exec_debian_compatibile_links(){ function exec_debian_compatibile_links(){
@@ -156,13 +159,13 @@ for link in "$TARGET_DIR"/*; do
fi fi
done done
} }
######################################################################################### #########################################################################################
echo "----------------Running APM Dstore Patch----------------" echo "----------------Running APM Dstore Patch----------------"
# execute linkApp function for each app and print output # 执行链接操作(同时完成 .desktop 字段添加)
exec_uos_package_link exec_uos_package_link
# exec_v23_icon_link # exec_v23_icon_link
exec_link_clean exec_link_clean
wait wait