Wineで.NETアプリケーションを動かすのに必要なランタイムパッケージ

Last modified: 2020-03-24

Wineで.NETアプリケーションを動かすにはランタイムパッケージとして

  • 自由なソフトウェアの “Wine Mono”
  • Microsoftによる実装 “.NET Framework”

のどちらかを用いる。

.NETアプリケーションそのものはOSやアーキテクチャに依存しないものとなっており、GNU/LinuxでもMonoを用いて動くものも多いのだが、Windows固有の機能やWindows用のDLLを呼び出している “実質Windows専用” となっているアプリケーションも多数存在しており、それらを動かすためにはWineを.NETのランタイムと一緒に用いる必要がある。
そのような “Windows専用の.NETアプリケーション” が存在する背景としては、.NETランタイムを使用して開発するほうが.NETランタイムライブラリの豊富な機能を使用できたり、生産性の高いC♯のようなプログラミング言語が利用できたりすることなどによって開発者がアプリケーションを作りやすいことが考えられる。

Wine Mono

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を使用する必要はない。

.NET Framework

Windows上で使われている.NETランタイムで、Wineでも動作するが、同ランタイムの使用許諾契約への同意が必要。

アプリケーションによっては “Wine Monoでは動かなくても.NET Frameworkでなら動く” という場合があり、試してみる価値は十分にある。

インストールにはWinetricksが便利。

過去、64bit版のWineでランタイムのインストーラが正常に動かない不具合により “32bitのみに対応したWine環境” を用意する(環境変数WINEARCHwin32にしてWine環境を作る)必要があったが、Wine 5.0.x系時点では最新のWinetricksを使用することで64bit版の.NET Frameworkがインストール・使用できるようになっており、その必要はなくなっている。ただし、ディスク使用量は32bitのみに対応したWine環境よりも増える。

.NET 2.0, .NET 3.0, .NET 3.5のアプリケーション (CLR 2.0)

Winetricksのdotnet35sp1でこのバージョン範囲を全てカバーできるが、新しいバージョンのランタイムが本当に不要である場合にはdotnet20sp2など古いバージョンのみに対応したものを入れることもできる。

.NET 4.xアプリケーション (CLR 4)

Winetricksのdotnet4系の最新のものを入れる。2020年3月時点ではdotnet48が最新。

Winetricksで64bitのWine環境にインストールしようとすると警告が出るため、既知の不具合が存在する可能性がある。