Wine 会自动添加某些 mimetype 和文件关联(例如,notepad.exe 用于 .ini 文件)。已经有一个回答解释了如何删除这些关联。
但是如何才能防止 Wine 一遍又一遍地添加它们呢?
答案1
完全禁用 winemenubuilder.exe 将阻止 wine 劫持您的文件关联,但也会阻止它为新安装的软件创建菜单项,这可能是不受欢迎的行为。更好的解决方案是:
删除现有的 Wine 劫持(来自葡萄酒常见问题解答):
rm -f ~/.local/share/mime/packages/x-wine* rm -f ~/.local/share/applications/wine-extension* rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension* rm -f ~/.local/share/mime/application/x-wine-extension*
编辑
/usr/share/wine/wine.inf
(以 root 身份),找到以下[Services]
部分:[Services] HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r" ...
并对其进行编辑,如下所示:
[Services] HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -r" ...
winemenubuilder.exe
(即,不使用开关启动-a
)。这将阻止在新用户帐户(或新WINEPREFIX
es)上更新文件关联。以类似的方式编辑你的
$WINEPREFIX/system.reg
文件(如果存在)。其中显示[Software\\Microsoft\\Windows\\CurrentVersion\\RunServices] "winemenubuilder"="C:\\windows\\system32\\winemenubuilder.exe -a -r"
移除
-a
开关。(默认情况下为WINEPREFIX=$HOME/.wine
。)
这将防止 wine 窃取您首选的 mimeapps,但 winemenubuilder 仍将运行并为您的 Windows 软件创建方便的桌面条目。
答案2
如果用户不希望 Windows 应用的安装程序更改文件类型关联、添加菜单项或创建桌面链接,则可以禁用winemenubuilder.exe
。有几种方法可以做到这一点:
在 winecfg 中:在运行安装程序之前,请运行
winecfg
。转到“库”选项卡并winemenubuilder.exe
在“新覆盖”框中键入内容(它不在下拉列表中)。单击“添加”,然后从“现有覆盖”框中选择它。单击“编辑”并从列表中选择“禁用”,然后单击“应用”。注册表文件:如果您需要多次应用设置(例如每次重新创建 Wine 前缀时),这种方法可能更方便。创建一个名为扩展名为 .reg 的文本文件(例如
disable-winemenubuilder.reg
),其中包含以下内容:[HKEY_CURRENT_USER\Software\Wine\DllOverrides] "winemenubuilder.exe"=""
要应用设置,请运行
regedit disable-winemenubuilder.reg
环境变量:运行安装程序时设置 WINEDLLOVERRIDES 环境变量,例如,
WINEDLLOVERRIDES=winemenubuilder.exe=d wine setup.exe
禁用winemenubuilder.exe
将导致 wine 程序打印无法找到的错误(尽管这些错误似乎不会干扰程序操作)。
避免错误的另一种方法是将其替换为不执行任何操作的程序。使用 Wine 下的 MinGW gcc 编译以下内容,并将可执行文件放在C:\Windows\System32\winemenubuilder.exe
:
int main() { /* Do nothing */ return 0; }
然后按照与上述相同的步骤,但设置winemenubuilder.exe
为“native”而不是“disable”。
答案3
由于这是 Google 上的第一个搜索结果。Wine FAQ 现在列出了新版 Wine 的替代方法。
“从 wine-3.14 开始,winecfg 在桌面集成选项卡上有一个“管理文件关联”复选框。选中它可以启用 winemenbuilder 创建文件关联,取消选中它会禁用该行为。”
答案4
在Gentoo要使此更改永久生效,您可以创建一个用户补丁自动应用于每个 wine 包的安装。
/etc/portage/patches/app-emulation/wine-vanilla/disable-winemenubuilder.patch
# disable updating file associations for mimetypes that generate much joy
# making wine-internet-explorer open images, for example.
#
# don't forget to clean up your home directory from previously generated association clutter:
#
# rm ~/.local/share/mime/packages/x-wine*
# rm ~/.local/share/applications/wine-extension*
# rm ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
# rm ~/.local/share/mime/application/x-wine-extension*
#
# then run: update-mime-database ~/.local/share/mime/
--- a/loader/wine.inf.in 2024-02-23 16:57:31.079889523 +0100
+++ b/loader/wine.inf.in 2024-02-23 16:58:26.122973075 +0100
@@ -2493,7 +2493,7 @@
ErrorControl=1
[Services]
-HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -a -r"
+HKLM,%CurrentVersion%\RunServices,"winemenubuilder",2,"%11%\winemenubuilder.exe -r"
HKLM,"System\CurrentControlSet\Services\Eventlog\Application",,16
HKLM,"System\CurrentControlSet\Services\Eventlog\System","Sources",0x10000,""
HKLM,"System\CurrentControlSet\Services\Tcpip\Parameters","DataBasePath",,"%12%\etc"