安裝包怎么做?首先需要明確安裝是什么?
記得從海洋女神的blog上看到這樣的描述:"安裝的本質,就是拷貝"。
對的,安裝就是復制,將你開發調試的環境和代碼"復制"到目標機器上。當然這個復制不是簡單的將IDE編譯生成的代碼組件簡單的復制到目標機器上這么簡單,但是大體上也是類似,這里的復制需要如下的內容:
- 將生成的模塊復制到目標機器上
- 將引用到的模塊復制到目標機器上,
- 將相關的配置復制到目標機器上
而安裝包就是完成將這些內容復制到目標機器上的一個程序.
了解了安裝的本質之后然我們進入整體,如何利用InstallShield來打包應用程序,創建出你自己的安裝包.
首先我們需要下載安裝InstallShield,這里我們選擇2010Premier版本,不同的版本可能具有不同的限制.
當第一次打開InstallShield你會發現它多少有點類似我們開發人員經常接觸的IDE
- 首先我們來創建一個工程
InstallShield支持很多種不同的工程這里主要介紹兩種
-
- InstallScript Project
- Basic MSI Project
這里參考Kevin wang對這兩種工程的介紹:
InstallScript腳本語言容易學習。
-
- 這種工程類型中,你可以顯示全屏的廣告板(背景圖)。
- 這種工程類型利用了InstallScript腳本語言,能夠讓你寫程序控制安裝過程,而不是填寫一些表格數據。
- InstallScript類型工程比Basic MSI類型的工程更容易學習。InstallScript工程的學習曲線比Basic MSI工程的短很多。
- InstallScript允許你在安裝之前或之后執行自己的操作,可以利用事件驅動模型,這對於Windows開發是非常有用的。
- 如果你在維護一個InstallScript工程,那只能選擇InstallScript工程類型。
- InstallScript工程沒有使用Windows Installer,所以你的安裝程序無法進行Windows Vista和Windows 7的Logo認證。
Basic MSI工程利用Windows Installer服務來進行安裝,以下一些說明也許是你選擇Basic MSI工程的理由:
-
- 你的安裝程序需要進行Windows Vista和Windows 7的Logo認證。這也是使用Windows Installer的主要需求之一。
- 你不想利用腳本語言控制你的安裝過程。
- 你進行Basic MSI工程的維護工作,不得不選擇Basic MSI。
- 你想最大化的與Microsoft SMS管理工具兼容。
- 學習Basic MSI工程需要更長時間的學習曲線。
簡單來講
-
- InstallScript需要自己來對安裝的走向通過編寫InstallScript的方式進行調度,所以該工程的有點就是比較容易控制,但是相應的編碼工作量比較大,但是只要掌握了InstallScript基本上就掌握了該類型項目的安裝包制作.
- Basic MSI執行過程則由Windows Installer驅動msi來一步步執行安裝過程.相對來說Basic Msi工程的優點是界面有現成的可以借用,之需要在需要控制的過程進行編碼即可,但是因為該工程由Windows Installer驅動所以需要理解Windows Installer的一些知識,同時對msi的原理也要有相應的理解才能比較好的掌握基於Basic Msi工程的安裝包開發.
在理解了InstallShield提供的工程類型的基本原理之后,然我們來動手實踐一下,這里將使用Basic MSI的工程類型來進行演示.
1,基本安裝操作
首先設定要要安裝的內容,需要將哪些程序發布到目標機器中?
這里我們就演示發布一個txt文件為例.應用程序只是需要將需要引用的模塊同時發布到目標機器中即可.
接着開發應用程序一樣,首先我們需要創建一個InstallShield工程項目,這里選擇Basic Msi Project.
輸入基本內容信息
按照向導一步步填寫
添加發布內容
如果不需要任何自定義操作,則不需要編寫任何InstallShieldScript
2,添加自定義控制
首先需要添加腳本,這里編寫一個簡單的Hello Msi彈出窗口
在Designer tab頁中選擇InstallScript
在右側的Files中右鍵添加Script File來添加一個腳本文件
添加如下腳本
export prototype MyFunction(HWND); //如果該函數需要供事件處理直接調用需要如此聲明,且參數必須為HWND
//如果內部調用則之需要如下聲明
/////////////////////////////////////////////////////
function MyFunction(hMSI)//對應聲明中的HWND用於標示MSI的Handle
// To Do: Declare local variables.
STRING szMsg;//局部變量聲明
begin
// To Do: Write script that will be executed when MyFunction is called.
szMsg = "This will install Example Program.";
MessageBox (szMsg, INFORMATION);
end;
將腳本綁定到事件處理中
選擇Customer Action欄
選擇右側的Customer Actions右鍵點開Wizards將會彈出相應的向導
輸入名稱備注
選擇InstallScript類型
選擇添加的函數
一路Next,完成之后將會在Customer Actions中顯示你添加的名稱
將User Interface->InstallWelcome點開右鍵Edit Behavior(編輯事件處理),Edit Layout(編輯外觀)選擇Edit Behavior
選擇Next PushButton
在右側的列表框中添加一個新的Action:
Event |
DoAction |
Argument |
選擇Customer Actions下的自定義名稱 |
Condition |
選擇1(總是執行) |
編譯點擊Test User Interface 測試運行
在歡迎界面中點擊下一步將會彈出"This will install Example Program."
3,發布
選擇Build Project即可完成發布
OK,大功告成,InstallShield安裝包的打包流程就介紹到這里了.詳細的信息請參考如下資料
參考資料
Stefan Krueger http://msmvps.com/blogs/installsite/default.aspx
Rod Maupin http://www.installationdeveloper.com/
海洋女神 http://www.cnblogs.com/Cindy_weiwei
奕婷 http://www.cnblogs.com/sabrinahuang/
Kevin wang http://www.cnblogs.com/installshield/archive/2010/06/25/1765043.html
源文檔 <http://www.cnblogs.com/installshield/archive/2010/06/25/1765043.html>
Install Shield用戶手冊