问题描述
Wine会自动添加某些mimetypes和文件关联(例如,.ini文件的notepad.exe)。已经有一个answer解释了如何删除这些关联。
但是如何防止Wine一次又一次地添加呢?
最佳解决方法
完全禁用winemenubuilder.exe将阻止wine劫持您的文件关联,但它也会阻止它为新安装的软件创建菜单条目,这可能是一种不受欢迎的行为。更好的解决方案是:
-
删除现有的葡萄酒劫持(from wine FAQ):
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" ...
(即,在没有
-a
开关的情况下启动winemenubuilder.exe
)。这将阻止更新新用户帐户(或使用新的WINEPREFIX
es)上的文件关联。 -
以类似的方式编辑
$WINEPREFIX/system.reg
文件(如果存在)。在哪里说[Software\\Microsoft\\Windows\\CurrentVersion\\RunServices] "winemenubuilder"="C:\\windows\\system32\\winemenubuilder.exe -a -r"
删除
-a
开关。 (默认情况下,WINEPREFIX=$HOME/.wine
。)
这样可以防止葡萄酒盗取你喜欢的mimeapps,但winemenubuilder仍会运行并为你的Windoze软件创建方便的桌面条目。
次佳解决方法
不希望Windows应用程序的安装程序更改文件类型关联,添加菜单项或创建桌面链接的用户可以禁用winemenubuilder.exe
。做这件事有很多种方法:
-
在winecfg中:在运行安装程序之前,运行
winecfg
。转到Libraries选项卡,在”New overrides”框中键入winemenubuilder.exe
(它不在下拉列表中)。单击“添加”,然后从”Existing overrides”框中选择它。单击”Edit”并从列表中选择”Disable”,然后单击”Apply”。 -
注册表文件:如果您需要多次应用该设置(例如,每次重新创建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程序打印无法找到的错误(尽管错误似乎不会干扰程序操作)。
避免错误的另一种方法是用do-nothing程序替换它。使用MinGW的wine下的gcc编译以下内容,并将可执行文件放在C:\Windows\System32\winemenubuilder.exe
中:
int main() { /* Do nothing */ return 0; }
然后按照与上面相同的步骤,但将winemenubuilder.exe
设置为”native”而不是”disable”。
第三种解决方法
因为这是谷歌的第一次热播。 Wine FAQ现在列出了新版葡萄酒的替代方法。
“从wine-3.14开始,winecfg在桌面集成选项卡上有一个”管理文件关联“复选框。检查它可以让winemenbuilder创建文件关联并取消选中它会禁用该行为。”