Skip to content

Commit 40a1d98

Browse files
committed
feat: allow choosing install dir with NSIS
1 parent 5795cc6 commit 40a1d98

File tree

7 files changed

+34
-13
lines changed

7 files changed

+34
-13
lines changed

.github/workflows/release-build.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ jobs:
136136
Remove-Item -Path "packages/insomnia/dist/win-unpacked/tosign" -Recurse -Force
137137
Remove-Item -Path "packages/insomnia/dist/win-unpacked/signed" -Recurse -Force
138138
139-
# re-packages the now code-signed electron-builder contents into a squirrel installer
139+
# re-packages the now code-signed electron-builder contents into the installer
140140
- name: Package dist app (Windows only)
141141
if: runner.os == 'Windows'
142142
shell: bash
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
!macro customInit
2+
StrCpy $0 "$PROFILE\AppData\Local\insomnia\Update.exe"
3+
StrCpy $1 "$PROFILE\AppData\Local\insomnia\.dead"
4+
IfFileExists $1 0 +2
5+
Goto +4
6+
IfFileExists $0 0 +5
7+
MessageBox MB_YESNO "Existing Insomnia installation found, which must be uninstalled first.$\n$\nClick 'No' to exit this installer so you can uninstall yourself.$\n$\nClick 'Yes' to allow this installer to uninstall for you (your existing Insomnia data will be preserved)." IDYES 0 IDNO +3
8+
nsExec::Exec '"$0" --uninstall -s'
9+
Goto +2
10+
Quit
11+
!macroend

packages/insomnia/customSign.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ const execAsync = util.promisify(exec);
55

66
// adapted from https://www.electron.build/win.html#how-do-delegate-code-signing
77
// It was possible code-sign installer after packaging, but some files are only available
8-
// through hooking into the signing step of electron-builder while the final squirrel installer is being built
9-
// This makes it possible to sign the Update.exe and stub of Insomnia.exe that end up in C:\Users\<user>\AppData\Local\insomnia
10-
exports.default = async function(configuration) {
11-
// skip signing if not windows squirrel
12-
if (configuration.options.target.length === 0 || configuration.options.target[0].target !== 'squirrel') {
13-
console.log('[customSign] Skipping signing because target is not windows squirrel.');
8+
// through hooking into the signing step of electron-builder while the final nsis installer is being built
9+
// This makes it possible to sign the Update.exe and stub of Insomnia.exe that end up in the installation folder
10+
exports.default = async function (configuration) {
11+
if (configuration.options.target.length === 0 || (configuration.options.target[0].target !== 'nsis')) {
12+
console.log('[customSign] Skipping signing because target is not nsis.');
1413
return;
1514
}
1615

packages/insomnia/electron-builder.config.js

+15-4
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,27 @@ const config = {
8686
win: {
8787
target: [
8888
{
89-
target: 'squirrel',
89+
target: 'nsis',
90+
arch: ['x64'],
9091
},
9192
],
9293
sign: './customSign.js',
9394
signingHashAlgorithms: ['sha256'], // avoid duplicate signing hook calls https://github.com/electron-userland/electron-builder/issues/3995#issuecomment-505725704
9495
},
95-
squirrelWindows: {
96+
nsis: {
9697
artifactName: `${BINARY_PREFIX}-\${version}.\${ext}`,
97-
iconUrl:
98-
'https://github.com/kong/insomnia/blob/develop/packages/insomnia/src/icons/icon.ico?raw=true',
98+
include: './config/uninstall-squirrel.nsh',
99+
oneClick: false,
100+
selectPerMachineByDefault: true,
101+
allowToChangeInstallationDirectory: true,
102+
installerIcon: './build/icon.ico',
103+
installerSidebar: './src/icons/nsis-sidebar.bmp',
104+
uninstallerSidebar: './src/icons/nsis-sidebar.bmp',
105+
uninstallerIcon: './build/icon.ico',
106+
createDesktopShortcut: true,
107+
createStartMenuShortcut: true,
108+
shortcutName: 'Insomnia',
109+
deleteAppDataOnUninstall: false,
99110
},
100111
portable: {
101112
artifactName: `${BINARY_PREFIX}-\${version}-portable.\${ext}`,

packages/insomnia/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"lint": "eslint . --ext .js,.ts,.tsx --cache",
2525
"package": "npm run build:app && cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js",
2626
"package:windows:unpacked": "npm run build:app && cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js --dir",
27-
"package:windows:dist": "cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js --win squirrel --prepackaged ./dist/win-unpacked",
27+
"package:windows:dist": "cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js --win nsis --prepackaged ./dist/win-unpacked",
2828
"start": "npx -y concurrently -n browser,main --kill-others \"npm run start:dev-server\" \"npm run start:electron\"",
2929
"start:dev-server": "vite dev",
3030
"start:electron": "cross-env NODE_ENV=development esr esbuild.main.ts && electron --inspect=5858 .",

packages/insomnia/src/common/constants.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export const displayModifierKey = (key: keyof Omit<KeyCombination, 'keyCode'>) =
119119
// Update
120120
export enum UpdateURL {
121121
mac = 'https://updates.insomnia.rest/builds/check/mac',
122-
windows = 'https://updates.insomnia.rest/updates/win',
122+
windows = 'https://updates.insomnia.rest/updates/win/RELEASES',
123123
}
124124

125125
// API
51.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)