欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 【无标题】linux打包utools为appimage

【无标题】linux打包utools为appimage

2025/4/18 13:19:08 来源:https://blog.csdn.net/qq_38883889/article/details/147088582  浏览:    关键词:【无标题】linux打包utools为appimage

linux打包utools为appimage

  • 前言
  • 说明
  • 依赖 可以下载appimage到脚本目录,然后给一个可执行权限
  • 脚本如下

前言

本人使用manjaro多年,期间出现了多次滚挂的情况,最近想切换到nixos(传说中的linux发行版的一股泥石流,由于用法比较怪异,学习成本居高不下也被人称做linux中的“邪教”),但是遇到了一些问题,由于鄙人也是utools的重度(中毒)用户脱离这玩意开发效率大打折扣,遂折腾了一下将这玩意打包程appimge的脚本,分享出来供兄弟们参考

说明

以下脚本仅供学习用,请在使用后24小时内删除,禁止用于任何修改utools功能以及任何的破解软件等侵犯原作者权益用途,使用本脚本的任何风险自担

依赖 可以下载appimage到脚本目录,然后给一个可执行权限

linuxdeploy
appimagetool

wget https://github.com/tauri-apps/binary-releases/releases/download/linuxdeploy/linuxdeploy-x86_64.AppImage 
chmod +x linuxdeploy-x86_64.AppImagewget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage 
chmod +x appimagetool-x86_64.AppImage

脚本如下

#!/bin/bash
set -x# 检查依赖项
dependencies=("wget" "tree" "sed")
for dep in "${dependencies[@]}"; doif ! command -v "$dep" &> /dev/null; thenecho "错误: $dep 未安装,请安装 $dep 后再运行脚本。"exit 1fi
done# 定义变量
APP_NAME="uTools"
APP_DIR="$APP_NAME.AppDir"
EXECUTABLE="/opt/uTools/utools"
DESKTOP_FILE="/usr/share/applications/utools.desktop"
ICON_FILE="/usr/share/icons/hicolor/256x256/apps/utools.png"
LINUXDEPLOY_URL="https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
LINUXDEPLOY="linuxdeploy-x86_64.AppImage"
FFMPEG_LIB="/opt/uTools/libffmpeg.so"# 创建 AppDir 目录结构
mkdir -p "$APP_DIR/opt"
mkdir -p "$APP_DIR/usr/share/applications"
mkdir -p "$APP_DIR/usr/share/icons/hicolor/256x256/apps"
mkdir -p "$APP_DIR/usr/share/pixmaps"  # 创建缺失的目录# 使用 sudo 复制整个 uTools 目录到 AppDir 的 opt 下
sudo cp -rf /opt/uTools "$APP_DIR/opt"
if [ $? -eq 0 ]; thenecho "成功将 /opt/uTools 复制到 $APP_DIR/opt"
elseecho "复制 /opt/uTools 到 $APP_DIR/opt 失败"
fi# 调整复制后的文件权限,以便后续操作
sudo chown -R $USER:$USER "$APP_DIR/opt/uTools"
if [ $? -eq 0 ]; thenecho "成功修改 $APP_DIR/opt/uTools 的权限"
elseecho "修改 $APP_DIR/opt/uTools 的权限失败"
fi# 输出 AppDir 中 opt/uTools 目录的权限信息
ls -l "$APP_DIR/opt/uTools"# 检查可执行文件是否存在
APP_EXECUTABLE="$APP_DIR/opt/uTools/utools"
if [ ! -f "$APP_EXECUTABLE" ]; thenecho "错误: 可执行文件 $APP_EXECUTABLE 不存在,请检查复制过程。"exit 1
fi# 确保可执行文件有正确的权限
chmod +x "$APP_EXECUTABLE"
if [ $? -eq 0 ]; thenecho "成功设置 $APP_EXECUTABLE 的可执行权限"
elseecho "设置 $APP_EXECUTABLE 的可执行权限失败"
fi# 复制桌面文件,使用 -f 选项强制覆盖
if [ -f "$DESKTOP_FILE" ]; thencp -f "$DESKTOP_FILE" "$APP_DIR/usr/share/applications/"if [ $? -eq 0 ]; thenecho "成功复制桌面文件到 $APP_DIR/usr/share/applications/"elseecho "复制桌面文件到 $APP_DIR/usr/share/applications/ 失败"fi# 复制桌面文件到 AppDir 根目录cp -f "$DESKTOP_FILE" "$APP_DIR/"if [ $? -eq 0 ]; thenecho "成功复制桌面文件到 $APP_DIR 根目录"elseecho "复制桌面文件到 $APP_DIR 根目录 失败"fi
elseecho "警告: 未找到桌面文件 $DESKTOP_FILE"
fi# 复制图标文件,使用 -f 选项强制覆盖
if [ -f "$ICON_FILE" ]; thencp -f "$ICON_FILE" "$APP_DIR/usr/share/icons/hicolor/256x256/apps/"if [ $? -eq 0 ]; thenecho "成功复制图标文件到 $APP_DIR/usr/share/icons/hicolor/256x256/apps/"elseecho "复制图标文件到 $APP_DIR/usr/share/icons/hicolor/256x256/apps/ 失败"fi# 复制图标文件到 AppDir 根目录cp -f "$ICON_FILE" "$APP_DIR/"if [ $? -eq 0 ]; thenecho "成功复制图标文件到 $APP_DIR 根目录"elseecho "复制图标文件到 $APP_DIR 根目录 失败"fi
elseecho "警告: 未找到图标文件 $ICON_FILE"
fi# 复制 libffmpeg.so
if [ -f "$FFMPEG_LIB" ]; thenmkdir -p "$APP_DIR/usr/lib"cp "$FFMPEG_LIB" "$APP_DIR/usr/lib/"if [ $? -eq 0 ]; thenecho "成功复制 libffmpeg.so 到 $APP_DIR/usr/lib/"elseecho "复制 libffmpeg.so 到 $APP_DIR/usr/lib/ 失败"fi# 确保文件权限正确chmod +r "$APP_DIR/usr/lib/libffmpeg.so"if [ $? -eq 0 ]; thenecho "成功设置 $APP_DIR/usr/lib/libffmpeg.so 的读权限"elseecho "设置 $APP_DIR/usr/lib/libffmpeg.so 的读权限失败"fi
elseecho "警告: 未找到 libffmpeg.so 文件"
fi# 下载 linuxdeploy
if [ ! -f "$LINUXDEPLOY" ]; thenwget "$LINUXDEPLOY_URL"if [ $? -eq 0 ]; thenecho "成功下载 $LINUXDEPLOY"elseecho "下载 $LINUXDEPLOY 失败"fichmod +x "$LINUXDEPLOY"if [ $? -eq 0 ]; thenecho "成功设置 $LINUXDEPLOY 的可执行权限"elseecho "设置 $LINUXDEPLOY 的可执行权限失败"fi
fi# 生成 AppRun 文件
APPRUN_FILE="$APP_DIR/AppRun"
cat << EOF > "$APPRUN_FILE"
#!/bin/sh
HERE="\$(dirname "\$(readlink -f "\${0}")")"
exec "\$HERE/opt/uTools/utools" "\$@"
EOF
chmod +x "$APPRUN_FILE"
echo "成功生成 $APPRUN_FILE"# 打印 AppDir 内的文件结构,用于调试
echo "AppDir 内的文件结构:"
tree "$APP_DIR"# 使用 linuxdeploy 仅处理依赖,不复制文件
./$LINUXDEPLOY --appdir "$(pwd)/$APP_DIR" --deploy-deps-only="$(pwd)/$APP_EXECUTABLE" --executable="$(pwd)/$APP_EXECUTABLE" --output appimage #./$LINUXDEPLOY --appdir="$(pwd)/uTools.AppDir" --executable="$(pwd)/uTools.AppDir/opt/uTools/utools" --desktop-file="$(pwd)/uTools.AppDir/usr/share/applications/uTools.desktop" --icon-file="$(pwd)/uTools.AppDir/utools.png"
./appimagetool-x86_64.AppImage $(pwd)/uTools.AppDir/echo "AppImage 打包完成!"
echo "AppDir 目录路径为: $(realpath $APP_DIR)"
# 查找生成的 AppImage 文件
APPIMAGE_FILE=$(find . -maxdepth 1 -name "${APP_NAME}-*.AppImage" | head -n 1)
if [ -n "$APPIMAGE_FILE" ]; thenecho "生成的 AppImage 文件路径为: $(realpath $APPIMAGE_FILE)"
elseecho "未找到生成的 AppImage 文件,请检查打包过程是否有错误。"
fi

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词