摘要:本篇文檔會(huì)告訴你如何使用InstallShield開發(fā)平臺(tái)來創(chuàng)建,編譯,運(yùn)行一個(gè)安裝程序。在這篇文檔中你會(huì)學(xué)習(xí)到安裝過程中碰到的下面一些內(nèi)容:加載安裝文件,設(shè)置快捷方式,修改注冊(cè)表,條件安裝一些文件,注冊(cè)com組件,更換安裝界面,調(diào)試以及發(fā)布安裝程序。
創(chuàng)建,編譯,測(cè)試安裝的工程
這一部分主要講述如何快速的創(chuàng)建一個(gè)安裝Project。
1、創(chuàng)建一個(gè)安裝的工程
首先來看看InstallShield8.0的開發(fā)控制臺(tái)界面,熟悉一下開發(fā)環(huán)境。
圖1
|
我們可以從文件菜單中選擇開始一個(gè)新的工程向?qū)?,或者可以直接從工具欄中選中開始一個(gè)新的工程向?qū)О粹o,更直接的就是單擊控制臺(tái)界面上的Start the Project Wizard超鏈接即可彈出一個(gè)創(chuàng)建新工程的對(duì)話框如圖2,你可以安裝提示一步一步地往下走就是了。
圖2
|
單擊下一步,給我們的工程設(shè)置名稱,見圖3
圖3
|
在上圖中,當(dāng)你輸入一個(gè)工程的名字并單擊下一步的時(shí)候,向?qū)Ь蜁?huì)創(chuàng)建一個(gè)ProjectName.ism,被例子中則創(chuàng)建了liqiang_test.ism文件,你在IDE中對(duì)工程所做的設(shè)置都保存在這個(gè)文件中,如果你想將你的工程移植到其他機(jī)器上,你只需要將.ism文件復(fù)制到其他機(jī)器上即可。
單擊下一步,選擇安裝工程的類型,見圖4
圖4
|
這個(gè)屬性頁(yè)允許你選擇創(chuàng)建工程的類型,這里我們選擇了InstallScript MSI Project,這種類型的安裝程序使用腳本來驅(qū)動(dòng)安裝界面,使用windows installer來改變目標(biāo)系統(tǒng),比如添加文件,創(chuàng)建快捷方式,修改注冊(cè)表,關(guān)于InstallScript MSI Project和Basic MSI Project兩種方式詳細(xì)的區(qū)別,你可以參考幫助文件。
單擊下一步,設(shè)置應(yīng)用程序的信息,圖5
圖5
|
你在Application Name中填寫的應(yīng)用程序的名稱會(huì)出現(xiàn)在安裝對(duì)話框中,并且你在控制面板的添加和刪除程序?qū)υ捒蛑酗@示的名稱也就是這個(gè)名稱。
還有一個(gè)就是設(shè)置安裝路徑,默認(rèn)的情況下都是安裝到C:\Program Files下,但是有一些例外,比如有的系統(tǒng)盤不在C上,為了使安裝路徑可以動(dòng)態(tài)改變,installshield提供了ProgramFilesFolder屬性,這個(gè)屬性的值在安裝的時(shí)候動(dòng)態(tài)的初始化為目標(biāo)系統(tǒng)的Program file 目錄。
單擊下一步
圖6
|
這個(gè)屬性頁(yè)用來選擇是否采用Installshield update service 自動(dòng)地給你的用戶發(fā)送更新消息,這里我們沒有選擇。
單擊下一步,填寫關(guān)于你們公司的信息
圖7
|
填寫公司的名稱和電話,網(wǎng)址等
單擊下一步,選擇語言
圖8
|
單擊下一步,添加Features,見圖9
我們將缺省的Features刪除,添加ProgramFiles and HelpFiles兩個(gè)Features。
當(dāng)你的安裝程序很多情況下,可以通過這個(gè)屬性頁(yè)將你的所有的安裝程序分組,然后在安裝的過程中,用戶可以選擇自定義安裝方式來自己選擇需要安裝的內(nèi)容,這里為了簡(jiǎn)單舉例子,我就分了兩組。
單擊下一步,將安裝文件添加到相應(yīng)的分組類。
圖10
|
單擊 Add Files,在彈出的對(duì)話框中選擇相應(yīng)的文件,
為了使你的安裝工程可以很容易的移植到其他的機(jī)器上,工程向?qū)Щ蛘逫DE對(duì)你添加的每一個(gè)文件都創(chuàng)建了一個(gè)path variable,
圖11
|
單擊下一步,設(shè)置快捷方式,圖12
圖12
|
我們可以在下面的第二部分中可以看到關(guān)于設(shè)置快捷方式的詳細(xì)描述,我們不在這一步驟設(shè)置快捷方式,單擊下一步,
圖13
|
通過導(dǎo)入reg文件來修改注冊(cè)表的鍵值,直接跳過,關(guān)于修改注冊(cè)表,后面有詳細(xì)的描述
單擊下一步,選擇安裝的對(duì)話框
圖14
|
這里你可以選擇你安裝過程中需要的對(duì)話框,向?qū)?huì)自動(dòng)將你選擇的對(duì)話框腳本函數(shù)添加到工程的腳本中,在第6部分你可以了解到腳本的內(nèi)容。
單擊下一步,選擇安裝對(duì)話的皮膚,見圖15
圖15
|
這里我選擇了Blue,你也可以選擇None
單擊下一步,進(jìn)入向?qū)У淖詈笠徊剑?/P>
圖16
|
檢查你在向?qū)е性O(shè)置的選項(xiàng)是否正確,如果確認(rèn)無誤,單擊完成,就創(chuàng)建了一個(gè)新的安裝工程,這個(gè)工程一般都在你的機(jī)器,我的文檔目錄下,下面進(jìn)入第二部分,利用IDE修改我們創(chuàng)建的安裝工程。
2、利用IDE修改安裝工程
設(shè)置Features的屬性
圖17
|
Featrues的一些屬性如下,你可以分別設(shè)置
圖18
|
設(shè)置安裝類型的屬性,圖19
圖19
|
對(duì)應(yīng)三種安裝方式,最小,典型,自定義,你可以分別選擇不同的安裝組件相
匹配。
從IDE中向工程中添加文件
下面我們演示如何向工程中添加文件,
首先打開Files and Folders視圖
圖20
|
然后從上面的source 文件夾中選中要添加的文件,然后拖動(dòng)到下面的工程中,然后會(huì)彈出一個(gè)讓你添加路徑變量的對(duì)話框。
Ok,下面講述一下如何編譯我們的這個(gè)安裝工程。
3、編譯安裝工程
單擊"Build"菜單,如圖21
圖21
|
選擇Realse 向?qū)?,彈出下面的?duì)話,單擊下一步,按照提示,一路走來。
圖 22
|
圖23
|
在這個(gè)屬性頁(yè)中我們可設(shè)置我們安裝文件的名稱,單擊下一步
圖24
|
這是用來指定一個(gè)文件夾名稱,你編譯出來的安裝文件將來就存放在這個(gè)文件夾下面。
下面的這個(gè)屬性頁(yè)可以直接跳過
圖25
|
圖26
|
上面的這個(gè)屬性頁(yè)可以設(shè)置語言
單擊下一步,進(jìn)入選擇媒體類型的頁(yè)面,這里我們選擇我們安裝程序的發(fā)布介質(zhì),我們選擇CDrom,
接下來選擇發(fā)布程序
圖27
|
圖28
|
單擊下一步,
圖29
|
Ok,這里我們選擇了Compress all Files,
單擊next,
圖30
|
單擊下一步,我們來指定如何定位安裝源文件
圖31
|
這里我們選擇了從我們的安裝文件中復(fù)制,單擊下一步
圖32
|
這個(gè)屬性頁(yè)同上
下一步,用來選擇是否要添加NET framework組件。
圖33
|
這里我們選擇不包含net framework。下一步,包含Visual J#
圖34
|
單擊下一步,進(jìn)入高級(jí)選項(xiàng)選擇,圖35
圖35
|
終于快要大功告成了,單擊下一步,檢查一下啊我們的選擇是否正確,如果正確無誤,單擊完成,
圖36
|
Ok,至此,單擊完成后,我們的工程就會(huì)自動(dòng)編譯,在你的安裝工程下生成安裝文件。目錄就是你指定的。Ok,看看我編譯的安裝文件吧
圖37
|
Ok,下面就是運(yùn)行我們的安裝文件了,來吧,試驗(yàn)一下,還有很多功能需要后面添加,,但是這個(gè)已經(jīng)可以安裝運(yùn)行了。
4、運(yùn)行安裝工程
單擊上面的setup.exe文件,就開始運(yùn)行我們剛制作的安裝程序了,
圖38
|
具體的頁(yè)面省略了,如果你一路跟我做到這里,我相信你的安裝文件也可以運(yùn)行了,下面我看看如果添加其他的東西,更精彩的內(nèi)容在后面的呢,如果修改注冊(cè)表,注冊(cè)com組件,修改安裝界面,等等內(nèi)容。
設(shè)置快捷方式以及修改注冊(cè)表
先講一下如何設(shè)置快捷方式
下面我在開始的programes菜單中添加Imclient.exe的快捷方式
首先我們?cè)贗DE中打開ShortCuts視圖,見圖39
圖39
|
右鍵單擊Programs Menu項(xiàng),在彈出的菜單中選擇New Advertised Shortcut,如果圖40,然后在彈出的Browse for a Component 對(duì)話框中,從列表中選擇Imserver.exe。如圖40
圖40
|
然后單擊Open按鈕。設(shè)置下面的屬性
圖41
|
當(dāng)然,在這里,你還可以根據(jù)上面的提示分別設(shè)置桌面快捷方式,等等
下面一個(gè)內(nèi)容就是如何修改注冊(cè)表,假如我們向注冊(cè)表的
HKEY_LOCAL_MACHINE\SOFTWARE\linkrun\imserver下添加一個(gè)liqdata的鍵
注冊(cè)COM組件
對(duì)于很多文件而言,安裝程序只要將他們從源文件處復(fù)制到目標(biāo)系統(tǒng)中就可以了,但是對(duì)于某些文件,安裝程序就要在目標(biāo)系統(tǒng)中注冊(cè)他們,比如,自注冊(cè)文件或者ActiveX 控件。
下面我演示一下如何在你的安裝工程中注冊(cè)一個(gè)G729AEC.dll,一個(gè)com組件。
1、首先打開File 和Folders視圖如下圖
圖42
|
2、在Files and Folders視圖的上部,Add new components to the feature列表框中選擇一個(gè)你的安裝程序名稱。這里我選擇client
3、在下面的安裝目錄上右鍵單擊,在彈出菜單上選擇Launch Component wizard項(xiàng)。
圖43
|
4、在彈出的添加組件向?qū)е羞x擇"Let me select a type and define the component myself",單擊下一步。
5、選擇你要添加組件的類別,然后寫下你的組件的名稱
圖45
|
6、下面選擇你的組件在目標(biāo)機(jī)器上的位置你可以選擇放到安裝目錄下,也可以選擇放到WinNT系統(tǒng)目錄下
圖46
|
7、單擊右側(cè)的瀏覽按鈕,選擇你的組件。
圖47
|
將COM組件添加到安裝工程:
圖48
|
8、單擊完成就將一個(gè)com組件添加到安裝工程中了
圖49
|
Ok,現(xiàn)在運(yùn)行我們的安裝包就可以將G729AEC.dll安裝目標(biāo)機(jī)器上,并注冊(cè)。
條件安裝
通常我們?cè)谥谱靼惭b程序的時(shí)候,我們總是要考慮我們程序的運(yùn)行環(huán)境,比如,操作系統(tǒng)的語言,用戶是否有權(quán)限。
如果你想在某些特定的操作系統(tǒng)中安裝你的程序,你可以通過設(shè)置組件的操作系統(tǒng)特性來防止你的程序在其他系統(tǒng)上安裝。這個(gè)可以在Setup Design視圖中完成。
下面我演示一下,如果創(chuàng)建一個(gè)只能安裝到Windows NT 4.0 and Windows 2000 systems:下的組件:
1、打開Setup Design視圖,圖50
圖50
|
2、右鍵單擊Client項(xiàng),在彈出菜單中選擇New Component
3、然后將你新添加的這個(gè)組件,改名windows_nt_files
圖51
|
4、右鍵單擊File面板,添加相應(yīng)的文件
圖52
|
5、右鍵單擊你的文件,將你添加的文件設(shè)置為Set Key File。
6、然后將window的操作系統(tǒng)屬性設(shè)置為Windows NT 4.0 and Windows 2000。這樣你的組件就只能安裝到Windows NT 4.0 and Windows 2000系統(tǒng)上了。
圖53
|
我們還可以設(shè)置Windows Installer Conditions來進(jìn)行條件安裝,具體的可以參考幫助文檔。
使用腳本修改安裝程序
InstallShield開發(fā)工具是采用InstallScript語言來運(yùn)行一個(gè)安裝程序的,你可以在InstallScript視圖中來修改工程的腳本程序。如下圖
圖54
|
InstallScript MSI腳本語言采用的事件驅(qū)動(dòng)模式,也就是說,所有的函數(shù)調(diào)用是安裝一定的順序來進(jìn)行的。
在你的工程中自己定義的函數(shù)都會(huì)出現(xiàn)你的函數(shù)樹上,見上圖,你可以單擊樹上函數(shù)名稱來編輯或者修改該函數(shù)。
事件處理函數(shù)(event-handler functions)是不會(huì)出現(xiàn)你的函數(shù)樹上,但是這些函數(shù)你的工程也可以使用,當(dāng)然,此時(shí)我們使用的該函數(shù)的缺省代碼,如果你想修改某個(gè)事件處理函數(shù),你可以從事件列表中選擇一個(gè)事件比如我們選擇(Befor Move Data),然后選擇一個(gè)關(guān)于這個(gè)事件的函數(shù)(比如Begin),然后這個(gè)函數(shù)的定義就會(huì)出現(xiàn)在你的腳本中,在你的腳本中會(huì)出現(xiàn)下面的代碼:
圖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; |
你可以在這個(gè)函數(shù)執(zhí)行自己的代碼了。
下面我們演示一下如何在這個(gè)函數(shù)添加一個(gè)MessageBox函數(shù)。
1)首先將begin和end間的//開頭的都刪?br>
2)按下CTRL+I彈出添加函數(shù)的向?qū)А?BR>
3)在函數(shù)的種類列表中,選擇"Built-in dialog box".
4)在函數(shù)名稱中,選擇"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.
最后,其實(shí)就是在你的OnBegin函數(shù)中添加了如下的代碼:
function OnBegin( ) begin MessageBox ( "Welcome to the Tutorial installation!" , INFORMATION ); end; |
當(dāng)你修改了你的腳本時(shí),你就要重新編譯它,這樣,當(dāng)你運(yùn)行安裝程序的時(shí)候,在彈出歡迎對(duì)話框之前就會(huì)彈出這個(gè)消息框。
InstallScript語言包含了大概250個(gè)函數(shù)用來處理相關(guān)的任務(wù),詳細(xì)內(nèi)容參見幫助文檔。
修改安裝界面
處理用戶的輸入:
在你的安裝腳本中,所有處理用戶輸入對(duì)話框的顯示只在下面的四個(gè)函數(shù)中出現(xiàn)OnFirstUIBefore,這個(gè)函數(shù)里包含了用戶第一次安裝該程序,在復(fù)制文件之前的所有的對(duì)話框。
OnFirstUIAfter,這個(gè)函數(shù)包含用戶第一次安裝該程序,在復(fù)制文件之后所用到的對(duì)話框顯示
OnMaintUIBefore,這個(gè)函數(shù)中包含了用戶采用maintenance模式安裝時(shí),在復(fù)制文件之前的所用到的所有的對(duì)話框。
OnMaintUIAfter,這個(gè)函數(shù)中包含了用戶采用maintenance模式安裝,在復(fù)制文件之后所用到的對(duì)話框。
對(duì)于InstallS
cript MSI工程來說,其實(shí)這里最重要的還是OnFirstUIBefore and OnMaintUIBefore兩個(gè)函數(shù),用戶無論是第一次安裝還是maintenance安裝,對(duì)話框顯示都在這兩個(gè)函數(shù)中,OnFirstUIBefore函數(shù)缺省的情形應(yīng)該像下面這樣吧。
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; |
關(guān)于InstallShield8.0的入門就簡(jiǎn)單介紹到這里,關(guān)于安裝程序的制作,以后有機(jī)會(huì)我會(huì)寫一些更加詳細(xì)的幫助文檔,希望和大家多交流。