如何防止Wine添加文件关联?


35

Wine会自动添加某些模仿类型和文件关联(例如,.ini文件的notepad.exe)。已经有一个答案说明了如何删除这些关联。

但是如何防止Wine一次又一次地添加它们呢?

Answers:


47

完全禁用winemenubuilder.exe将阻止wine劫持您的文件关联,但也将阻止它为新安装的软件创建菜单项,这可能是不希望的行为。更好的解决方案是:

  1. 删除现有的葡萄酒劫持事件(从葡萄酒常见问题解答中):

    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* 
    
  2. 编辑/usr/share/wine/wine.inf(以根用户身份),找到以下[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开关即可开始)。这将防止更新新用户帐户(或使用新WINEPREFIXes)上的文件关联。

  3. $WINEPREFIX/system.reg以类似方式编辑文件(如果存在)。它说的地方

    [Software\\Microsoft\\Windows\\CurrentVersion\\RunServices]
    "winemenubuilder"="C:\\windows\\system32\\winemenubuilder.exe -a -r"
    

    卸下-a开关。(默认情况下,WINEPREFIX=$HOME/.wine。)

这样可以防止Wine窃取您喜欢的mimeapp,但是winemenubuilder仍将运行并为Windoze软件创建方便的桌面条目。


1
对我来说,道路是宁可的/opt/wine-staging/share/wine/wine.inf。如果文件位于非标准位置,请运行locate wine.inf以查找它。
Hi-Angel

13

来自http://wiki.winehq.org/FAQ

不想让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为“本机”而不是“禁用”。


好的。因此,对我来说,这意味着我创建前缀,安装我的应用,手动删除所有默认的Wine关联和菜单(我想要应用关联),然后更改reg键以防止每次Wine更新时都重新添加关联,对?
mniess

4

由于这是Google的首个热门产品。现在,“葡萄酒常见问题”列出了一种用于较新版本葡萄酒的替代方法。

“从wine-3.14开始,winecfg在“桌面集成”选项卡上具有“管理文件关联”复选框。选中该复选框可使winemenbuilder创建文件关联,而取消选中则禁用该行为。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.