From 00192d3d1e23851e55c0ee2cb2064b45f14d9af1 Mon Sep 17 00:00:00 2001 From: jim800121chen Date: Sun, 12 Apr 2026 23:32:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(local-tool):=20yt-dlp=20/=20ffmpeg=20?= =?UTF-8?q?=E6=89=BE=E4=B8=8D=E5=88=B0=20=E2=80=94=20VISIONA=5FBUNDLE=5FBI?= =?UTF-8?q?N=5FDIR=20=E5=8A=A0=E5=88=B0=20PATH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:Go 1.19+ Windows 的 exec.LookPath 不再搜尋 current directory, 而 exec.Command("yt-dlp") / exec.Command("ffmpeg") 只走 LookPath。 Wails app 有設 VISIONA_BUNDLE_BIN_DIR 環境變數指向 {app}\bin\, 但 server 的 deps/checker.go 只在 startup 檢查時用它,沒把它加到 PATH。 修法:server main.go 啟動時把 VISIONA_BUNDLE_BIN_DIR prepend 到 PATH。 這一次解決三個問題: - yt-dlp: cannot run executable found relative to current directory - ffmpeg 攝影機列舉找不到 ffmpeg binary - ffmpeg camera capture 也找不到 Co-Authored-By: Claude Opus 4.6 (1M context) --- local-tool/server/main.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/local-tool/server/main.go b/local-tool/server/main.go index 3c77b2c..b73951e 100644 --- a/local-tool/server/main.go +++ b/local-tool/server/main.go @@ -86,6 +86,14 @@ func main() { logger.Info("Mock mode: %v, Mock camera: %v, Dev mode: %v, Python mode: %s", cfg.MockMode, cfg.MockCamera, cfg.DevMode, cfg.PythonMode) + // 把 VISIONA_BUNDLE_BIN_DIR 加到 PATH,讓 exec.Command("yt-dlp") / exec.Command("ffmpeg") + // 能透過 LookPath 找到 bundle 內的 binary(Go 1.19+ Windows 不再搜 cwd)。 + if bundleBin := os.Getenv("VISIONA_BUNDLE_BIN_DIR"); bundleBin != "" { + sep := string(os.PathListSeparator) + os.Setenv("PATH", bundleBin+sep+os.Getenv("PATH")) + logger.Info("Added VISIONA_BUNDLE_BIN_DIR to PATH: %s", bundleBin) + } + // Check external dependencies deps.PrintStartupReport(logger)