-
-
Notifications
You must be signed in to change notification settings - Fork 52
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: cont'd windows installer refinements #603
Conversation
homandr
commented
Dec 6, 2024
- Installer is now versioned - both file name and UI.
- Downgrade is now possible without having to uninstall and install from scratch.
- Clearly indicate whether it is an upgrade, reinstall, or downgrade.
- Remember components page selection from previous installation and honour user deselection of previously selected items.
- Disable installation folder selection for upgrade/reinstall/downgrade scenarios.
- Instead of scaring users with the port information, check listening ports and present the relevant information in case of a conflict.
- Refuse installation with conflicting port, which would result in a non-functioning application anyway.
- Removed PowerShell dependency by switching to native commands.
- Fixed the process termination function where it would not terminate the main backrest.exe process forcefully (just the backrest-windows-tray.exe) after all graceful attempts failed.
- Disable "Open Backrest UI" checkbox if "Start Backrest" is unchecked on the finish page as it wouldn't make sense otherwise.
- Start Menu shortcuts are now part of core installation, not deselectable (simplifies installation experience).
* Installer is now versioned - both file name and UI. * Downgrade is now possible without having to uninstall and install from scratch. * Clearly indicate whether it is an upgrade, reinstall, or downgrade. * Remember components page selection from previous installation and honour user deselection of previously selected items. * Disable installation folder selection for upgrade/reinstall/downgrade scenarios. * Instead of scaring users with the port information, check listening ports and present the relevant information in case of a conflict. * Refuse installation with conflicting port, which would result in a non-functioning application anyway. * Removed PowerShell dependency by switching to native commands. * Fixed the process termination function where it would not terminate the main backrest.exe process forcefully (just the backrest-windows-tray.exe) after all graceful attempts failed. * Disable "Open Backrest UI" checkbox if "Start Backrest" is unchecked on the finish page as it wouldn't make sense otherwise. * Start Menu shortcuts are now part of core installation, not deselectable (simplifies installation experience).
Thanks for taking more time to refine this, the first round of improvements is already a really nice upgrade for the windows UX. I also think that with the version properly embedded we should be able to package backrest for winget now -- I'll go ahead and update the related bug. Improving the documentation and flow around custom ports was on my todo list, you've beaten me to it and it's a nice touch. I agree that the "always present" warning was potentially alarming for first time users who aren't interested in using backrest with multiple accounts. The improved "new install" vs "upgrade" vs "uninstall" flows also look to be a really nice touch. |
Looking at the build snapshot release workflow, I think I'm seeing a failure due to embedding the version name in the installer binary. I think that may make it more difficult for automation that searches for a release of a specific name (e.g. trying to auto update and apply the installer perhaps?). The released artifacts are hard coded in a few places. https://github.com/garethgeorge/backrest/blob/main/.github/workflows/release.yml#L84-L90 and https://github.com/garethgeorge/backrest/blob/main/scripts/generate-installers.sh#L1-L20 |
* Support passing architecture via NSIS parameter. E.g. docker run -v $(pwd):/build binfalse/nsis -DARCH=arm64 install.nsi * Use Unicode since ANSI is deprecated
I think it would be very beneficial to include release version in the filenames for all assets, not just Windows installers. I'm not familiar with Github workflows but see that many other projects have the version. Not sure how they do it. Regarding Windows installer, probably the easiest would be to pass the architecture to NSIS compiler instead doing the copy/rename. I just added this option. So, you can use this in https://github.com/garethgeorge/backrest/blob/main/scripts/generate-installers.sh#L16: docker run --rm -v $(pwd):/build binfalse/nsis -DARCH="$arch" install.nsi
else
docker run --rm -e TARGET_ARCH=arm64 -v $(pwd):/build binfalse/nsis -DARCH="$arch" install.nsi And take out https://github.com/garethgeorge/backrest/blob/main/scripts/generate-installers.sh#L19 Couldn't you then use this for https://github.com/garethgeorge/backrest/blob/main/.github/workflows/release.yml#L88-L90?
Or possibly just Backrest*.exe. If you don't want to have the version in the filename, you can just take out ${VERSION} from the OutFile directives. It has no impact on anything other than the filename. |
snip: saw your rational after replying, and digging a bit more it looks like restic is including versions in it's artifact names. I can see the UX value of including the version in the download and it would be good for backrest to match that. We can do this for backrest, but it needs a bit of thought as I feel I should make all of the release artifacts consistent. Overall LGTM, I'll hold off on merging until I can make those improvements to the release pipeline this weekend :) |
Understood. I added another commit to take out the version. Passing the arch is still possible. |
sgtm! Passing the arch is an improvement. Rerunning the workflow, thanks! |