From 65f66ac60c928bbfccdc2cc04d65e8e1e159949f Mon Sep 17 00:00:00 2001 From: antelle Date: Thu, 14 May 2020 22:59:11 +0200 Subject: [PATCH] fix #1503: arm64 Windows installer --- Gruntfile.js | 33 +++++++++++++++++++++++++++++++++ desktop/package-lock.json | 4 ++-- grunt.tasks.js | 7 ++++++- package/nsis/main-un.nsi | 6 +++++- package/nsis/main.nsi | 27 ++++++++++++++++++--------- 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index f7e5cc37..3ca497e1 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -166,6 +166,11 @@ module.exports = function(grunt) { dest: `dist/desktop/KeeWeb-${pkg.version}.win.ia32.exe`, nonull: true }, + 'desktop-win32-dist-arm64': { + src: 'tmp/desktop/KeeWeb.win.arm64.exe', + dest: `dist/desktop/KeeWeb-${pkg.version}.win.arm64.exe`, + nonull: true + }, 'electron-builder-dist-linux-rpm': { src: `tmp/desktop/electron-builder/KeeWeb-${pkg.version}.x86_64.rpm`, dest: `dist/desktop/KeeWeb-${pkg.version}.linux.x86_64.rpm`, @@ -537,6 +542,20 @@ module.exports = function(grunt) { arch: 'ia32', output: 'tmp/desktop/KeeWeb-win32-ia32/uninst.exe' } + }, + 'win32-arm64': { + options: { + installScript: 'package/nsis/main.nsi', + arch: 'arm64', + output: 'tmp/desktop/KeeWeb.win.arm64.exe' + } + }, + 'win32-un-arm64': { + options: { + installScript: 'package/nsis/main-un.nsi', + arch: 'arm64', + output: 'tmp/desktop/KeeWeb-win32-arm64/uninst.exe' + } } }, chmod: { @@ -680,6 +699,13 @@ module.exports = function(grunt) { } } }, + 'win32-uninst-arm64': { + options: { + files: { + 'tmp/desktop/KeeWeb-win32-arm64/uninst.exe': 'KeeWeb Uninstaller' + } + } + }, 'win32-installer-x64': { options: { files: { @@ -693,6 +719,13 @@ module.exports = function(grunt) { 'tmp/desktop/KeeWeb.win.ia32.exe': 'KeeWeb Setup' } } + }, + 'win32-installer-arm64': { + options: { + files: { + 'tmp/desktop/KeeWeb.win.arm64.exe': 'KeeWeb Setup' + } + } } }, 'sign-dist': { diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 72efecfb..925422a2 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -5,8 +5,8 @@ "requires": true, "dependencies": { "@keeweb/keeweb-native-modules": { - "version": "https://github.com/keeweb/keeweb-native-modules/releases/download/0.2.0/keeweb-native-modules.tgz", - "integrity": "sha512-0AuEeYvUiYUVZ4bgwz+DmT3j8RcFqMuKBLbo66JTEzRcBjjRKSqafO6RtwyOmyp9ooSnwuH7l6iAZrJDZe8bnw==" + "version": "https://github.com/keeweb/keeweb-native-modules/releases/download/0.2.2/keeweb-native-modules.tgz", + "integrity": "sha512-ch6sIUxSVlGnDxn7qbehr6ToXuezCI7ItDf6Aj1jFRvMc5S0Ls0RiJh177z/J7hL6iGrvPgx/8xJUFC2VmYuXw==" }, "node-stream-zip": { "version": "1.4.2", diff --git a/grunt.tasks.js b/grunt.tasks.js index 104e57b2..819be730 100644 --- a/grunt.tasks.js +++ b/grunt.tasks.js @@ -77,14 +77,19 @@ module.exports = function(grunt) { grunt.registerTask('build-desktop-dist-win32', [ 'nsis:win32-un-x64', 'nsis:win32-un-ia32', + 'nsis:win32-un-arm64', 'sign-exe:win32-uninst-x64', 'sign-exe:win32-uninst-ia32', + 'sign-exe:win32-uninst-arm64', 'nsis:win32-x64', 'nsis:win32-ia32', + 'nsis:win32-arm64', 'sign-exe:win32-installer-x64', 'sign-exe:win32-installer-ia32', + 'sign-exe:win32-installer-arm64', 'copy:desktop-win32-dist-x64', - 'copy:desktop-win32-dist-ia32' + 'copy:desktop-win32-dist-ia32', + 'copy:desktop-win32-dist-arm64' ]); grunt.registerTask('build-desktop-dist-linux', [ diff --git a/package/nsis/main-un.nsi b/package/nsis/main-un.nsi index 9ff74fd5..41ddcf15 100755 --- a/package/nsis/main-un.nsi +++ b/package/nsis/main-un.nsi @@ -7,11 +7,15 @@ !insertmacro MUI_LANGUAGE "English" Function .onInit - ${If} ${RunningX64} + ${If} ${IsNativeAMD64} SetRegView 64 StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}" ${EndIf} + ${If} ${IsNativeARM64} + StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}" + ${EndIf} + !insertmacro MULTIUSER_INIT ${StrStr} $0 "$EXEPATH" "${PRODUCT_UNINST_TEMP_EXE}" diff --git a/package/nsis/main.nsi b/package/nsis/main.nsi index 9282d152..0fad6cbf 100755 --- a/package/nsis/main.nsi +++ b/package/nsis/main.nsi @@ -11,17 +11,26 @@ !insertmacro MUI_LANGUAGE "English" Function .onInit - ${If} ${RunningX64} - ${If} ${arch} == "x64" - SetRegView 64 - StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}" - ${Else} - MessageBox MB_ICONSTOP|MB_OK "Please use 64-bit installer on 64-bit system" + ${If} ${IsNativeAMD64} + ${If} ${arch} != "x64" + MessageBox MB_ICONSTOP|MB_OK "Please use a 64-bit installer on a 64-bit system" Quit ${EndIf} - ${Else} - ${If} ${arch} == "x64" - MessageBox MB_ICONSTOP|MB_OK "Please use 32-bit installer on 32-bit system" + SetRegView 64 + StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}" + ${EndIf} + + ${If} ${IsNativeARM64} + ${If} ${arch} != "arm64" + MessageBox MB_ICONSTOP|MB_OK "Please use an ARM64 installer on an ARM64 system" + Quit + ${EndIf} + StrCpy $InstDir "$PROGRAMFILES64\${PRODUCT_NAME}" + ${EndIf} + + ${If} ${IsNativeIA32} + ${If} ${arch} != "ia32" + MessageBox MB_ICONSTOP|MB_OK "Please use a 32-bit installer on a 32-bit system" Quit ${EndIf} ${EndIf}