From f74c15f14a917b2d6070cb8685850d5859c7597f Mon Sep 17 00:00:00 2001 From: fylorn <249551762+fylorn@users.noreply.github.com> Date: Thu, 24 Sep 2026 18:40:20 +0800 Subject: [PATCH 1/2] Linux packaging (AppImage + deb) and self-update - tauri.linux.conf.json: AppImage + deb targets, Linux icon sizes (256/512 rendered by icons/render.py), category/publisher/homepage. The bundler already writes the deb Depends (webkit2gtk-4.1, gtk3, ayatana-appindicator) and the thinkwatch:// MimeType. - linux/main.desktop: the bundler's template with `Exec=... %u` (without a field code GLib appends %f, which drops non-file URLs, so sign-in callbacks never reached the app) and a terminated MimeType list. - fetch-core.sh: x86_64/aarch64-unknown-linux-gnu twcore assets, with an ELF-specific architecture check. - bundled_core(): on Linux, an installed build (bundle_type() is set by the bundler's binary patch) only runs /../lib//twcore and never falls through to the dev candidates. Derived from the executable, not resource_dir(), which consults $APPDIR. - update::kind(): Linux reads bundle_type(). AppImage (with $APPIMAGE) is Standalone and is replaced in place by the updater plugin; a new Install::Deb downloads + verifies via the plugin and installs with `pkexec apt-get install -y` -- never the plugin's install(), which falls back to asking for the password via zenity/kdialog and feeding sudo. Failures say where to download; the gateway is resumed through the shared resume_after_failed_update (now Windows + Linux). - Update window: deb copy states that installing needs administrator authorization. - release.yml: Linux matrix (ubuntu-22.04 / ubuntu-22.04-arm) builds AppImage + deb, renames the deb package from the bundler's `think-watch-lite` to `thinkwatch-lite`, looks inside both (twcore arch/version, bundle-type marker, glibc <= 2.35, desktop entry, deb fields and Depends) and signs both. - manifest.py: linux-{x86_64,aarch64}-{appimage,deb} keys, all required; rejects a file with the wrong extension for a key. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/release.yml | 215 ++++++++++++++++++++++++++- scripts/manifest.py | 27 +++- src-tauri/icons/256x256.png | Bin 0 -> 38520 bytes src-tauri/icons/512x512.png | Bin 0 -> 105689 bytes src-tauri/icons/render.py | 15 +- src-tauri/linux/main.desktop | 16 ++ src-tauri/scripts/fetch-core.sh | 5 + src-tauri/src/gateway.rs | 17 ++- src-tauri/src/update.rs | 253 +++++++++++++++++++++++++++++--- src-tauri/src/updater.rs | 28 +++- src-tauri/tauri.linux.conf.json | 22 +++ src/Update.i18n.ts | 3 + src/UpdateWindow.tsx | 3 +- src/updateFlow.test.ts | 4 + src/updateFlow.ts | 6 +- 15 files changed, 577 insertions(+), 37 deletions(-) create mode 100644 src-tauri/icons/256x256.png create mode 100644 src-tauri/icons/512x512.png create mode 100644 src-tauri/linux/main.desktop create mode 100644 src-tauri/tauri.linux.conf.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 794e472f..9d43eab0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,18 +1,20 @@ # 发一版桌面端。 # -# **每个平台只发一个文件**,外加它的 sha256,和一份三个平台共用的 +# **每一种安装方式只发一个文件**,外加它的 sha256,和一份所有平台共用的 # latest.json: # # macOS ThinkWatch-Lite-<版本>-arm64.dmg # Windows x64 ThinkWatch-Lite-<版本>-x64-setup.exe # Windows arm64 ThinkWatch-Lite-<版本>-arm64-setup.exe +# Linux x86_64 ThinkWatch-Lite-<版本>-x86_64.AppImage、thinkwatch-lite_<版本>_amd64.deb +# Linux aarch64 ThinkWatch-Lite-<版本>-aarch64.AppImage、thinkwatch-lite_<版本>_arm64.deb # # 网页上下载的是它,Homebrew 的 cask / winget 的清单吃的是它,已经装上的 # 应用自己更新下的也是它:latest.json 指向它,签名签的也是它(应用怎么从 # DMG 更新自己,见 `src-tauri/src/dmg.rs`;Windows 上更新器直接跑新的安装 -# 程序)。 +# 程序;Linux 上 AppImage 原地换掉自己,deb 经系统授权交给 apt)。 # -# **三个平台一起发,或者都不发。**各自构建、拆开看过,最后一个 job 才把 +# **所有平台一起发,或者都不发。**各自构建、拆开看过,最后一个 job 才把 # 它们一起挂上去 —— 只发出一部分的话,latest.json 要么缺平台,要么指向 # 一个不存在的文件。 # @@ -20,7 +22,7 @@ # 每个 commit 都过过。这里只做 CI 做不了的那件事 —— 打出安装包并且 # 在发出去之前拆开看一眼。 # -# **推到 `rehearse/` 开头的分支是演练**:全部照做,只是不发布 —— 三个安装 +# **推到 `rehearse/` 开头的分支是演练**:全部照做,只是不发布 —— 各个安装 # 包留在这次运行的产物里,可以下载下来装到真机上看。改了这条流水线,先演练 # 一遍,不要拿一个 tag 去试。 # @@ -355,9 +357,198 @@ jobs: dist/ThinkWatch-Lite-*-setup.exe.sig if-no-files-found: error + linux: + name: ThinkWatch Lite (${{ matrix.target }}) + strategy: + fail-fast: false + matrix: + include: + # **在 22.04 上构建**:glibc 2.35 是 Linux 版的最低要求,在更新的系统 + # 上构建出来的二进制会去要更新的 glibc,在 22.04 上起不来 + - target: x86_64-unknown-linux-gnu + arch: x86_64 + deb: amd64 + runner: ubuntu-22.04 + # 和 Windows 一样在同架构的机器上打,「拆开看一眼」里运行网关那一行才 + # 不用跳过 + - target: aarch64-unknown-linux-gnu + arch: aarch64 + deb: arm64 + runner: ubuntu-22.04-arm + runs-on: ${{ matrix.runner }} + env: + # linuxdeploy 自己是个 AppImage,runner 上不一定能挂 FUSE。解开再跑, + # 不依赖它 + APPIMAGE_EXTRACT_AND_RUN: "1" + steps: + - uses: actions/checkout@v4 + + - name: The tag is the version in the tree + run: | + set -euo pipefail + GOT=$(bash scripts/version.sh) + if [ "$GITHUB_REF_TYPE" = tag ]; then + WANT="${GITHUB_REF_NAME#v}" + if [ "$GOT" != "$WANT" ]; then + echo "tag 是 $WANT,而代码里写的是 $GOT" >&2 + exit 1 + fi + fi + echo "VERSION=$GOT" >> "$GITHUB_ENV" + + # Tauri 在 Linux 上的构建依赖(https://v2.tauri.app/start/prerequisites/)。 + # 托盘走 ayatana 那一套:打包器看到它才会把 `libayatana-appindicator3-1` + # 写进 deb 的依赖、把那个库放进 AppImage。`xdg-utils`:配了深链接的 + # 应用,打 AppImage 时要把 `/usr/bin/xdg-mime` 拷进包里(运行时靠它注册 + # `thinkwatch://`),没有它打包直接失败 + - name: System libraries + run: | + set -euo pipefail + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + build-essential file libwebkit2gtk-4.1-dev libgtk-3-dev \ + libayatana-appindicator3-dev librsvg2-dev libssl-dev libxdo-dev \ + xdg-utils desktop-file-utils + + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: pnpm + - uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + - uses: Swatinem/rust-cache@v2 + with: + workspaces: src-tauri + key: ${{ matrix.target }} + + - run: pnpm install --frozen-lockfile + + # 打哪两种包写在 `tauri.linux.conf.json` 里。取哪一份 twcore 跟着 + # `--target` 走,见 `fetch-core.sh` + - name: Build + run: pnpm tauri build --target ${{ matrix.target }} + + # 发出去的名字**不带空格**,理由和 Windows 那边一样。deb 按 Debian 的 + # 惯例起名:包名_版本_架构。 + # + # **包名要改一次。**打包器拿产品名转 kebab-case 当包名,「ThinkWatch + # Lite」成了 `think-watch-lite`,和可执行文件、cask、winget 里的 + # `thinkwatch-lite` 对不上,也没有配置项能改。这里拆开改掉 control 里 + # 那一行再封回去;文件本身一个字节不动,md5sums 仍然对得上。**要在签名 + # 之前**:签的是发出去的这一份 + - name: Name the packages + - name: Name the packages + run: | + set -euo pipefail + B="src-tauri/target/${{ matrix.target }}/release/bundle" + shopt -s nullglob + IMAGES=("$B"/appimage/*.AppImage) + DEBS=("$B"/deb/*.deb) + [ "${#IMAGES[@]}" -eq 1 ] || { echo "要一个 AppImage,打出来的是 ${#IMAGES[@]} 个" >&2; exit 1; } + [ "${#DEBS[@]}" -eq 1 ] || { echo "要一个 deb,打出来的是 ${#DEBS[@]} 个" >&2; exit 1; } + mkdir -p dist + cp "${IMAGES[0]}" "dist/ThinkWatch-Lite-$VERSION-${{ matrix.arch }}.AppImage" + R=$(mktemp -d) + dpkg-deb -R "${DEBS[0]}" "$R/pkg" + sed -i 's/^Package: .*/Package: thinkwatch-lite/' "$R/pkg/DEBIAN/control" + dpkg-deb --root-owner-group -Zxz -b "$R/pkg" "dist/thinkwatch-lite_${VERSION}_${{ matrix.deb }}.deb" + echo "APPIMAGE=dist/ThinkWatch-Lite-$VERSION-${{ matrix.arch }}.AppImage" >> "$GITHUB_ENV" + echo "DEB=dist/thinkwatch-lite_${VERSION}_${{ matrix.deb }}.deb" >> "$GITHUB_ENV" + + # **拆开看一眼再发。**和另外两个平台同一个理由:缺了网关、网关是别的 + # 架构、或者更新器认不出这是哪种包,从文件列表上都看不出来。 + # + # 应用靠打包器写进二进制的那个标记区分 AppImage 和 deb(自更新走哪条路、 + # 去哪找网关都看它),所以每个包里的那一份都要带着**自己那种**标记。 + - name: Look inside before shipping it + run: | + set -euo pipefail + case "${{ matrix.arch }}" in + x86_64) ELF="ELF 64-bit.*x86-64" ;; + aarch64) ELF="ELF 64-bit.*aarch64" ;; + esac + # 一个包拆开之后的根目录里,应用和网关都在,且都对 + check() { + local root=$1 marker=$2 + local app="$root/usr/bin/thinkwatch-lite" + local core="$root/usr/lib/ThinkWatch Lite/twcore" + test -x "$app" || { echo "没有 $app" >&2; exit 1; } + test -x "$core" || { echo "没有 $core" >&2; exit 1; } + file "$app" | grep -Eq "$ELF" || { echo "应用的架构不对:$(file "$app")" >&2; exit 1; } + file "$core" | grep -Eq "$ELF" || { echo "网关的架构不对:$(file "$core")" >&2; exit 1; } + # 打包器把 `…_UNK` 那几个字节原地改成这种包的名字(没打补丁的 + # 二进制里只有 `UNK` 这一份,比较用的那几个名字不以字符串的形式出现) + if grep -aq __TAURI_BUNDLE_TYPE_VAR_UNK "$app"; then + echo "应用没打上打包标记" >&2; exit 1 + fi + [ "$(grep -ao "__TAURI_BUNDLE_TYPE_VAR_$marker" "$app" | wc -l)" -eq 1 ] \ + || { echo "应用里的打包标记不是 $marker" >&2; exit 1; } + # glibc 的底线:比 2.35 新的符号意味着在 22.04 上起不来 + local top + top=$(objdump -T "$app" "$core" | grep -o 'GLIBC_[0-9.]*' | sort -uV | tail -n 1) + printf '%s\n' "$top" GLIBC_2.35 | sort -V -C \ + || { echo "要的 glibc 是 $top,超过了 2.35" >&2; exit 1; } + echo "包里的网关:$("$core" --version)" + # 登录回调靠这两行:认领 `thinkwatch://`,并且 Exec 带 `%u` 把链接交进来 + # (见 `src-tauri/linux/main.desktop`) + local desktop="$root/usr/share/applications/ThinkWatch Lite.desktop" + desktop-file-validate "$desktop" + grep -q '^MimeType=.*x-scheme-handler/thinkwatch;' "$desktop" \ + || { echo ".desktop 里没有 thinkwatch 链接" >&2; exit 1; } + grep -q '^Exec=thinkwatch-lite %u$' "$desktop" \ + || { echo ".desktop 的 Exec 不带 %u" >&2; exit 1; } + } + + X=$(mktemp -d) + ( cd "$X" && "$GITHUB_WORKSPACE/$APPIMAGE" --appimage-extract > /dev/null ) + check "$X/squashfs-root" APP + + D=$(mktemp -d) + dpkg-deb -x "$DEB" "$D" + check "$D" DEB + # 不用 `grep -q`:它找到就退出,`dpkg-deb` 还在写就挨一个 SIGPIPE, + # 在 pipefail 下整步失败 + dpkg-deb -c "$DEB" | grep ' ./usr/lib/ThinkWatch Lite/twcore$' > /dev/null + test "$(dpkg-deb -f "$DEB" Package)" = thinkwatch-lite + test "$(dpkg-deb -f "$DEB" Version)" = "$VERSION" + test "$(dpkg-deb -f "$DEB" Architecture)" = "${{ matrix.deb }}" + # 依赖由打包器写:WebKitGTK、GTK、托盘。少一个,apt 装完照样打不开 + DEPENDS=$(dpkg-deb -f "$DEB" Depends) + for dep in libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1; do + grep -q "$dep" <<< "$DEPENDS" || { echo "deb 的依赖里没有 $dep:$DEPENDS" >&2; exit 1; } + done + + # 两个都签:AppImage 的用户更新时下的是 AppImage,deb 的用户下的是 + # deb,验签验的都是下载下来的原始字节。**私钥没传进来这一步就失败** + - name: Package + env: + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} + run: | + set -euo pipefail + for f in "$APPIMAGE" "$DEB"; do + ( cd dist && sha256sum "$(basename "$f")" > "$(basename "$f").sha256" ) + cat "$f.sha256" + pnpm tauri signer sign "$f" + done + + - uses: actions/upload-artifact@v4 + with: + name: linux-${{ matrix.arch }} + path: | + dist/ThinkWatch-Lite-*.AppImage + dist/ThinkWatch-Lite-*.AppImage.sha256 + dist/ThinkWatch-Lite-*.AppImage.sig + dist/thinkwatch-lite_*.deb + dist/thinkwatch-lite_*.deb.sha256 + dist/thinkwatch-lite_*.deb.sig + if-no-files-found: error + publish: name: Publish - needs: [app, windows] + needs: [app, windows, linux] # 演练到上面为止 if: github.ref_type == 'tag' runs-on: macos-latest @@ -399,14 +590,18 @@ jobs: path: dist merge-multiple: true - # 清单等三个平台都到齐了才写 —— 少一个它就不写,见 manifest.py。 - - name: One manifest for all three + # 清单等所有平台都到齐了才写 —— 少一个它就不写,见 manifest.py。 + - name: One manifest for every platform run: | set -euo pipefail python3 scripts/manifest.py "$VERSION" notes.txt \ "darwin-aarch64=dist/ThinkWatch-Lite-$VERSION-arm64.dmg" \ "windows-x86_64=dist/ThinkWatch-Lite-$VERSION-x64-setup.exe" \ - "windows-aarch64=dist/ThinkWatch-Lite-$VERSION-arm64-setup.exe" + "windows-aarch64=dist/ThinkWatch-Lite-$VERSION-arm64-setup.exe" \ + "linux-x86_64-appimage=dist/ThinkWatch-Lite-$VERSION-x86_64.AppImage" \ + "linux-x86_64-deb=dist/thinkwatch-lite_${VERSION}_amd64.deb" \ + "linux-aarch64-appimage=dist/ThinkWatch-Lite-$VERSION-aarch64.AppImage" \ + "linux-aarch64-deb=dist/thinkwatch-lite_${VERSION}_arm64.deb" - uses: softprops/action-gh-release@v2 with: @@ -417,6 +612,10 @@ jobs: dist/ThinkWatch-Lite-*-arm64.dmg.sha256 dist/ThinkWatch-Lite-*-setup.exe dist/ThinkWatch-Lite-*-setup.exe.sha256 + dist/ThinkWatch-Lite-*.AppImage + dist/ThinkWatch-Lite-*.AppImage.sha256 + dist/thinkwatch-lite_*.deb + dist/thinkwatch-lite_*.deb.sha256 dist/latest.json generate_release_notes: true diff --git a/scripts/manifest.py b/scripts/manifest.py index 7c0bc970..4ef19335 100755 --- a/scripts/manifest.py +++ b/scripts/manifest.py @@ -3,7 +3,9 @@ 应用去问「有没有新版本」时读的就是这一份清单,下载的是它指向的那个文件 —— 和网页上给人下载的是同一个:macOS 上是 DMG(应用怎么从 DMG 更新自己, -见 `src-tauri/src/dmg.rs`),Windows 上是 NSIS 安装程序,更新器直接跑它。 +见 `src-tauri/src/dmg.rs`),Windows 上是 NSIS 安装程序,更新器直接跑它; +Linux 上 AppImage 原地换掉自己,deb 交给系统授权后由 apt 安装(见 +`src-tauri/src/update.rs`)。 用法:manifest.py <版本> <发布说明文件> <平台>=<文件> [<平台>=<文件> ...] @@ -26,7 +28,20 @@ REPO = "ThinkWatchProject/ThinkWatch-Lite" # 平台键由更新器自己拼:目标系统 + 架构(macOS 上叫 darwin)。**只收这几个** # —— 拼错一个字母,那个平台的用户就永远问不到新版本,而清单看起来完好。 -PLATFORMS = {"darwin-aarch64", "windows-x86_64", "windows-aarch64"} +# +# Linux 的键多一段安装方式。更新器先找 `<系统>-<架构>-<安装方式>`,找不到才退 +# 到 `<系统>-<架构>`(插件的 `get_urls`);安装方式来自打包时写进二进制的标记。 +# 同一台机器上 AppImage 和 deb 要的是不同的文件,所以两个都带后缀、不给不带 +# 后缀的那一个 —— 给了的话,哪天少写一个带后缀的,那一类用户会拿到另一种包。 +PLATFORMS = { + "darwin-aarch64", + "windows-x86_64", + "windows-aarch64", + "linux-x86_64-appimage", + "linux-x86_64-deb", + "linux-aarch64-appimage", + "linux-aarch64-deb", +} def key_id(minisign_block: str) -> bytes: @@ -80,6 +95,12 @@ def main() -> None: sys.exit(f"不认识的平台或写法:{pair}(要的是 <平台>=<文件>,平台是 {sorted(PLATFORMS)} 之一)") if platform in platforms: sys.exit(f"{platform} 给了两次") + # 两种 Linux 包在同一个架构上各有一个键,写反了的话,deb 装的会拿 + # AppImage 的字节交给 apt,AppImage 会被换成一个 deb + want_ext = {"-appimage": ".AppImage", "-deb": ".deb"} + for suffix, ext in want_ext.items(): + if platform.endswith(suffix) and not file.endswith(ext): + sys.exit(f"{platform} 要的是 {ext},给的是 {file}") platforms[platform] = entry(pathlib.Path(file), version, want) # **少一个平台就不发。**缺掉的那个平台上,已经装好的每一份都会停在旧版本, # 而发布页上看起来一切正常 @@ -102,7 +123,7 @@ def main() -> None: out = pathlib.Path(pairs[0].partition("=")[2]).parent / "latest.json" out.write_text(json.dumps(manifest, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") for p, e in sorted(platforms.items()): - print(f"{p:18} {e['url'].rsplit('/', 1)[1]}") + print(f"{p:23} {e['url'].rsplit('/', 1)[1]}") print(f"签名密钥 {want.hex()},和应用里的公钥是同一把") diff --git a/src-tauri/icons/256x256.png b/src-tauri/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..70538930863e2a281c23ce38a12be9d4d9631583 GIT binary patch literal 38520 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

?&FqzGk9u*mF9mVI1)9QAm7HzH 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�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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/render.py b/src-tauri/icons/render.py index dd78cec2..a3847251 100644 --- a/src-tauri/icons/render.py +++ b/src-tauri/icons/render.py @@ -4,7 +4,8 @@ python3 src-tauri/icons/render.py <目录> # 只导出各个尺寸,用来看效果 第一种用法产出 tauri.conf.json 里列的那几个文件(32x32.png、128x128.png、 -128x128@2x.png、icon.icns),以及 Windows 构建要的 icon.ico。**别手工改 +128x128@2x.png、icon.icns),Windows 构建要的 icon.ico,以及 Linux 的 +256x256.png、512x512.png。**别手工改 它们** —— 它们是这个脚本的输出,手改会和脚本悄悄分叉,下次谁重新生成一次 就被覆盖了。 @@ -215,7 +216,17 @@ def write_ico(path, cache): } # tauri.conf.json 的 bundle.icon 里列的那几个(除 icns 外)。 -BUNDLE_PNGS = {"32x32.png": 32, "128x128.png": 128, "128x128@2x.png": 256} +# +# 256 和 512 是 Linux 的(`tauri.linux.conf.json`):deb 和 AppImage 按像素 +# 尺寸装进 `hicolor/<宽>x<高>/apps/`,而 `128x128@2x.png` 在那里落进的是 +# `256x256@2`,不是桌面环境找大图标时去的那个目录。 +BUNDLE_PNGS = { + "32x32.png": 32, + "128x128.png": 128, + "128x128@2x.png": 256, + "256x256.png": 256, + "512x512.png": 512, +} PREVIEW_SIZES = (16, 32, 64, 128, 256, 512, 1024) diff --git a/src-tauri/linux/main.desktop b/src-tauri/linux/main.desktop new file mode 100644 index 00000000..14bc9581 --- /dev/null +++ b/src-tauri/linux/main.desktop @@ -0,0 +1,16 @@ +[Desktop Entry] +Categories={{categories}} +{{#if comment}} +Comment={{comment}} +{{/if}} +# %u hands a thinkwatch:// URL (sign-in callbacks) to the app. Without a field +# code, GLib appends %f, which drops URLs that are not local files. +Exec={{exec}} %u +StartupWMClass={{exec}} +Icon={{icon}} +Name={{name}} +Terminal=false +Type=Application +{{#if mime_type}} +MimeType={{mime_type}}; +{{/if}} diff --git a/src-tauri/scripts/fetch-core.sh b/src-tauri/scripts/fetch-core.sh index e58c4870..9cf41fa8 100755 --- a/src-tauri/scripts/fetch-core.sh +++ b/src-tauri/scripts/fetch-core.sh @@ -43,6 +43,8 @@ case "${TARGET:-${TAURI_ENV_TARGET_TRIPLE:-$(rustc -vV | sed -n 's/^host: //p')} aarch64-apple-darwin) ASSET="twcore-aarch64-apple-darwin" ;; x86_64-pc-windows-msvc) ASSET="twcore-x86_64-pc-windows-msvc.exe" ;; aarch64-pc-windows-msvc) ASSET="twcore-aarch64-pc-windows-msvc.exe" ;; + x86_64-unknown-linux-gnu) ASSET="twcore-x86_64-unknown-linux-gnu" ;; + aarch64-unknown-linux-gnu) ASSET="twcore-aarch64-unknown-linux-gnu" ;; *) echo "没有为 ${TARGET:-本机} 发布的 twcore —— 发版流水线里加一条,或者用 TARGET= 指一个有的" >&2 exit 1 @@ -128,6 +130,9 @@ if command -v file >/dev/null 2>&1; then *-apple-darwin) EXPECT="arm64" ;; twcore-x86_64-pc-windows*) EXPECT="x86-64" ;; twcore-aarch64-pc-windows*) EXPECT="aarch64|arm64" ;; + # 只写 `x86-64` 的话,一个同架构的 Windows exe 也对得上 + *-x86_64-unknown-linux-gnu) EXPECT="ELF 64-bit.*x86-64" ;; + *-aarch64-unknown-linux-gnu) EXPECT="ELF 64-bit.*aarch64" ;; *) EXPECT="" ;; esac if [ -n "$EXPECT" ] && ! file "$TMP/twcore" | grep -Eqi "$EXPECT"; then diff --git a/src-tauri/src/gateway.rs b/src-tauri/src/gateway.rs index 49863f6a..388d77f7 100644 --- a/src-tauri/src/gateway.rs +++ b/src-tauri/src/gateway.rs @@ -53,7 +53,14 @@ pub const CORE_EXE: &str = if cfg!(windows) { /// 走到了开发那几条候选 —— 包里缺了 `twcore.exe` 的时候,它会去环境变量、 /// 工作目录、PATH 里找一个来跑,正是下面那段注释说要堵上的口子。界面上显示 /// 的路径也因此是框架给的 `\\?\C:\…` 那种写法。 -pub(crate) fn bundled_core() -> Option { +/// +/// **Linux 上看打包时写进二进制的标记**(`bundle_type()`,deb 和 AppImage +/// 各打一份)。资源在 `<可执行文件>/../lib/<产品名>/`:deb 是 +/// `/usr/lib/ThinkWatch Lite/`,AppImage 是挂载点下同样的相对位置(挂载点 +/// 每次启动都换,所以界面上的路径会变,这是正常的)。**从可执行文件的位置 +/// 推,不用框架的 `resource_dir()`**:它在那个目录不存在时改看 `APPDIR` +/// 环境变量 —— 又是一个让环境变量决定执行哪个二进制的口子。 +pub(crate) fn bundled_core(product: &str) -> Option { let exe = std::env::current_exe().ok()?; let dir = exe.parent()?; if dir.ends_with("Contents/MacOS") { @@ -63,6 +70,12 @@ pub(crate) fn bundled_core() -> Option { if update::nsis_installed(&exe) == update::Install::Standalone { return Some(dir.join(CORE_EXE)); } + #[cfg(target_os = "linux")] + if tauri::utils::platform::bundle_type().is_some() { + return Some(dir.parent()?.join("lib").join(product).join(CORE_EXE)); + } + #[cfg(not(target_os = "linux"))] + let _ = product; None } @@ -80,7 +93,7 @@ pub(crate) fn bundled_core() -> Option { /// 的 API key。同理,装好之后也不再看 `THINKWATCH_CORE_BIN` 和 PATH: /// 让环境变量替换掉网关本体,在开发机上是便利,在用户机器上是一个口子。 pub fn locate_core(app: &tauri::AppHandle) -> anyhow::Result { - if let Some(inside) = bundled_core() { + if let Some(inside) = bundled_core(&app.package_info().name) { if inside.exists() { return Ok(inside); } diff --git a/src-tauri/src/update.rs b/src-tauri/src/update.rs index 513c23e0..bdaf621c 100644 --- a/src-tauri/src/update.rs +++ b/src-tauri/src/update.rs @@ -13,17 +13,23 @@ //! 程序,已装版本记在「添加/删除程序」的注册表项里;自己更新时跑的是新版本 //! 的安装程序,它会把那一项一起改掉,所以 winget 之后看到的就是新版本,不会 //! 拿旧的盖回来。 +//! +//! **Linux 上看打包时写进二进制的那个标记,不按路径猜。**打包器给 AppImage 和 +//! deb 各打一份补丁(`tauri::utils::platform::bundle_type()` 读的就是它), +//! 所以「这是哪种包」在编译产物里已经有确定的答案。AppImage 由更新器插件原地 +//! 换掉那个文件;deb 归系统的包管理器管,更新时下载、验签由插件做,安装交给 +//! `pkexec apt-get`,由系统弹授权框 —— **应用不经手用户的密码**(见 `install_deb`)。 use std::path::Path; -#[cfg(not(windows))] +#[cfg(target_os = "macos")] use std::path::PathBuf; /// cask 的名字,也是 Caskroom 下那个目录的名字。 -#[cfg(not(windows))] +#[cfg(target_os = "macos")] const CASK: &str = "thinkwatch-lite"; /// Homebrew 装在哪。 -#[cfg(not(windows))] +#[cfg(target_os = "macos")] /// /// 只有这两个。cask 要求标准前缀 —— arm64 上是 `/opt/homebrew`,另一个是 /// Intel 时代的位置;自定义前缀装不了 cask,也就不会出现在这里。 @@ -52,6 +58,8 @@ pub enum Install { Homebrew, /// 手工下载解压的 `.app`。这一种可以自己更新。 Standalone, + /// Linux 上 deb 装的。更新时下载新的 deb,经系统授权后由 apt 安装。 + Deb, /// 根本不在一个 `.app` 里 —— `tauri dev`。 Dev, } @@ -59,12 +67,12 @@ pub enum Install { impl Install { /// 这一份能不能自己把自己换掉。 pub fn can_self_update(self) -> bool { - matches!(self, Install::Standalone) + matches!(self, Install::Standalone | Install::Deb) } } /// 自己所在的 `.app`。不在一个 `.app` 里就是 `None`。 -#[cfg(not(windows))] +#[cfg(target_os = "macos")] /// /// 只认 `…/Foo.app/Contents/MacOS/可执行文件` 这一种形状。**不往上找到 /// 第一个 `.app` 为止** —— 那样一个放在 `/Applications/别的.app/` 里的 @@ -86,7 +94,7 @@ fn bundle_of(exe: &Path) -> Option<&Path> { } /// 这个 `.app` 是不是 Homebrew 放的。 -#[cfg(not(windows))] +#[cfg(target_os = "macos")] /// /// **比对的是 Caskroom 里那个符号链接。**brew 把 app 移进 `/Applications`, /// 再在 `Caskroom//<版本>/` 留一个链接指回去;每次升级都会重写它, @@ -114,7 +122,7 @@ fn from_homebrew(bundle: &Path, roots: &[PathBuf]) -> bool { } /// 给定可执行文件和 brew 的前缀,判断这是哪一种安装。 -#[cfg(not(windows))] +#[cfg(target_os = "macos")] pub fn kind_at(exe: &Path, roots: &[PathBuf]) -> Install { match bundle_of(exe) { None => Install::Dev, @@ -140,20 +148,188 @@ pub fn nsis_installed(exe: &Path) -> Install { } } +/// Linux 上这一份是怎么装上来的。 +/// +/// **AppImage 还要看 `APPIMAGE` 在不在。**同一个打过补丁的二进制,用户用 +/// `--appimage-extract` 解开之后直接跑,标记照样是 AppImage,而这时根本没有 +/// 一个可以原地替换的 AppImage 文件 —— 插件会去替换正在跑的那个可执行文件。 +/// 运行时(AppImage 的 runtime)挂载时才设这个变量。 +/// +/// rpm 不发,打出来的也不自己更新。 +#[cfg(target_os = "linux")] +pub fn linux_kind( + bundle: Option, + appimage: Option<&std::ffi::OsStr>, +) -> Install { + use tauri::utils::config::BundleType; + match bundle { + Some(BundleType::AppImage) if appimage.is_some_and(|p| !p.is_empty()) => { + Install::Standalone + } + Some(BundleType::Deb) => Install::Deb, + _ => Install::Dev, + } +} + /// 这一份是怎么装上来的。 pub fn kind() -> Install { - // 连自己在哪都答不上来时当作 `Dev` —— 那一档不自己更新。**不确定的 - // 时候不要动用户装好的那一份。** - let Ok(exe) = std::env::current_exe() else { - return Install::Dev; - }; - #[cfg(windows)] + // Linux 上不看路径:答案在打包时已经写进二进制里了(见 `linux_kind`) + #[cfg(target_os = "linux")] { - nsis_installed(&exe) + linux_kind( + tauri::utils::platform::bundle_type(), + std::env::var_os("APPIMAGE").as_deref(), + ) } - #[cfg(not(windows))] + #[cfg(not(target_os = "linux"))] { - kind_at(&exe, &BREW_PREFIXES.map(PathBuf::from)) + // 连自己在哪都答不上来时当作 `Dev` —— 那一档不自己更新。**不确定的 + // 时候不要动用户装好的那一份。** + let Ok(exe) = std::env::current_exe() else { + return Install::Dev; + }; + #[cfg(windows)] + { + nsis_installed(&exe) + } + #[cfg(target_os = "macos")] + { + kind_at(&exe, &BREW_PREFIXES.map(PathBuf::from)) + } + } +} + +/// 发布页。自动更新装不上时,从这里手动下载新版本。 +#[cfg(target_os = "linux")] +const RELEASES_URL: &str = "https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/latest"; + +/// 系统授权框。写全路径:这是一个以 root 身份执行东西的入口,不按 PATH 找。 +#[cfg(target_os = "linux")] +const PKEXEC: &str = "/usr/bin/pkexec"; +/// 用 apt 而不是 `dpkg -i`:新版本多了依赖时 apt 会一起补上,dpkg 只会装到 +/// 一半停下,留下一个「依赖未满足」的包。 +#[cfg(target_os = "linux")] +const APT_GET: &str = "/usr/bin/apt-get"; + +/// 装一个已经验过签的 deb。**`bytes` 必须来自更新器插件的 `download()`** +/// —— 它在交出字节之前按应用里的公钥核对签名。 +/// +/// **不用插件的 `install()`。**它先试 pkexec,失败了就用 zenity / kdialog 弹一个 +/// 输入框要用户的密码,再喂给 `sudo -S`;那也失败的话去跑一个没有终端的 +/// `sudo`,会卡住。一个桌面应用不该经手用户的系统密码 —— 授权只交给系统的 +/// 授权框,它失败就是失败。 +/// +/// 包放在 `/tmp` 下一个只有自己能进的新目录里:root 读得到,别的用户读不到、 +/// 也换不掉。目录用 `create` 而不是 `create_dir_all` —— 名字被人抢先占了 +/// 就失败,不去用一个别人建的目录。 +#[cfg(target_os = "linux")] +pub async fn install_deb(bytes: &[u8]) -> Result<(), String> { + use std::os::unix::fs::DirBuilderExt; + + let nanos = std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .map(|d| d.as_nanos()) + .unwrap_or_default(); + let dir = + std::env::temp_dir().join(format!("thinkwatch-update-{}-{nanos}", std::process::id())); + std::fs::DirBuilder::new() + .mode(0o700) + .create(&dir) + .map_err(|e| not_installed(&e.to_string()))?; + let file = dir.join("thinkwatch-lite.deb"); + let out = match std::fs::write(&file, bytes) { + Ok(()) => tokio::process::Command::new(PKEXEC) + .arg(APT_GET) + .args(["install", "-y"]) + .arg(&file) + .output() + .await + .map_err(|e| e.to_string()), + Err(e) => Err(e.to_string()), + }; + let _ = std::fs::remove_dir_all(&dir); + + let out = match out { + Ok(out) => out, + Err(e) => { + tracing::error!("更新:没能执行 {PKEXEC}:{e}"); + return Err(if std::path::Path::new(PKEXEC).exists() { + not_installed(&e) + } else { + not_installed(tr!("系统中没有 pkexec", "pkexec is not available")) + }); + } + }; + if out.status.success() { + return Ok(()); + } + tracing::error!( + "更新:apt 安装失败({}):{}", + out.status, + String::from_utf8_lossy(&out.stderr).trim() + ); + Err(not_installed(deb_failure(out.status.code()))) +} + +/// 「更新未安装」加上去哪里下载。 +#[cfg(target_os = "linux")] +fn not_installed(why: &str) -> String { + tr!( + format!("更新未安装:{why}。新版本可从 {RELEASES_URL} 下载。"), + format!( + "The update was not installed: {why}. The new version can be downloaded from {RELEASES_URL}." + ) + ) +} + +/// pkexec 的退出码说成一句话。 +/// +/// 126 是授权框被关掉了,127 是没拿到授权(或者会话里没有授权代理)。 +/// 其余的是 apt 自己的退出码 —— 包管理器那一侧的失败,比如被别的安装占着锁。 +#[cfg(target_os = "linux")] +fn deb_failure(code: Option) -> &'static str { + match code { + Some(126) => tr!("授权已取消", "authorization was cancelled"), + Some(127) => tr!( + "未获得管理员授权", + "administrator authorization was not granted" + ), + _ => tr!( + "软件包管理器未能完成安装", + "the package manager could not complete the installation" + ), + } +} + +/// 插件替换 AppImage 失败时的那一句。 +/// +/// 替换的做法是把原文件改名挪走、在原处写新的,所以 AppImage 所在的目录必须 +/// 可写,而且插件要在同一个文件系统上找到一个临时目录。放在 `/opt` 这类 +/// 只有 root 能写的地方时,两个条件都不满足 —— 这不是重试能解决的,说清楚 +/// 去哪下载。 +#[cfg(target_os = "linux")] +pub fn appimage_failure(e: &tauri_plugin_updater::Error) -> String { + use tauri_plugin_updater::Error; + let location = match e { + Error::TempDirNotOnSameMountPoint => true, + Error::Io(io) => matches!( + io.kind(), + std::io::ErrorKind::PermissionDenied | std::io::ErrorKind::ReadOnlyFilesystem + ), + _ => false, + }; + if location { + tr!( + format!("无法写入 AppImage 所在的位置,更新未安装。新版本可从 {RELEASES_URL} 下载。"), + format!( + "The location of the AppImage is not writable, so the update was not installed. The new version can be downloaded from {RELEASES_URL}." + ) + ) + } else { + tr!( + format!("安装失败:{e}"), + format!("Installation failed: {e}") + ) } } @@ -200,7 +376,7 @@ mod tests { p } - #[cfg(not(windows))] + #[cfg(target_os = "macos")] #[test] fn only_the_one_shape_counts_as_a_bundle() { assert_eq!( @@ -307,6 +483,49 @@ mod tests { std::fs::remove_dir_all(&root).unwrap(); } + /// Linux 上信打包时写进去的标记,不信路径和环境变量。 + #[cfg(target_os = "linux")] + #[test] + fn linux_trusts_the_bundle_marker() { + use tauri::utils::config::BundleType; + let image = std::ffi::OsStr::new("/home/u/Apps/ThinkWatch-Lite.AppImage"); + assert_eq!( + linux_kind(Some(BundleType::AppImage), Some(image)), + Install::Standalone + ); + // `--appimage-extract` 解开之后直接跑:没有一个可以原地替换的文件 + assert_eq!(linux_kind(Some(BundleType::AppImage), None), Install::Dev); + assert_eq!( + linux_kind(Some(BundleType::AppImage), Some(std::ffi::OsStr::new(""))), + Install::Dev + ); + assert_eq!(linux_kind(Some(BundleType::Deb), None), Install::Deb); + assert!(Install::Deb.can_self_update()); + // 不发 rpm;打出来的也不自己更新 + assert_eq!(linux_kind(Some(BundleType::Rpm), None), Install::Dev); + // `cargo run` 的构建没有标记。环境里有个 APPIMAGE 也不算 + assert_eq!(linux_kind(None, Some(image)), Install::Dev); + } + + /// 放在只有 root 能写的目录里,是「换个地方」的问题,不是「再试一次」。 + #[cfg(target_os = "linux")] + #[test] + fn an_unwritable_appimage_location_says_where_to_download() { + use tauri_plugin_updater::Error; + let denied = Error::Io(std::io::Error::from(std::io::ErrorKind::PermissionDenied)); + assert!(appimage_failure(&denied).contains(RELEASES_URL)); + assert!(appimage_failure(&Error::TempDirNotOnSameMountPoint).contains(RELEASES_URL)); + assert!(!appimage_failure(&Error::BinaryNotFoundInArchive).contains(RELEASES_URL)); + } + + #[cfg(target_os = "linux")] + #[test] + fn a_dismissed_authorization_is_not_reported_as_a_broken_package() { + assert_ne!(deb_failure(Some(126)), deb_failure(Some(100))); + assert_ne!(deb_failure(Some(127)), deb_failure(Some(100))); + assert!(not_installed(deb_failure(Some(126))).contains(RELEASES_URL)); + } + /// 读的是 tap 里真实的那份 cask —— 格式变了,这条先红。 #[test] fn the_version_comes_out_of_a_real_cask() { diff --git a/src-tauri/src/updater.rs b/src-tauri/src/updater.rs index c40de79c..f9a5f6e6 100644 --- a/src-tauri/src/updater.rs +++ b/src-tauri/src/updater.rs @@ -6,7 +6,7 @@ use tauri::{Emitter, Manager, WebviewUrl, WebviewWindowBuilder}; #[cfg(target_os = "macos")] use crate::dmg; -#[cfg(windows)] +#[cfg(any(windows, target_os = "linux"))] use crate::gateway::restart_gateway; use crate::{AppState, control::ControlClient, data_dir, error::Out, i18n, notices, prefs, update}; @@ -478,6 +478,23 @@ pub async fn update_install( let marker = data_dir().join(UPDATED_FROM); let from = app.package_info().version.to_string(); + // **deb 不交给插件装**,理由见 `update::install_deb`。和 Windows 一样先停 + // 网关再装:装不成(授权框点了取消最常见)就把网关接回来 + #[cfg(target_os = "linux")] + if install == update::Install::Deb { + state + .supervisor + .stop_and_wait(std::time::Duration::from_secs(5)) + .await; + if let Err(e) = update::install_deb(&bytes).await { + resume_after_failed_update(&app).await; + return Err(e.into()); + } + let _ = std::fs::write(&marker, &from); + let _ = app.emit("update-step", Step::Restarting); + app.restart() + } + // **Windows 上 `install` 不回来。**插件拉起新版本的安装程序之后当场 // `exit(0)`,排在它后面的每一步都轮不到 —— 所以标记和停 core 都得挪到 // 它前面。停 core 在那边还是硬要求:`twcore.exe` 还在跑的话,安装程序 @@ -505,6 +522,11 @@ pub async fn update_install( } #[cfg(not(windows))] { + // Linux 上走到这里的只有 AppImage:插件原地换掉 `$APPIMAGE` 那个文件 + #[cfg(target_os = "linux")] + up.install(&bytes) + .map_err(|e| update::appimage_failure(&e))?; + #[cfg(target_os = "macos")] up.install(&bytes).map_err(|e| { tr!( format!("安装失败:{e}"), @@ -528,7 +550,9 @@ pub async fn update_install( /// **先等守护循环真的退干净。**`stop_and_wait` 在 core 翻成「已停止」时就 /// 返回了,而循环要再走一步才把「正在守护」放下;这之间去拉,会被当成 /// 「守护还在,重启一下」,然后因为 core 不在跑而什么也不做。 -#[cfg(windows)] +/// +/// Windows 的安装程序和 Linux 的 deb 都是先停网关再装,装不成都走这里。 +#[cfg(any(windows, target_os = "linux"))] pub(crate) async fn resume_after_failed_update(app: &tauri::AppHandle) { use std::sync::atomic::Ordering; let state = app.state::(); diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json new file mode 100644 index 00000000..8d0c081c --- /dev/null +++ b/src-tauri/tauri.linux.conf.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "bundle": { + "targets": ["appimage", "deb"], + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/256x256.png", + "icons/512x512.png" + ], + "category": "DeveloperTool", + "shortDescription": "Local AI gateway", + "publisher": "ThinkWatchProject", + "homepage": "https://github.com/ThinkWatchProject/ThinkWatch-Lite", + "linux": { + "deb": { + "section": "devel", + "desktopTemplate": "linux/main.desktop" + } + } + } +} diff --git a/src/Update.i18n.ts b/src/Update.i18n.ts index 27949b95..59bf5e7f 100644 --- a/src/Update.i18n.ts +++ b/src/Update.i18n.ts @@ -19,6 +19,7 @@ export const updateText = messages( available: (version: string) => `ThinkWatch Lite ${version} 可用`, closeWhileWaiting: "关闭此窗口不影响更新,更新完成后将发送通知。", standalone: "下载完成后自动安装。网关将在进行中的请求全部结束后重新启动。", + deb: "下载完成后需要管理员授权才能安装。网关将在进行中的请求全部结束后重新启动。", later: "稍后", install: "下载并安装", homebrew: "此应用由 Homebrew 管理,请在终端中执行以下命令完成更新:", @@ -47,6 +48,8 @@ export const updateText = messages( closeWhileWaiting: "Closing this window does not stop the update. A notification is sent when it is complete.", standalone: "Installs automatically after downloading. The gateway restarts once all requests in progress have finished.", + deb: + "Installing requires administrator authorization after downloading. The gateway restarts once all requests in progress have finished.", later: "Later", install: "Download and install", homebrew: "This app is managed by Homebrew. To update, run this command in Terminal:", diff --git a/src/UpdateWindow.tsx b/src/UpdateWindow.tsx index 6dc560f2..d429efef 100644 --- a/src/UpdateWindow.tsx +++ b/src/UpdateWindow.tsx @@ -26,6 +26,7 @@ const COPIED_MS = 2_000; * * · 从网页下载的:「下载并安装」,按一次之后不再问任何问题 —— 下载、 * 等网关手上的请求结束、替换、重启,全部自动。 + * · Linux 的 deb:同一个按钮,只是安装那一步由系统弹授权框。 * · Homebrew 装的:给出那条命令和复制按钮。更新交给 brew。 * · 开发构建:只说明不自动更新。 * @@ -165,7 +166,7 @@ export default function UpdateWindow() { ) : (

- {t.standalone} + {offer.install === "deb" ? t.deb : t.standalone}

)} {failed &&

{failed}

} diff --git a/src/updateFlow.test.ts b/src/updateFlow.test.ts index 695ca721..4b023c9d 100644 --- a/src/updateFlow.test.ts +++ b/src/updateFlow.test.ts @@ -15,6 +15,10 @@ describe("谁能在窗口里直接装", () => { expect(canInstall("standalone")).toBe(true); }); + it("deb 装的也可以:安装那一步由系统授权", () => { + expect(canInstall("deb")).toBe(true); + }); + it("开发构建不自己更新", () => { expect(canInstall("dev")).toBe(false); }); diff --git a/src/updateFlow.ts b/src/updateFlow.ts index ef4f217f..c3965e09 100644 --- a/src/updateFlow.ts +++ b/src/updateFlow.ts @@ -8,7 +8,7 @@ import { textOf } from "@/i18n"; import { updateText } from "./Update.i18n"; /** 这一份是怎么装上来的。决定更新由谁做。 */ -export type Install = "homebrew" | "standalone" | "dev"; +export type Install = "homebrew" | "standalone" | "deb" | "dev"; /** 查到的新版本。 */ export interface Found { @@ -46,9 +46,11 @@ export type Step = * 一个已经不在磁盘上的版本,下一次 `brew upgrade` 会把旧的那版盖回来。 * Rust 那一侧也挡着;这里再判断一次,是因为多出来的那个按钮本身就是错 * 的 —— 它承诺了一件做不到的事,用户要点下去才知道。 + * + * Linux 的 deb 可以:下载、验签之后交给系统的授权框和 apt 安装。 */ export function canInstall(install: Install): boolean { - return install === "standalone"; + return install === "standalone" || install === "deb"; } const MB = 1_048_576; From 6a5db32f85ca44a46fbb7039e25ff998ea939f0b Mon Sep 17 00:00:00 2001 From: fylorn <249551762+fylorn@users.noreply.github.com> Date: Thu, 24 Sep 2026 19:02:07 +0800 Subject: [PATCH 2/2] Drop inherited APPIMAGE/APPDIR outside an AppImage A deb build started from inside an AppImage (a terminal or launcher packaged that way) inherits that AppImage's APPIMAGE and APPDIR. Tauri's Env::default reads both without checking: restart() relaunches $APPIMAGE, resource_dir() falls back to $APPDIR, and twcore inherits them. Unless bundle_type() says this is an AppImage, remove both first thing in run(), while the process is still single-threaded. Co-Authored-By: Claude Opus 5.5 --- src-tauri/src/lib.rs | 8 ++++++++ src-tauri/src/update.rs | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 15934d4e..49f4f338 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -89,6 +89,14 @@ pub struct AppState { } pub fn run() { + // 继承来的 AppImage 变量不是自己的,先清掉,理由见 `update::foreign_appimage_vars` + #[cfg(target_os = "linux")] + for var in update::foreign_appimage_vars(tauri::utils::platform::bundle_type()) { + // SAFETY: 这是 `run()` 的第一件事,在 Tauri、tokio、任何插件起线程之前; + // `main` 在这之前只装了日志订阅器,它不起线程。进程里此刻只有主线程, + // 没有别的线程可能同时读写环境变量。 + unsafe { std::env::remove_var(var) }; + } // 在单实例插件把这个进程判成「第二个」之前放下激活令牌 #[cfg(target_os = "linux")] window::relaunch_token::stash(); diff --git a/src-tauri/src/update.rs b/src-tauri/src/update.rs index bdaf621c..e7d62dfb 100644 --- a/src-tauri/src/update.rs +++ b/src-tauri/src/update.rs @@ -171,6 +171,27 @@ pub fn linux_kind( } } +/// 不是自己的、要在启动时清掉的 AppImage 环境变量。 +/// +/// AppImage 的运行时挂载时设 `APPIMAGE`、`APPDIR`,而环境变量会一路继承: +/// 从一个 AppImage 里的终端、启动器拉起来的 deb 版,手里拿着的是**别人的** +/// 这两个值。Tauri 却照单全收(`Env::default` 读这两个,只打一条警告): +/// `restart()` 重启的是 `$APPIMAGE` 指的那个文件,`resource_dir()` 在自己的 +/// 资源目录不在时改看 `$APPDIR` —— 更新完重启,起来的就可能是另一个程序。 +/// 子进程(twcore)也会继承它们。 +/// +/// 只有打包标记说自己是 AppImage 时,这两个值才是运行时给自己设的。 +#[cfg(target_os = "linux")] +pub fn foreign_appimage_vars( + bundle: Option, +) -> &'static [&'static str] { + if bundle == Some(tauri::utils::config::BundleType::AppImage) { + &[] + } else { + &["APPIMAGE", "APPDIR"] + } +} + /// 这一份是怎么装上来的。 pub fn kind() -> Install { // Linux 上不看路径:答案在打包时已经写进二进制里了(见 `linux_kind`) @@ -507,6 +528,18 @@ mod tests { assert_eq!(linux_kind(None, Some(image)), Install::Dev); } + /// 只有 AppImage 留着这两个变量;deb 和开发构建一律清掉,restart 不会跑去 + /// 一个继承来的 `$APPIMAGE`。 + #[cfg(target_os = "linux")] + #[test] + fn only_an_appimage_keeps_the_appimage_variables() { + use tauri::utils::config::BundleType; + assert!(foreign_appimage_vars(Some(BundleType::AppImage)).is_empty()); + for bundle in [Some(BundleType::Deb), Some(BundleType::Rpm), None] { + assert_eq!(foreign_appimage_vars(bundle), ["APPIMAGE", "APPDIR"]); + } + } + /// 放在只有 root 能写的目录里,是「换个地方」的问题,不是「再试一次」。 #[cfg(target_os = "linux")] #[test]