diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ce631f04..8e6eb6a3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -25,8 +25,6 @@ jobs:
# - os: rsora-rpi-arm # self-hosted armhf
runs-on: ${{ matrix.config.os }}
timeout-minutes: 90
- env:
- CERTIFICATE_PATH: /tmp/macos_signing_certificate.p12
steps:
- name: Checkout
@@ -43,13 +41,6 @@ jobs:
with:
python-version: '2.7'
- - name: Generate signing certificate file [macOS]
- if: runner.OS == 'macOS'
- run: |
- # APPLE_SIGNING_CERTIFICATE_P12 secret was produced by following the procedure from:
- # https://www.kencochrane.com/2020/08/01/build-and-sign-golang-binaries-for-macos-with-github-actions/#exporting-the-developer-certificate
- echo "${{ secrets.APPLE_SIGNING_CERTIFICATE_P12 }}" | base64 --decode > "${{ env.CERTIFICATE_PATH }}"
-
- name: Package
shell: bash
env:
@@ -62,12 +53,22 @@ jobs:
IS_NIGHTLY: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master') }}
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
- # electron-builder will try to sign during the Windows job if these environment variables are defined
+ # See: https://www.electron.build/code-signing
if [ "${{ runner.OS }}" = "macOS" ]; then
- # See: https://www.electron.build/code-signing
- export CSC_LINK="${{ env.CERTIFICATE_PATH }}"
+ export CSC_LINK="${{ runner.temp }}/signing_certificate.p12"
+ # APPLE_SIGNING_CERTIFICATE_P12 secret was produced by following the procedure from:
+ # https://www.kencochrane.com/2020/08/01/build-and-sign-golang-binaries-for-macos-with-github-actions/#exporting-the-developer-certificate
+ echo "${{ secrets.APPLE_SIGNING_CERTIFICATE_P12 }}" | base64 --decode > "$CSC_LINK"
+
export CSC_KEY_PASSWORD="${{ secrets.KEYCHAIN_PASSWORD }}"
+
+ elif [ "${{ runner.OS }}" = "Windows" ]; then
+ export CSC_LINK="${{ runner.temp }}/signing_certificate.pfx"
+ echo "${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PFX }}" | base64 --decode > "$CSC_LINK"
+
+ export CSC_KEY_PASSWORD="${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PASSWORD }}"
fi
+
yarn --cwd ./electron/packager/
yarn --cwd ./electron/packager/ package
diff --git a/README.md b/README.md
index 48f0d367..71ab13a3 100644
--- a/README.md
+++ b/README.md
@@ -8,16 +8,17 @@ You can download the latest version of the Arduino Pro IDE application for the s
#### Latest version
-Platform | 32 bit | 64 bit |
---------- | ------------------------ | ------------------------ |
-Linux | | [Linux 64 bit] |
-Linux ARM | [🚧 Work in progress...] | [🚧 Work in progress...] |
-Windows | | [Windows 64 bit] |
-macOS | | [macOS 64 bit] |
+Platform | 32 bit | 64 bit |
+--------- | ------------------------ | ---------------------------------------------------- |
+Linux | | [Linux 64 bit] |
+Linux ARM | [🚧 Work in progress...] | [🚧 Work in progress...] |
+Windows | | [Windows 64 bit installer]
[Windows 64 bit ZIP] |
+macOS | | [macOS 64 bit] |
[🚧 Work in progress...]: https://github.com/arduino/arduino-pro-ide/issues/287
[Linux 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_Linux_64bit.zip
-[Windows 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_Windows_64bit.zip
+[Windows 64 bit installer]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_Windows_64bit.exe
+[Windows 64 bit ZIP]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_Windows_64bit.zip
[macOS 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/arduino-pro-ide_latest_macOS_64bit.dmg
#### Previous versions
@@ -30,16 +31,17 @@ These builds are generated every day at 03:00 GMT from the `master` branch and
should be considered unstable. In order to get the latest nightly build
available for the supported platform, use the following links:
-Platform | 32 bit | 64 bit |
---------- | ------------------------ | ------------------------ |
-Linux | | [Nightly Linux 64 bit] |
-Linux ARM | [🚧 Work in progress...] | [🚧 Work in progress...] |
-Windows | | [Nightly Windows 64 bit] |
-macOS | | [Nightly macOS 64 bit] |
+Platform | 32 bit | 64 bit |
+--------- | ------------------------ | -------------------------------------------------------------------- |
+Linux | | [Nightly Linux 64 bit] |
+Linux ARM | [🚧 Work in progress...] | [🚧 Work in progress...] |
+Windows | | [Nightly Windows 64 bit installer]
[Nightly Windows 64 bit ZIP] |
+macOS | | [Nightly macOS 64 bit] |
[🚧 Work in progress...]: https://github.com/arduino/arduino-pro-ide/issues/287
[Nightly Linux 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_Linux_64bit.zip
-[Nightly Windows 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_Windows_64bit.zip
+[Nightly Windows 64 bit installer]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_Windows_64bit.exe
+[Nightly Windows 64 bit ZIP]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_Windows_64bit.zip
[Nightly macOS 64 bit]: https://downloads.arduino.cc/arduino-pro-ide/nightly/arduino-pro-ide_nightly-latest_macOS_64bit.dmg
> These links return an HTTP `302: Found` response, redirecting to latest
diff --git a/electron/build/template-package.json b/electron/build/template-package.json
index 27b8cbf0..fcbc97c5 100644
--- a/electron/build/template-package.json
+++ b/electron/build/template-package.json
@@ -77,6 +77,7 @@
],
"win": {
"target": [
+ "nsis",
"zip"
]
},
@@ -99,6 +100,10 @@
"category": "Development",
"icon": "resources/icons"
},
+ "nsis": {
+ "oneClick": false,
+ "allowToChangeInstallationDirectory": true
+ },
"dmg": {
"icon": "resources/icon.icns",
"iconSize": 128,
diff --git a/electron/packager/index.js b/electron/packager/index.js
index 5d2e6c90..bf299f91 100644
--- a/electron/packager/index.js
+++ b/electron/packager/index.js
@@ -280,7 +280,7 @@ ${fs.readFileSync(path('..', 'build', 'package.json')).toString()}
break;
}
case 'win32': {
- filesToCopy.push(...glob.sync('**/arduino-pro-ide*.zip', { cwd }).map(p => join(cwd, p)));
+ filesToCopy.push(...glob.sync('**/arduino-pro-ide*.{exe,zip}', { cwd }).map(p => join(cwd, p)));
break;
}
case 'darwin': {