- 新增 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 测试
48 lines
1.5 KiB
Bash
Executable File
48 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Put a built `shellrs` binary into ShellRS.app.
|
||
#
|
||
# packaging/macos/bundle.sh <binary> <version> <build-number> <out-dir>
|
||
#
|
||
# The icon is assets/logo/shellrs.icns, or made from assets/logo/shellrs.png
|
||
# (1024×1024) when only that is there. Signing, notarizing and zipping are
|
||
# the release workflow's steps.
|
||
set -euo pipefail
|
||
|
||
binary=$1
|
||
version=$2
|
||
build=$3
|
||
out=$4
|
||
|
||
here=$(cd "$(dirname "$0")" && pwd)
|
||
root=$(cd "$here/../.." && pwd)
|
||
app="$out/ShellRS.app"
|
||
|
||
rm -rf "$app"
|
||
mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources"
|
||
cp "$binary" "$app/Contents/MacOS/shellrs"
|
||
chmod 755 "$app/Contents/MacOS/shellrs"
|
||
sed -e "s/@VERSION@/$version/g" -e "s/@BUILD@/$build/g" \
|
||
"$here/Info.plist.in" > "$app/Contents/Info.plist"
|
||
plutil -lint "$app/Contents/Info.plist" >/dev/null
|
||
|
||
icns="$root/assets/logo/shellrs.icns"
|
||
icon="$root/assets/logo/shellrs.png"
|
||
if [ -f "$icns" ]; then
|
||
cp "$icns" "$app/Contents/Resources/ShellRS.icns"
|
||
elif [ -f "$icon" ]; then
|
||
work=$(mktemp -d)
|
||
iconset="$work/ShellRS.iconset"
|
||
mkdir -p "$iconset"
|
||
for size in 16 32 128 256 512; do
|
||
sips -z "$size" "$size" "$icon" --out "$iconset/icon_${size}x${size}.png" >/dev/null
|
||
double=$((size * 2))
|
||
sips -z "$double" "$double" "$icon" --out "$iconset/icon_${size}x${size}@2x.png" >/dev/null
|
||
done
|
||
iconutil -c icns "$iconset" -o "$app/Contents/Resources/ShellRS.icns"
|
||
rm -rf "$work"
|
||
else
|
||
echo "warning: no icon in assets/logo; the bundle has none" >&2
|
||
fi
|
||
|
||
echo "$app"
|