From 134e1e8668a52c6f1baf506fefc84ca89260f476 Mon Sep 17 00:00:00 2001 From: Horus Date: Mon, 17 Apr 2023 08:28:29 +0800 Subject: [PATCH] feat: support release windows installer with squirrel (#1965) Co-authored-by: Himself65 --- .github/workflows/release-desktop-app.yml | 7 +++++-- apps/electron/forge.config.js | 13 +++++++++++++ apps/electron/layers/main/src/index.ts | 1 + apps/electron/package.json | 1 + apps/electron/yarn.lock | 10 ++++++++++ 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-desktop-app.yml b/.github/workflows/release-desktop-app.yml index c560a6adb9..925ab06577 100644 --- a/.github/workflows/release-desktop-app.yml +++ b/.github/workflows/release-desktop-app.yml @@ -140,8 +140,11 @@ jobs: - name: Save windows artifacts run: | mkdir -p builds - mv apps/electron/out/make/zip/win32/x64/AFFiNE-win32-x64-0.0.0.zip ./builds/affine-windows-x64.zip - + mv apps/electron/out/make/zip/win32/x64/AFFiNE-win32-x64-*.zip ./builds/affine-windows-x64.zip + mv apps/electron/out/make/squirrel.windows/x64/*.exe ./builds/affine-windows-x64.exe + mv apps/electron/out/make/squirrel.windows/x64/*.msi ./builds/affine-windows-x64.msi + mv apps/electron/out/make/squirrel.windows/x64/*.nupkg ./builds/affine-windows-x64.nupkg + mv apps/electron/out/make/squirrel.windows/x64/RELEASES ./builds/RELEASES - name: Upload Artifact uses: actions/upload-artifact@v3 with: diff --git a/apps/electron/forge.config.js b/apps/electron/forge.config.js index ac8afcaeda..e436b709ec 100644 --- a/apps/electron/forge.config.js +++ b/apps/electron/forge.config.js @@ -32,6 +32,14 @@ module.exports = { setupIcon: './resources/icons/icon.ico', }, }, + { + name: '@electron-forge/maker-squirrel', + config: { + name: 'AFFiNE', + setupIcon: './resources/icons/icon.ico', + // loadingGif: './resources/icons/loading.gif', + }, + }, ], hooks: { generateAssets: async (_, platform, arch) => { @@ -43,6 +51,11 @@ module.exports = { process.env.TARGET = 'aarch64-apple-darwin'; } + if (platform === 'win32') { + $.shell = 'powershell.exe'; + $.prefix = ''; + } + // run yarn generate-assets await $`yarn generate-assets`; }, diff --git a/apps/electron/layers/main/src/index.ts b/apps/electron/layers/main/src/index.ts index 4f7b7ba552..e9399c6b7c 100644 --- a/apps/electron/layers/main/src/index.ts +++ b/apps/electron/layers/main/src/index.ts @@ -7,6 +7,7 @@ import { registerHandlers } from './app-state'; import { restoreOrCreateWindow } from './main-window'; import { registerProtocol } from './protocol'; +if (require('electron-squirrel-startup')) app.exit(); if (process.defaultApp) { if (process.argv.length >= 2) { app.setAsDefaultProtocolClient('affine', process.execPath, [ diff --git a/apps/electron/package.json b/apps/electron/package.json index 2856a9fc32..39a055c0f2 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -39,6 +39,7 @@ "@electron/remote": "2.0.9", "dts-for-context-bridge": "^0.7.1", "electron": "24.0.0", + "electron-squirrel-startup": "1.0.0", "esbuild": "^0.17.16", "zx": "^7.2.1" }, diff --git a/apps/electron/yarn.lock b/apps/electron/yarn.lock index 2124ebdbbe..a572e12af5 100644 --- a/apps/electron/yarn.lock +++ b/apps/electron/yarn.lock @@ -129,6 +129,7 @@ __metadata: cross-env: 7.0.3 dts-for-context-bridge: ^0.7.1 electron: 24.0.0 + electron-squirrel-startup: 1.0.0 electron-window-state: ^5.0.3 esbuild: ^0.17.16 firebase: ^9.18.0 @@ -8569,6 +8570,15 @@ __metadata: languageName: node linkType: hard +"electron-squirrel-startup@npm:1.0.0": + version: 1.0.0 + resolution: "electron-squirrel-startup@npm:1.0.0" + dependencies: + debug: ^2.2.0 + checksum: a1f658e326bd0f5c24aec95fd9a94a2e2b8b645adbd421465829f32719d15e85d6469d9369914c3b766d61e71eebb9f6725057b7fafa78adbcc5d6d3ce5d7a22 + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.4.284": version: 1.4.361 resolution: "electron-to-chromium@npm:1.4.361"