From 4909d693e327d0f81b993694c3873c203c4ce732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 28 Jul 2025 23:41:48 +0800 Subject: [PATCH] Packages (Windows): don't rely on the existance of `$SCOOP` when detecting scoop packages Fix #1868 --- src/detection/packages/packages_windows.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/detection/packages/packages_windows.c b/src/detection/packages/packages_windows.c index a9fa9df6d..1d13e0798 100644 --- a/src/detection/packages/packages_windows.c +++ b/src/detection/packages/packages_windows.c @@ -1,6 +1,7 @@ #include "packages.h" #include "common/processing.h" #include "util/stringUtils.h" +#include "util/path.h" #include #include @@ -37,10 +38,11 @@ static void detectScoop(FFPackagesResult* result) { FF_STRBUF_AUTO_DESTROY scoopPath = ffStrbufCreateA(MAX_PATH + 3); - const char* scoopEnv = getenv("SCOOP"); - if(ffStrSet(scoopEnv)) + if(ffFindExecutableInPath("scoop.cmd", &scoopPath) == NULL) { - ffStrbufAppendS(&scoopPath, scoopEnv); + // C:\Users\$USER\scoop\shims\scoop.cmd + ffStrbufSubstrBeforeLastC(&scoopPath, '\\'); + ffStrbufSubstrBeforeLastC(&scoopPath, '\\'); ffStrbufAppendS(&scoopPath, "/apps/*"); } else