« CreateUserPkg | ローカルアカウントを追加(ドメコン無し環境に最適) | トップページ | Install the Adobe Output Module for Bridge CC 6.2 »

ファイルをファイル名のフォルダに格納してからDMGにする

DMGファイルはMacにとって、とても便利なディスクイメージです。
圧縮が可能で暗号化にパスワードの指定
リソースフォークを保持出来る(HFS+等を選択すれば)
サーバー等から呼び出した時にPKGを実行出来る等々
Macな環境内では『ある意味で』最強かも(まぁちょっと破損が怖いけど)

ファイルを選択

ファイル名のフォルダを作成してその中にファイルを入れる

ファイル名のDMGを作る


いった流れ

(*
makeDMG4File.scpt
20160829 初回作成

選んだファイルをフォルダに入れてDMGファイルに変換します。

*)

---■■■■ ダブルクリックの始まり
on run
---プロンプトの文言改行が使えます\nを入れます
set theWithPrompt to "ディスクイメージに変換します"
---ファイル選択ダイアログのデフォルトのディレクトリ
set theDownloadsFolderPath to path to desktop folder from user domain
---Uniform Type Identifier指定
---詳しくは http://goo.gl/6jAQa Uniform Type Identifier
set theFileType to "" as text
---のファイルタイプをリスト形式に整形する
set AppleScript's text item delimiters to {","}
set theFileTypeList to every text item of theFileType
---ダイアログを出して選択されたファイルは「open」に渡す
open (choose file default location theDownloadsFolderPath ¬
with prompt theWithPrompt ¬
of type theFileTypeList ¬
invisibles true ¬
with multiple selections allowed without showing package contents)
(* フォルダをの場合はこちらを
open (choose folder default location theDownloadsFolderPath ¬
with prompt theWithPrompt ¬
invisibles true ¬
with multiple selections allowed without showing package contents)
*)
end run


---openドロップの始まり
on open DropObj

--- 繰り返しの始まり
repeat with ObjFiles in DropObj
---オブジェクトのエイリアスを取得
set theAlias to ObjFiles as alias
---オブジェクトの情報を取得
set theFileInfo to info for ObjFiles as alias
---エイリアス形式をテキストに変換
set theAliasPath to theAlias as text
---ファイル名を取得
set theName to (name of theFileInfo) as text
---拡張子を取得
set theNameExtension to (name extension of theFileInfo) as text
----
if (folder of theFileInfo) is false then
---エイリアスパスからファイル名を引いてディレクトリを取得
set theDirName to my doReplace(theAliasPath, theName, "") as text
else if (folder of theFileInfo) is true then
---エイリアスパスからファイル名を引いてディレクトリを取得
set theDirName to my doReplace(theAliasPath, (":" & theName), "") as text
end if
---ファイル名から拡張子を取り除く
set theShortName to my doReplace(theName, ("." & theNameExtension), "") as text
---ディレクトリをUNIXパス形式に
set theDirPath to POSIX path of theDirName as text
---日付けと時間からテンポラリー用のフォルダ名を作成
set theNowTime to (my doDateAndTIme(current date)) as text
-----------------------------------フォルダを作って
tell application "Finder"
try
make new folder at folder theDirName with properties {name:theNowTime}
on error
log "フォルダの作成時にエラーが発生しました"
end try
end tell
-----------------------------------ファイルを中に入れて
tell application "Finder"
try
move ObjFiles to folder theNowTime of folder theDirName with replacing
on error
log "ファイルの移動時にエラーが発生しました"
end try
end tell
-----------------------------------フォルダの名前をファイル名に変更する
tell application "Finder"
try
set name of folder theNowTime of folder theDirName to theShortName
on error
log "フォルダの名称変更時にエラーが発生しました"
end try
end tell
-----------------------------------DMGを作成する
---パス指定
set theSrcFolder to (POSIX path of (theDirPath & theShortName)) as text
---コマンド実行
do shell script "hdiutil create -fs HFS+ -srcfolder '" & theSrcFolder & "' -volname '" & theShortName & "' '" & theDirPath & theShortName & ".dmg'"
---繰り返しの終了
end repeat


end open



----ここからサブルーチン
to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace
------------------------------
to doDateAndTIme(theDate)
set y to (year of theDate)
set m to my monthNumStr(month of theDate)
set d to day of theDate
set hms to time of theDate
set hh to h of sec2hms(hms)
set mm to m of sec2hms(hms)
set ss to s of sec2hms(hms)
return (y as text) & my zero1(m) & my zero1(d) & "_" & zero1(hh) & zero1(mm) & zero1(ss)
return (y as text) & my zero1(m) & my zero1(d)
end doDateAndTIme
------------------------------
to monthNumStr(theMonth)
set monList to {January, February, March, April, May, June, July, August, September, October, November, December}
repeat with i from 1 to 12
if item i of monList is theMonth then exit repeat
end repeat
return i
end monthNumStr
------------------------------
to sec2hms(sec)
set ret to {h:0, m:0, s:0}
set h of ret to sec div hours
set m of ret to (sec - (h of ret) * hours) div minutes
set s of ret to sec mod minutes
return ret
end sec2hms
------------------------------
to zero1(n)
if n < 10 then
return "0" & n
else
return n as text
end if
end zero1

「makeDMG4File.scpt.zip」をダウンロード

|

« CreateUserPkg | ローカルアカウントを追加(ドメコン無し環境に最適) | トップページ | Install the Adobe Output Module for Bridge CC 6.2 »

AppleScript」カテゴリの記事