diff --git a/src/DEBIAN/control b/src/DEBIAN/control index af4141f..6ca0941 100644 --- a/src/DEBIAN/control +++ b/src/DEBIAN/control @@ -1,9 +1,9 @@ Package: uos-packaging-tools -Version: 1.3.2 +Version: 1.4.0 Architecture: all Maintainer: shenmo Installed-Size: 10 -Depends: libnotify-bin,fakeroot,zstd,policykit-1 | polkit,zenity +Depends: libnotify-bin,fakeroot,zstd,policykit-1 | polkit,zenity,bash,ostree Section: graphics Priority: optional Description: uos-packaging-tools diff --git a/src/opt/uos-packaging-tools/flap-extractor b/src/opt/uos-packaging-tools/flap-extractor new file mode 100755 index 0000000..e6979ef --- /dev/null +++ b/src/opt/uos-packaging-tools/flap-extractor @@ -0,0 +1,60 @@ +#!/bin/bash + +# Flatpak Extractor Script +# Usage: ./flatpak-extractor.sh + +set -e + +# Check if filename is provided +if [ $# -eq 0 ]; then + echo "Error: No Flatpak file specified" + echo "Usage: $0 " + exit 1 +fi + +FLATPAK_FILE="$(realpath $1)" + +# Check if file exists +if [ ! -f "$FLATPAK_FILE" ]; then + echo "Error: File '$FLATPAK_FILE' not found" + exit 1 +fi + +# Create output directory name from flatpak filename (remove .flatpak extension) +OUTPUT_DIR="${FLATPAK_FILE%.flatpak}" +if [ "$OUTPUT_DIR" = "$FLATPAK_FILE" ]; then + # File doesn't have .flatpak extension, append _extracted + OUTPUT_DIR="${FLATPAK_FILE}_extracted" +fi + + + +# Create temporary directory for ostree repo +mkdir -p "${FLATPAK_FILE}_tmp" +REPO_DIR="${FLATPAK_FILE}_tmp" +trap 'rm -rf "$REPO_DIR"' EXIT + +echo "Extracting $FLATPAK_FILE to $OUTPUT_DIR..." + +# Initialize ostree repo +pushd "$REPO_DIR" +echo "Initializing ostree repository..." +ostree init --repo="repo" --mode=bare-user + +# Apply static delta +echo "Applying static delta..." +ostree static-delta apply-offline --repo="repo" "$FLATPAK_FILE" + + + +# Checkout the files +echo "Checking out files..." +mkdir -p "$OUTPUT_DIR" + +ostree checkout --repo="repo" -U $(basename $(echo repo/objects/*/*.commit | cut -d/ -f3- --output-delimiter= ) .commit) "outdir" +mv -v outdir/* $OUTPUT_DIR + +popd +notify-send $(basename $1)拆包完成 -i /usr/share/icons/uos-packaging-tools.png + +echo "Extraction complete! Files are in: $OUTPUT_DIR" \ No newline at end of file diff --git a/src/usr/bin/flatpak-extractor b/src/usr/bin/flatpak-extractor new file mode 120000 index 0000000..704d437 --- /dev/null +++ b/src/usr/bin/flatpak-extractor @@ -0,0 +1 @@ +../../opt/uos-packaging-tools/flap-extractor \ No newline at end of file diff --git a/src/usr/share/applications/flatpak-extract.desktop b/src/usr/share/applications/flatpak-extract.desktop new file mode 100644 index 0000000..9ea8129 --- /dev/null +++ b/src/usr/share/applications/flatpak-extract.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Categories=Development; +Encoding=UTF-8 +Exec=/opt/uos-packaging-tools/flap-extractor %F +Icon=uos-packaging-tools +MimeType=application/vnd.flatpak,application/vnd.xdgapp;application/octet-stream; +Name=解包 Flatpak +NoDisplay=true +StartupWMClass=解包Flap +Terminal=false +Type=Application diff --git a/src/usr/share/applications/just-X-me.desktop b/src/usr/share/applications/just-X-me.desktop index e806902..b6a66b1 100644 --- a/src/usr/share/applications/just-X-me.desktop +++ b/src/usr/share/applications/just-X-me.desktop @@ -5,7 +5,7 @@ Exec=/opt/uos-packaging-tools/just-X-me %F Icon=uos-packaging-tools MimeType=application/vnd.debian.binary-package;application/x-deb; Name=直接解包 -NoDisplay=false +NoDisplay=true StartupWMClass=直接解包 Terminal=false Type=Application diff --git a/src/usr/share/applications/just-install-me.desktop b/src/usr/share/applications/just-install-me.desktop index a05ce96..d1fe02d 100644 --- a/src/usr/share/applications/just-install-me.desktop +++ b/src/usr/share/applications/just-install-me.desktop @@ -9,4 +9,4 @@ Name[zh_CN]=安装 StartupWMClass=Install Terminal=false Type=Application -NoDisplay=false +NoDisplay=true diff --git a/src/usr/share/applications/just-repack-me.desktop b/src/usr/share/applications/just-repack-me.desktop index 98dfe07..a698648 100644 --- a/src/usr/share/applications/just-repack-me.desktop +++ b/src/usr/share/applications/just-repack-me.desktop @@ -8,4 +8,4 @@ Name=重打包 StartupWMClass=重打包 Terminal=false Type=Application -NoDisplay=false +NoDisplay=true