アプリ版:「スタンプのみでお礼する」機能のリリースについて

「ディスクイメージを3つマウントした後にEPWING閲覧ソフトを立ち上げる」という
スクリプトをアップルスクリプトで組んでOS9で使っていました。

tell application "Finder"
activate
open {file "FOKS.img" of folder "Applications (Mac OS 9)" of startup disk, file "Wa-Doku.img" of folder "Applications (Mac OS 9)" of startup disk}
open file "CeDar1.6" of folder "CeDar1.6 folder" of folder "Applications (Mac OS 9)" of startup disk
end tell

というスクリプトなのですが、これをOSX(10.3)用に改造して使おうとしたところ、ディスクイメージのマウント時に「検証中」というバーが出るようになったので、マウントが終わる前に次の動作に進んでしまって「ディスクが見つかりません」というエラーになってしまうためにスクリプトを2つに分けて2段階で起動しなければならなくなってしまいました。
また、OSXではマウントしたディスクイメージのコンテナウインドウも開いてしまうのでこれを閉じてやる命令も加えなければならず、マウントするところまでと、コンテナウインドウを閉じてCeDarを立ち上げる過程との2つのスクリプトを順番に実行しなければなりません。

こんな面倒な事をせずに、イメージのマウントを待って次の作業に移るような1つのスクリプトで全作業が終わるようにしたいのですが不可能でしょうか?
まず、ディスクイメージマウント時の「検証」をスキップさせるようにimage mounterの初期設定を変えたいのですが、これもやり方がわかりません。

一つのスクリプトを実行するだけで、「検証中」のバーが消えるまで待ったりキャンセルをわざわざクリックしなくてもワンタッチで辞書が使えるようにするにはどうしたらよいでしょうか?

A 回答 (4件)

必要なディスクがマウントするまで待つ方法もあります。


補足にありましたディスク名を使って書いてみました。
--
repeat
if (list disks) contains "KENKYUSHA_CHUJITEN" and (list disks) contains "CRGER" then exit repeat
delay 5 -- 5秒待つ
end repeat
--
これで必要なディスクがマウントされるまでrepeatの中を繰り返し続けます。

ウィンドウが開いたタイミングで反応することもできます。
--
tell application "Finder"
repeat
set |ALLWinName| to name of every Finder window
if |ALLWinName| contains "KENKYUSHA_CHUJITEN" and |ALLWinName| contains "CRGER" then exit repeat
delay 5 -- 5秒待つ
end repeat
beep
end tell
--

補足にあった2つのスクリプトの間にこのどちらかを置けばマウントを待って2つ目のスクリプトに処理が移ります。

誤動作でスクリプトが止まったときはコマンド+ピリオドで停止できます。
    • good
    • 0
この回答へのお礼

ご回答、どうもありがとうございました!
教えて頂いた方法、完璧です。
if~then文の作り方、そんな構文が無いかと一応自分でもwebで検索してみたのですが、探し方が下手だったようで有力な情報を拾えなかったのです。
助かりました。
どうもお世話になりました!

お礼日時:2004/09/29 22:41

イメージのマウントにDisk Copyを使っているならば、Finder ではなく Disk Copy に命令を送ってあげれば検証中はウェイトになると思われます。


tell application "Disk Copy" to mount file file "FOKS.img" of folder "Applications (Mac OS 9)" of startup disk--without checksum verification (without checksum verification で検証しないようにできます。)
tell application "Finder" to open file "CeDar1.6" of folder "CeDar1.6 folder" of folder "Applications (Mac OS 9)" of startup disk

検証の有無はDisk Copyの初期設定でも設定可能なので、御質問のスクリプトでも検証しないよう設定すれば、御希望の動作が可能かもしれません。
    • good
    • 0
この回答へのお礼

ご回答、どうもありがとうございます。
Disk CopyでのマウントはOS9で使用する場合ですので、元々障害はなかったんです。それをOSXで使用するようになったら、Imagemounterという、検索しても引っ掛かってこない奇妙なアプリケーションでマウントするようになっているようなので、初期設定もスクリプティングも方法が全くわからない状態なのです。
状況のご説明が不十分だったようで、申し訳ありませんでした。

お礼日時:2004/09/29 22:37

a)ファイルの存在確認を行い、存在確認に失敗したら、数秒待ってから存在確認を繰り返す。



b)コマンドhdiutilをdo shell scriptで呼び出して、マウントさせる:
do shell script "hdiutil mount /Users/Shared/mozilla-mac-MachO.dmg"

hdiutilなら、マウント処理が完了するまで、制御が戻ってきません。
ただ、.imgも扱えるかどうかは不明ですが。

参考URL:http://developer.apple.com/documentation/Darwin/ …
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
存在確認を繰り返すという方法は「こんなふうにできないのかな」と漠然と考えてはいたものの、どう書いたら良いかわかりませんでした。
具体例をご呈示頂いてとても助かりました。
内容を理解するのに時間がかかると思いますが、良い勉強になりますし、トライしてみます。
どうもありがとうございました!

お礼日時:2004/09/29 22:32

こんばんは。


その2つに分けたスクリプトに問題があると言うことはありませんか?
どう言った指示を出しているのでしょう?

この回答への補足

早々のお返事をどうもありがとうございます!

まず、
tell application "Finder"
activate
open {file "KENKYUSHA_CHUJITEN.dmg" of folder "辞書" of disk "Macintosh 80 HD", file "独和.img" of folder "辞書" of disk "Macintosh 80 HD"}
open file "CeDar 2.0b6" of folder "CeDar20b6.f" of folder "アプリケーション" of disk "Macintosh 80 HD"
end tell

でイメージをマウントし、

tell application "Finder"
close container window of disk "KENKYUSHA_CHUJITEN"
close container window of disk "CRGER"
open file "CeDar 2.0b6" of folder "CeDar20b6.f" of folder "アプリケーション" of disk "Macintosh 80 HD"
end tell

でウインドウを閉じてEPWINGソフトを立ち上げています。
どうでしょう? どうにかなりそうでしょうか?

補足日時:2004/09/22 23:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!