創建,編譯,測試安裝的工程
這一部分主要講述如何快速的創建一個安裝Project。
1、創建一個安裝的工程
首先來看看InstallShield8.0的開發控制台界面,熟悉一下開發環境。
圖1
我們可以從文件菜單中選擇開始一個新的工程向導,或者可以直接從工具欄中選中開始一個新的工程向導按鈕,更直接的就是單擊控制台界面上的Start the Project Wizard超鏈接即可彈出一個創建新工程的對話框如圖2,你可以安裝提示一步一步地往下走就是了。
圖2
單擊下一步,給我們的工程設置名稱,見圖3
圖3
在上圖中,當你輸入一個工程的名字並單擊下一步的時候,向導就會創建一個ProjectName.ism,被例子中則創建了liqiang_test.ism文件,你在IDE中對工程所做的設置都保存在這個文件中,如果你想將你的工程移植到其他機器上,你只需要將.ism文件復制到其他機器上即可。
單擊下一步,選擇安裝工程的類型,見圖4
圖4
這個屬性頁允許你選擇創建工程的類型,這裡我們選擇了InstallScript MSI Project,這種類型的安裝程序使用腳本來驅動安裝界面,使用windows installer來改變目標系統,比如添加文件,創建快捷方式,修改注冊表,關於InstallScript MSI Project和Basic MSI Project兩種方式詳細的區別,你可以參考幫助文件。
單擊下一步,設置應用程序的信息,圖5
圖5
你在Application Name中填寫的應用程序的名稱會出現在安裝對話框中,並且你在控制面板的添加和刪除程序對話框中顯示的名稱也就是這個名稱。
還有一個就是設置安裝路徑,默認的情況下都是安裝到C:\Program Files下,但是有一些例外,比如有的系統盤不在C上,為了使安裝路徑可以動態改變,installshield提供了ProgramFilesFolder屬性,這個屬性的值在安裝的時候動態的初始化為目標系統的Program file 目錄。
單擊下一步
圖6
這個屬性頁用來選擇是否采用Installshield update service 自動地給你的用戶發送更新消息,這裡我們沒有選擇。
單擊下一步,填寫關於你們公司的信息
圖7
填寫公司的名稱和電話,網址等
單擊下一步,選擇語言
圖8
單擊下一步,添加Features,見圖9
圖9
我們將缺省的Features刪除,添加ProgramFiles and HelpFiles兩個Features。
當你的安裝程序很多情況下,可以通過這個屬性頁將你的所有的安裝程序分組,然後在安裝的過程中,用戶可以選擇自定義安裝方式來自己選擇需要安裝的內容,這裡為了簡單舉例子,我就分了兩組。
單擊下一步,將安裝文件添加到相應的分組類。
圖10
單擊 Add Files,在彈出的對話框中選擇相應的文件,
為了使你的安裝工程可以很容易的移植到其他的機器上,工程向導或者IDE對你添加的每一個文件都創建了一個path variable,
圖11單擊下一步,設置快捷方式,圖12
圖12
我們可以在下面的第二部分中可以看到關於設置快捷方式的詳細描述,我們不在這一步驟設置快捷方式,單擊下一步,
圖13
通過導入reg文件來修改注冊表的鍵值,直接跳過,關於修改注冊表,後面有詳細的描述
單擊下一步,選擇安裝的對話框
圖14
這裡你可以選擇你安裝過程中需要的對話框,向導會自動將你選擇的對話框腳本函數添加到工程的腳本中,在第6部分你可以了解到腳本的內容。
單擊下一步,選擇安裝對話的皮膚,見圖15
圖15這裡我選擇了Blue,你也可以選擇None
單擊下一步,進入向導的最後一步,
圖16
檢查你在向導中設置的選項是否正確,如果確認無誤,單擊完成,就創建了一個新的安裝工程,這個工程一般都在你的機器,我的文檔目錄下,下面進入第二部分,利用IDE修改我們創建的安裝工程。2、利用IDE修改安裝工程
設置Features的屬性
圖17
Featrues的一些屬性如下,你可以分別設置
圖18
設置安裝類型的屬性,圖19
圖19對應三種安裝方式,最小,典型,自定義,你可以分別選擇不同的安裝組件相匹配。
從IDE中向工程中添加文件
下面我們演示如何向工程中添加文件,
首先打開Files and Folders視圖
圖20
然後從上面的source 文件夾中選中要添加的文件,然後拖動到下面的工程中,然後會彈出一個讓你添加路徑變量的對話框。
Ok,下面講述一下如何編譯我們的這個安裝工程。
3、編譯安裝工程
單擊"Build"菜單,如圖21
圖21
選擇Realse 向導,彈出下面的對話,單擊下一步,按照提示,一路走來。
圖 22
圖23
在這個屬性頁中我們可設置我們安裝文件的名稱,單擊下一步
圖24
這是用來指定一個文件夾名稱,你編譯出來的安裝文件將來就存放在這個文件夾下面。
下面的這個屬性頁可以直接跳過
圖25
圖26
上面的這個屬性頁可以設置語言
單擊下一步,進入選擇媒體類型的頁面,這裡我們選擇我們安裝程序的發布介質,我們選擇CDrom,
圖27 接下來選擇發布程序
圖28
單擊下一步,
圖29
Ok,這裡我們選擇了Compress all Files,
單擊next,
圖30
單擊下一步,我們來指定如何定位安裝源文件
圖31這裡我們選擇了從我們的安裝文件中復制,單擊下一步
圖32
這個屬性頁同上
下一步,用來選擇是否要添加NET framework組件。
圖33
這裡我們選擇不包含net framework。下一步,包含Visual J#
圖34
單擊下一步,進入高級選項選擇,圖35
圖35 終於快要大功告成了,單擊下一步,檢查一下啊我們的選擇是否正確,如果正確無誤,單擊完成,
圖36
Ok,至此,單擊完成後,我們的工程就會自動編譯,在你的安裝工程下生成安裝文件。目錄就是你指定的。Ok,看看我編譯的安裝文件吧
圖37
Ok,下面就是運行我們的安裝文件了,來吧,試驗一下,還有很多功能需要後面添加,,但是這個已經可以安裝運行了。
4、運行安裝工程
單擊上面的setup.exe文件,就開始運行我們剛制作的安裝程序了,
圖38
具體的頁面省略了,如果你一路跟我做到這裡,我相信你的安裝文件也可以運行了,下面我看看如果添加其他的東西,更精彩的內容在後面的呢,如果修改注冊表,注冊com組件,修改安裝界面,等等內容。設置快捷方式以及修改注冊表
先講一下如何設置快捷方式
下面我在開始的programes菜單中添加Imclient.exe的快捷方式
首先我們在IDE中打開ShortCuts視圖,見圖39
圖39 右鍵單擊Programs Menu項,在彈出的菜單中選擇New Advertised Shortcut,如果圖40,然後在彈出的Browse for a Co
mponent 對話框中,從列表中選擇Imserver.exe。如圖40
4、在彈出的添加組件向導中選擇"Let me select a type and define the component myself",單擊下一步。
圖44
5、選擇你要添加組件的類別,然後寫下你的組件的名稱
圖45
6、下面選擇你的組件在目標機器上的位置你可以選擇放到安裝目錄下,也可以選擇放到WinNT系統目錄下
圖46
7、單擊右側的浏覽按鈕,選擇你的組件。
圖47
將COM組件添加到安裝工程:
圖48
8、單擊完成就將一個com組件添加到安裝工程中了
圖49
Ok,現在運行我們的安裝包就可以將G729AEC.dll安裝目標機器上,並注冊。
條件安裝
通常我們在制作安裝程序的時候,我們總是要考慮我們程序的運行環境,比如,操作系統的語言,用戶是否有權限。
如果你想在某些特定的操作系統中安裝你的程序,你可以通過設置組件的操作系統特性來防止你的程序在其他系統上安裝。這個可以在Setup Design視圖中完成。
下面我演示一下,如果創建一個只能安裝到Windows NT 4.0 and Windows 2000 systems:下的組件:
1、打開Setup Design視圖,圖50
圖50
2、右鍵單擊Client項,在彈出菜單中選擇New Component
3、然後將你新添加的這個組件,改名windows_nt_files
圖51
4、右鍵單擊File面板,添加相應的文件
圖52
5、右鍵單擊你的文件,將你添加的文件設置為Set Key File。
6、然後將window的操作系統屬性設置為Windows NT 4.0 and Windows 2000。這樣你的組件就只能安裝到Windows NT 4.0 and Windows 2000系統上了。
圖53
我們還可以設置Windows Installer Conditions來進行條件安裝,具體的可以參考幫助文檔。
使用腳本修改安裝程序
InstallShield開發工具是采用InstallScript語言來運行一個安裝程序的,你可以在InstallScript視圖中來修改工程的腳本程序。如下圖
圖54
InstallScript MSI腳本語言采用的事件驅動模式,也就是說,所有的函數調用是安裝一定的順序來進行的。
在你的工程中自己定義的函數都會出現你的函數樹上,見上圖,你可以單擊樹上函數名稱來編輯或者修改該函數。
事件處理函數(event-handler functions)是不會出現你的函數樹上,但是這些函數你的工程也可以使用,當然,此時我們使用的該函數的缺省代碼,如果你想修改某個事件處理函數,你可以從事件列表中選擇一個事件比如我們選擇(Befor Move Data),然後選擇一個關於這個事件的函數(比如Begin),然後這個函數的定義就會出現在你的腳本中,在你的腳本中會出現下面的代碼:
圖55
//////////////////////////////////////////////////////////////////
//
// FUNCTION: OnBegin
//
// EVENT: Begin event is always sent as the first event during installation.
//
//////////////////////////////////////////////////////////////////
function OnBegin( )
begin
// TO DO: you may change default non-UI settings, for example
//
// You may also perform your custom initialization steps, check requirements, etc.
end;
你可以在這個函數執行自己的代碼了。
下面我們演示一下如何在這個函數添加一個MessageBox函數。
1)首先將begin和end間的//開頭的都刪?br>
2)按下CTRL+I彈出添加函數的向導。
3)在函數的種類列表中,選擇"Built-in dialog box".
4)在函數名稱中,選擇"MessageBox".單擊下一步。
5)In the szMsg field-which contains the message you want to display-type "Welcome to the Tutorial installation!" (including the quotation marks).
6)In the nType drop-down list-which specifies the type of message box to display-select INFORMATION.
7)Click Finish to paste your function call into the script.
最後,其實就是在你的OnBegin函數中添加了如下的代碼:
function OnBegin( )
begin
MessageBox ( "Welcome to the Tutorial installation!" , INFORMATION );
end;
當你修改了你的腳本時,你就要重新編譯它,這樣,當你運行安裝程序的時候,在彈出歡迎對話框之前就會彈出這個消息框。
InstallScript語言包含了大概250個函數用來處理相關的任務,詳細內容參見幫助文檔。
修改安裝界面
處理用戶的輸入:
在你的安裝腳本中,所有處理用戶輸入對話框的顯示只在下面的四個函數中出現OnFirstUIBefore,這個函數裡包含了用戶第一次安裝該程序,在復制文件之前的所有的對話框。
OnFirstUIAfter,這個函數包含用戶第一次安裝該程序,在復制文件之後所用到的對話框顯示
OnMaintUIBefore,這個函數中包含了用戶采用maintenance模式安裝時,在復制文件之前的所用到的所有的對話框。
OnMaintUIAfter,這個函數中包含了用戶采用maintenance模式安裝,在復制文件之後所用到的對話框。
對於InstallScript MSI工程來說,其實這裡最重要的還是OnFirstUIBefore and OnMaintUIBefore兩個函數,用戶無論是第一次安裝還是maintenance安裝,對話框顯示都在這兩個函數中,OnFirstUIBefore函數缺省的情形應該像下面這樣吧。
Dlg_Start:
// beginning of dialogs label
Dlg_SdWelcome:
szTitle = "";
szMsg = "";
nResult = SdWelcome( szTitle, szMsg );
if (nResult = BACK) goto Dlg_Start;
Dlg_SdCustomerInformation:
szMsg = "";
szTitle = "";
nResult = SdCustomerInformation( szTitle, szName, szCompany, nUser );
if (nResult = BACK) goto Dlg_SdWelcome;
關於InstallShield8.0的入門就簡單介紹到這裡,關於安裝程序的制作,以後有機會我會寫一些更加詳細的幫助文檔,希望和大家多交流。