如何在 Windows chrome 的 WSL2 中设置 `$CHROME_EXECUTABLE`

如何在 Windows chrome 的 WSL2 中设置 `$CHROME_EXECUTABLE`

我正在尝试通过 WSL2 使用 Windows chrome 可执行文件(作为参考,Flutter 着眼于$CHROME_EXECUTABLE在 chrome 中启动 Web 应用程序)。

在我的 bashrc 中,我有以下内容:

export CHROME_EXECUTABLE="/mnt/c/program\ files/google/chrome/application/chrome.exe"

有了这个,flutter doctor抱怨$CHROME_EXECUTABLE没有指向 chrome 可执行文件。如果我$CHROME_EXECUTABLE在 bash 中执行,我会得到:

bash: /mnt/c/program\: No such file or directory

但是,如果我执行/mnt/c/program\ files/google/chrome/application/chrome.exe,它会起作用并在窗口内打开一个 chrome 实例。

这里似乎存在一些转义问题,但我不确定发生了什么,我认为\会转义“程序文件”中的空间?

答案1

坦白说,我不使用 Flutter,所以我在这里可能是错的,但从一些快速研究来看,Flutter 似乎不仅仅是“启动”Chrome。它确实需要一个 Chromium 可执行文件来交流(可能通过 webdriver)进行调试。

如果确实如此,那么将 Windows 版本的 Chrome 与 Linux 版本的 Flutter 结合使用是行不通的。这类似于尝试将 Windows 版本的 Chrome 与 Selenium 一起使用。这就解释了为什么即使你的路径是正确的,Flutter 也会抱怨 Windows 二进制文件不是“Chrome 可执行文件”。

在这种情况下,解决方案是在 WSL 中安装 Linux 版本的 Chrome(或 Chromium)。以下是这个问题,您可以通过以下方式执行此操作:

  • 升级到 Windows 11,支持使用 WSLg 在 Windows 上运行 Linux GUI 应用程序。
  • 根据 harrymc 的回答在 Windows 上使用第三方 X 服务器
  • xrdp根据我的回答使用。这是直接链接到 Ask Ubuntu 答案,我提供了完整的步骤。

xrdp至少我已经使用该方法在 WSL 上成功运行了 Selenium 。

答案2

您可以使用旧的 8.3 命名风格;如果 Chrome 位于C:\progra~1,则命令为

/mnt/c/progra~1/google/Chrome/Application/chrome.exe

要查找合适的短名称,请使用

DIR C:\ /X

答案3

export CHROME_EXECUTABLE="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

这对我有用

相关内容