ScoopInstaller / Scoop

A command-line installer for Windows.

Home Page:https://scoop.sh

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bug] .jar shims change the working directory when running from cmd

davidpatel0 opened this issue · comments

Bug Report

Current Behavior

.jar shims change the current working directory to the package directory when running from cmd.

Expected Behavior

shims should not change the working directory

Additional context/output

for example, install apktool: scoop install main/apktool and then run apktool in cmd:

C:\>apktool --version
2.9.3

C:\Users\User\scoop\apps\apktool\current>

When running from powershell this doesn't happen for some reason.

The cause of this is

Scoop/lib/core.ps1

Lines 1012 to 1018 in d337bb1

} elseif ($path -match '\.jar$') {
warn_on_overwrite "$shim.cmd" $path
@(
"@rem $resolved_path",
"@cd /d $(Split-Path $resolved_path -Parent)"
"@java -jar `"$resolved_path`" $arg %*"
) -join "`r`n" | Out-UTF8File "$shim.cmd"

I think cd shouldn't be used anywhere in shims.

System details

Windows version: 11

OS architecture: 64bit

PowerShell version: 5.1.22621.3672

Additional software: [(optional) e.g. ConEmu, Git]

Scoop Configuration

{
    "last_update":  "2024-06-23T08:09:07.4455297+03:00",
    "scoop_branch":  "master",
    "scoop_repo":  "https://github.com/ScoopInstaller/Scoop"
}

Another problem that this approach (modifying the working directory) causes: using relative paths with .jar shims is broken (as they are being resolved from scoop\apps\X directory and not from the real working directory.

For example with apktool, run apktool d apk_in_current_dir.apk and an error occurs:

Input file (C:\Users\User\scoop\apps\apktool\current\.\apk_in_current_dir.apk) was not found or was not readable.