Files
desktop-plugin/tool/package_macos.sh
T
dzc d475cac6ab feat: 向导内置 HiTi Mac 驱动一键安装(补齐计划 §3.2"驱动 dmg 放包内"设计)
- setup/driver_install.dart:检测已装(/Library/Printers/HiTi)+ 内置 dmg 定位
  (从 resolvedExecutable 反推 flutter_assets/assets/drivers/,缺失降级官网链接)
  + 静默安装(hdiutil 挂载→定位 pkg→osascript 提权 installer→finally detach;
  挂载点名带随机序号必须从 attach 输出解析)
- 向导第 2 步重做状态机:驱动未装 → "一键安装驱动(内置安装包)"按钮
  (安装中提示输管理员密码,失败显示原因);驱动已装但无队列 → 连接/添加队列
  引导;无内置 dmg 的构建回退官网链接
- assets/drivers/ 收驱动 dmg(.gitignore 不入库,打包脚本检查缺失并警告,
  当前从 card-printer-agent/dist 拷入 2.4.2 版,25MB)
- 实测:挂载/pkg 定位/detach 免密链路全通过;打包 47MB dmg 内含驱动,
  冒烟启动正常(服务已占主端口 38200);一键安装的提权弹窗待用户实测
2026-09-21 14:04:55 +08:00

37 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# 资安信插件助手 macOS 打包:release 构建 → ad-hoc 就地签名 → dmg
# 用法:bash tool/package_macos.sh
# 分发说明(ad-hoc 未公证):用户首次打开需「右键 .app → 打开」确认一次。
set -euo pipefail
cd "$(dirname "$0")/.."
APP_NAME="资安信插件助手"
APP="build/macos/Build/Products/Release/${APP_NAME}.app"
DMG="dist/${APP_NAME}-macOS.dmg"
echo "==> flutter build macos --release"
flutter build macos --release
echo "==> 检查内置驱动"
if ls assets/drivers/*.dmg >/dev/null 2>&1; then
echo "已内置:$(ls assets/drivers/*.dmg)"
else
echo "警告:assets/drivers/ 下没有驱动 dmg,产出的安装包在向导中将只提供官网链接(一键安装不可用)。"
echo " 将 HiTiCardTypeMacDrivers_2.4.2.dmg 放入 assets/drivers/ 后重新打包即可内置。"
fi
echo "==> ad-hoc 就地签名(含全部嵌入内容;构建产物位于最终位置,直接在此重签)"
# 注意:ad-hoc 签名不要加 --options=runtime——hardened runtime 的库校验(library validation)
# 要求所有嵌入库与主程序同 Team ID,ad-hoc 无 Team 会导致 framework 加载被 dyld 拒绝
codesign --force --sign - --deep "$APP"
codesign --verify --verbose=2 "$APP"
echo "==> 打 dmg"
mkdir -p dist
rm -f "$DMG"
hdiutil create -volname "$APP_NAME" -srcfolder "$APP" -ov -format UDZO "$DMG"
echo "==> 完成"
ls -lh "$DMG"
echo "安装方式:双击 dmg 拖入「应用程序」;首次打开请右键 → 打开(ad-hoc 签名未公证)。"