# 获取应用信息 DESKTOP_FILE=$(find squashfs-root -name "*.desktop" | head -n 1) if [ -z "$DESKTOP_FILE" ]; then echo"错误: 未找到.desktop文件" exit 1 fi
# 从desktop文件中读取应用信息 APP_NAME=$(grep "^Name=""$DESKTOP_FILE" | head -n 1 | cut -d= -f2) APP_VERSION=$(grep "^Version=""$DESKTOP_FILE" | head -n 1 | cut -d= -f2) if [ -z "$APP_VERSION" ]; then APP_VERSION="1.0.0" fi
# 在获取应用信息后添加图标处理 ICON_ENTRY=$(grep "^Icon=""$DESKTOP_FILE" | head -n 1 | cut -d= -f2) if [ -n "$ICON_ENTRY" ]; then # 查找图标文件 ICON_FILE="" # 按优先级查找不同格式的图标 for ext in".png"".svg"".xpm"; do # 首先检查完整路径 if [ -f "squashfs-root/$ICON_ENTRY$ext" ]; then ICON_FILE="squashfs-root/$ICON_ENTRY$ext" break elif [ -f "squashfs-root/$ICON_ENTRY" ]; then ICON_FILE="squashfs-root/$ICON_ENTRY" break fi
# 然后在常见位置查找 FOUND_ICON=$(find squashfs-root -type f -name "$ICON_ENTRY$ext" | head -n 1) if [ -n "$FOUND_ICON" ]; then ICON_FILE="$FOUND_ICON" break fi done fi
# 处理图标 if [ -n "$ICON_FILE" ]; then if [[ "$ICON_FILE" == *.svg ]]; then cp %{_sourcedir}/"$ICON_FILE" \$RPM_BUILD_ROOT/usr/share/icons/hicolor/scalable/apps/%{name}.svg ICON_PATH="%{name}" else cp %{_sourcedir}/"$ICON_FILE" \$RPM_BUILD_ROOT/usr/share/icons/hicolor/256x256/apps/%{name}.png ICON_PATH="%{name}" fi fi
# 创建desktop文件 cat > \$RPM_BUILD_ROOT/usr/share/applications/%{name}.desktop << EOL $(cat "$DESKTOP_FILE" | sed "s|Exec=.*|Exec=/opt/%{name}/AppRun|g" | sed "s|Icon=.*|Icon=%{name}|g") EOL