Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: allow choosing install dir with NSIS #8456

Draft
wants to merge 1 commit into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ jobs:
Remove-Item -Path "packages/insomnia/dist/win-unpacked/tosign" -Recurse -Force
Remove-Item -Path "packages/insomnia/dist/win-unpacked/signed" -Recurse -Force

# re-packages the now code-signed electron-builder contents into a squirrel installer
# re-packages the now code-signed electron-builder contents into the installer
- name: Package dist app (Windows only)
if: runner.os == 'Windows'
shell: bash
Expand Down
11 changes: 11 additions & 0 deletions packages/insomnia/config/uninstall-squirrel.nsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
!macro customInit
StrCpy $0 "$PROFILE\AppData\Local\insomnia\Update.exe"
StrCpy $1 "$PROFILE\AppData\Local\insomnia\.dead"
IfFileExists $1 0 +2
Goto +4
IfFileExists $0 0 +5
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
nsExec::Exec '"$0" --uninstall -s'
Goto +2
Quit
!macroend
11 changes: 5 additions & 6 deletions packages/insomnia/customSign.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@

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

Check failure on line 10 in packages/insomnia/customSign.js

View workflow job for this annotation

GitHub Actions / Test

Unexpected space before function parentheses
if (configuration.options.target.length === 0 || (configuration.options.target[0].target !== 'nsis')) {
console.log('[customSign] Skipping signing because target is not nsis.');
return;
}

Expand Down
19 changes: 15 additions & 4 deletions packages/insomnia/electron-builder.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,27 @@ const config = {
win: {
target: [
{
target: 'squirrel',
target: 'nsis',
arch: ['x64'],
},
],
sign: './customSign.js',
signingHashAlgorithms: ['sha256'], // avoid duplicate signing hook calls https://github.com/electron-userland/electron-builder/issues/3995#issuecomment-505725704
},
squirrelWindows: {
nsis: {
artifactName: `${BINARY_PREFIX}-\${version}.\${ext}`,
iconUrl:
'https://github.com/kong/insomnia/blob/develop/packages/insomnia/src/icons/icon.ico?raw=true',
include: './config/uninstall-squirrel.nsh',
oneClick: false,
selectPerMachineByDefault: true,
allowToChangeInstallationDirectory: true,
installerIcon: './build/icon.ico',
installerSidebar: './src/icons/nsis-sidebar.bmp',
uninstallerSidebar: './src/icons/nsis-sidebar.bmp',
uninstallerIcon: './build/icon.ico',
createDesktopShortcut: true,
createStartMenuShortcut: true,
shortcutName: 'Insomnia',
deleteAppDataOnUninstall: false,
},
portable: {
artifactName: `${BINARY_PREFIX}-\${version}-portable.\${ext}`,
Expand Down
2 changes: 1 addition & 1 deletion packages/insomnia/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"lint": "eslint . --ext .js,.ts,.tsx --cache",
"package": "npm run build:app && cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js",
"package:windows:unpacked": "npm run build:app && cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js --dir",
"package:windows:dist": "cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js --win squirrel --prepackaged ./dist/win-unpacked",
"package:windows:dist": "cross-env USE_HARD_LINKS=false electron-builder build --config electron-builder.config.js --win nsis --prepackaged ./dist/win-unpacked",
"start": "npx -y concurrently -n browser,main --kill-others \"npm run start:dev-server\" \"npm run start:electron\"",
"start:dev-server": "vite dev",
"start:electron": "cross-env NODE_ENV=development esr esbuild.main.ts && electron --inspect=5858 .",
Expand Down
2 changes: 1 addition & 1 deletion packages/insomnia/src/common/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ export const displayModifierKey = (key: keyof Omit<KeyCombination, 'keyCode'>) =
// Update
export enum UpdateURL {
mac = 'https://updates.insomnia.rest/builds/check/mac',
windows = 'https://updates.insomnia.rest/updates/win',
windows = 'https://updates.insomnia.rest/updates/win/RELEASES',
}

// API
Expand Down
Binary file added packages/insomnia/src/icons/nsis-sidebar.bmp
Binary file not shown.
Loading