Skip to content

Commit f75eae0

Browse files
committed
feat: add self updater
1 parent 0a4968a commit f75eae0

13 files changed

Lines changed: 525 additions & 16 deletions

File tree

.github/workflows/release.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,15 @@ jobs:
6565
APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }}
6666
WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }}
6767
WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
68+
TAURI_UPDATER_PUBLIC_KEY: ${{ secrets.TAURI_UPDATER_PUBLIC_KEY }}
69+
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
70+
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
6871
TAURI_SIGNING_RPM_KEY: ${{ secrets.TAURI_SIGNING_RPM_KEY }}
6972
APPIMAGETOOL_SIGN_PASSPHRASE: ${{ secrets.APPIMAGETOOL_SIGN_PASSPHRASE }}
7073
run: |
74+
[ -n "$TAURI_UPDATER_PUBLIC_KEY" ] || { echo "Missing TAURI_UPDATER_PUBLIC_KEY secret."; exit 1; }
75+
[ -n "$TAURI_SIGNING_PRIVATE_KEY" ] || { echo "Missing TAURI_SIGNING_PRIVATE_KEY secret."; exit 1; }
76+
7177
case "$PLATFORM" in
7278
macos-latest)
7379
[ -n "$APPLE_CERTIFICATE" ] || { echo "Missing APPLE_CERTIFICATE secret."; exit 1; }
@@ -171,6 +177,9 @@ jobs:
171177
APPLE_API_KEY_PATH: ${{ env.APPLE_API_KEY_PATH }}
172178
WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }}
173179
WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
180+
TAURI_UPDATER_PUBLIC_KEY: ${{ secrets.TAURI_UPDATER_PUBLIC_KEY }}
181+
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
182+
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
174183
SIGN: ${{ matrix.platform == 'ubuntu-22.04' && '1' || '' }}
175184
APPIMAGETOOL_FORCE_SIGN: ${{ matrix.platform == 'ubuntu-22.04' && '1' || '' }}
176185
SIGN_KEY: ${{ secrets.SIGN_KEY }}

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ yarn tauri build
9595

9696
The release workflow (`.github/workflows/release.yml`) is configured to sign platform artifacts on macOS, Windows, and Linux.
9797

98+
Updater support is now wired into the app runtime as well. The app checks GitHub Releases via `https://github.com/rust-dd/rsql/releases/latest/download/latest.json`, and the packaged build enables a manual "Check for Updates" action plus a silent startup check.
99+
98100
macOS (Developer ID + notarization):
99101

100102
- `APPLE_CERTIFICATE` (base64-encoded `.p12` Developer ID Application certificate)
@@ -116,4 +118,16 @@ Linux (AppImage + RPM signing):
116118
- `APPIMAGETOOL_SIGN_PASSPHRASE`
117119
- Optional: `SIGN_KEY` (specific GPG key id/fingerprint for AppImage signing)
118120

121+
Updater (required for self-updates):
122+
123+
- `TAURI_UPDATER_PUBLIC_KEY` (public key content generated by `yarn tauri signer generate`)
124+
- `TAURI_SIGNING_PRIVATE_KEY` (path or content of the private updater signing key)
125+
- Optional: `TAURI_SIGNING_PRIVATE_KEY_PASSWORD`
126+
127+
Notes:
128+
129+
- `bundle.createUpdaterArtifacts` is enabled, so release builds will generate signed updater artifacts and `latest.json`.
130+
- The updater uses the latest published GitHub release. Draft releases are not visible to clients until you publish them.
131+
- If you build locally without `TAURI_UPDATER_PUBLIC_KEY`, the app still builds, but the updater plugin stays disabled for that build.
132+
119133
After secrets are configured, pushing a tag like `v1.0.1` builds signed artifacts for all platforms.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
"@tauri-apps/plugin-dialog": "^2.6.0",
2222
"@tauri-apps/plugin-fs": "^2.4.5",
2323
"@tauri-apps/plugin-opener": "^2",
24+
"@tauri-apps/plugin-process": "^2.3.1",
25+
"@tauri-apps/plugin-updater": "^2.10.0",
2426
"@types/leaflet": "^1.9.21",
2527
"@xterm/addon-fit": "^0.11.0",
2628
"@xterm/xterm": "^6.0.0",

0 commit comments

Comments
 (0)