不知道你是否注意過(guò),當(dāng)你安裝java jdk的時(shí)候,當(dāng)你安裝微軟office的時(shí)候,當(dāng)你裝db2的時(shí)候,你都會(huì)看到一個(gè)熟悉的標(biāo)記---installshield。installshield可以說(shuō)是當(dāng)今安裝程序解決方案的巨無(wú)霸了,功能十分強(qiáng)大,你可以用它制作出你想要的安裝程序。但是功能的強(qiáng)大也帶來(lái)一個(gè)壞處,就是要上手非常難。所以公司特意請(qǐng)macrovision(就是制作installshield的公司)的人給我們進(jìn)行了一個(gè)training,感覺(jué)收獲還是很大的,所以把我認(rèn)為重要的地方紀(jì)錄下來(lái),一方面萬(wàn)一自己忘了可以查一查,另一方面說(shuō)不定對(duì)別人也有幫助。
先從版本說(shuō)起。installshield有專門(mén)用于制作java安裝程序的產(chǎn)品,由于java是跨平臺(tái)的語(yǔ)言,所以installshield對(duì)應(yīng)的產(chǎn)品就叫installshield multiple platform,簡(jiǎn)稱ismp。我接觸的最早版本是ismp 5.0,后來(lái)又出了ismp 11.5,再后來(lái)ismp改名字叫Install Anywhere(以下簡(jiǎn)稱IA)。目前我們training用的版本是IA 8.0,相信應(yīng)該是最新的版本了。IA是共享軟件,不注冊(cè)的話有21天的試用期。
安裝程序是一個(gè)可定制性非常強(qiáng)的東西,每個(gè)軟件作者的需求都不一樣。有的推崇簡(jiǎn)單就是美,一般只需要用戶選擇安裝的目錄,然后就一路next就裝完了;但有的軟件非常復(fù)雜,比如需要設(shè)置參數(shù),需要選擇安裝哪些部分,甚至需要啟動(dòng)windows的系統(tǒng)服務(wù)。這時(shí)候就需要比較復(fù)雜的配置了。installshield針對(duì)兩種用戶設(shè)計(jì)了不同的開(kāi)發(fā)環(huán)境:一種是common designer,另一種是Advanced Designer。當(dāng)你第一次打開(kāi)IA的時(shí)候,缺省的是common designer,你只需要做一些簡(jiǎn)單的配置,比如產(chǎn)品的名稱,需要安裝的文件,要不要綁定虛擬機(jī)等等,然后就可以build出一個(gè)安裝程序了。Advanced Designer是為高級(jí)用戶設(shè)置的,提供了更多,更豐富的功能,你可以用它來(lái)打造你所需要的安裝程序。本文主要是針對(duì)Advanced Designer進(jìn)行一些說(shuō)明。
1)安裝模式(install modes)
gui:這是最常用的一種模式,在安裝過(guò)程中會(huì)彈出若干個(gè)panel,比如welcome panel,license panel,destination panel等等。
console:用這種模式安裝程序時(shí),不會(huì)出現(xiàn)panel。它的所有信息都在控制臺(tái)中出現(xiàn)。說(shuō)的再通俗一點(diǎn),就是整個(gè)安裝過(guò)程只有一個(gè)dos窗口,這個(gè)窗口先會(huì)顯示一行信息歡迎你安裝本軟件,然后是讓你選擇destination,再安裝,最后會(huì)顯示一行安裝成功的信息
silent:顧名思義,這種模式在安裝的時(shí)候不會(huì)彈出任何窗口,它會(huì)安靜地裝上軟件,所以用戶也不能自己設(shè)定安裝目錄,一般都市由安裝程序安裝到固定的目錄上
2)install sets
很多安裝程序都有完全安裝,最小安裝,自定義安裝等選項(xiàng),這一般是用features來(lái)實(shí)現(xiàn)的。你可以把你的產(chǎn)品分成幾個(gè)features,然后由用戶來(lái)選擇一部分進(jìn)行安裝。
3)actions
IA中很多操作被稱為actions,常見(jiàn)的有copy files,delete files,modifying registry, creating service, modifying configurations files等
4)variable
IA中很重要的一個(gè)概念,你可以用variable來(lái)存放屬性信息,比如安裝目錄,用戶名等等。比如
安裝目錄可能會(huì)在很多地方都用到,如果你安裝目錄是硬編碼的,萬(wàn)一將來(lái)要修改就要改
很多地方,容易出錯(cuò);如果用variable來(lái)保存的話,只要修改變量值就可以了。注意一點(diǎn):variable
的值基本上都是string類型的
5)magic folders
IA里面獨(dú)有的概念,但感覺(jué)沒(méi)什么新意,就是variables的一種,專門(mén)用于定義folder的
variable而已
6)InstallAnywhere registry
不同于windows的registry,這是InstallAnywhere自己的registry。每個(gè)用IA制作的安裝程序,在安裝的過(guò)程中
都會(huì)把自己注冊(cè)到這個(gè)InstallAnywhere registry(注意:你只能在InstallAnywhere registry找到安裝的
component,找不到product)。它的一個(gè)典型應(yīng)用就是當(dāng)你需要檢查這個(gè)機(jī)器上是否安裝過(guò)某個(gè)軟件的時(shí)候,就可以
用search這個(gè)IA registry。不過(guò)如果你是用其他工具制作的安裝程序,IA registry就不會(huì)有記錄了。
7)execute command&execute script
execute command是用來(lái)執(zhí)行command,常用的dos命令(copy,cd等)你都可以寫(xiě)在這里。execute script其實(shí)就是
execute command的加強(qiáng)版:如果你有多個(gè)命令,不需要建多個(gè)execute command,把它們寫(xiě)在execute script就好了
8)計(jì)算所需空間
在IA中,默認(rèn)的空間大小是用byte來(lái)計(jì)算的,所以如果你的軟件比較大的話,那一長(zhǎng)串的阿拉伯?dāng)?shù)字會(huì)把用戶嚇倒的
解決方法是,在pre-install summary panel的配置項(xiàng)中,有一個(gè)是Edit Custom Field。在那里新建一個(gè)field。Variable
name是顯示給用戶看的內(nèi)容,比如你可以寫(xiě)disk space。variable value是你的軟件所需的硬盤(pán)大小。你可以先算出來(lái)
,存在一個(gè)變量中,然后讓variable value等于這個(gè)變量就可以了。
9)results variable
用來(lái)存放用戶的選擇。比如在show message dialog中,有一個(gè)results variable是$CHOSEN_DIALOG_BUTTON$
它用來(lái)存放用戶按的是OK 還是Cancel