nutdotnet / WinNUT-Client

WinForms-based client for monitoring your Uninterruptible Power Supply (UPS) connected to a Network UPS Tools (NUT) server.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Modify WinNUT Update Routines (ClickOnce deployments)

gbakeman opened this issue · comments

The old MSI Installer/Setup system is not CI/CD friendly, so the need has arisen to find a new packaging and deployment system. Per #85, ClickOnce is a native msbuild packaging system that looks like a good solution. Prior to completing that, the WinNUT client needs to gracefully transition from the old system to the new one.

Strategies

Gradual procedure

Stage 1 - New Update Code

The current system relies on parsing HTTP queries sent directly to the GitHub web API, and presents a Form control prompting the user to update. To prepare for integrating the new updating method, it would be good to have a solid foundation first. The updating system should be moved to the common library as much as possible, providing events to the WinNUT client as needed. This system will allow upgrading from MSI to ClickOnce.

Changes

  • Use a .Net Library to communicate with GitHub for update information
  • Modular update installation system
    • MSI download & install
    • ClickOnce deployments

Todo

  • Create new updater and verify changes in Debug building
  • After full deployment, remove code for manually updating Settings #135

Swift migration

  • Adopt true Semver versioning scheme for 2.4 release cycle (resetting the patch value to zero).
  • Switch to dual ClickOnce and MSI deployment system with the next pre-release
    • Maintain this throughout the 2.4 release cycle to catch everyone upgrading
    • Starting with the 2.5 release cycle, remove the MSI build system and associated project, leaving only the ClickOnce deployments
      An alternative to the gradual procedure, especially since we're already seeing issues with our current hybrid method of using Application Settings with the old MSI deployment scheme.

Dealing with old MSI installation

If we provide the ClickOnce installer to a user who is currently on the MSI installation, I don't think there's an automatic facility to remove the MSI installation and replace it with the ClickOnce installation. May need to look a specific call or command that runs the MSI removal in silent mode.

References