Wineでは “Wine Mono” と呼ばれるアドオンパッケージをインストールすることでMono/.NETアプリケーションが動作するようになるが、ソフトウェアによっては正しく動作しない。代わりにMicrosoftの “.NET Framework” と呼ばれるランタイムパッケージをインストールすることで動くようになるものもあるが、問題なく動作するかどうかはソフトウェアによる。
ここでは同ランタイムパッケージを
で扱ったWinetricksを用いてインストールする方法についてを扱う。
(2020/2/10)本記事の内容は古くなっている。Wine 5.0.x時点と最新のWinetricksでは64bitのWine環境でも正常にインストールと使用が可能となっている他、msxml3関係の不具合もなくなっている。
- Wine環境に関する注意点
- インストールするパッケージ
- まとめと作業例
Wine環境に関する注意点
で扱ったWine環境について、2015年夏時点のWinetricksでは64bit/32bit両対応のものに対してインストールすることができないため、同記事内で扱っている方法で32bit専用の環境を作成する必要がある。
また、パッケージ群[1]のインストールが途中でキャンセルもしくは失敗するとやり直すのが難しいため、既に何かのソフトウェアで使用している環境を使用するのはおすすめできない。.NET Framework用にWine環境を1つ用意するのが好ましい。
インストールするパッケージ
選択するパッケージ名はバージョンごとに分かれているが、注意点がある。
パッケージ名 | バージョン |
---|---|
dotnet11 | 1.1 |
dotnet11sp1 | 1.1 SP1 |
dotnet20 | 2.0 |
dotnet30 | 3.0 |
dotnet30sp1 | 3.0 SP1 |
dotnet35 | 3.5 |
dotnet35sp1 | 3.5 SP1 |
dotnet40 | 4.0 |
dotnet45 | 4.5 |
パッケージの依存関係に関する注意点
バージョン番号については、選択したものよりも低いバージョンのもの(1.1系は除く)が同時にインストールされる場合が多い。例えば、 “dotnet35” をインストールすると3.0 SP1までのバージョンもインストールされる。
それと同時に、同一のWine環境に対しては、バージョンが異なる複数の “dotnet” 系パッケージをインストールすることができない(パッケージの衝突が起こる)場合がある。
ただし “dotnet40” は上記2つには当てはまらず、単独でインストールすることができる。
色々なバージョンのランタイムパッケージが必要な場合は、利用できる中で一番高い(新しい)バージョンのパッケージをインストールするのがよい。
一連のパッケージ群は全てキャンセルや失敗することなく最後まで正常にインストールされなければならず、途中で中止された場合は(インストール済みパッケージとの衝突などの関係で)Wine環境の作成からやり直す必要がある。
(2020/2/10)2020年2月時点ではdotnet35sp1のパッケージをインストールすることで2.0から3.5までの.NETアプリケーションが動作するようになっており、低いバージョンのインストーラから順に実行する形ではなくなっている。
バージョン2.0以上をインストールする場合の注意点
バージョン2.0のインストーラはWineのバージョン1.6.2では正常に動作せず
インストールパッケージを開けませんでした。アプリケーション開発元に連絡して、このパッケージが有効なWindows インストーラ パッケージであることを確認してください。
というダイアログが表示されて処理が中止されるが、バージョン1.7.44時点では正しく動作する。
バージョン3.0以上をインストールする場合の注意点
.NET Framework 3.0のインストーラのダウンロード
古いバージョンのWinetricksでは、バージョン3.0のダウンロードファイルは取得URLの関係でMicrosoft以外のサイトから手動でダウンロードして指定ディレクトリに配置する必要があったが、Wayback MachineのURLを指定するようにするパッチを2015年7月中旬に(GitHubのリポジトリに)取り込んでもらうことができたので、これよりも後に公開されたバージョンでは自動的にダウンロードされる。
.NET Framework 3.0のインストーラの終了手順と不具合対処
バージョン3.0のインストーラは実行するとシステムトレイに通知バルーンを表示して常駐し、自動的には終了しないため、インストール終了の通知が表示されたらシステムトレイアイコンのコンテキストメニューの “終了” を選択する必要がある。あるいは、(全パッケージのライセンスに同意しているのが前提となるが)Winetricksに-q
(--unattended
)オプションを付けて実行する(このインストーラを含む全てのインストーラが非対話的に実行されて自動的に終了する)。
Ubuntuでカーネルに関係したバグによってインストールに失敗する場合は
$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope (もしくは) $ sudo sh -c 'echo 0 > /proc/sys/kernel/yama/ptrace_scope'
のいずれかを実行することで回避できるようだが、手元のUbuntu 15.04上のWine 1.7.44ではインストール終了の通知まで進んでいるため、効果があるかは未確認。
バージョン3.5以上をインストールする場合の注意点
.NET Framework 3.5のインストーラにおけるmsxml3の不具合回避処理
バージョン3.5のインストーラはWineにおける “msxml3” ライブラリのバグ[2]によりそのままでは正しく動作せず、回避策としてWindowsネイティブ版の “msxml3” ライブラリが必要となっている[3]。
msxml3のダウンロードとインストール
このパッケージもWinetricksでインストール可能(自動的に選択される)となっており、古いバージョンのWinetricksではファイル取得URLの関係でMicrosoft以外のサイトから手動でファイルをダウンロードして指定ディレクトリに配置する必要があったが、こちらも2015年7月中旬にパッチを取り込んでもらうことができたので、これよりも後に公開されたバージョンでは自動的にダウンロードされる。
この “msxml3” のインストーラもバージョン1.6.2のWineでは正しく動かないが、バージョン1.7.44時点では正しく動作する。
まとめと作業例
- .NET Framework専用の
- 32bit用のWine環境を新規に用意して
- 最新のWineとWinetricksを用いて
- 色々なバージョンに対応させる必要があれば一番新しいバージョンのパッケージを指定する
- バージョン3.0のインストーラはシステムトレイアイコンから終了し、Ubuntuで不具合が起きたら
/proc/sys/kernel/yama/ptrace_scope
を “0” にする - 途中でキャンセルもしくは失敗した場合はWine環境作成からやり直す
- Winetricksに
-q
オプションを付けて実行するとインストーラの操作が不要(全パッケージのライセンス同意が前提)
下はインストール作業とアセンブリ実行の例。
(Wine環境の上のディレクトリがない場合に作成) $ test -d ~/wineprefixes || mkdir ~/wineprefixes/ (専用の新しいWine環境へ2.0から4.5までを非対話的にインストール) $ rm ~/wineprefixes/dotnet -fr $ XDG_CACHE_HOME=/path/to/cachedir WINEARCH=win32 WINEPREFIX=~/wineprefixes/dotnet winetricks -q dotnet45 (Mono/.NETアセンブリを実行) $ WINEPREFIX=~/wineprefixes/dotnet wine /path/to/assembly.exe
- Wine 1.6.2, 1.7.44
- Winetricks 2015/7/13