Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(msi): support assisted installer for MSI target #6550

Merged
merged 1 commit into from
Jan 16, 2022

Conversation

aplum
Copy link
Contributor

@aplum aplum commented Jan 14, 2022

Add basic support for assisted installer, with UI to choose between per-user and per-machine. Supported config options: runAfterFinish, perMachine, oneClick. Not supported: license (EULA), allowToChangeInstallationDirectory, etc.

The UI dialogs are WelcomeDlg -> InstallScopeDlg -> VerifyReadyDlg. For perMachine=true, InstallScopeDlg doesn't allow changing the scope. Starting with the useless WelcomeDlg instead of going straight to InstallScopeDlg allows us to reuse an existing dialog set (WixUI_InstallDir) to reduce the custom code here, and makes it easier to add/remove dialogs if more features are supported in the future (EULA, allowToChangeInstallationDirectory).

I've tried to match the behaviour of NSIS for the supported config options based on what I came across in docs/PRs/issues.

This also prevents oneClick's runAfterFinish from executing when installed silently, because that's probably never desired (see Rocket.Chat.Electron #1839).

I've tested upgrading from the existing oneClick MSI to this PR's oneClick and assisted MSIs (for both per-user and per-machine), and it worked in all cases, including when the installation directory is different (due to this line changing to match NSIS). GPO installs also work.

Add basic support for assisted installer, with UI to choose between per-user and per-machine. Supported config settings: runAfterFinish, perMachine, oneClick. Not supported: license (EULA), allowToChangeInstallationDirectory, etc. Also prevent oneClick's runAfterFinish from executing when installed silently.
@changeset-bot
Copy link

changeset-bot bot commented Jan 14, 2022

🦋 Changeset detected

Latest commit: 089c4e5

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 8 packages
Name Type
app-builder-lib Minor
dmg-builder Minor
electron-builder-squirrel-windows Minor
electron-builder Minor
electron-forge-maker-appimage Minor
electron-forge-maker-nsis-web Minor
electron-forge-maker-nsis Minor
electron-forge-maker-snap Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@aplum aplum mentioned this pull request Jan 14, 2022
Closed
@mmaietta
Copy link
Collaborator

Thank you for your contribution!
Re:

Supported config options: runAfterFinish, perMachine, oneClick. Not supported: license (EULA), allowToChangeInstallationDirectory, etc.

It seems like we need to add a new top-level entry msi to provide these supported config options (similar to the nsis top-level key @ https://www.electron.build/configuration/nsis) as they're not available under the default win entry. What are your thoughts?

I've tried to match the behaviour of NSIS for the supported config options based on what I came across in docs/PRs/issues.

Also, thanks for pursuing this approach

@aplum
Copy link
Contributor Author

aplum commented Jan 14, 2022

I think that top-level key already exists from this line. I've been using it in my projects and testing this PR. Those three options already exist under that key – runAfterFinish and perMachine already worked, and oneClick existed even though the resulting MSI didn't function quite correctly. Unless there's somewhere else it needs to go too?

@mmaietta mmaietta merged commit c073f90 into electron-userland:v23.0.0-alpha Jan 16, 2022
@mmaietta mmaietta mentioned this pull request Jan 16, 2022
mmaietta added a commit that referenced this pull request Jan 16, 2022
* Adding INPUTxxx and OUTPUTxxx CHARSETS to makensis
Fixes: #4898 #6232 #6259

* Adding additional details to error console logging

* Breaking change: Removing Bintray support since it was sunset. Ref: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

* fix: force strip path separators for backslashes on Windows

* fix: Force authentication for local Mac Squirrel update server

* Breaking Change: Fail-fast for signature verification failures. Adding `-LiteralPath` to update file for injected wildcards

* Adding changeset and eslint

* Fix error: `-OUTPUTCHARSET is disabled for non Win32 platforms.`

* feat(mac): ElectronAsarIntegrity in electron@15 (#6511)

* feat(mac): ElectronAsarIntegrity in electron@15
See: electron/electron#30667
Fix: #6506
Fix: #6507

* fix(msi): MSI fails to install when deployed machine-wide via GPO (#6514)

* fix(msi): MSI fails to install when deployed machine-wide via GPO
* Disable advertised shortcuts, since MSIs with advertised Start Menu shortcuts that have a
Shortcut Property fails to install when deployed machine-wide via GPO but works fine in all
other contexts. This might be a bug in Windows or a misdiagnosis; see #6508 for more details.
Closes #6508
* BREAKING CHANGE: Admins using advertisement must apply an MST to re-enable it. See #6508.

* Don't set GitHub Releases draft title since it automatically pulls it from tag name. Fixes #3683

* feat(snap): add lzo to Snap compression options (also as new default) (#6201)

* feat(msi): add fileAssociation support for MSI target (#6530)

* 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.

* BREAKING CHANGE: remove MSI option `iconId`

* fix: stabilizing tests by moving updater tests to its own node to explicitly segment env.___TOKEN integration tests from other standard unit tests

* chore: synchronizing docs and schema plus prettier

* Adding changset to set as alpha

* Updating changeset documentation

* feat(msi): support assisted installer for MSI target (#6550)

* Add basic support for assisted installer, with UI to choose between per-user and per-machine. Supported config settings: runAfterFinish, perMachine, oneClick. Not supported: license (EULA), allowToChangeInstallationDirectory, etc. Also prevent oneClick's runAfterFinish from executing when installed silently.

Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
Co-authored-by: Alex Plumley <alex+git@aplum.ca>
Co-authored-by: Mike Maietta <mmaietta@outlook.com>
Co-authored-by: Omer Akram <om26er@gmail.com>
Co-authored-by: Maximilian Federle <max.federle@gmail.com>
mergify bot pushed a commit to enso-org/enso that referenced this pull request Apr 21, 2022
[ci no changelog needed]

[Task link](https://www.pivotaltracker.com/story/show/181944234).

It fixes the build issue on Mac OS 12.3.1 that is caused by removed `/usr/bin/python` executable.

Also applied `enso-formatter` to the sources.

# Important Notes
We're basically updating for one major `electron-builder` release - from `v22` to `v23`. I didn't spot anything in the changelog that could affect us. See features + breaking changes excerpt:

```
Features:

- feat(msi): add fileAssociation support for MSI target (electron-userland/electron-builder#6530)
- feat(mac): ElectronAsarIntegrity in electron@15 - See: electron/electron#30667 (electron-userland/electron-builder#6506 electron-userland/electron-builder#6507)
- feat(snap): add lzo to Snap compression options (also as new default) (electron-userland/electron-builder#6201) Upgraded app-builder-bin dependency required newer version of Go
- feat(msi): support assisted installer for MSI target (electron-userland/electron-builder#6550)

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
- Authentication for local mac squirrel update server
- Disabled advertised shortcuts, since MSIs with advertised Start Menu shortcuts that have a
Shortcut Property fails to install when deployed machine-wide via GPO but works fine in all
other contexts. Admins using advertisement must apply an MST to re-enable it. See electron-userland/electron-builder#6508.
- Removing optional NSIS icon ID from config and generating it automatically to synchronize IDs with Advertised Shortcuts and future features
```
@davej
Copy link
Contributor

davej commented Oct 18, 2022

@aplum is it possible that these changes broke the ability to use a custom APPLICATIONFOLDER param? Recent versions of Electron Builder don't seem to work when specifying a custom APPLICATIONFOLDER on the client anymore. See issue here: #7193

@aplum
Copy link
Contributor Author

aplum commented Oct 19, 2022

@davej Seems possible. I'd have to investigate, but in the meantime let's discuss in the issue you linked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants