借助网络配置,控制Modbus工具的日志显示,避免卡死界面
智能大石头
authored at
2021-12-11 22:09:19
XCoder
#!/usr/bin/env bash
# 生成 XCoderMac Apple Silicon 应用与 DMG。本脚本仅写入 XCoderMac/ 内部。
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
DIST="$ROOT/dist"
PUBLISH="$ROOT/obj/publish/osx-arm64"
APP="$DIST/XCoder.app"
CONTENTS="$APP/Contents"
STAGE="$DIST/dmg-stage"
VERSION="0.2.7"
if [[ "$(uname -m)" != "arm64" ]]; then
echo "错误:请在 Apple Silicon Mac 上执行。" >&2
exit 1
fi
mkdir -p "$DIST"
echo "[1/5] 发布独立运行的 arm64 应用..."
dotnet publish "$ROOT/XCoderMac.csproj" -c Release -r osx-arm64 \
--self-contained true -p:UseAppHost=true -o "$PUBLISH"
echo "[2/5] 组装 .app..."
rm -rf "$APP" "$STAGE"
mkdir -p "$CONTENTS/MacOS" "$CONTENTS/Resources"
cp -R "$PUBLISH"/. "$CONTENTS/MacOS/"
# 内部程序集保持 XCoderMac,外部可执行文件命名为 XCoder。
mv "$CONTENTS/MacOS/XCoderMac" "$CONTENTS/MacOS/XCoder"
chmod +x "$CONTENTS/MacOS/XCoder"
# 保留之前确认的 Dock/Finder 应用图标,资源路径统一位于 Docs/Assets。
test -s "$ROOT/Docs/Assets/XCoderMac.icns"
cp "$ROOT/Docs/Assets/XCoderMac.icns" "$CONTENTS/Resources/XCoder.icns"
# 不将开发机器的私有连接配置、日志或 Redis 凭据打入可分发应用包。
rm -rf "$CONTENTS/MacOS/Config" "$CONTENTS/MacOS/Log" "$CONTENTS/MacOS/Data"
cat > "$CONTENTS/Info.plist" <<'PLIST'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleName</key><string>XCoder</string>
<key>CFBundleDisplayName</key><string>XCoder</string>
<key>CFBundleIdentifier</key><string>com.newlifex.xcoder</string>
<key>CFBundleExecutable</key><string>XCoder</string>
<key>CFBundleIconFile</key><string>XCoder.icns</string>
<key>CFBundleIconName</key><string>XCoder</string>
<key>CFBundlePackageType</key><string>APPL</string>
<key>CFBundleShortVersionString</key><string>0.2.7</string>
<key>CFBundleVersion</key><string>16</string>
<key>LSMinimumSystemVersion</key><string>13.0</string>
<key>NSHighResolutionCapable</key><true/>
</dict>
</plist>
PLIST
echo "[3/5] 本机 ad-hoc 签名(非 Apple 开发者公证签名)..."
codesign --force --deep --sign - "$APP"
codesign --verify --deep --strict "$APP"
echo "[4/5] 制作 DMG..."
mkdir -p "$STAGE"
cp -R "$APP" "$STAGE/XCoder.app"
ln -s /Applications "$STAGE/Applications"
rm -f "$DIST/XCoder-arm64.dmg"
hdiutil create -volname "XCoder" -srcfolder "$STAGE" \
-format UDZO -ov "$DIST/XCoder-arm64.dmg" >/dev/null
rm -rf "$STAGE"
echo "[5/5] 验证包内容..."
test -x "$APP/Contents/MacOS/XCoder"
test -s "$APP/Contents/Resources/XCoder.icns"
test -f "$DIST/XCoder-arm64.dmg"
echo "APP: $APP"
echo "DMG: $DIST/XCoder-arm64.dmg"
echo "NOTICE: 本预览包仅 ad-hoc 签名,没有 Apple Developer ID 公证;跨设备分发需正式签名与 notarization。"
|