Minor Changes
-
Feat(s3)!: explicit AWS credential sources for S3 publishing via the new
awsCredentialsoption (restores shared config / IAM Identity Center profiles, #10054)#1025746be1f4—builder-util-runtimeawsCredentials.sourceis required to publish (no default, no implicit credentials).awsCredentials.source: "env"reads onlyAWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_SESSION_TOKEN, or the variable names given inawsCredentials.env.awsCredentials.source: "profile"withprofile(plus optionalcredentialsFile/configFile) reads a named profile from the shared config and credentials files: static keys, IAM Identity Center (SSO),credential_processand assume-role. The AWS SDK providers are loaded lazily, only for non-static profiles, and are given explicit paths. Assume-role hops use an explicitly configured STS client (named profile's region, no configured endpoint URLs).credential_sourceand web identity (web_identity_token_file) are rejected anywhere in the chain, before the SDK is loaded.awsCredentials.source: "sso-role-chain"withprofileresolves an assume-role profile whosesource_profilechain (up to 5 hops, no cycles) starts at an IAM Identity Center (SSO) profile: the SSO profile is resolved from the configured files, then STS AssumeRole is called per hop with explicit region, endpoint and credentials (neverAWS_REGION,AWS_PROFILEorAWS_ENDPOINT_URL*).credential_source,mfa_serial, web identity andcredential_processare rejected in the chain.source: "profile"keeps rejecting SSO-sourced role chains and points to this source.- Resolved credentials are reused for every file of a publish instead of being resolved again per upload.
BREAKING CHANGE: S3 publishing fails with an InvalidConfigurationError unless
awsCredentials.sourceis set (add{ "source": "env" }to keep usingAWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY).AWS_PROFILE,AWS_SDK_LOAD_CONFIG,AWS_CONFIG_FILE,AWS_SHARED_CREDENTIALS_FILEand an implicit~/.aws/credentialsare no longer read. Missing credentials now fail with a clear error instead of an unsigned or env-fallback signature. For dotted bucket names withoutregion, the region is looked up only when publishing.awsCredentialsis never written toapp-update.yml.
Patch Changes
- Fix: enforce the configured API redirect limit without an extra hop
#101218b71ed8—builder-util-runtime - Refactor(updater): split
GitHubProvider.getLatestVersioninto helpers (internal refactor, no behavior change)#102904705c20 - Fix: close embedded blockmap files exactly once on parse failures
#101203bbc563 - Fix(nsis): don't plan a differential download against a cached block map of another release. The cached block map is replaced when a download finishes, but the cached installer only when the update is installed, so a release found before the previous one was installed was planned against the wrong base: every differential byte was downloaded, the sha512 check failed, and the full installer was downloaded too. A cached block map that does not end at the cached installer's size is now ignored and the installed version's block map is fetched from the server.
#103379ebb992 - Fix(updater): treat channel "latest" as stable-only when allowPrerelease is enabled
#10360a3c9240 - Fix(updater): download differentially when the update manifest has a hex-encoded sha512, never let a throwing logger stop a differential download or its fallback to a full download, time out stalled requests made with Electron's
netmodule, and close the partially written file when a download's response fails or is aborted mid-body#10366538aef4—electron-updater,builder-util-runtime - Refactor(win): export the Windows Authenticode helpers electron-updater verifies update signatures with (
preparePowerShellExec,escapePowerShellSingleQuotes,parseAuthenticodeSignatureOutput,matchPublisherName), moved unchanged from electron-updater so electron-builder can check signed installers with the same code#1037860e3708—builder-util-runtime - Refactor(win): verify update signatures with the Authenticode helpers moved unchanged to builder-util-runtime (no behavior change)
#1037860e3708 - Fix: preserve complete XML text and reject incomplete documents
#1012545d3bc4—builder-util-runtime - Fix: report finite transfer rates for immediate downloads
#10122370d18c—builder-util-runtime - Fix: when a server rejects multi-range requests (GitHub release assets answer 501, Google Cloud Storage 400, S3 the whole file with 200), retry the differential download with one range per request instead of downloading the full update. Every range response must now be a 206 for exactly the requested range: a host that ignores ranges used to stream the whole file once per range before the checksum failed, and now fails on its first request and falls back to a full download.
#103430fdce73 - Fix: installing an AppImage update no longer deletes the installed app before the new one is in place. Before, the updater deleted the running AppImage and then ran
mvthroughPATH; ifmvfailed (for examplespawnSync mv ENOTCONNwhen a dead AppImage FUSE mount from an earlier launch was onPATH), the user was left with no app to launch. After, the new AppImage is staged next to the old one and atomically renamed over it without running any external command, so a failed install keeps the old AppImage.#103868512f4d