トップページ | 過去記事(月別カテゴリー別) | 掲示板 | 野良DEB,RPM | 更新チェック | Twitter

備考録一覧に戻る

Wine設定メモ

Fedora 12、Ubuntu 9.10向けのメモ

1. Wineとは

Linux上でWindowsアプリケーションを動作させることができるソフト

公式サイト
Wikipedia

2. Wineの基本

試験運用中なLinux備忘録の「Wineの基本的な部分をまとめて」に詳しく書いてある

とりあえず、、、、
フォルダ構成
$HOME/.wine/
設定ファイルなどは全てここに置かれる。設定を初期化したい場合は削除すればいい
$HOME/.wine/drive_c/
ここをCドライブして使う
付属コマンド(括弧内はFedoraのメニュー)
winecfg
Wineの設定を行う [アプリケーション]→[Wine]→[Wine Configuration]
regedit
レジストリエディタ [アプリケーション]→[Wine]→[Wine registry editor]
wine uninstaller
プログラムの追加と削除 [アプリケーション]→[Wine]→[Wine Software Uninstaller]
これだけ知ってれば何とかなる…かな?

3. 本体のインストール

•Fedora
$ su -c "yum -y install wine.i686"
•Ubuntu
$ sudo apt-get -y install wine
インストールが終わったら初期設定ファイルを作るために
$ winecfg
(wineprefixcreateでもいい。というか、何でもいい)
を一度実行する。おそらく文字化けしてるはず。その辺は下を参照

4. 最初にする設定

・winetricks の導入

ランタイムパッケージなどが簡単にインストールできるスクリプト。あると便利
http://wiki.winehq.org/winetricks

•Fedora
$ su
# yum -y install cabextract
# curl http://www.kegel.com/wine/winetricks -o /usr/local/bin/winetricks  
# chmod +x /usr/local/bin/winetricks
$ exit

•Ubuntu
$ sudo apt-get -y install cabextract
$ sudo wget http://www.kegel.com/wine/winetricks -O /usr/local/bin/winetricks  
$ sudo chmod +x /usr/local/bin/winetricks

・日本語が表示されない・文字化けするのを直す

$HOME/.wine/drive_c/windows/Fonts/ にフォントファイルを一つコピーすれば直る。本物のWindowsから msgothic.ttc を拝借するのが一番良いかと思う(ライセンス的にどうなのか不明だけど)

winetricks でフォントを入れてもいい

$ winetricks wenquanyi
ついでに文字が汚いのを綺麗にする(Ubuntuでは不要?)
$ winetricks fontsmooth-rgb
まれにフォントを入れてもメニュー等が表示されないソフトがある。特にsetup.exe等のインストーラーでよくなる気がする。フォントリンクの機能を使えば直るかもしれない。regedit(レジストリエディタ)を起動して

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink (無ければ作る)

の中に「Tahoma」という複数行文字列値(Multi String Value)を新規に作成。値に下の文字列を入れる
VL-Gothic-Regular.ttf,VL ゴシック
これで駄目なら、そのプログラムが使用しているフォントを調べて同じ設定をしたり、もしくは「フォント置換」を使えばいいらしい。でも私はそこまで頑張る気にはなれない
試験運用中なLinux備忘録・別館 ユーザインターフェース(UI)のフォント

・日本語入力が変(Ubuntuのみ)

最近のWineは問題なく入力できるが、古いバージョンでは長い文章を一度に入力できない。そして、UbuntuのWineは古い(wine1.2もあるけど)

もしかしたら以下のコマンドで直る…直らないな。古いwineはregが変?

$ wine reg add "HKCU\Software\Wine\X11 Driver" 
$ wine reg add "HKCU\Software\Wine\X11 Driver" /v InputStyle  /d root /f 
仕方ないので無理やり
$ echo '[Software\\Wine\\X11 Driver]' >> $HOME/.wine/user.reg
$ echo '"InputStyle"="root"' >> $HOME/.wine/user.reg
(Wineが停止した状態でやること)
これでいける… いけない? あれ?

・Gechoエンジンをインストール(Fedoraのみ)

HTMLを処理するのに必要で、先に入れておいた方がいいと思う(Ubuntuは最初から入っているので不要)

$ winetricks gecko

・余計な関連付けを外す(Fedoraのみ?)

勝手に notepad 等が関連付けされて邪魔

$ rm -f ~/.local/share/applications/wine-extension-{htm,html,ini,rtf,txt,wri,xml}.desktop 

5. 使い方・実行方法

普通に
$ wine hoge.exe

実行属性を付けてもOK
$ chmod +x hoge.exe
$ ./hoge.exe

*.msi ファイルは
$ msiexec /i setup.msi
端末から行わなくても、ファイルマネージャーに「Wine Windows Program Loader」が関連付けされるので、マウスクリックでもいける。

6. Winアプリのアンインストール

本家Windowsと同じで、フォルダごと削除していいならそのまま削除。アンインストーラーを使うソフトは、下記のコマンドで「プログラムの追加と削除」を出す
$ wine uninstaller
ここからアンインストールしても、デスクトップのアイコン・メニュー登録・関連付けは残る。完全に消すには
~/.config/menus/applications-merged/wine-Programs-*.menu 
~/.local/share/applications/wine/Programs/*.desktop 
~/.local/share/icons/* 
~/.local/share/mime/* 
~/.local/share/desktop-directories/wine-Programs-*.directory 
この辺から該当ソフトのファイルを削除する。自動でやってほしいな…

7. Wineでゲームするなら

・DirectXをインストール

winetricksを使えば楽

$ winetricks directx9
動作確認は
$ wine dxdiag.exe
普通はDirectX診断ツールが表示される。でも私の環境ではうまくいかない。謎。

・Windows Media Player 9をインストール

無いと動かないゲームがある。先に入れておく。wmp10 の方が良いかも?

$ winetricks wmp9

・MIDIのBGMが聴こえない

下の「8. MIDIを鳴らす」を参照

8. MIDIを鳴らす

あとで書く

9. ソフトが動かない・挙動が変

・動作に必要なランタイムライブラリがないか調べる

作者のサイトや説明書をよく読んで、必要ファイルがあるならインストールする。必要DLLが足りないと下のようなエラーが表示される

$ wine foo.exe
err:module:import_dll Library hoge.dll (which is needed by L"C:\\foo.exe") not found
DLLやOCXは有名な物なら winetricks でインストールできる。手動で $HOME/.wine/drive_c/windows/system32/ にコピーした場合は regsvr32 コマンドでレジストリに登録しないと使えないかも?
$ regsvr32 hoge.dll

・検索サイトでやり方を調べる

見つかったらいいね

・Wine Application Database(AppDB)で調べる

ユーザからの動作報告がデータベース化されている
http://appdb.winehq.org/

・使用DLLをNativeにしてみる

Wine内蔵のDLLをオリジナルに置き換える

・諦める

無理な物は無理

10. Wine内蔵のDLLをオリジナルに置き換える

Wineが実装する「Windows互換DLL」の互換性は完全ではなく、全てのソフトに対応しているわけではない。しかし、そのままでは動作しない場合でも、本物のWindowsからオリジナル(Native)のDLLを持ってくると、動きだす場合がある。

置き換えるにはオリジナルのDLLを $HOME/.wine/drive_c/windows/system32/ に上書きコピーした後、winecfg の「ライブラリ」タブでそのDLLを追加し、「Native」に設定する。

何のDLLをオリジナルに変更するかだけど、まずは普通に実行してdllのエラーが出てないかを見てみる。例えば
$ wine hoge.exe
err:module:import_dll No implementation for msvcrt.dll
fixme:seh:*** call to unimplemented function msvcrt.dll.*
wine: Call from * to unimplemented function msvcrt.dll, aborting
こんな風に表示されるなら、nativeの msvcrt.dll を使えば動く…かもしれない

他にも
err:ole:create_server class {***} not registered
err:ole:CoGetClassObject no class object {***} could be created for context 0x5
fixme:ole:OLEPictureImpl_FindConnectionPoint no connection point for {***}
この場合は勘で ole32.dll や oleaut32.dll を適当にnativeにしていけばいいのかな? よく分からん。

WINEDEBUG=+loaddll を付けて実行すると、DLLの読み込み情報が表示される
$ WINEDEBUG=+loaddll wine hoge.exe 2>&1| grep builtin
trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\rpcrt4.dll" at 0x69010000: builtin
trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\ole32.dll" at 0x68f10000: builtin
...
これらのDLLを一つずつnativeにしていくと、いつか動くかも?

kernel32.dll, gdi32.dll, user32.dll, ntdll.dll の4つは置き換えてはいけないらしい。

11. その他

基本的にドラッグ&ドロップはできない
http://wiki.winehq.org/DragAndDrop

コントロールパネルは「wine control」で開ける

音がちゃんと出ない時はwinecfgで「DirectSound」の「ハードウェアアクセラレーション」を「エミュレーション」にすれば直るかも?

フルスクリーンのゲームで解像度変更が上手くいかない場合は仮想デスクトップのエミュレートすればいけるかも?

フルスクリーンのゲームを終了しても解像度が直らない場合は xrandr -s 0 する

環境変数 WINEPREFIX で $HOME/.wine の場所を移動できる

12. 参考サイト

試験運用中なLinux備忘録のWineカテゴリ
試験運用中なLinux備忘録・別館
Wine User Guide


累計:829864、今日:750、昨日:1480
Created in 0.0099 sec.