回答:
winemenubuilder.exeを完全に無効にすると、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
(ルートとして)編集し、[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
。)
これにより、ワインが好みのmimeappsを盗むのを防ぎますが、winemenubuilderは引き続き実行され、Windozeソフトウェアの便利なデスクトップエントリを作成します。
Windowsアプリのインストーラーでファイルタイプの関連付けを変更したり、メニュー項目を追加したり、デスクトップリンクを作成したりしたくないユーザーは、を無効にできwinemenubuilder.exe
ます。これを行うにはいくつかの方法があります。
winecfg:インストーラーを実行する前に、を実行しwinecfg
ます。[ライブラリ]タブに移動し、[ winemenubuilder.exe
新しいオーバーライド]ボックスに入力します(ドロップダウンリストにはありません)。[追加]をクリックし、[既存のオーバーライド]ボックスから選択します。「編集」をクリックして、リストから「無効化」を選択し、「適用」をクリックします。
レジストリファイル:設定を何度も適用する必要がある場合(たとえば、Wineプレフィックスを再作成するたびに)、このアプローチはより便利です。disable-winemenubuilder.reg
次を含む拡張子.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
「無効」ではなく「ネイティブ」に設定します。
/opt/wine-staging/share/wine/wine.inf
でした。ファイルが標準以外の場所にある場合は、実行locate wine.inf
して見つけます。