diff --git a/.changeset/cool-ladybugs-matter.md b/.changeset/cool-ladybugs-matter.md new file mode 100644 index 0000000000..f42457a9b4 --- /dev/null +++ b/.changeset/cool-ladybugs-matter.md @@ -0,0 +1,5 @@ +--- +"app-builder-lib": minor +--- + +feat(msi): support assisted installer for MSI target diff --git a/.changeset/giant-dryers-beg.md b/.changeset/giant-dryers-beg.md new file mode 100644 index 0000000000..517f30ba5e --- /dev/null +++ b/.changeset/giant-dryers-beg.md @@ -0,0 +1,5 @@ +--- +"app-builder-lib": minor +--- + +feat(msi): add fileAssociation support for MSI target diff --git a/.changeset/giant-dryers-copy.md b/.changeset/giant-dryers-copy.md new file mode 100644 index 0000000000..d599f14d0b --- /dev/null +++ b/.changeset/giant-dryers-copy.md @@ -0,0 +1,6 @@ +--- +"app-builder-lib": patch +--- + +fix(win): iconId sometimes containing invalid characters, and iconId config option being ignored. +fix(msi): change the fallback value for generated MSI Ids to a unique string for the product. \ No newline at end of file diff --git a/.changeset/healthy-peaches-deliver.md b/.changeset/healthy-peaches-deliver.md new file mode 100644 index 0000000000..2dddfe5c26 --- /dev/null +++ b/.changeset/healthy-peaches-deliver.md @@ -0,0 +1,5 @@ +--- +"app-builder-lib": patch +--- + +fix(msi): MSI fails to install when deployed machine-wide via GPO diff --git a/.changeset/nervous-buckets-dance.md b/.changeset/nervous-buckets-dance.md new file mode 100644 index 0000000000..fcc7fa1ad1 --- /dev/null +++ b/.changeset/nervous-buckets-dance.md @@ -0,0 +1,18 @@ +--- +"app-builder-lib": major +"builder-util": major +"builder-util-runtime": major +"electron-publish": major +"electron-updater": major +--- + +Breaking changes +Removing Bintray support since it was sunset. Ref: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/ +Fail-fast for windows signature verification failures. Adding `-LiteralPath` to update file path to disregard injected wildcards +Force strip path separators for backslashes on Windows during update process +Force authentication for local mac squirrel update server + +Fixes: +fix(nsis): Adding --INPUTCHARSET to makensis. (#4898 #6232 #6259) + +Adding additional details to error console logging diff --git a/.changeset/nervous-pandas-film.md b/.changeset/nervous-pandas-film.md new file mode 100644 index 0000000000..1caf13eb2a --- /dev/null +++ b/.changeset/nervous-pandas-film.md @@ -0,0 +1,5 @@ +--- +"app-builder-lib": minor +--- + +feat(mac): ElectronAsarIntegrity in electron@15 diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..1c76fbe24d --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,20 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "app-builder-lib": "22.14.13", + "builder-util": "22.14.13", + "builder-util-runtime": "8.9.2", + "dmg-builder": "22.14.13", + "electron-builder": "22.14.13", + "electron-builder-squirrel-windows": "22.14.13", + "electron-forge-maker-appimage": "22.14.13", + "electron-forge-maker-nsis": "22.14.13", + "electron-forge-maker-nsis-web": "22.14.13", + "electron-forge-maker-snap": "22.14.13", + "electron-publish": "22.14.13", + "electron-updater": "4.6.5", + "@electron-builder/test": "0.0.0" + }, + "changesets": [] +} diff --git a/.changeset/serious-peas-help.md b/.changeset/serious-peas-help.md new file mode 100644 index 0000000000..9dc1fc01af --- /dev/null +++ b/.changeset/serious-peas-help.md @@ -0,0 +1,5 @@ +--- +"app-builder-lib": major +--- + +BREAKING CHANGE: remove MSI option `iconId` diff --git a/.changeset/spicy-crabs-draw.md b/.changeset/spicy-crabs-draw.md new file mode 100644 index 0000000000..dd860ed685 --- /dev/null +++ b/.changeset/spicy-crabs-draw.md @@ -0,0 +1,12 @@ +--- +"app-builder-lib": minor +"builder-util": major +--- + +Default to LZO compression for snap packages. +This greatly improves cold startup performance (https://snapcraft.io/blog/why-lzo-was-chosen-as-the-new-compression-method). +LZO has already been adopted by most desktop-oriented snaps outside of the Electron realm. + +For the rare case where developers prefer a smaller file size (XZ) to vastly improved decompression performance (LZO), provided an option to override the default compression method. + +Consumers do not need to update their configuration unless they specifically want to stick to XZ compression. diff --git a/.github/actions/pretest/action.yml b/.github/actions/pretest/action.yml new file mode 100644 index 0000000000..76409820f1 --- /dev/null +++ b/.github/actions/pretest/action.yml @@ -0,0 +1,42 @@ +name: 'Setup Tests' +description: 'Set up pnpm, node w/ pnpm cache, install and audit deps, compile, and restore electron cache' +inputs: + cache-key: + description: 'The key to the electron cache' + required: true + cache-path: + description: 'The path to the electron cache' + required: true + +runs: + using: 'composite' + steps: + - uses: pnpm/action-setup@v2 + with: + version: 6.25.1 + + - uses: actions/setup-node@v2 + with: + node-version: '14' + cache: 'pnpm' + + - name: install dependencies + run: pnpm install --frozen-lockfile + shell: bash + + - name: Compile + run: pnpm compile + shell: bash + + - name: Cache Electron + uses: actions/cache@v2 + with: + path: ${{ inputs.cache-path }} + key: ${{ inputs.cache-key }} + +## Usage +# - name: Setup Tests +# uses: ./.github/actions/pretest +# with: +# cache-path: ~/Library/Caches/electron +# cache-key: v-11.0.0-macos-electron \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index dd39e842c2..b5fded08e8 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -26,8 +26,14 @@ jobs: with: fetch-depth: 0 - - name: Install deps and audit - uses: ./.github/actions/pnpm + - name: Setup Tests + uses: ./.github/actions/pretest + with: + cache-path: ~/.cache/electron + cache-key: v-11.0.0-linux-electron + + - name: Lint + run: pnpm pretest - name: Determine if Dockerfiles changed id: changed-files @@ -37,15 +43,6 @@ jobs: if: ${{ github.event.inputs.build-docker-locally == 'true' }} || contains(steps.changed-files.outputs.all_changed_files, 'Dockerfile') || contains(steps.changed-files.outputs.all_changed_files, 'docker') run: pnpm docker-images - - name: Compile and Lint - run: pnpm pretest - - - name: Cache ~/.cache/electron - uses: actions/cache@v2 - with: - path: ~/.cache/electron - key: v-11.0.0-electron - - name: Run tests in docker image run: pnpm test-linux env: @@ -54,60 +51,64 @@ jobs: test-mac: runs-on: macos-latest - strategy: - matrix: - testFiles: - - masTest,dmgTest,protonTest steps: - name: Checkout code repository uses: actions/checkout@v2 - - name: Install deps and audit - uses: ./.github/actions/pnpm + - name: Setup Tests + uses: ./.github/actions/pretest + with: + cache-path: ~/Library/Caches/electron + cache-key: v-11.0.0-macos-electron - - name: Compile - run: pnpm compile - - - name: Cache ~/Library/Caches/electron - uses: actions/cache@v2 + - name: Test + run: pnpm ci:test + env: + TEST_FILES: masTest,dmgTest,protonTest + FORCE_COLOR: 1 + + # Need to separate from other tests because logic is specific to when TOKEN env vars are set + test-updater: + runs-on: macos-latest + steps: + - name: Checkout code repository + uses: actions/checkout@v2 + + - name: Setup Tests + uses: ./.github/actions/pretest with: - path: ~/Library/Caches/electron - key: v-11.0.0-mac-electron + cache-path: ~/Library/Caches/electron + cache-key: v-11.0.0-update-electron - name: Test - run: node ./test/out/helpers/runTests.js + run: pnpm ci:test env: - TEST_FILES: ${{ matrix.testFiles }} + TEST_FILES: nsisUpdaterTest + KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }} + # BITBUCKET_TOKEN: ${{ secrets.BITBUCKET_TOKEN }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} FORCE_COLOR: 1 test-windows: - runs-on: windows-2019 + runs-on: windows-latest strategy: matrix: testFiles: - - installerTest,appxTest,msiTest,portableTest,assistedInstallerTest - - oneClickInstallerTest,nsisUpdaterTest,winCodeSignTest,winPackagerTest,webInstallerTest + - installerTest,appxTest,msiTest,portableTest,assistedInstallerTest,protonTest + - oneClickInstallerTest,winCodeSignTest,winPackagerTest,webInstallerTest steps: - name: Checkout code repository uses: actions/checkout@v2 - - name: Install deps and audit - uses: ./.github/actions/pnpm - - - name: Compile - run: pnpm compile - - - name: Cache ~\AppData\Local\Cache\electron - uses: actions/cache@v2 + - name: Setup Tests + uses: ./.github/actions/pretest with: - path: ~\AppData\Local\Cache\electron - key: v-11.0.0-windows-electron + cache-path: ~\AppData\Local\Cache\electron + cache-key: v-11.0.0-windows-electron - name: Test - run: node ./test/out/helpers/runTests.js + run: pnpm ci:test env: CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} - KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }} - GH_TOKEN: ${{ secrets.GH_TOKEN }} TEST_FILES: ${{ matrix.testFiles }} FORCE_COLOR: 1 diff --git a/docker/base/Dockerfile b/docker/base/Dockerfile index 8e0b20b00a..4f84550fae 100644 --- a/docker/base/Dockerfile +++ b/docker/base/Dockerfile @@ -13,7 +13,7 @@ RUN apt-get -qq update && apt-get -qq dist-upgrade && \ apt-get -qq install --no-install-recommends \ qtbase5-dev build-essential autoconf libssl-dev gcc-multilib g++-multilib \ lzip rpm python libcurl4 git git-lfs ssh unzip libarchive-tools \ - libxtst6 libsecret-1-dev libopenjp2-tools \ + libxtst6 libsecret-1-dev libopenjp2-tools liblzo2-2 \ && \ # git-lfs git lfs install && \ diff --git a/docs/api/electron-builder.md b/docs/api/electron-builder.md index 0128cf42c2..eccf30c32a 100644 --- a/docs/api/electron-builder.md +++ b/docs/api/electron-builder.md @@ -1364,7 +1364,7 @@ return path.join(target.outDir, __${target.name}-${getArtifactArchName(arc

Kind: class of electron-publish
Properties

Methods

Inherited from CommonLinuxOptions: