wine(64 位前缀)无法从应用程序打开 URL

wine(64 位前缀)无法从应用程序打开 URL

启动 KSPLauncher(Kerbal 太空计划)一切顺利,除了这个......


每次我想打开一些网页链接时,我都会看到 Firefox 图标在光标附近跳动 3 秒钟,然后什么也没发生


每次尝试都会产生这样的日志(使用“journalctl -xef”)

有没有什么方法可以看到这个作业里面传递了什么?

Jan 12 04:27:22 kexix systemd[1339]: Started Firefox Web Browser - Web Browser.
░░ Subject: A start job for unit UNIT has finished successfully
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ A start job for unit UNIT has finished successfully.
░░ 
░░ The job identifier is 737.

葡萄酒日志保持清晰,此操作不会产生任何结果

~/Games/epic-games-store/drive_c/Program Files/Epic Games/KerbalSpaceProgram/English$ wine Launcher --verbose
042c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
042c:fixme:imm:ImmReleaseContext (000000000007006A, 000000000003007A): stub
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0

042c:fixme:wbemprox:client_security_SetBlanket 00000001ED4A0E40, 00000000015C9010, 10, 0, (null), 3, 3, 0000000000000000, 0
042c:fixme:wbemprox:client_security_Release 00000001ED4A0E40
04bc:fixme:kernelbase:AppPolicyGetThreadInitializationType FFFFFFFFFFFFFFFA, 000000006776FE10
04bc:fixme:avrt:AvSetMmThreadCharacteristicsW (L"Audio",000000006776FDB8): stub
042c:fixme:win:RegisterTouchWindow hwnd 000000000007006A, flags 0 stub!
042c:fixme:wbemprox:client_security_SetBlanket 00000001ED4A0E40, 00000000015C9CC0, 10, 0, (null), 3, 3, 0000000000000000, 0
042c:fixme:wbemprox:client_security_Release 00000001ED4A0E40
042c:fixme:wbemprox:wbem_services_CreateInstanceEnum unsupported flags 0x30
042c:fixme:wbemprox:wbem_services_CreateInstanceEnum unsupported flags 0x30
042c:fixme:wbemprox:wbem_services_CreateInstanceEnum unsupported flags 0x30

我对注册表进行了以下调整:

  1. HKEY_CLASSES_ROOT\https\shell\open\命令

    • 键:(默认)

      • 字符串:“C:\windows\system32\winebrowser.exe”-nohome“%1”
  2. HKEY_CLASSES_ROOT\http\shell\open\命令

    • 键:(默认)

      • 字符串:“C:\windows\system32\winebrowser.exe”-nohome“%1”
  3. HKEY_CURRENT_USER\Software\Wine\WineBrowser

    • 关键词:浏览器

      • 字符串:xdg-open

通过 winetricks 安装:

$  winetricks list-installed
Executing mkdir -p /home/kex
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Using winetricks 20220411-next - sha256sum: 013a9062d25b07ab3cc5d60e664bd171899a397a8614fa953bc2b8e9a9fff049 with wine-8.0-rc3 (Staging) and WINEARCH=win64
cinepak
w_workaround_wine_bug-24013
d3dcompiler_43
d3dx11_43
d3dx9
vcrun2008
dirac
remove_mono internal
winxp
dotnet40
remove_mono internal
dotnet48
d3dcompiler_47
dxvk
l3codecx
winhttp
andale
arial
comicsans
courier
georgia
impact
times
trebuchet
verdana
webdings
corefonts
w_workaround_wine_bug-26925
msxml3
msxml4
msxml6
fontfix
vcrun2005
vcrun2010
vcrun6
vcrun6sp6
fontsmooth=rgb


系统信息:

$ wine --version
wine-8.0-rc3 (Staging)

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy

答案1

好的,看起来它是一个 wine64 前缀“功能”xD 因为在 wine32 前缀上 winebrowser 运行完美......

WINEARCH=win32 WINEPREFIX=~/.wine32 wine winebrowser https://www.google.com/
# open url in default browser SUCCESS =)

WINEARCH=win64 WINEPREFIX=~/.wine wine "C:\windows\system32\winebrowser.exe" "https://google.com"
# same behavior as was described in this question -- FAIL, dies silently =(

无论如何,你可以使用 win64 前缀的一些解决方法来解决这个问题,如下所示:


我现在正在使用的临时简单解决方案 1 ==“gvim stdin 文本缓冲区”

  1. 下载并安装免疫球蛋白

  2. HKEY_CLASSES_ROOT\https\shell\open\命令

    • 键:(默认)

      • 字符串:cmd.exe /c echo %1 | “C:\Program Files (x86)\Vim\vim90\gvim.exe” -
  3. HKEY_CLASSES_ROOT\http\shell\open\命令

    • 键:(默认)

      • 字符串:cmd.exe /c echo %1 | “C:\Program Files (x86)\Vim\vim90\gvim.exe” -
  4. 启动应用程序,单击按钮 -> 您将看到带有 url 的 gvim 窗口,双击,右键单击,在浏览器中复制并粘贴,关闭 gvim


更好的解决方案 2 ==“看门狗脚本”

  1. 将 stdin 从 http && https 保存到一些 links.txt regedit shell\open\command (通过 gVim 或 notepade.exe 像第一个解决方案中一样)

  2. 使用某种编程语言(python?go?等等)实现脚本,该脚本应该监视 links.txt 的变化,并在 '\r\n' 上执行子进程调用,这将使用 url == 上一行启动浏览器


欢呼 && 注意安全 && 让葡萄酒与你同在 xD

相关内容