Wineで.NETアプリケーションを動かすにはランタイムパッケージとして
のどちらかを用いる。
.NETアプリケーションそのものはOSやアーキテクチャに依存しないものとなっており、GNU/LinuxでもMonoを用いて動くものも多いのだが、Windows固有の機能やWindows用のDLLを呼び出している “実質Windows専用” となっているアプリケーションも多数存在しており、それらを動かすためにはWineを.NETのランタイムと一緒に用いる必要がある。
そのような “Windows専用の.NETアプリケーション” が存在する背景としては、.NETランタイムを使用して開発するほうが.NETランタイムライブラリの豊富な機能を使用できたり、生産性の高いC♯のようなプログラミング言語が利用できたりすることなどによって開発者がアプリケーションを作りやすいことが考えられる。
Monoは.NETアプリケーションを動かすための自由なソフトウェアの実装で、Linuxなどで.NETアプリケーションを動かすのにも使われている。 “Wine Mono” はWineプロジェクトがWine向けに提供しているMono。
ディストリのパッケージとしてWineをインストールした場合は依存パッケージとしてWine本体と一緒にインストールされて追加でインストールする必要がないこともある(ディストリによって異なる)。
公式サイトのリポジトリからインストールしたりソースからビルドしたりした場合、Wine環境を新しく作成したときやWineのバージョンが変わったときにインストーラのダイアログ(Wine Mono インストーラ)が表示され、 “インストール” ボタンを押すだけでWine Monoのダウンロードとインストールが行える。
Wine Monoの.NET Frameworkに対する互換性は完全ではないため、アプリケーションによってはうまく動かないことがある。その場合は.NET Frameworkを試してみるとよい。
一方で、動かしたい.NETアプリケーションが全てWine Monoで正常に動いていれば.NET Frameworkを使用する必要はない。
Windows上で使われている.NETランタイムで、Wineでも動作するが、同ランタイムの使用許諾契約への同意が必要。
アプリケーションによっては “Wine Monoでは動かなくても.NET Frameworkでなら動く” という場合があり、試してみる価値は十分にある。
インストールにはWinetricksが便利。
過去、64bit版のWineでランタイムのインストーラが正常に動かない不具合により “32bitのみに対応したWine環境” を用意する(環境変数WINEARCH
をwin32
にしてWine環境を作る)必要があったが、Wine 5.0.x系時点では最新のWinetricksを使用することで64bit版の.NET Frameworkがインストール・使用できるようになっており、その必要はなくなっている。ただし、ディスク使用量は32bitのみに対応したWine環境よりも増える。
Winetricksのdotnet35sp1
でこのバージョン範囲を全てカバーできるが、新しいバージョンのランタイムが本当に不要である場合にはdotnet20sp2
など古いバージョンのみに対応したものを入れることもできる。
Winetricksのdotnet4
系の最新のものを入れる。2020年3月時点ではdotnet48
が最新。
Winetricksで64bitのWine環境にインストールしようとすると警告が出るため、既知の不具合が存在する可能性がある。