Scoop style shims
- Dominant language
- C#
- Stars
- 11.5k
- Forks
- 960
- PR merge metrics
- No merged PRs in 30d
Description
This is a request is to support scoop style shims, in addition to the currently supported shimgen style shims.
Presumably using the new c++ shim available here: https://github.com/kiennq/scoop-better-shimexe/
This type of shim works by having one compiled binary and simply copying it to the directory that is on the path, renaming it to whatever you want the shim to be called, and creating a `.shim` text file that has the path to the original executable you want to shim, and any arguments for the original executable.
The advantages of this type of shim:
- Better support for ctrl-c. chocolatey/home#134
- Support for signed shims (#1471) comes for basically free, since the only change to the shim.exe file is a rename.
- Much better support for applocker (#1471) since you basically have one file hash for all the shims.
- Quicker creation, since it is a simple rename/copy/create text file, unlike the shimgen compilation. chocolatey/home#118
- I haven't tested it, but it should be quicker to launch since it is c++ and not .Net.
- chocolatey/shimgen#2 and chocolatey/shimgen#3 should be very doable on the user's end because it just requires manipulation of a text file, not using shimgen.exe (not to mention that shimgen.exe is not licensed to be used outside of chocolatey)
- Open source, and able to be freely used outside of "official" Chocolatey.
The disadvantages of this type of shim:
- Requires `.shim` files next to the actual shim.
- Probably others, but I haven't played around with this type of shim to know if there are other edge cases.
Contributor guide
Research direction
Start by reviewing Chocolatey's current shimgen integration and the scoop-better-shimexe format linked in the issue. Compare how the existing shim type is created and invoked with the proposed copied executable and adjacent .shim file. Done means Chocolatey can support Scoop-style shims alongside shimgen-style shims without losing the listed argument and execution behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, csharp
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100