Mac: Mac OS X上でWindowsアプリを実行する方法 – Wine / MikuInstaller

以前よりMac上でWindowsアプリを動かすためParallelsを利用していますが、ライセンスの関係上1台のみにParallelsをインストールしていて、複数ある他のMacではWindowsアプリを動かしたくても動かせずにいました。

ところが、実家に設置しているMac Mini上でどうしてもWindowsアプリを動かす必要が発生し、色々探していたところ「Wine」というものにたどり着きました。この仕組みを使うと、Unixシステム上でWindowsの.exe拡張子ファイルを実行する事が出来るもので、何よりこれはWindows OSを必要とせず無料で利用する事が出来ます。

しかし、基本はLinux OS向けに開発が進められている様でMac OS Xで使うには多少の工夫が必要な様子。あまり時間がなかった為、Mac OS X上でより容易に導入できる方法を探した結果、「MikuInstaller」というWine同様無料のプロジェクトを発見しました。このMikuInstallerは前述のWineを同梱したMac OS X向けのアプリで、Windows用の実行形式ファイルやセットアップファイルをMikuInstallerのアイコンにドラッグ&ドロップするだけで実行してくれます。

早速試してみましたので簡単に説明してみます。

その1: MikuInstaller (.dmgファイル) をダウンロードして開く。

その2: 頻繁に使う事を考慮して、MikuInstallerをアプリケーションフォルダにドラッグ&ドロップしてインストール。

その3: Windowsアプリ (.exeファイル) をアプリケーションフォルダ内のMikuInstallerへドラッグ&ドロップ。初回は少し時間がかかる場合がありますが、しばらくしてWine上で動作するWindowsアプリであればMac OS Xのウィンドウとしてそのアプリケーションが起動して動作します。

と、思ったより簡単に導入でき、小規模なWindowsアプリであれば簡単に動作させる事が出来ます。ただし、現在公開されているMikuInstallerは2008年頃のリリースの為、同梱されているWineも古いバージョンとなっています。さらにWineを使えば全てのWindowsアプリが動作する訳ではない為、アプリによってはエラーが表示されて動作しない事があります。こればかりは仕方が無いかもしれません。

また、コマンドライン上で動作するアプリの場合、少しコツが必要かもしれません。少なくともウチが動作させたいアプリ tssplitter.exe はそのまま単純には動作しませんでした。

色々試した結果、tssplitter.exeは以下の方法で動作させる事が出来ました。

ターミナルを起動して、以下のコマンド。

/Applications/MikuInstaller.app/Contents/Resources/Wine.bundle/Contents/MacOS/wine <Winアプリへのパス/ファイル名.exe>

表示が複数行になっていても実際には1行です。例えば、HDDのルートフォルダにtssplitter.exeが置いてある場合、次の様になります。

/Applications/MikuInstaller.app/Contents/Resources/Wine.bundle/Contents/MacOS/wine /tssplitter.exe

もちろん、Windowsアプリに与えたい引数がある場合はスペースで続けて入力すれば引き渡す事が出来ました。

この事から、MikuInstallerに同梱されているWineの本体は、MikuInstallerのパッケージ内 ‘Contents/Resources/Wine.bundle/Contents/MacOS/wine’ に配置されている事が分かりました。

tssplitter.exeはfriioで録画した .ts ファイルから不要なデータを取り除く為に使おうと思っており、実際に録画したファイルを上述の方法で処理した結果正常に動作しました。今まではMac OS Xへ移植されたtssplitter_liteアプリを使っているのですが頻繁にエラーが発生する為、今後はWindows版のtssplitter.exeをWineで動作させて処理してみようと思います。

参考リンク:

MikuInstaller – sourceforge

WineHQ – Wine project

friio で地デジ録画 – Logon Blog

Friio 白 (デジタルハイビジョンテレビ アダプター 地上デジタル放送専用) – Amazon.co.jp

 

 

iCal用iCalリモート録画予約スクリプトV.3

以前からウチのホームページで紹介していますが….

ONTVというオンラインテレビ番組サイトのメール予約機能を使い、そのメールをMac上のMailで受け取って自動的にAppleScriptを生成し、iCalにイベントを生成するスクリプト。

自動生成するAppleScriptの内容をもう少し見直し、recfriioを実行するタイミングをより番組の開始時刻に合わせました。良かったら使ってください。

BlueDiamond Web.ONTV + Mail + iCal + friio (v.3)

Mac de friio – Mail reservation script Version 2

しばらく前にホームページの方で公開したONTVサービスからのメールでfriioの録画スクリプトを作り、それを時間になったら実行する為のiCalイベントを作るスクリプト。(文章で書くとややこしい)
自分で使っていてバグを見つけてしまいました。

という事で、バージョン2を置いておきましたので、Mac + ONTV + Mail + iCal + friio な方はお使い下さい。

ちなみにバグの内容ですが…。

概要: dtStartDate / dtEndDateという変数に録画開始/終了日を代入する処理にバグがありました。

前提として、inttvYearには番組開始日の「年」、inttvMonthには番組開始日の「月」、inttvDayには番組開始日の「日」が入っているとします。この状態でdtStartDateに番組開始日を代入する為に次の様な処理をしていました。

  1. set dtStartDate to current date
  2. set year of dtStartDate to inttvYear
  3. set month of dtStartDate to inttvMonth
  4. set day of dtStartDate to inttvDay

1行目: dtStartDateに現在の日付を代入します。
2行目: dtStartDateの年を番組開始日の「年」に変更。
3行目: dtStartDateの月を番組開始日の「月」に変更。
4行目: dtStartDateの日を番組開始日の「日」に変更。

この場合、1月30日に2月3日の番組録画予約を行おうとした場合、3行目の処理でdtStartDateが「2月30日」 になろうとする為実際には存在しない日付になってしまいます。Applescriptはこの様に異常な日付になると翌月になってしまう様でdtStartDate変数は一度「3月30日」になり、最終的には2月3日の番組録画予約をしたつもりが、3月3日に予約されてしまいました。

解決策として、1行目と2行目の間で 一旦dtStartDateの「日」を「1」にする事でとりあえず回避。
おそらくもっとスマートな方法があるのでしょうが、まだ勉強を初めたばかりのウチの能力ではこれが限界 (^^;;

friio で地デジ録画

Windows用の地上デジタルチューナーですが、Macでも使えそうな情報が沢山あったので、先月、friioを購入しました。注文から3日で手元に届き、有志の方々が作ったMac用ドライバーや録画アプリケーションを入れて早速動作チェック。思ったよりもすんなり動きました。

従来は、NECのPK-AX10(アナログチューナーHDDレコーダー)でTV番組の録画予約を行っていましたが、今後friioで同様の事を実現する為、iPhoneを使って外出先からでも録画予約をしたくなり、自分でAppleScriptを作ってみました。色々なリソースを参考にしながら、ONTVサービスからのMAIL録画予約メールをMailで受け取り、その内容を自動で処理してiCalにアラーム付きイベントを追加する動作をするスクリプトです。

必要な物は

  • Mac OS X (Leopardで動作検証しました)
  • Mail (ONTVのMAIL録画予約を受信するために設定しておく)
  • iCal (当然Leopardに入っていますが…)
  • friio
  • Mac用friioドライバー
  • recfriio
  • Growl (通知が不要な方はスクリプトを解読して修正してください)
  • ONTVのユーザ登録とMAIL録画予約設定

といったところです。

詳しくはBlueDiamond Web.に掲載していますのでご覧下さい。

約1ヶ月、このAppleScriptで録画予約しながら使っていますが、順調に動いているようです。まだ修正の余地はありますが、もしfriioをMacで使われている方で使えそうであればどうぞ。