You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add a setup guide for each package manager and link it from the status card - #5669
When a package manager was missing, its settings page said "{pm} was not found! You may need to install {pm}" and offered nothing else. This adds a setup guide and links it from that status card.
The Cargo example in the issue (cargo-update, cargo-binstall, MSVC link.exe) was already fixed by #5569. Those tools are no longer needed, and the guide says so.
The guide: docs/PACKAGE_MANAGERS.md
Covers every manager: what to install, how UniGetUI finds it (PATH on each OS, plus the extra folders it searches), what UniGetUI installs on its own, and a command to check it works.
Every statement was checked against the code, or against the vendor's docs for third-party facts. Anything that couldn't be confirmed was left out.
Every winget id and Homebrew package was looked up against winget and the Homebrew API.
The status card
When a manager isn't ready (disabled included), the card shows How to set up {pm}, which opens that manager's section of the guide.
When no executable is found and the manager has a one-line install, the card also shows the command with Open in a terminal. That reuses ManualInstallHelper: it copies the command and opens a terminal with it already typed in.
If a manager is installed but fails to start, the card shows only the guide link, no install command.
Scoop shows no command on the card. Its page already has Install Scoop, and Scoop's installer only works in a non-admin PowerShell.
Where the data lives
Each manager now sets SetupGuide and InstallCommands on ManagerProperties in its constructor, so its setup data sits with the manager.
Tests
UniGetUI.PackageEngine.Tests builds every manager. Apt, Dnf and Pacman are now referenced by that project.
Each manager's guide section must exist as a heading (headings inside code blocks are ignored).
Its commands must match the guide word for word.
No manager may offer a command for an OS it doesn't run on.
A scan of the manager assemblies fails when a new manager is missing from the list.
UniGetUI.Tests covers when the card shows the guide link and the command, and the guide URL.
Both suites and both dotnet format checks pass locally.
I haven't checked the new card in the running app.
Notes
The guide links point at main, so they won't open until this is merged.
Not fixed here: Pip's extra-folder search on Windows can't find Python3xx\python.exe subfolders, so Python is only found through PATH.
Adds centralized package-manager setup guidance and links it from UniGetUI’s settings status cards, addressing #5516. The Cargo instructions reflect the removal of helper-tool requirements in #5569.
Changes:
Documents installation, executable discovery, prerequisites, and verification for supported managers.
Adds manager-owned guide links and platform-specific install commands, exposed through the status card.
Adds tests for guide references, command consistency, platform restrictions, and setup-help visibility.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Setup guidance can offer commands that fail because of a stale PATH or missing curl, suppress the missing-SDK command, and overlook production managers in its coverage guard.
No open issues 🎉
4 previously missed issues
In code that hasn't changed since last review
Use refreshed PATH when launching WinGet terminal commands
On Windows, Which searches the current registry PATH as well as the process PATH, but LaunchManualAsync starts PowerShell with the app's inherited environment. If WinGet is installed while UniGetUI is open, this can offer a command because the new registry PATH contains winget, then open a terminal whose stale PATH cannot run it. Pass a refreshed PATH to the terminal or use the resolved executable path in the command.
Offer SDK installation when disabled .NET Tool manager lacks SDK
For a disabled .NET Tool manager, HasExecutable() only checks for dotnet, not the SDK. On a runtime-only machine the initial SDK probe sets found to false and disables the manager, but this check then suppresses the SDK installation command because dotnet exists. Use the same SDK-aware availability check for disabled .NET Tool as for its enabled initialization, so the first-time missing-SDK case still offers the command.
Check for curl before offering the Homebrew installation command
The availability check only probes /bin/bash, but this command also requires curl. On a Linux installation without curl, the card offers it anyway and the command substitution fails without installing Homebrew. Check for curl as well before offering the command, or provide an installation path that does not assume it is present.
Compare test coverage against the full production manager list
Scanning only DLLs copied into the test output cannot detect a production manager whose project was never referenced by this test project. PowerShell 7 is already omitted on the portable target because both its reference and test-list entry are Windows-only. Include PowerShell 7 on both targets and compare coverage against an authoritative production manager list so future omissions fail this guard.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a package manager was missing, its settings page said "{pm} was not found! You may need to install {pm}" and offered nothing else. This adds a setup guide and links it from that status card.
The Cargo example in the issue (
cargo-update,cargo-binstall, MSVClink.exe) was already fixed by #5569. Those tools are no longer needed, and the guide says so.The guide:
docs/PACKAGE_MANAGERS.mdThe status card
ManualInstallHelper: it copies the command and opens a terminal with it already typed in.Where the data lives
Each manager now sets
SetupGuideandInstallCommandsonManagerPropertiesin its constructor, so its setup data sits with the manager.Tests
UniGetUI.PackageEngine.Testsbuilds every manager. Apt, Dnf and Pacman are now referenced by that project.UniGetUI.Testscovers when the card shows the guide link and the command, and the guide URL.dotnet formatchecks pass locally.Notes
main, so they won't open until this is merged.Python3xx\python.exesubfolders, so Python is only found through PATH.Closes #5516