Skip to content

Support wizard installer on Windows #30

@caesay

Description

@caesay

The current installer for windows is a one-click installer which has very minimal UI.

It is desirable for some developers to provide an installer which allows the user to customise install location, install optional features, windows services, license acceptance dialogs, and so forth.

On MacOS, the built-in .pkg installer has a lot of this already, so this task would bring windows back up to feature parity with macos. The one-click installer should still be the default, but the solution here would allow a developer to customise the installer further.

Ideally, we will integrate with NSIS or WiX to provide the wizard installer, but since those are very complex tools, we should distil the user experience down to a limited subset of common features and make it very easy to use.

Some possible configuration options:

  • Where to install the application eg. appdata, or program files, or custom user choice
  • Custom rtf/html/markdown pages (macos supports welcome, readme, license, conclusion).
  • Features: This needs some more thought. Perhaps to start out with we can support Windows Services as a required or optional feature. Later down the line, maybe custom features can invoke an exe with the usual --install hook. The benefit of this hook as a "feature" rather than the regular hook is that this could be run in a privileged context.
  • Firewall rules (don't think this is in scope for this issue)
  • Where to allow installing shortcuts to, and whether to allow user choice ✔ This is now supported in the one-click installer.

To support updating installs in privileged folders, the updater also needs to know how to prompt for UAC if we hit an access denied error. To support updating windows services, the updater will need to know how request UAC and to stop/start a service.

Since some people need to deploy msi's via group policies / wsus, we should also endeavor to make this wizard installer emit an .msi.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions