大家再開發軟件產品的時候經常是基於某些軟件和類庫的,像我們的項目就用到了.Net Framework3.5,mapinfo,sqlserver 2008 express,installer 4.5。那用戶要用我們的產品,必須有以上的環境才可以,這些東西當然不會讓用戶自己去安裝啦,需要我們來為用戶部署好,這樣用戶才會覺得你的軟件真的很好用,不會覺得麻煩對吧。
以前用Installshield2008的時候,對.Net Framework不支持3.5的,也不支持installer4.5,需要自己在腳本中來檢測環境,運行相應的安裝程序,這樣的壞處是,用戶界面很死板,就一個提示框“正在為您安裝……”,然后界面就死在那兒不動了,體驗相當差,不過當時沒學識淺薄,不會自己做Prerequisites。
幸運的是,installshield2010比Installshield2008支持更多的組件,可以在“Application Data\Prerequisites”中看到,這些組件最好自己下載下來,壓縮到安裝包中,省的用戶沒有這些組件的時候需要聯網下載,要是網速慢,那是要等到黃花菜都涼的。下載方法:選擇需要下載的組件,點擊“Download Selected Item”,這樣Installshield就會為你下載這個組件了,保存目錄為Installshield安裝目錄\InstallShield\2010\SetupPrerequisites,雖然你在卸載Installshield的時候,不會把這個目錄下你下載的東西刪除,不過我還是把它們都拷貝出來,以備不時之需。下載完成之后,把這個選項打上鈎,在運行安裝包的時候就會為你顯示一個界面:
是不是很不錯啊,雖然是Installshield風格的,不過還是說的過去的。
自定義預安裝組件
有人可能會問了,如果我想要的組件Installshield里沒有怎么辦啊?不用擔心,只要你按照Installshield的規定,在Installshield安裝目錄\InstallShield\20010\SetupPrerequisites這個目錄下,做一個.prq文件即可,只有有這個.prq文件,你才能在“Application Data\Prerequisites”里面看到。編輯這個.prq的工作你可以在Installshield的“Application Data\Prerequisites”做,右鍵點擊這個組件,在彈出的菜單中點擊“Edit Prerequisite”,因為我們的.prq里面什么都沒有,不過不要擔心,等你配置好所有的東西之后,Installshield會為你生成一個格式正確的.prq文件.
接下來我們就以以mapinfo為例從頭開始,自己來創建一個.prq文件:
1.在Installshield安裝目錄\InstallShield\20010\SetupPrerequisites這個目錄下創建一個txt文件,名稱為mapinfo,后綴名".prq";
2.打開Installshield2010,在"Application Data\Prerequisites"右側面板中,找到"mapinfo"這個組件,右鍵點擊"Edit Prerequisite",
就會出現配置界面.
3.接下來我們按照配置面板的頁簽分別配置
(1)Properties
第一項是組件的唯一id 是Installshield2010為我們自動生成的,不需要改動。
第二項是在哪里下載這個.prq文件,這個我沒寫,估計是給別人看的。
接下來是這個組件的描述,這個描述在安裝過程中沒有看到,不知道是干嘛的,可能是給自己看的吧,我們寫上"This prerequisite installs the mapxtreme-ch-trial for your systems."
(2)Conditions
是否需要安裝這個組件,當然需要我們來判斷了,根據什么呢?Installshield就為我們提供了很多方式,比如根據注冊表、系統是xp還是server2003,、某個文件是否存在,
以前基本都是用腳本來操作注冊表來判斷的,跟這個原理是一樣的。我們根據HKEY_LOCAL_MACHINE\SOFTWARE\MapInfo\MapXtreme\7.0.0這個鍵是否存在來判斷mapinfo是否安裝,選擇"A registry key does or does not exist",在"在Spercify the registry key name to check:"中填上"HKEY_LOCAL_MACHINE\SOFTWARE\MapInfo\MapXtreme\7.0.0",系統選擇Default,"Run this prerequisite"選擇"If the specified registry key DOES NOT EXISTS"。
(3)Files to Include
這個當然是要安裝這個組件的安裝包了,這里我選擇了mapinfo的安裝包
(4)Application to Run
這里選擇安裝這組件需要運行的安裝包,就是上面"Files to Include"中的mapxtreme-ch-trial.exe,比較麻煩的是下面的參數,一半我們安裝這些組件的時候,不想讓用戶
看到這個組件的安裝界面,所以需要靜默安裝,不同公司產品的靜默安裝命令都可能不同,如果你要裝的組件不是Installshield2010支持的,那這些靜默參數可能需要花很長時間去找了.mapinfo的靜默安裝參數是"/v/qn"。還有一個參數是重啟參數,如果你的組件需要重啟計算機的話,需要配置這個參數,我們這個不需要重啟。不過據我所知,標准的msi安裝包重啟參數都是1641,3010。
(5)Behavior
這個里面是配置安裝這個組件需要的權限,以及運行時的行為,這里大家可以根據需要自己配置,像我們的產品是依賴mapinfo的,所以如果mapinfo安裝失敗的話,即使安裝完成也無法使用,所以在"If,after installing the prerequisite,the conditions still indicate it is required"下選擇"abort the setup".
(6)Depencies
按照Installshield的描述,大家應該很容易理解,就是指定在這個必須組件安裝之前需要安裝的組件的.prq文件,這個大家可以看一下windows installer 4.5 update for windows xp sp3 and later (x86)可以看到它的"Depencies"下"Windows Installer 4.5 for Windows XP SP2 and later (x86).prq",就是所你在安裝windows installer 4.5 update for windows xp sp3 之前需要安裝Windows Installer 4.5 for Windows XP SP2。這個看大家自己的需要可以自己定義。咱們這個mapinfo沒有特別需要,這里就不配置了。
(7)ok,點擊"File-Save".
我們打開InstallShield安裝目錄\InstallShield\20010\SetupPrerequisites目錄下的mapinfo.prq就可以看到如下內容:
然后勾選上這個組件,安裝包就會在運行的時候檢測系統是否安裝mapinfo,如果沒有就會為我們安裝了。
好了,到這里大家應該都知道怎么做預裝組件了。這塊我了解的就這么多,如果有不對的地方希望各位達人指教,還有如果有人看到這篇文章的話希望能留下您做的預裝組件的靜默安裝參數和重啟參數等,我會在以后總結一下,方便大家使用,不勝感激!