2015/09/06

2015年にWinetricksに対して行った改善点

2015年7月からWinetricksを改善するためのパッチをGitHub上で幾つか取り込んでもらっており、その修正点(改善された点)について、細かいものを除いて主なものをここで紹介する。

  1. 2015年夏の改善点
    1. ファイルダウンロードにおけるWayback Machineの使用
    2. gm.dlsのインストール機能
    3. Managed DirectXのインストール機能
  2. 2015/12/15追記:秋から冬にかけての改善点
    1. 幾つかの64bitネイティブ版DLLのサポート
    2. IPAモナーフォントと同フォントを用いた置換設定のサポート

2015年夏の改善点

2015年夏に取り込んでもらった改善点は、バージョン “20150826” 時点では全て適用されている。

ファイルダウンロードにおけるWayback Machineの使用

2015年の6月末時点ではMicrosoft .NET Frameworkの幾つかのバージョンで必要なパッケージの配布ファイルがMicrosoftのサーバから入手できなくなっており、ファイルを指定サイトから手動でダウンロードした上で指定ディレクトリへ配置する必要があったため、代わりにWayback Machine上のURLから自動でダウンロードされる(手動でのダウンロードと配置が必要なくなる)ような修正を行った。

当時のWinetricksではパッケージのダウンロード処理にWayback MachineのURLを使用しているものはなかったので、何か使わない理由があるのかとも思ったが、パッチは歓迎されて受け入れられた。これにより、.NET Frameworkをインストールする際のダウンロードが全て自動的に行われるようになり、インストールがしやすくなった。

また、2015年時点でWinetricksの大部分の開発を行っている開発者がこのパッチ取り込みの後に他の幾つかのパッケージにおいてWayback Machine上のURLを用いるようになったりもしている。

(2016/3/17)その後のバージョンでファイルダウンロードに関する挙動が改良され、 “指定URLからのダウンロードに失敗した場合にWayback Machineからの取得を試みる” という動作になった。これに伴い、ここで扱った取得URLの変更は(形の上では)取り消され、後述の “gmdls” のようにはじめからWayback Machine上のURLが記述されていたものについてもURLの指定はMicrosoftのサーバ上のリンクの切れた場所になっている(取得の失敗やリダイレクトが増える分だけダウンロードにかかる時間は少し長くなった)。

gm.dlsのインストール機能

DirectMusicを用いたプログラム[1]でMicrosoft Synthesizerから使用されるMIDI音源データのgm.dlsWinetricksで自動的にインストールするための機能を追加した。64bit対応のWine環境にも対応している。

これは “gmdls” を指定することでインストールされるが、現状ではDirectMusicのWine版の実装が不十分(該当バグ)なため、別途 “directmusic” も指定する必要がある。

(gm.dlsのみをインストールする場合)
$ winetricks gmdls

(gm.dlsとネイティブ版DirectMusicをインストールする場合)
$ winetricks gmdls directmusic

この入手元にはDirectX 8.1の再頒布可能パッケージ(Wayback Machine上)を利用している。[2]これは、同一の(内容の)gm.dlsを含んだDirectX 9.0cの2005年から2006年頃の再頒布可能パッケージよりもファイルサイズが小さい。[3]

また、DirectX 診断ツール(dxdiagコマンド)をインストールする機能についても、このgm.dlsとネイティブ版DirectMusicを利用することで正常に動作するように修正し、 “dxdiag” パッケージを1つWinetricksでインストールするだけで “ミュージック” タブから “DirectMusic のテスト” を押すとテスト曲が流れるようになった。

(DirectX 診断ツールをインストール・これだけでDirectMusicのテストが正常に動作する)
$ winetricks dxdiag

パッチを出した際、このファイルを用いたプログラムの具体例についてを質問されたが、DirectX 診断ツールについてをDirectMusicのバグ関係とともに伝えた結果、最終的にパッチは取り込まれ、同ツールのインストール処理の改善についてもスムーズに取り込まれた。

Managed DirectXのインストール機能

で扱った、DirectXを.NET Frameworkから使うための非推奨な言語バインディング “Managed DirectX” を、DirectXの再頒布可能パッケージのインストーラと同様にWine環境へ単体で(インストーラを用いずに)インストールするための機能を追加した。インストーラを用いた結果を再現する形で実装し、主な処理はcabextractで再頒布可能パッケージの配布ファイルから中身を取り出してインストーラ使用時と同じディレクトリ構造を出力することとなっている。

下は “Managed DirectX” のインストール作業例。

(Managed DirectXを単体でインストール)
$ winetricks mdx

このパッケージはこれまでも “directx9” パッケージを選択することでインストールすることはできていたが、他の多数の無関係なネイティブ版DLLが同時にインストールされる上にそれらをWine版より優先する設定もされてしまうため、単体でインストール可能にできたらよいと考えて作っていたところ、タイミング良く開発者がこのパッケージに需要があることを示していたため、急遽パッチを出すことにした。動作テストについて質問をされたが、.NET 2.0を使ったソフトウェアと.NET 3.5を使ったソフトウェアの2例で動いていることを伝えるとパッチは取り込まれた。

2015/12/15追記:秋から冬にかけての改善点

2015年の秋から冬にかけて追加で取り込んでもらった主な改善点について、1つの記事にするには短いのでここに追記することにした。細かいものについては省略する。

幾つかの64bitネイティブ版DLLのサポート

DirectX関係の一部やVisual C++のランタイムのパッケージは64bit版Windows向けのファイルが配布されており、従来のWinetricksでは64bit対応のWine環境を使用していても32bit版しかネイティブ版のDLLが配置されなかったが、2015年の秋に段階的にこれらを64bit版もインストールされるように対応し、 “20151116” のリリース時点では対応済みとなっている。

ただし、DirectX関係で(2010年2月版までの再頒布可能パッケージに含まれる)dxnt.cabに含まれているファイル(例:DirectMusic関係のDLLやDirectX 診断ツール)など、32bit版しか再頒布可能パッケージに含まれていないものについては今後も32bit版のみしか利用できない。

64bit対応したパッケージ名は以下。

  • DirectX関係
    • d3dx9_[数字], d3dx9
    • d3dx10
    • d3dx11_[数字]
    • d3dcompiler_43
    • xinput
    • xact, xact_jun2010
  • Visual C++ランタイム [4]
    • vcrun2012
    • vcrun2013

IPAモナーフォントと同フォントを用いた置換設定のサポート

2015年12月、IPAモナーフォントをインストールするための機能と、MSゴシック系とMS明朝系のフォント名に対してIPAモナーフォントを用いて置換する設定を適用するための機能を取り込んでもらうことができた。これにより、日本語フォントの表示に問題がある場合(レイアウト崩れ含む)の大部分に対して簡単に対処できるようになった。 “20151116” よりも新しいリリースで対応する。

(2015/12/28)リリース “20151227” が公開され、このバージョンの時点では対応済みとなっている。

フォント置換設定までを行うには “fakejapanese_ipamona” を、IPAモナーフォント自体のインストールのみを行うには “ipamona” を指定する。

(IPAモナーフォントをインストールした上で置換設定を適用する)
$ winetricks fakejapanese_ipamona
[1]: DirectMusic対応のMIDIプレーヤの他、RPGツクールのXP以降やWOLF RPGエディター (ウディタ)で作られたゲームなど
[2]: 2010年版の配布ファイルには含まれていない
[3]: ダウンロード時間とディスク使用量の両方でメリットがある
[4]: “2010” と “2015” のバージョンは別の開発者により対応済み