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': {