Clarify intended behavior of `choco upgrade` regarding in-place upgrades
- Dominant language
- MDX
- Stars
- 223
- Forks
- 248
- Avg merge
- 1d 26m
- Merged PRs (30d)
- 4
Description
## What New Or Updated Would You Like To See?
Many native application installers do not implement upgrades internally and always install a new version, relying on the user to uninstall previous versions if desired. Choco's [user](https://docs.chocolatey.org/en-us/choco/commands/upgrade) and [packaging](https://docs.chocolatey.org/en-us/create/create-packages#upgrading) documentation do not explicitly describe what the intended behavior of `choco upgrade` is in this situation.
## Why Is It Needed?
With no explicit guidance on the intended behavior of `upgrade` different maintainers and users have reached different conclusions about how upgrades should be handled. This leads to an inconsistent user interface for choco packages and requires that users must be familiar with not only how the native installer of each application behaves, but also how the maintainer of each choco package has chosen to implement upgrades.
## Additional Context?
This documentation request is a direct result of discussions on [Issue 2156 for the Blender community package](https://github.com/chocolatey-community/chocolatey-packages/issues/2156) so additional context can be found there.
In short, there are at least 5 different ways packages could implement upgrades for native installers that don't handle them internally. I'm aware of 3 of these variations being used in the wild in the community repository, but other variations may also be present.
In response to `choco upgrade` a package could:
1. Just run the native installer, leaving the current version installed and installing an additional new version. Implemented by [Blender](https://github.com/chocolatey-community/chocolatey-packages/tree/master/automatic/blender) maintained by @chocolatey-community.
1a. By default run the native installer, but provide a parameter to delete the current and/or previous version(s). Implemented by ?? suggested by @pauby in Blender issue report linked above.
2. Attempt to uninstall the current version before installing the new version. Implemented by [PyCharm-Community](https://github.com/mkevenaar/chocolatey-packages/tree/master/automatic/pycharm-community) maintained by @mkevenaar.
2a. By default attempt to uninstall the current version before installing the new version, but provide a parameter to keep previous versions. Implemented by [QGIS](https://github.com/teknowledgist/Chocolatey-packages/tree/master/automatic/qgis) maintained by @teknowledgist.
3. Report "Upgrades unsupported. This package only supports `install` and `uninstall`". Implemented by ?? suggested by @jedfrechette in Blender issue report linked above.
QGIS is the only package that I've found in the community repository that documents which of the implementations they've chosen to adopt. The result of this is that the only way for users to know what will happen during an upgrade of a given package is to either experiment with installing multiple versions of that package or inspect the source code of the package, neither of which is ideal.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.