Skip to content

Instantly share code, notes, and snippets.

@elovelan
Last active June 21, 2017 04:05
Show Gist options
  • Save elovelan/e21f182f58ad3b1627300c8a82f3596b to your computer and use it in GitHub Desktop.
Save elovelan/e21f182f58ad3b1627300c8a82f3596b to your computer and use it in GitHub Desktop.
Chocolatey Versions thoughts

Been thinking a lot about this feature. I've been fighting with it quite a bit for installing SxS packages

Some examples of packages that can be sensibly installed side-by-side:

  • Ruby
  • microsoft-build-tools
  • sqlserver-odbcdriver

Here are some of the issues:

  • No automated upgrade path for point releases. e.g. if I have Ruby 1.9 and Ruby 2.4 installed, I can only upgrade Ruby 2.4, even if there's an update to 1.9
  • Configuration management systems (at least Puppet and DSC) don't allow for multiple versions to be installed because they key on package name
  • Future installs don't know that the previous one was installed with AllowMultipleVersions
  • Inability to pin to a major or major.minor version
  • Difficult to maintain packages for older versions if fixes are released (git branching could work, but many chocolatey packages are maintained in repos with multiple packages)
  • Can dependencies depend on a specific version? Does this work right?

Packaging Patterns - Managing Versions

Repository Setup

[Placeholder - repo setup for allowing patches of multiple versions]

Packages that can allow multiple versions to be installed side-by-side

[Placeholder] - wtf does one do about Java, guess that's a good use case for allowmultipleversions?

Packages that only allow one version at a time but don't force users to latest

[Placeholder]

Cleaning up old versions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment