最近重裝了mac系統(tǒng),在解決dotfile的時(shí)候突發(fā)奇想能否用腳本安裝軟件绵疲。
雖然強(qiáng)大的homebrew-cask已經(jīng)涵蓋了大部分的軟件。
直接一句brew cask install XXX就會(huì)自動(dòng)下載dmg文件褥民,自動(dòng)安裝,看起來(lái)蠻簡(jiǎn)單的樣子
但是缺陷還是有的洗搂,這種安裝方式肯定要涉及到版權(quán)問(wèn)題消返,比如我們需要的很多都是和諧版軟件。所以只能自己造車耘拇。
目前造了一部分的車撵颊,先寫出來(lái)玩玩
支持安裝兩種類型的軟件
一種的zip - 其實(shí)就是解壓縮,復(fù)制到/Applications
一種是dmg - 就是掛載DMG鏡像惫叛、復(fù)制到/Applications倡勇、然后卸載鏡像
#!/bin/sh
cd $(cd `dirname $0`; pwd)
install_dmg(){
hdiutil attach $1 -nobrowse
cp -rf /Volumes/$2/$3 /Applications
hdiutil detach /Volumes/$2
}
install_zip(){
unzip -o $1/$2 -d $1
mv -f $1/$3 /Applications
rm -r $1/__MACOSX
}
# 傳三個(gè)參數(shù) 1、相對(duì)路徑下的dmg文件嘉涌。2妻熊、掛載后的磁盤鏡像名稱。3仑最、鏡像內(nèi)的APP名字
install_dmg "QQ/QQ_V6.0.1.dmg" "QQ" "QQ.app"
sleep 1
#傳三個(gè)參數(shù) 1扔役、相對(duì)路徑的文件夾名。2警医、zip壓縮包名亿胸。3坯钦、解壓后的APP名
install_zip "Dropbox" "Dropbox.zip" "Dropbox.app"
??????????????????????????????????????????????????????????
hdiutil 掛載 dmg鏡像,當(dāng)存在License時(shí)需要手動(dòng)關(guān)閉侈玄,并輸入Y繼續(xù)婉刀,因此使用exexpect優(yōu)化了一下腳本。
創(chuàng)建一個(gè)MountDmg.sh的文件拗馒,用來(lái)執(zhí)行交互操作
#!/usr/bin/expect
# MountDmg.sh
set timeout 30
spawn hdiutil attach [lindex $argv 0] -nobrowse
expect ":"
send "q"
expect "Agree Y/N?"
send "Y\r"
interact
再寫個(gè)腳本掛載dmg鏡像
install_dmg(){
#掛載dmg
./MountDmg.sh $1
#復(fù)制app
cp -rf /Volumes/"$2"/*.app /Applications
#卸載dmg
hdiutil detach /Volumes/"$2"
}
#使用 參數(shù)1文件名路星,參數(shù)2掛載后的dmg名
#install_dmg QQ_V6.1.1.dmg QQ