mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-14 12:52:04 +08:00
38
tool/ssaudit
38
tool/ssaudit
@@ -291,16 +291,42 @@ function create_desktop_file() {
|
|||||||
export CURRENT_USER_DIR_DESKTOP=$(sudo -u "$user" xdg-user-dir DESKTOP)
|
export CURRENT_USER_DIR_DESKTOP=$(sudo -u "$user" xdg-user-dir DESKTOP)
|
||||||
function exec_create_desktop_file() {
|
function exec_create_desktop_file() {
|
||||||
local desktop_files=()
|
local desktop_files=()
|
||||||
|
local package_name_lower=$(echo "$package_name" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
# 收集所有桌面文件
|
# 只收集指定路径下的桌面文件
|
||||||
desktop_files+=($(dpkg -L "$package_name" | grep '/usr/share/applications/.*\.desktop$'))
|
# 1. /usr/share/applications/ 目录下的 .desktop 文件
|
||||||
desktop_files+=($(dpkg -L "$package_name" | grep '/opt/apps/'"$package_name"'/entries/applications/.*\.desktop$'))
|
desktop_files+=($(dpkg -L "$package_name" 2>/dev/null | grep '^/usr/share/applications/.*\.desktop$' || true))
|
||||||
|
|
||||||
|
# 2. /opt/apps/包名/entries/applications/ 目录下的 .desktop 文件
|
||||||
|
# 先尝试精确匹配包名路径
|
||||||
|
desktop_files+=($(dpkg -L "$package_name" 2>/dev/null | grep "^/opt/apps/$package_name/entries/applications/.*\.desktop$" || true))
|
||||||
|
|
||||||
|
# 再尝试小写包名路径(有些包可能使用小写路径)
|
||||||
|
desktop_files+=($(dpkg -L "$package_name" 2>/dev/null | grep "^/opt/apps/$package_name_lower/entries/applications/.*\.desktop$" || true))
|
||||||
|
|
||||||
|
# 如果没有找到任何符合条件的桌面文件,则直接返回
|
||||||
|
if [ ${#desktop_files[@]} -eq 0 ]; then
|
||||||
|
echo "未找到符合条件的桌面快捷方式文件(/usr/share/applications/ 或 /opt/apps/$package_name/entries/applications/)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "找到 ${#desktop_files[@]} 个桌面快捷方式文件:"
|
||||||
|
printf '%s\n' "${desktop_files[@]}"
|
||||||
|
|
||||||
for desktop_file_path in "${desktop_files[@]}"; do
|
for desktop_file_path in "${desktop_files[@]}"; do
|
||||||
if [ "$FORCE_CREATE_DESKTOP" -eq 1 ] || [ -z "$(grep 'NoDisplay=true' "$desktop_file_path")" ]; then
|
# 检查文件是否存在
|
||||||
echo "$desktop_file_path is checked and will be installed to desktop"
|
if [ ! -f "$desktop_file_path" ]; then
|
||||||
|
echo "文件不存在,跳过: $desktop_file_path"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查是否是 NoDisplay=true 的桌面文件
|
||||||
|
if [ -z "$(grep -i 'NoDisplay=true' "$desktop_file_path")" ]; then
|
||||||
|
echo "安装桌面快捷方式: $desktop_file_path"
|
||||||
chmod +x "$desktop_file_path"
|
chmod +x "$desktop_file_path"
|
||||||
sudo -u "$user" cp "$desktop_file_path" "${CURRENT_USER_DIR_DESKTOP}"
|
sudo -u "$user" cp "$desktop_file_path" "${CURRENT_USER_DIR_DESKTOP}/"
|
||||||
|
else
|
||||||
|
echo "跳过 NoDisplay=true 的桌面文件: $desktop_file_path"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -291,19 +291,46 @@ function create_desktop_file() {
|
|||||||
export CURRENT_USER_DIR_DESKTOP=$(sudo -u "$user" xdg-user-dir DESKTOP)
|
export CURRENT_USER_DIR_DESKTOP=$(sudo -u "$user" xdg-user-dir DESKTOP)
|
||||||
function exec_create_desktop_file() {
|
function exec_create_desktop_file() {
|
||||||
local desktop_files=()
|
local desktop_files=()
|
||||||
|
local package_name_lower=$(echo "$package_name" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
# 收集所有桌面文件
|
# 只收集指定路径下的桌面文件
|
||||||
desktop_files+=($(dpkg -L "$package_name" | grep '/usr/share/applications/.*\.desktop$'))
|
# 1. /usr/share/applications/ 目录下的 .desktop 文件
|
||||||
desktop_files+=($(dpkg -L "$package_name" | grep '/opt/apps/'"$package_name"'/entries/applications/.*\.desktop$'))
|
desktop_files+=($(dpkg -L "$package_name" 2>/dev/null | grep '^/usr/share/applications/.*\.desktop$' || true))
|
||||||
|
|
||||||
|
# 2. /opt/apps/包名/entries/applications/ 目录下的 .desktop 文件
|
||||||
|
# 先尝试精确匹配包名路径
|
||||||
|
desktop_files+=($(dpkg -L "$package_name" 2>/dev/null | grep "^/opt/apps/$package_name/entries/applications/.*\.desktop$" || true))
|
||||||
|
|
||||||
|
# 再尝试小写包名路径(有些包可能使用小写路径)
|
||||||
|
desktop_files+=($(dpkg -L "$package_name" 2>/dev/null | grep "^/opt/apps/$package_name_lower/entries/applications/.*\.desktop$" || true))
|
||||||
|
|
||||||
|
# 如果没有找到任何符合条件的桌面文件,则直接返回
|
||||||
|
if [ ${#desktop_files[@]} -eq 0 ]; then
|
||||||
|
echo "未找到符合条件的桌面快捷方式文件(/usr/share/applications/ 或 /opt/apps/$package_name/entries/applications/)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "找到 ${#desktop_files[@]} 个桌面快捷方式文件:"
|
||||||
|
printf '%s\n' "${desktop_files[@]}"
|
||||||
|
|
||||||
for desktop_file_path in "${desktop_files[@]}"; do
|
for desktop_file_path in "${desktop_files[@]}"; do
|
||||||
if [ "$FORCE_CREATE_DESKTOP" -eq 1 ] || [ -z "$(grep 'NoDisplay=true' "$desktop_file_path")" ]; then
|
# 检查文件是否存在
|
||||||
echo "$desktop_file_path is checked and will be installed to desktop"
|
if [ ! -f "$desktop_file_path" ]; then
|
||||||
|
echo "文件不存在,跳过: $desktop_file_path"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查是否是 NoDisplay=true 的桌面文件
|
||||||
|
if [ -z "$(grep -i 'NoDisplay=true' "$desktop_file_path")" ]; then
|
||||||
|
echo "安装桌面快捷方式: $desktop_file_path"
|
||||||
chmod +x "$desktop_file_path"
|
chmod +x "$desktop_file_path"
|
||||||
sudo -u "$user" cp "$desktop_file_path" "${CURRENT_USER_DIR_DESKTOP}"
|
sudo -u "$user" cp "$desktop_file_path" "${CURRENT_USER_DIR_DESKTOP}/"
|
||||||
|
else
|
||||||
|
echo "跳过 NoDisplay=true 的桌面文件: $desktop_file_path"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
export -f exec_create_desktop_file
|
export -f exec_create_desktop_file
|
||||||
|
|
||||||
# 在ACE环境中创建桌面快捷方式
|
# 在ACE环境中创建桌面快捷方式
|
||||||
|
|||||||
Reference in New Issue
Block a user