[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:1208) [AS Illustrator CS2] インストーラ
illustrator CS2のスクリプトフォルダ(ほかにもアプリケーションフォルダとか、デスクトップとか)にインストールをさせるスクリプト。
デスクトップにログも残せます。
コピー実行してるブロックで
my_duplicate(from_alias, to_alias, replacing_boolean)
をカスタマイズしてください。
--変数
global log_str, desktop_folder --globalを使うなんて!w
set log_str to ((current date) as Unicode text) & return & "----------------------------" & return --ログファイルに書き込む文字列
set ill_CS2_script_folder to "" --スクリプトフォルダ(初期値)
tell application "Finder"
activate
--前準備。Illustrator CS2 が起動していたら,,,
if (name of every process as Unicode text) contains "Adobe Illustrator" then
my ver() --バージョンをチェックしてみる。
--バージョンがOKなら(ちゃっかり^^)プロセスからフルパスをgetする
set ill_CS2_script_folder to file of process "Adobe Illustrator"
set ill_CS2_script_folder to ((container of ill_CS2_script_folder) as Unicode text) & "Presets.localized:Scripts.localized:"
if not (exists folder ill_CS2_script_folder) then my my_error("インストール先フォルダが見つかりませんでした", true)
my my_error("Illustrator CS2が起動中です。Illustratorを終了してインストールを続行しますか? 未保存のドキュメントがあればインストールを一旦中止してください。", false)
--開いているドキュメントはすべて保存して閉じ、アプリケーションを終了する
tell application "Adobe Illustrator"
activate
repeat with i in every document
close i saving yes
end repeat
quit
end tell
end if
--各種フォルダの場所を確認
set my_folder to (container of (path to me)) as Unicode text
set app_folder to (path to applications folder) as Unicode text
set desktop_folder to (path to desktop folder) as Unicode text
if ill_CS2_script_folder is "" then --前準備でパスが取れていない
set ill_CS2_script_folder to (app_folder & "Adobe Illustrator CS2:Presets.localized:Scripts.localized:")
if not (exists folder ill_CS2_script_folder) then --アプリケーションフォルダにインストールされていない
--ユーザーがillustratorアプリケーションを選択する
set ill_CS2_script_folder to choose file with prompt ("Illustrator CS2アプリケーションを選択してください" as Unicode text) of type {"APPL"}
set ill_CS2_script_folder to ((container of ill_CS2_script_folder) as Unicode text) & "Presets.localized:Scripts.localized:"
if not (exists folder ill_CS2_script_folder) then my my_error("インストール先フォルダが見つかりませんでした", true)
end if
end if
--ログの追加
set log_str to log_str & "current folder (installer) = " & my_folder & return
set log_str to log_str & "applications folder = " & app_folder & return
set log_str to log_str & "desktop folder = " & desktop_folder & return
set log_str to log_str & "Illustrator CS2 Script folder = " & ill_CS2_script_folder & return
set log_str to log_str & "----------------------------" & return
--コピー実行
--ShowProgressBar
my my_duplicate(folder (my_folder & "ShowProgressBar"), folder app_folder, true)
--Graphics to place
my my_duplicate(folder (my_folder & "Graphics to place"), folder app_folder, "ask")
--Font Tester
my my_duplicate(folder (my_folder & "Font Tester"), folder app_folder, "ask")
my my_duplicate(file (my_folder & "Font Tester:Font Tester_07.app"), folder ill_CS2_script_folder, true)
--guide
my my_duplicate(folder (my_folder & "guide:"), folder app_folder, "ask")
my my_duplicate(folder (my_folder & "guide:"), folder ill_CS2_script_folder, true)
my write_file(log_str & "----------------------------" & return & "すべてのインストールが正常に行われました" & return & "============================" & return, desktop_folder & "installer_log.txt") --ログの書き出し
display dialog "インストールに成功しました!"
end tell
--------------------------------------------------------●Illustrator CSバージョン確認ルーチン
to ver()
tell application "Adobe Illustrator"
if version does not start with "12" then
my my_error("バージョンの違うIllustratorが起動中です。", true)
end if
end tell
end ver
--------------------------------------------------------●ファイル(フォルダ)の複製
(*
from_alias コピー元
to_alias コピー先
replacing_boolean trueなら既存のファイルを置き換える。falseなら置き換えない。"ask"ならダイアログを出す。
*)
to my_duplicate(from_alias, to_alias, replacing_boolean)
tell application "Finder"
activate
try
if exists to_alias then
if replacing_boolean is "ask" then
set ANS to button returned of (display dialog (name of to_alias as Unicode text) & "はすでに存在しています。置き換えますか?" buttons {"キャンセル", "置き換え", "コピーしない"} default button 3 with icon note)
if ANS is "置き換え" then
set tmp to duplicate from_alias to to_alias with replacing
end if
else if replacing_boolean then
set tmp to duplicate from_alias to to_alias with replacing
end if
else
set tmp to duplicate from_alias to to_alias with replacing
end if
set log_str to log_str & "copy " & (tmp as Unicode text) & return
on error errMsg number errNum
my my_error("インストールに失敗しました" & return & errMsg & return & errNum, true)
end try
end tell
end my_duplicate
--------------------------------------------------------●ファイル書き出し
on write_file(contents_txt, my_file)
tell application "Finder"
set FH to open for access my_file with write permission
try
set eof_pos to get eof FH
write contents_txt starting at (eof_pos + 1) to FH
on error errMsg number errNo
close access FH
activate
display dialog "ログ書き込み時のエラーです" & return & errMsg & errNo
return
end try
close access FH
update my_file
end tell
end write_file
----------------------------------●エラー処理
on my_error(err_str, my_stop)
set err_str to err_str as Unicode text
if my_stop then
set my_stop to {"中止"}
else
set my_stop to {"中止", "続行"}
end if
tell application "Finder"
activate
set ANS to button returned of (display dialog err_str buttons my_stop with icon stop) --警告ダイアログ出してストップ
if ANS is "中止" then
my write_file(log_str & "----------------------------" & return & err_str & return & "インストールに失敗しました" & return & "============================" & return, desktop_folder & "installer_log.txt") --ログの書き出し
error number -128
end if
end tell
end my_error