mattintosh note

どこかのエンジニアモドキの備忘録

Finder で選択した項目を Wine で開く(ターミナル兼用版)

Automator Automator を使った Finder 用サービスのサンプルです。Finder で選択したファイルをコンテキストメニューからターミナルアプリケーションを経由して Wine で実行します。


WINELOADER の部分は MacPorts 用なのでそれ以外の場合はパスを変更して下さい。ターミナルアプリケーションを経由するので WINEPREFIX はシェルのプロファイルに書いてあるものがそのまま使われると思いますが、上手く行かないようであればヒアドキュメントの部分に export WINEPREFIX=$HOME/.mywine というような感じで追加して下さい。

ファイルは start /Unix で開くようにしているので msiexec /i の記述をしなくても MSI ファイルが開けます。複数ファイルの同時起動にも対応していますがレジストリに悪い影響を与えるかもしれません。

※2013年04月13日にコードを修正しました。

# template: services
# application: Finder
# shell: /bin/bash
# mode: stdin

WINELOADER=/opt/local/bin/wine

LANG=ja_JP.UTF-8
while read f
do
    test -f "${f}" || continue
    tmp=/tmp/$(uuidgen)
    cat <<__EOF__ > ${tmp} && chmod +x ${tmp} && open ${tmp}
#!/bin/sh
LANG=ja_JP.UTF-8
trap "rm ${tmp}" EXIT
${WINELOADER} start /W /Unix '${f}'
__EOF__
done

ターミナルを使用しない場合は MacPorts や Homebrew でインストールした Wine を AppleScriptMac OS アプリケーションのようにすることもできます。詳しくは以下のリンクからどうぞ。

Mac で AppleScript を使って Wine.app を作成する - mattintosh note -hatena- Mac で AppleScript を使って Wine.app を作成する - mattintosh note -hatena-