一個完整的IS安裝程序實例,皆來自海洋女神博客
正文
需求:公司做了一個軟件產品,
1. 該軟件運行需要JDK環境(不是JRE,因爲該軟件要向windows註冊一個服務,用到了JavaService,JDK才支持這個功能;不過這裏側重於判斷是否安裝了某軟件是否安裝,而不是糾纏於該裝JDK還是該裝JRE);
2. 由於是Server-Client形式的,需要允許用戶選擇安裝組件,比如A機只裝Server端,B機只裝Client端;
3. 文檔不打包在安裝程序裏,直接存放在光盤文件夾下方便用戶查看,同時允許用戶指定是否安裝文檔到計算機上(爲什麼這樣做,後面說明詳細原因);
4. 該軟件會以授權形式發放給用戶,不同的用戶,軟件本身可能相同,而不同的只是授權文件和一些配置,因此希望授權文件和配置文件不打包在安裝程序裏,而直接存放在光盤裏,以減少可能的重複打包安裝程序的勞動;
5. 在安裝完畢後,希望能自啓動程序(因爲該軟件需要在安裝完畢後啓動一個程序,該程序實現向Windows註冊服務的功能,該程序最好由安裝程序啓動,而不是由客戶手動啓動)。
6. 希望有反安裝程序
本文提到的“外部”指不打包在安裝程序裏的,與安裝程序一起存放在光盤裏的一些文件夾,這些文件夾包含了安裝中所需要的文件,同時也可能有其他用途,因此不適合直接壓縮打包在安裝程序裏。
該實例實現瞭如下功能:
1. 顯示軟件許可協議
2. 判斷是否安裝了本軟件所需要的先決軟件JKD1.6.0_04,如無,則啓動外部安裝程序進行安裝(同樣原理可以用來判斷是否安裝了其他軟件,只要該軟件在註冊表中有鍵值)
3. 安裝允許用戶選擇需要安裝的組件
4. 用戶的輸入信息、所選安裝路徑、所選安裝組件將顯示在安裝界面上(Installshield雖然自帶了此界面,但是默認是顯示爲空的,需要寫腳本來顯示信息)
5. 根據用戶選擇的組件,在開始菜單顯示程序的快捷方式(同樣適用於桌面快捷方式,後面做詳細說明)
6. 根據用戶選擇的組件,從外部文件夾拷貝相應的文件到安裝目標路徑的文件夾中
7. 根據從外部拷貝進來的文件,創建快捷方式(這裏主要是拷貝文檔,並在開始菜單中創建快捷方式)
8. 在安裝結束時,顯示readme.txt文件
9. 在安裝結束後,啓動指定的程序
10. 完美卸載
筆者所用的環境爲Installshield 12 Premier Edition,Windows XP with SP2, 該環境下建立的工程可以直接使用在Installshield 2008 Premier Edition下,Installshield 2008在打開Installshield 12所建的工程時會提示你是否需要進行Upgrade,確認即可,軟件會自動爲你進行升級,很方便。
下面我們一步一步來建立一個基本的工程,並且使用腳本來完善和豐富所需功能
第一部分:基本設置
1. 打開Installshield 12 Premier Edition,新建一個Installscript MSI Project,這種被稱之爲半腳本程序,因爲兼具Basic Project基本類型和Installscript Project全腳本類型兩者的優點,我比較喜歡用。像我這樣需求的,既要用到Wizard的便利,又想寫一點腳本來實現一點自定義操作的,就比較適合用這種類型啦。
選擇類型爲Windows Installer | InstallScript MSI Projcet,輸入工程名,指定工程所在的文件夾。
2. 界面會切換到Project Assistant,我們先從這裏開始把工程的基本組件和基本文件建立好。
3. 在Project Assistant界面的底部,會有一個引導動作條,在建立該工程的基本結構和文件時,我們都將在此界面進行操作,下文都將以“引導條”來指代這個引導動作條。
4. 點擊引導條上的Application Information
這裏輸入:
公司名,公司名將會出現在Setup.exe的註解中
軟件名,將會出現在安裝過程的左上角標題欄上
版本號,沒看到在哪,不過自己比較方便地知道自己在編譯哪個版本的軟件
公司網址,沒看到在哪,而且如果該公司沒有網址呢?而且這裏有點bug,好像默認的值總是會報一個String_ID1爲空的錯誤,自己輸入一個網址就不會報錯。
是否在你創建了更新時自動通知最終用戶,沒用過,我都選了No。
選擇一個圖標,這個圖標會出現在“添加或刪除程序”裏,我一般用默認的,當然你可以替換成自己想要的圖標。
5. 點擊引導條上的Installation Requirement
這裏選擇對操作系統和一些軟件的需求。根據自己需要來選擇是否要求操作系統的版本,已經是否要求安裝了某些軟件。
6. 點擊引導條上的Installation Architecture
這是個十分有用的設置,對於本文所用的分佈式軟件來說非常合適,分佈式軟件的每個組件可以設置爲一個Feature,用戶可以自由選擇安裝某些功能。
將選項Do you want to customize your Installation選擇爲Yes。
點擊選中根節點Installation Architecture,點擊New創建新的Feature,可以爲每個Feature指定新名稱。
還可以在Feature下創建子Feature,比如如果文檔Feature下包括軟件本身文檔,和軟件所需的運行環境的文檔,那麼可以創建兩個子Feature,分別包含兩種文檔,用戶在安裝時就可以選擇安裝部分或者全部文檔了。這裏我們沒有用到子Feature,用途和普通Feature一樣。
這裏,建立好所有Feature後,我們將切換到Installation Designer做一個設置
找到Installation Designer頁面上左邊導航樹Organization | Features分支,你會看到這裏Features都顯示爲原始的名稱,而非我們改過的名字,因爲Feature有Name和Display Name兩種名稱,我們剛纔改的不過是Display Name,爲了便於查看和使用,我們在這裏把Name也改一下
注意Name不可以有空格,可以使用下劃線
繼續切換回Project Assistant
海洋女神博客:http://www.cnblogs.com/Cindy_weiwei/archive/2009/05/18/1459542.html