- 新增 update 模块:从 dl.shellrs.com 取已签名的更新清单(minisign,签名绑定通道和版本), 按大小和 SHA-256 校验安装包;下载可续传、可换镜像,走系统代理 - 按安装方式安装:macOS 整包交换并核对开发者签名,Windows 静默运行安装程序,Linux 覆盖 AppImage; 开发构建和无法自更新的安装只提示前往下载页 - 设置新增「关于」:版本信息、检查更新、下载进度和「自动检查并下载更新」开关; 新版本就绪后标题栏右上角提示,更新对话框写明重启会中断什么;退出时自动安装,新版本启动后提示已更新 - 数据库拒绝打开更新版本建的库,迁移已有的库之前先备份成 shellrs.db.v<旧版本>.bak - 新增 release workflow 和 packaging 脚本:universal macOS 包签名公证、Inno Setup 安装程序、 AppImage、上传 R2、生成并签名更新清单;新增 CHANGELOG.md - 应用图标放在 assets/logo;开发模式下 macOS Dock 显示 logo,Windows exe 嵌入图标 - 修正 AppImage 里 shellrs 命令链接到临时挂载点;启动时刷新已安装但过期的 Agent skill - 新增清单、验签、下载、各平台安装器和界面的单元测试与 UI 测试
41 lines
1.3 KiB
Bash
Executable File
41 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Put a built `shellrs` binary into an AppImage.
|
|
#
|
|
# packaging/linux/appimage.sh <binary> <version> <out-dir>
|
|
#
|
|
# Needs appimagetool on the PATH (or APPIMAGETOOL), which uses the static
|
|
# type2 runtime: the AppImage runs without libfuse2, which Ubuntu 22.04 and
|
|
# later no longer install. The graphics stack (Vulkan, Mesa, Wayland, X) is
|
|
# the host's and is not bundled. The icon is assets/logo/shellrs.png.
|
|
set -euo pipefail
|
|
|
|
binary=$1
|
|
version=$2
|
|
out=$3
|
|
|
|
here=$(cd "$(dirname "$0")" && pwd)
|
|
root=$(cd "$here/../.." && pwd)
|
|
tool=${APPIMAGETOOL:-appimagetool}
|
|
|
|
work=$(mktemp -d)
|
|
appdir="$work/ShellRS.AppDir"
|
|
mkdir -p "$appdir/usr/bin"
|
|
cp "$binary" "$appdir/usr/bin/shellrs"
|
|
chmod 755 "$appdir/usr/bin/shellrs"
|
|
cp "$here/shellrs.desktop" "$appdir/shellrs.desktop"
|
|
icon="$root/assets/logo/shellrs.png"
|
|
if [ ! -f "$icon" ]; then
|
|
echo "error: $icon is missing; an AppImage needs an icon" >&2
|
|
exit 1
|
|
fi
|
|
cp "$icon" "$appdir/shellrs.png"
|
|
# The executable itself is the entry point; the restart after an update
|
|
# starts $APPIMAGE again, so nothing here needs to survive it.
|
|
ln -s usr/bin/shellrs "$appdir/AppRun"
|
|
|
|
mkdir -p "$out"
|
|
target="$out/ShellRS-$version-linux-x86_64.AppImage"
|
|
ARCH=x86_64 "$tool" --no-appstream "$appdir" "$target"
|
|
rm -rf "$work"
|
|
echo "$target"
|