ILSpy icon indicating copy to clipboard operation
ILSpy copied to clipboard

Adding Auto-Update Functionality to ILSpy

Open christophwille opened this issue 1 year ago • 0 comments

Status Quo

ILSpy has been shipping with update check & notification functionality for a long time. It is located in the About page:

image

The result of a check that shows a new version (determined via https://ilspy.net/updates.xml)

image

Hitting the Download button will open a Web browser showing the respective Github Releases page - and the user choosing the install option they prefer.

Note that the MSIX was built to exclude this update check.

Motivation

A user-install auto-update mechanism because we had that with the Microsoft Store MSIX project. Note that (semi-)auto-updates via package managers is available today, eg https://community.chocolatey.org/packages/ilspy (choco upgrade all -y is my daily driver) - but that usually means admin-level permissions are necessary.

The Matrix of Installation Options

We ship many different options to "install" ILSpy

  • zip - our oldest and most-used distribution mechanism. Unpack, run.
  • vsix - available via GH Releases and on RTM via the VS Marketplace.
  • msi - available via GH Release and on RTM in the Microsoft Store - both are user installers (non-admin), but manual update

When using the current update check it is up to the user to pick the correct deliverable - eg it is perfectly fine to use pre-release vsix when manually downloading and updating it outside the VS Marketplace. Or having multiple versions sitting side by side with the zip download.

This leads to the problem which installation option should offer an auto-update

  • vsix makes no sense at all because its version of ILSpy is squirreled away by VS in some custom location. And auto-updating there might get us into serious trouble (do we update ILSpy or the extension?).
  • zip doing an in-place upgrade in the extracted folder also most likely annoys people that have master or specific branch versions installed. (ILSpy settings are globally shared today re:update check)
  • msi would be the most likely candidate for an auto-update where such functionality is the expected and a welcomed experience by end-users.

Possible Way of Doing It

  • Keep the existing check functionality for all distributions except msi
  • Allow the msi variant to check for updates & install silently over the existing msi installation

For that we'd have to add a "marker" to the msi install location (because user can choose install location). Maybe have the msi add one single file (like MsiInstallMarker.txt) to the installation location instead of a custom ILSpy build (which we had for MSIX, don't like that idea very much). Disadvantage of that approach is that every variant of ILSpy ships with the dependencies for the auto-update even if it is not active in that variant.

christophwille avatar Jun 07 '23 07:06 christophwille