Perlu bantuan dengan AppleScript kecil


1

Saya menggunakan Yosemite 10.10.4, Mac Mini. Saya memiliki skrip shell Bash kecil untuk memulai Quake3 Arena di Wine. Ini bekerja dengan baik.

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

Baris 2: cd ke folder di desktop saya yang berisi iso, dan juga mengekstrak file dari iso. Saya tahu ini berantakan, tapi itu satu-satunya cara saya bisa membuatnya bekerja.

Baris 3: pasang iso

Baris 4: cd ke folder di dalam yang pertama, disebut Quake3

Baris 5: jalankan "wine quake3.exe" yang hidup di direktori itu. (Desktop / Quake3ISO / Quake3)

Jadi, cobalah ./quake3.sh memasang iso, dan menjalankan program dengan senang hati.

Tapi ... Saya mencoba melakukan hal yang sama di AppleScript, tetapi gagal menemukan file konfigurasi untuk quake3. Itu memuat gambar, dan mengubah direktori, menjalankan anggur dan mulai gempa, tetapi sekarang tidak dapat menemukan direktori konfigurasi, dan mungkin beberapa file lainnya. Direktori konfigurasi juga di bawah folder (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

Saya lupa menambahkan. Applescript saya

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

Setelah beberapa percobaan lagi saya menemukan yang berikut. Seperti biasa dengan QuakeIII, CD harus ada di drive. Jadi pemasangan sepertinya memperbaikinya. Selanjutnya, saya telah menginstal di direktori ~ / Desktop / Quake3ISO, tetapi beberapa tahun yang lalu juga melakukan instalasi wine - yang tidak akan berjalan. Tapi barusan saya menyalin semua file di folder ~ / Desktop / Quake3ISO / Quake3 / baseq3 ke folder instal anggur di ~ / .wine / drive_c / Program \ Files / Quake \ III \ Arena / baseq3 folder, dan sekarang saya bisa jalankan Quake langsung dari folder anggur itu.

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

dan itu berjalan dengan baik.

Saya juga bisa begitu di folder ~ / Desktop / Quake3ISO / Quake3

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

... dan itu berjalan dengan baik.

Jadi ini memberitahu saya bahwa saya perlu membuat AppleScript memahami bahwa perintah yang akan dieksekusi harus dieksekusi di direktori yang diubah. Sehingga ketika program mencari file konfigurasi, ia menggunakan direktori itu sebagai basis, atau direktori root dan bukan direktori basis anggur? Kupikir?


Bisakah Anda menambahkan kode sumber AppleScript ke pertanyaan Anda?
nohillside

maaf, baru saja melakukannya. Saya lupa.
Harry McGovern

Anda harus menggunakan do shell scripttidak do script. Lihatlah: lakukan skrip shell di AppleScript
user3439894

Masih tidak berfungsi. Kesalahan yang sedikit berbeda; Tidak dapat menemukan Z: / baseq3 sekarang. Saya perlu mengatur dir dasar ke dir I cd ke.
Harry McGovern

Jawaban:


1

Setiap do shell scriptperintah memulai shell baru, sehingga cdtidak memiliki dampak pada perintah berikut. Jadi Anda akan lebih baik dengan berlari

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

Terima kasih Pak. Paling bagus. Saya tahu itu pasti sesuatu yang sederhana. Sekarang saya mengerti apa yang terjadi, saya tidak akan membuat kesalahan itu lagi. Terima kasih lagi. Pertimbangkan pertanyaan ini dijawab.
Harry McGovern
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.