Skip to content

Commit 960d4dc

Browse files
committed
chore: release v0.1.4 packaging fixes
1 parent 9d721c1 commit 960d4dc

9 files changed

Lines changed: 124 additions & 5 deletions

File tree

.github/workflows/release.yml

Lines changed: 75 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
if: runner.os == 'Linux'
3737
run: |
3838
sudo apt-get update
39-
sudo apt-get install -y ninja-build libgl1-mesa-dev
39+
sudo apt-get install -y ninja-build libgl1-mesa-dev libxcb-cursor0 libxkbcommon-x11-0
4040
4141
- name: Install macOS packages
4242
if: runner.os == 'macOS'
@@ -103,8 +103,81 @@ jobs:
103103
find build/release -maxdepth 6 -print
104104
exit 1
105105
fi
106-
cp "$binary_target" "$package_root/"
106+
107+
mkdir -p "$package_root/bin" "$package_root/lib" "$package_root/plugins"
108+
cp "$binary_target" "$package_root/bin/FluentSerialAssistant"
109+
chmod +x "$package_root/bin/FluentSerialAssistant"
110+
111+
qt_prefix="${QT_ROOT_DIR:-}"
112+
if [ -z "$qt_prefix" ]; then
113+
qt_prefix="$(qtpaths6 --install-prefix 2>/dev/null || qtpaths --install-prefix)"
114+
fi
115+
qt_plugins_dir="$(qtpaths6 --plugin-dir 2>/dev/null || qtpaths --plugin-dir)"
116+
117+
copy_qt_dependencies() {
118+
local source_file="$1"
119+
while IFS= read -r dep; do
120+
if [ -z "$dep" ] || [ ! -f "$dep" ]; then
121+
continue
122+
fi
123+
case "$dep" in
124+
"$qt_prefix"/*)
125+
copy_qt_library "$dep"
126+
;;
127+
esac
128+
done < <(ldd "$source_file" | awk '{ if ($2 == "=>") print $3; else if ($1 ~ /^\//) print $1; }')
129+
}
130+
131+
copy_qt_library() {
132+
local dep="$1"
133+
local base
134+
base="$(basename "$dep")"
135+
if [ -f "$package_root/lib/$base" ]; then
136+
return
137+
fi
138+
cp -Lf "$dep" "$package_root/lib/$base"
139+
copy_qt_dependencies "$dep"
140+
}
141+
142+
copy_qt_plugin_group() {
143+
local group="$1"
144+
shift
145+
local destination="$package_root/plugins/$group"
146+
mkdir -p "$destination"
147+
local pattern plugin
148+
for pattern in "$@"; do
149+
for plugin in "$qt_plugins_dir/$group"/$pattern; do
150+
if [ ! -e "$plugin" ]; then
151+
continue
152+
fi
153+
cp -Lf "$plugin" "$destination/"
154+
copy_qt_dependencies "$plugin"
155+
done
156+
done
157+
}
158+
159+
copy_qt_dependencies "$package_root/bin/FluentSerialAssistant"
160+
copy_qt_plugin_group platforms 'libqxcb.so'
161+
copy_qt_plugin_group imageformats '*.so'
162+
copy_qt_plugin_group iconengines '*.so'
163+
copy_qt_plugin_group tls '*.so'
164+
copy_qt_plugin_group platforminputcontexts '*.so'
165+
166+
printf '%s\n' '[Paths]' 'Prefix = ..' 'Plugins = ../plugins' > "$package_root/bin/qt.conf"
167+
printf '%s\n' \
168+
'#!/usr/bin/env bash' \
169+
'set -e' \
170+
'app_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"' \
171+
'export LD_LIBRARY_PATH="$app_dir/lib:${LD_LIBRARY_PATH:-}"' \
172+
'export QT_PLUGIN_PATH="$app_dir/plugins"' \
173+
'exec "$app_dir/bin/FluentSerialAssistant" "$@"' \
174+
> "$package_root/FluentSerialAssistant"
107175
chmod +x "$package_root/FluentSerialAssistant"
176+
177+
mkdir -p "$package_root/share/applications" "$package_root/share/icons/hicolor/1024x1024/apps"
178+
cp packaging/linux/tech.zhangshu.FluentSerialAssistant.desktop "$package_root/share/applications/"
179+
cp logo.png "$package_root/share/icons/hicolor/1024x1024/apps/tech.zhangshu.FluentSerialAssistant.png"
180+
du -sh "$package_root"
108181
fi
109182
110183
cp README.md CHANGELOG.md LICENSE "$package_root/"

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
本项目遵循面向用户的变更记录格式。版本号在正式发布前可能继续调整。
44

5+
## [0.1.4] - 2026-07-08
6+
7+
### 修复
8+
9+
- macOS 发布包写入应用 `.icns` 图标,修复 Finder 和 Dock 中不显示应用图标的问题。
10+
- Linux 发布包改为携带 Qt 运行库、Qt 插件、启动脚本和桌面图标元数据,避免只发布裸可执行文件导致包体异常小且依赖系统 Qt。
11+
- 增加 GitHub Social preview 预览图,用于替换默认仓库动态卡片中的 owner 头像。
12+
513
## [0.1.3] - 2026-07-08
614

715
### 新增

CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.21)
22

33
project(
44
FluentSerialAssistant
5-
VERSION 0.1.3
5+
VERSION 0.1.4
66
DESCRIPTION "A Fluent Qt serial assistant prototype"
77
LANGUAGES CXX
88
)
@@ -68,6 +68,12 @@ if(WIN32)
6868
target_sources(FluentSerialAssistant PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/app_icon.rc")
6969
endif()
7070

71+
if(APPLE)
72+
set(APP_ICON_PATH_MACOS "${CMAKE_CURRENT_SOURCE_DIR}/src/app/resources/app_icon.icns")
73+
target_sources(FluentSerialAssistant PRIVATE "${APP_ICON_PATH_MACOS}")
74+
set_source_files_properties("${APP_ICON_PATH_MACOS}" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
75+
endif()
76+
7177
target_include_directories(FluentSerialAssistant PRIVATE src src/app)
7278

7379
target_link_libraries(FluentSerialAssistant
@@ -96,6 +102,7 @@ set_target_properties(FluentSerialAssistant PROPERTIES
96102
MACOSX_BUNDLE TRUE
97103
MACOSX_BUNDLE_BUNDLE_NAME "Fluent Serial Assistant"
98104
MACOSX_BUNDLE_GUI_IDENTIFIER "tech.zhangshu.FluentSerialAssistant"
105+
MACOSX_BUNDLE_ICON_FILE "app_icon.icns"
99106
MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}"
100107
MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
101108
)

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,16 @@ CI 会在以下平台执行 Release 构建:
180180

181181
- Windows:`windows-latest`,MSVC 2022
182182
- Linux:`ubuntu-latest`,GCC
183-
- macOS:`macos-13`,Clang
183+
- macOS:`macos-15`,Clang
184184

185185
CI 不使用本机 `CMakePresets.json` 中的固定 Qt 路径,而是在工作流中安装 Qt 并通过 CMake 直接配置。
186186

187+
推送 `v*` 标签会触发 Release 打包:
188+
189+
- Windows:使用 `windeployqt` 生成部署目录。
190+
- macOS:使用 `.app` bundle,包含应用 `.icns` 图标。
191+
- Linux:生成携带 Qt 运行库、Qt 插件、启动脚本和桌面图标元数据的 `.tar.gz`
192+
187193
## 使用说明
188194

189195
1. 选择串口端口,必要时点击刷新。

docs/images/social-preview.png

117 KB
Loading

docs/release-notes/v0.1.4.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Fluent 串口助手 v0.1.4
2+
3+
这是一个发布包修复版本。
4+
5+
## 修复
6+
7+
- macOS 发布包写入应用 `.icns` 图标,Finder 和 Dock 会显示应用 logo。
8+
- Linux 发布包不再只包含裸可执行文件,改为携带 Qt 运行库、Qt 插件、启动脚本和桌面图标元数据。
9+
- 增加 GitHub Social preview 预览图,可上传到仓库 Settings 以替换默认动态卡片图片。
10+
11+
## 发布资产
12+
13+
- Windows x64:包含 `windeployqt` 部署后的运行文件。
14+
- macOS:包含 `.app` 应用包和应用图标。
15+
- Linux x64:包含可执行启动脚本、Qt 运行库、Qt 插件和桌面图标元数据。
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Desktop Entry]
2+
Type=Application
3+
Name=Fluent Serial Assistant
4+
Name[zh_CN]=Fluent 串口助手
5+
Comment=Serial terminal assistant
6+
Comment[zh_CN]=Fluent 风格串口调试助手
7+
Exec=FluentSerialAssistant
8+
Icon=tech.zhangshu.FluentSerialAssistant
9+
Categories=Development;Utility;
10+
Terminal=false

src/app/resources/app_icon.icns

966 KB
Binary file not shown.

src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ int main(int argc, char *argv[])
2020
app.setStyle(QStyleFactory::create(QStringLiteral("Fusion")));
2121
QCoreApplication::setOrganizationName(QStringLiteral("txp"));
2222
QCoreApplication::setApplicationName(QStringLiteral("FluentSerialAssistant"));
23-
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.3"));
23+
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.4"));
2424

2525
AppFontPreferences::loadCustomFonts();
2626
FluentQt::FluentConfig::instance()->load();

0 commit comments

Comments
 (0)