最近須要製做windows的安裝包,聽說Advanced Installer比較強大,遂拿它來製做安裝包。在網上少許資料以及官網簡約文檔中摸索前進,總算是製做出可用的安裝包,在此記錄,僅供參考。windows
Advanced Installer版本: Advanced Installer 11.0, 目前的最新版是13.1,不過大同小異。測試
2.1 新建工程ui
因爲但願可以本身定製一些安裝界面,咱們選擇Professinal版本,語言選擇中文,而後建立工程:事件
2.2 產品詳情開發
填寫產品的基本信息,包括名稱,版本,公司等:文檔
2.3 安裝參數產品
產品詳情填好後,在左側選擇安裝參數。我們主要看右側面板中「安裝文件夾」->「應用程序文件夾」裏面的內容:「[ProgramFilesFolder][Manufacturer]\[ProductName]」, 這個內容表示安裝時默認的安裝路徑:io
[ProgramFilesFolder] 表示 C:\Program Files(x86)dva
[Manufacturer] 表示公司名稱,也就是2.2中填寫的TestCompany變量
[ProductName] 表示產品名稱,也就是2.2中填寫的TestApp
那麼默認顯示的安裝路徑就是「C:\Program Files(x86)\TestCompany\TestApp」。
2.4 運行環境
左側的數字簽名、更新程序、升級和受權暫時不是關注的重點,先略過。Advanced Installer對運行環境提供了很是好的支持,咱們能夠選擇任何須要的環境。待安裝包製做完畢,運行安裝包時會自動運行依賴的環境:
2.5 文件和文件夾
左側的啓動條件和合並模塊暫時不是關注的重點,先略過。文件和文件夾裏面放的就是咱們的項目文件,能夠選擇新建或添加:
添加文件後,可能會是這樣的:
2.6 對話框
因爲咱們但願可以自制對話框,須要切換成開發版。點擊「項目」->"選項",在彈出的界面中,選擇「項目類型」->「開發版」
假設咱們要在選完安裝路徑後新增一個對話框,那麼在右側的FolderDlg右鍵,選擇「新建對話框」:
讓咱們在對話框上添加兩個輸入控件,一個但願是必填的,另外一個但願是選填的。注意右側的屬性名稱,它是實現「必填」功能所必須關注的變量:
那麼何時對輸入框中是否有輸入進行判斷呢?應該是在用戶點擊「下一步」的時候。因此選擇「下一步」,關注下方的「發佈事件」:
咱們須要新建一個事件,這個事件的做用是:若是必填項沒有內容,那麼彈出一個對話框來提示用戶須要輸入。想要作到這一點,點擊「新建」。在新彈出的界面中選擇「顯示特定子對話框」,勾選「顯示整個條件」,而後再條件中填寫「NOT EDIT_1_DROP」。EDIT_1_DROP這個變量就是以前必填輸入控件,前面加NOT的意思就是,若是這個輸入控件沒填內容,就彈出子對話框。
點擊「肯定」就能夠了。
2.7 註冊表
咱們已經限定了必填項和選填項,可是又有疑問了,用戶填寫的內容保存在哪呢?咱們能從什麼地方讀到這些變量呢?
這時候註冊表就派上用場了,把用戶輸入的內容關聯到註冊表的相應變量中不就搞定了嗎?Advanced Installer偏偏提供了這種機制。
在左側選擇「註冊表」,咱們能夠看到右側的註冊表中已經有了兩個變量Path和Version,分別是安裝路徑和版本。
而後在右側的「[ProductName]」右鍵彈出菜單,點擊「新建值」,
在彈出的窗口中,「名稱」填寫一個但願在註冊表中被看到的名稱,好比「RequiredValue」。再點擊「屬性」,選擇以前自定義的對話框中的控件名稱(就是我們)。
建立好後以下:
2.8 自定義操做
梳理下剛剛的流程,用戶在輸入框中輸入了內容,點擊下一步後,這些內容被保存到註冊表的相應位置。而後這些變量要用起來了,一種可能的場景就是,在安裝結束時,我但願去執行自定義的腳本,這個腳本會從註冊表中讀取這些變量,並基於這些變量對項目文件作初始化。
那麼執行自定義腳本就須要Advanced Installer的「自定義操做」來幫忙,在左側選擇自定義操做,而後在菜單欄單擊「新建自定義操做嚮導」:
在彈出的面板中點擊「下一步」,而後根據本身要執行的腳本或文件選擇不一樣類型:
而後點擊下一步,根據狀況選擇:
而後點擊如圖按鈕選擇源文件:
而後下一步,根據須要選擇,再下一步,完成。完成後,在右側界面中能夠選擇必要的選項,好比說隱藏窗口,或者是以管理員身份運行等。
2.9 構建和運行
如圖,點擊1呢是構建安裝包,構建的目錄默認是在「個人文檔\Advanced Installer\Projects\TestApp\setup-SetupFiles"中,其中TestApp是項目名稱。
點擊2呢是構建並運行安裝包,用做測試這個安裝包是否可用。
至此咱們打出了windows 32位的有自定義界面的並能調用特定腳本的包。Advanced Installer還提供了各類強大功能,好比說能打出x86\x64混合包等,有待進一步探索。