]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-133512: Adds warnings to py.exe launcher about subcommands belonging to Python...
authorSteve Dower <steve.dower@python.org>
Wed, 7 May 2025 12:24:33 +0000 (13:24 +0100)
committerGitHub <noreply@github.com>
Wed, 7 May 2025 12:24:33 +0000 (13:24 +0100)
Misc/NEWS.d/next/Windows/2025-05-06-14-09-19.gh-issue-133512.bh-D-g.rst [new file with mode: 0644]
PC/launcher2.c

diff --git a/Misc/NEWS.d/next/Windows/2025-05-06-14-09-19.gh-issue-133512.bh-D-g.rst b/Misc/NEWS.d/next/Windows/2025-05-06-14-09-19.gh-issue-133512.bh-D-g.rst
new file mode 100644 (file)
index 0000000..7579910
--- /dev/null
@@ -0,0 +1,2 @@
+Add warnings to :ref:`launcher` about use of subcommands belonging to the
+Python install manager.
index 72121724726ccb9f0a019d5114393e284768afee..357ee53e55c22d6750245a3f1f205e738e63897e 100644 (file)
@@ -1058,7 +1058,7 @@ checkShebang(SearchInfo *search)
         debug(L"# Failed to open %s for shebang parsing (0x%08X)\n",
               scriptFile, GetLastError());
         free(scriptFile);
-        return 0;
+        return RC_NO_SCRIPT;
     }
 
     DWORD bytesRead = 0;
@@ -2665,6 +2665,21 @@ performSearch(SearchInfo *search, EnvironmentInfo **envs)
     case RC_NO_SHEBANG:
     case RC_RECURSIVE_SHEBANG:
         break;
+    case RC_NO_SCRIPT:
+        if (!_comparePath(search->scriptFile, search->scriptFileLength, L"install", -1) ||
+            !_comparePath(search->scriptFile, search->scriptFileLength, L"uninstall", -1) ||
+            !_comparePath(search->scriptFile, search->scriptFileLength, L"list", -1) ||
+            !_comparePath(search->scriptFile, search->scriptFileLength, L"help", -1)) {
+            fprintf(
+                stderr,
+                "WARNING: The '%.*ls' command is unavailable because this is the legacy py.exe command.\n"
+                "If you have already installed the Python install manager, open Installed Apps and "
+                "remove 'Python Launcher' to enable the new py.exe command.\n",
+                search->scriptFileLength,
+                search->scriptFile
+            );
+        }
+        break;
     default:
         return exitCode;
     }