小さなAppleScriptの助けが必要


1

私はYosemite 10.10.4、Mac Miniを使っています。 私はWineでQuake3 Arenaを起動するための小さなBashシェルスクリプトを持っています。それはうまくいきます。

#¡/bin/bash
cd Desktop/Quake3ISO
hdiutil mount "Quake 3 Arena.iso"
cd Quake3
wine quake3.exe

2行目:isoを含むデスクトップ上のフォルダーにcdし、さらにisoからファイルを抽出します。私はそれが混乱であることを知っていますが、それが私がそれを機能させることができる唯一の方法です。

3行目:isoをマウントする

4行目:最初のフォルダ内のQuake3というフォルダに移動します。

5行目:そのディレクトリにある "wine quake3.exe"を実行します。 (デスクトップ/ Quake3ISO / Quake3)

そのため、。/quake3.shを試すとisoがマウントされ、プログラムが楽しく実行されます。

しかし... 私はAppleScriptで同じことをやろうとしています、しかしそれはquake3のための設定ファイルを見つけるのに失敗しています。 それはイメージをロードし、ディレクトリを変更し、wineを起動し、そしてquakeを始めます、しかし今それは設定ディレクトリ、そしておそらく他の少数のファイルを見つけることができません。設定ディレクトリもその下にあります(Desktop / Quake3ISO / Quake3 / baseq3)フォルダ

Q3 1.11 win-x86 Nov 24 1999
----- FS_Startup -----
Current search path:
Z:\Users\robert/baseq3

----------------------

Running in restricted demo mode.

----- FS_Startup -----
Current search path:
Z:\Users\robert/demoq3

----------------------
----- CL_Shutdown -----
-----------------------
Couldn't load default.cfg

追加するのを忘れました。私のApplescript

tell application "Terminal"
    activate
    do script "cd ~/Desktop/Quake3ISO"
    do script "hdiutil mount ~/Desktop/Quake3ISO/Quake\\ 3\\ Arena.iso"
    delay 5
    do script "cd ~/Desktop/Quake3ISO/quake3"
    do script "wine ~/Desktop/Quake3ISO/quake3/quake3.exe"
end tell

もう少し実験した結果、以下のことがわかりました。 QuakeIIIと同じように、CDはドライブに入っていなければなりません。それでそれをマウントすることはそれを直すようです。 次に、〜/ Desktop / Quake3ISOディレクトリにインストールしましたが、数年前にはワインインストールもしました - これは実行できませんでした。 しかし今、私は〜/ Desktop / Quake3ISO / Quake3 / baseq3フォルダー内のすべてのファイルを〜/ .wine / drive_c / Program \ Files / Quake \ III \ Arena / baseq3フォルダー内のwineインストールフォルダーにコピーしましたそのワインフォルダから直接Quakeを実行します。

   ie
    cd "/Users/robert/.wine/drive_c/Program Files/Quake III Arena"
    wine quake3.exe

そしてそれはうまく動きます。

〜/ Desktop / Quake3ISO / Quake3フォルダでも同じことができます

ie
cd ~/Desktop/Quake3ISO/Quake3
wine quake3.exe

...そしてそれはうまく動きます。

そのため、実行するコマンドは変更したディレクトリで実行する必要があることをAppleScriptに理解させる必要があることがわかります。それで、プログラムがそれの設定ファイルを探すとき、それはベースとして、またはルートディレクトリで、ワインベースディレクトリとしてではなく、そのディレクトリを使いますか?おもう?


あなたの質問にAppleScriptのソースコードを追加できますか?
nohillside

すみません、ちょうどそれをしました。忘れてた。
Harry McGovern

あなたは使うべきです do shell script ではない do script。見て: AppleScriptでシェルスクリプトを実行する
user3439894

まだ動作しません。少し違うエラー。 Z:/ baseq3が見つかりません。ベースディレクトリを自分がcdしたディレクトリに設定する必要があります。
Harry McGovern

回答:


1

すべての do shell script コマンドは新しいシェルを起動します。 cd 次のコマンドには影響しません。それであなたは走っているほうがよいでしょう

tell application "Terminal"
    activate
    do shell script "cd ~/Desktop/Quake3ISO && hdiutil mount ~/Desktop/Quake3ISO/Quake\\ 3\\ Arena.iso"
    delay 5
    do shell script "cd ~/Desktop/Quake3ISO/quake3 && wine ~/Desktop/Quake3ISO/quake3/quake3.exe"
end tell

ありがとうございます。最も優れています。私はそれが単純なものでなければならないことを知っていました。今私は何が起こっているのか理解している、私は再びその間違いをしない。ありがとうございました。この質問に対する回答を検討してください。
Harry McGovern
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.