Devolutions / Devolutions/UniGetUI
[IMPROVEMENT] Switch to disable pinget (UI and/or InstallParam)
- Dominant language
- C#
- Stars
- 26.1k
- Forks
- 924
- Avg merge
- 15h 52m
- Merged PRs (30d)
- 52
Description
### Please confirm these before moving forward.
- [x] I have searched for my feature proposal and have not found a work-in-progress/duplicate/resolved/discarded issue.
- [x] This improvement refers to an existing feature. If you want to suggest a new feature, please use [this template](https://github.com/Devolutions/UniGetUI/issues/new?labels=new-feature&projects=&template=feature-request.yml&title=%5BFEATURE+REQUEST%5D+%28Enter+your+description+here%29).
- [x] This improvement is not a bug. If you want to report a bug, please use [this template](https://github.com/Devolutions/UniGetUI/issues/new?labels=bug&projects=&template=bug-issue.yml&title=%5BBUG%5D+%28Enter+your+description+here%29).
### Describe the improvement
Currently, **Pinget** is used automatically as a fallback whenever `winget` cannot deliver sources or manifests. While the intention behind this fallback is understandable, the current Pinget implementation has caused several issues (see #4794 and related reports), most notably:
- Stale / corrupted cache under `%LOCALAPPDATA%\Devolutions\Pinget\`
- Incorrect package-to-manifest assignments (Pinget resolves a package ID to the wrong manifest, leading to **wrong packages being installed or updated**)
- Users having to manually delete
`C:\Users\\AppData\Local\Devolutions\Pinget\Microsoft\Windows Package Manager\V1_M\Microsoft.Winget.Source_8wekyb3d8bbwe\manifests\`
to restore correct behavior
**Requested improvement:**
Please add an **official option to fully disable Pinget**, exposing it in **two places**:
1. **UI toggle** in UniGetUI Settings (e.g. *Settings → WinGet → ☐ Use Pinget as fallback*), defaulting to enabled to preserve current behavior.
2. **Installer / command-line parameter** for silent deployments, e.g.:
- `--disable-pinget` for the installer (MSI/EXE)
- A registry value or settings flag that can be pre-seeded via MDM/Intune/Ansible/GPO
When disabled:
- Pinget should **not be invoked** under any circumstance
- The Pinget cache directory should **not be created or written to**
- If `winget` fails, UniGetUI should simply surface the original `winget` error to the user instead of silently falling back
Optionally, a third state *"Ask before using Pinget fallback"* would also be appreciated for power users.
---
### Describe how this improvement could help users
- **Trust & predictability:** Many users (especially in enterprise environments) prefer to rely solely on **Microsoft's official winget** and its signed sources. Being able to opt out of a third-party fallback that currently has known bugs is important for trust.
- **Avoids data-integrity issues:** Prevents the wrong-package-installation problem caused by Pinget's faulty manifest cache assignments until those bugs are fully resolved.
- **Enterprise deployment:** Admins rolling out UniGetUI via Intune, SCCM, Ansible, GPO, etc. need a **deterministic, scriptable way** to disable Pinget. Manually deleting cache folders or renaming `pinget.exe` after each update is not a viable solution at scale.
- **Reduced support burden:** Several GitHub issues currently trace back to Pinget cache corruption. Letting affected users disable it cleanly would reduce duplicate bug reports while the Pinget implementation matures.
- **Reversible & safe:** Since the default would remain *enabled*, existing users are unaffected — only those who explicitly opt out change behavior.
- **Better UX on failure:** Surfacing the real `winget` error instead of a silent (and potentially wrong) fallback helps users and admins diagnose actual source/network issues faster.
In short: give users the **choice** to trust `winget` exclusively until Pinget reaches the same level of reliability.
Contributor guide
Assessment
This issue has not been assessed yet.