




已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
前言2001-01-18 addingyesky在DOS時代,人們不會忘記,想要制作一個應(yīng)用程序的安裝往往是通過批處理文件來實現(xiàn)的,這種風(fēng)格的安裝程序常常令人們樂此不疲。直到UCDOS圖形安裝界面的出現(xiàn),才讓人感到一些新意,并為之一振。然而不久,具有易學(xué)易用的圖形用戶界面、多任務(wù)功能的Windows系統(tǒng)出現(xiàn)了,并大有取代DOS的趨勢。直到Windows 95的問世,才使得DOS真正變?yōu)檫^去,成為PC機上最流行的操作環(huán)境,并且隨著Windows 98與Internet Explorer集成的新特性的引入,越來越多的程序員已開始致力于Windows應(yīng)用程序的研究與開發(fā)。同樣,安裝程序的運行環(huán)境也由原來的DOS變成了現(xiàn)在的Windows系統(tǒng)。安裝一個軟件或應(yīng)用程序已不再僅僅是將相關(guān)的文件復(fù)制到硬盤中,而是必須允許用戶按自己的愿望選擇安裝類型和安裝路徑,并且在不需要的時候,還要能夠?qū)惭b的相關(guān)內(nèi)容全部刪除掉。這種Windows下的安裝程序給人們留下了很深的印象,人們在驚嘆Office 2000強大的安裝功能和悅目的安裝界面之后,已無法維持對DOS安裝程序的留戀。InstallShield恰恰是在這種操作系統(tǒng)不斷發(fā)展的潮流中應(yīng)運而生的,從InstallShield3.0到5.5,從普通的安裝程序制作到最新的Windows安裝界面,InstallShield公司已開發(fā)出基本各種操作平臺和軟件開發(fā)環(huán)境的InstallShield產(chǎn)品。InstallShield for Microsoft Visual C+6(簡稱InstallShield VC版)和InstallShield Express Custom Edition for C+ Builder或Delphi(簡稱InstallShield Express C+ Builder或Delphi版)就是其中用戶較為熟悉的產(chǎn)品。由于InstallShield功能強大、靈活性好、完全可擴展以及具有強有力的網(wǎng)絡(luò)支持,在各種安裝程序開發(fā)工具中脫穎而出,成為目前最為流行的制作安裝程序的工具軟件。而且,它所內(nèi)建的腳本語言InstallScript使得用戶可以像其他高級語言那樣靈活地構(gòu)造出自己的安裝腳本程序來。正是因為這一點,InstallShield已經(jīng)成為目前制作安裝程序的工業(yè)標(biāo)準(zhǔn)。用戶所熟悉的Visual Studio 98、Borland C+ Builder(Delphi)以及目前絕大多數(shù)的軟件安裝程序均是用InstallShield來制作的。由于InstallShield 5.5還支持Visual Basic 6.0,故本教程以InstallShield 5.5專業(yè)版為主,并從應(yīng)用出發(fā),深入詳實地討論制作一般應(yīng)用類和數(shù)據(jù)庫類安裝程序的方法、技巧以及InstallScript語言基礎(chǔ),且在InstallShield用戶界面函數(shù)的基礎(chǔ)上,挖掘其運用能力,最大地發(fā)揮InstallShield的定制和擴展?jié)撃?,?gòu)造出頗具創(chuàng)意、功能完善的安裝界面來。本教程主要講述InstallShield開發(fā)環(huán)境、InstallScript腳本語言基礎(chǔ)、基本安裝程序的建立、安裝界面的設(shè)計以及深入安裝程序制作等共五章內(nèi)容。各章內(nèi)容并不停留在初學(xué)者的水平上,而且在制作安裝程序的每個方面,都給出了更高、更深層次的方法,例如安裝對話框的定制、使用自己的DLL庫、操作注冊表、安裝界面的漢化、使用多媒體、反安裝以及安裝程序的調(diào)試等。為了幫助讀者充分掌握InstallShield特性,本書給出大量有用的實例,這些實例均以Ex_xxxx命名,并在Windows 98、InstallShield 5.5專業(yè)版本調(diào)試通過。由于在軟件開發(fā)環(huán)境和操作系統(tǒng)未來發(fā)展的幾年里,Windows 98/2000以及VC+、C+ Builder、VB等還仍將是主流。在這種契機下,適時地將InstallShield 5.5的使用方法和技巧奉獻給大家,必將對廣大的程序員、軟件開發(fā)者和愛好者有所幫助。由于時間倉促,加之作者水平有限,不當(dāng)之處在所難免,懇請讀者批評指正。 感謝天極網(wǎng)及趙家雄、方舟先生,沒有他們此教程不可能在網(wǎng)上出版。感謝一直關(guān)心和支持此項工作的家人和朋友們,尤其是我的妻子。 集成開發(fā)環(huán)境概述2001-01-18 adding yesky在Windows 95/98/NT操作系統(tǒng)中正確安裝了InstallShield 5.5專業(yè)版后,就可以單擊任務(wù)欄的開始,選擇程序中的InstallShield 5.5 Professional Edition,再選擇該程序文件夾下的InstallShield 5.5 Professional Edition就能運行InstallShield。第一次運行時,彈出如圖1.1所示的界面。但當(dāng)利用Project Wizard(項目向?qū)?或其他工具創(chuàng)建一個安裝項目后,就會出現(xiàn)InstallShield 5.5的完整界面,如圖1.2所示。它是由標(biāo)題欄、菜單欄、工具欄、項目工作區(qū)窗口、文檔窗口、輸出窗口以及狀態(tài)欄等組成的。標(biāo)題欄是用來顯示出當(dāng)前窗口中的文件名,而且一般還有最小化、最大化或還原以及關(guān)閉按鈕,單擊關(guān)閉按鈕將退出集成開發(fā)環(huán)境。菜單欄包含了集成開發(fā)環(huán)境中幾乎所有的命令,它為用戶提供了文檔操作、安裝腳本程序的編譯、調(diào)試、窗口操作等一系列的功能。由于工具欄比菜單操作更為便捷,故常常將一些常用菜單命令也同時安排在工具欄上。項目工作區(qū)窗口包含用戶安裝項目的一些信息,包括文件組、組件、腳本文件、資源等。在項目工作區(qū)窗口中的目錄項或圖標(biāo)處單擊鼠標(biāo)右鍵,有時還會彈出相應(yīng)的快捷菜單,它包含當(dāng)前狀態(tài)下的一些常用操作。文檔窗口位于集成開發(fā)環(huán)境中的右邊,腳本文件、資源文件以及安裝程序所需要的各種資源等都可以通過該窗口顯示出來。輸出窗口出現(xiàn)在集成開發(fā)環(huán)境窗口的底部,它包含了Build和Compile兩個頁面,分別用來顯示建立和編譯過程中的相關(guān)信息。狀態(tài)欄位于集成開發(fā)環(huán)境的最底部,它用來顯示當(dāng)前操作狀態(tài)、說明、文本光標(biāo)所在的行列號等信息。菜單欄和工具2001-01-17 addingyesky1.2.1 菜單欄在集成開發(fā)環(huán)境界面中,用戶可以看到在它的上方排列著一系列的菜單,而每一個菜單下都有各自的菜單命令。在進一步與集成開發(fā)環(huán)境打交道之前,先了解各項菜單命令的基本功能是很有必要的,因為大部分的操作都是通過菜單來完成的。InstallShield 5.5的菜單欄中包含了File(文件)、Edit(編輯)、View(查看)、Insert(插入)、Project(項目)、Build(編譯)、Tools(工具)、Windows(窗口)以及Help(幫助)等菜單。其中File、Edit、View、Windows和Help均與一般Windows應(yīng)用程序的菜單用法相同。這里僅對Insert、Project、Build和Tools菜單作簡單說明。Insert菜單Insert菜單中的命令主要用于項目及資源的創(chuàng)建和添加,它有三個菜單項:File into Script Files.、File into Setup Files.和Links into File Groups.,分別表示將某個文件插入腳本文件和安裝文件中以及鏈接到文件組中。一般情況,這三個菜單項是被禁用的。當(dāng)切換到項目工作區(qū)窗口的Scripts頁面并選定其中的腳本文件目錄項時,菜單項File into Scripts Files被激活;當(dāng)切換到項目工作區(qū)窗口的Setup Files頁面并選定其中的目錄項時,菜單項Files into Setup Files被激活;而當(dāng)切換到項目工作區(qū)窗口的File Groups頁面并選中其中的Links目錄項時,菜單項Links into File Groups被激活。Project菜單Project菜單中的命令主要用于項目的創(chuàng)建和相關(guān)內(nèi)容的設(shè)置,它有三個菜單項:Project Wizard、Visual Basic Project Wizard和Setting,分別用來創(chuàng)建一般安裝項目、VB應(yīng)用程序安裝項目以及項目相關(guān)內(nèi)容的設(shè)置。Build菜單Build菜單中的命令主要用來進行安裝程序的編譯、連接、調(diào)試、運行等操作,它包括這樣的菜單命令:Compile(編譯)、Run Setup(運行)、Debug Setup(調(diào)試)、Media(媒介)、Settings.( 設(shè)置調(diào)試和編譯時的參數(shù))。Tools菜單Tools菜單中的命令主要是一些用于運行或定制開發(fā)環(huán)境中的實用工具,如圖1.3所示。值得一提的是,隨著集成開發(fā)環(huán)境當(dāng)前狀態(tài)的改變,有些菜單中的菜單命令項還會隨之變化。例如,當(dāng)文檔窗口沒有任何腳本程序時,許多菜單項都是灰色的,用戶不能使用它們。此外,InstallShiled 5.5與其他Windows應(yīng)用程序一樣,其菜單系統(tǒng)一般都遵循下列一些相同的規(guī)則:(1) 打開InstallShiled 5.5的File菜單,會看到Open菜單項文本后有,若選擇該菜單命令,則彈出通用文件打開對話框。因此,菜單文本后有就表示其執(zhí)行結(jié)果是將彈出相應(yīng)的對話框。(2) 在File菜單文本中,其中F字母帶下劃線。它表示該菜單項的助記符是F,當(dāng)按住Alt鍵不放,再敲擊該字母時,對應(yīng)的菜單項就會被選中。(3) 在Open菜單文本后有Ctrl+O字樣,任何時候,先按下Ctrl健不放,然后再按O鍵就執(zhí)行Open菜單項命令,彈出通用文件打開對話框。這表明Ctrl+O和該菜單項命令是一致的,Ctrl+O稱為該菜單項的快捷鍵。1.2.2 工具欄 盡管菜單命令可以完成各種操作,其相應(yīng)的快捷鍵也可提高操作的效率。但是,菜單命令的操作相對繁瑣,快捷鍵又需要用戶加以記憶,所以,有時候用起來還略嫌不便。而工具欄是一種圖形化的操作界面,具有直觀和快捷的特點,熟練掌握工具欄的使用后,工作效率將大有提高。工具欄是一系列工具按鈕的組合。當(dāng)鼠標(biāo)指針停留在工具欄按鈕的上面時,按鈕凸起,主窗口底端的狀態(tài)欄上顯示出該按鈕的一些提示信息,并且如果指針停留時間長一些,就會出現(xiàn)一個小的彈出式的工具提示窗口,顯示出按鈕的名稱。工具欄上的按鈕通常和一些菜單命令相對應(yīng),提供了一種執(zhí)行經(jīng)常使用的命令的快捷方法。同菜單中的菜單命令項相似,當(dāng)菜單命令項禁止使用時,相應(yīng)的工具按鈕也是灰色的,用戶不能使用它們。InstallShield 5.5的工具欄如圖1.4所示。1.3.1 Scripts頁面項目工作區(qū)窗口的Scripts頁面用來管理安裝程序的腳本文件,在該頁面中各項腳本文件均以樹狀列表的型式顯示出來的。每個目錄項前都有一個圖標(biāo),且頂層目錄項前還有一個套在方框中的符號+。雙擊頂層目錄項或單擊最前面的+,則直接打開并顯示該目錄項的所有子項,此時頂層目錄項前的+變成-號;再雙擊頂層目錄項或單擊最前面的-,則該項目的所有子項被收縮,只顯示頂層目錄項內(nèi)容,此時頂層項目前的-又變成了原來的+號。展開頂層目錄項的所有子項,雙擊以.rul為擴展名的腳本文件項,則在開發(fā)環(huán)境的右邊的文檔窗口中顯示出該腳本文件的內(nèi)容。為了增強安裝程序代碼的可讀性,腳本文件的源代碼內(nèi)容往往是以不同顏色來顯示的,各種顏色所代表的含義如下所示:白底黑字 一般文本黑底白字 被選定的文本青色底黑色字 文本的行標(biāo)記白底紅字 InstallShield的函數(shù)白底藍字 InstallScript腳本語言的關(guān)鍵字白色底品紅色字 常數(shù)白色底紫紅色字 用符號括起來的文本內(nèi)容白底綠字 注釋1.3.2 Components頁面項目工作區(qū)窗口的Components頁面用來管理安裝程序的各項組件。缺省時,一個安裝項目通常有程序文件(Program Files)、示例文件(Example Files)、幫助文件(Help Files)以及共享的DLL文件(Shared DLLs)共四個組件。雙擊某個組件目錄項,則在主界面的右邊窗口中顯示出該組件相關(guān)屬性的完整列表,這些屬性都可以方便地進行相應(yīng)的修改。1.3.3 Setup Types頁面 項目工作區(qū)窗口的Setup Types頁面用來管理提供給用戶的安裝類型。缺省時,一個安裝項目通常有Typical(典型)、 Compact(緊湊)和Custom(定制)共三種安裝類型。雙擊某種安裝類型,則在主界面的右邊窗口中顯示出該安裝類型相關(guān)的組件。在組件中,凡是文件組前面有一個帶鉤號()的圖標(biāo),表示該文件組已被選入相應(yīng)的安裝類型中。反復(fù)雙擊文件組前面的圖標(biāo)可在選入和不選之間進行切換。1.3.4 Setup Files頁面 項目工作區(qū)窗口的Setup Files頁面用來管理在安裝過程中所需要的安裝文件,它通常有含有下面一些內(nèi)容。(1) Splash Screen(啟動畫面)InstallShield用Setup.bmp作為安裝程序的啟動畫面。若在不同的語系(中文、English)中放置各自的位圖文件,則安裝程序?qū)⒏鶕?jù)安裝環(huán)境的不同語系選用相應(yīng)的Setup.bmp;若將該文件放置在Language Independent(與語系無關(guān))目錄項中,則不管操作系統(tǒng)是何種語系,都將以此位圖文件作為程序安裝的啟動畫面。(2) Language Independent(與語系無關(guān))它允許用戶為各種操作系統(tǒng)或?qū)iT為Windows 95/98/NT操作系統(tǒng)指定相應(yīng)的安裝文件,這樣不管怎樣的語系,安裝程序都會根據(jù)相應(yīng)的操作系統(tǒng)來揀選相應(yīng)的文件。(3) (3)其他語系相關(guān)的文件它允許用戶為各種操作系統(tǒng)或?qū)iT為Windows 95/98/NT操作系統(tǒng)指定相應(yīng)的安裝文件,這樣安裝程序會根據(jù)相應(yīng)的語系和語系下的操作系統(tǒng)來揀選相應(yīng)的文件。(4) Advanced Files(高級文件)在用具體的媒介發(fā)布時,允許用戶在相應(yīng)的媒介中放置一些非壓縮文件。1.3.5 File Groups頁面 項目工作區(qū)窗口的File Groups頁面用來管理安裝項目所需要的文件組。缺省時,安裝程序項目通常有Example Files(示例文件組)、Help Files(幫助文件組)、Program DLLs(應(yīng)用程序所需的DLL文件組)、Program Executable Files(應(yīng)用程序文件組)以及Shared DLLs(共享DLL文件組)共五個文件組。雙擊某個文件組,則在主界面的右邊窗口中顯示出該文件組的相關(guān)屬性,用戶可以方便地進行修改。1.3.6 Resources頁面 項目工作區(qū)窗口的Resources頁面用來管理安裝項目所需要的安裝資源。缺省時,一個安裝項目通常有String Table(字符串表)、Registry Entries(注冊項)和Shell Objects(外殼對象)共三種資源,其中Shell Objects資源是在Windows 95/98和Windows NT 4.0及其以后操作系統(tǒng)中創(chuàng)建被安裝應(yīng)用程序的程序文件夾(Folder命令)、桌面圖標(biāo)或相應(yīng)的快捷方式(Shortcut命令)。1.3.7 Media頁面項目工作區(qū)窗口的Media頁面用來管理程序發(fā)布時的媒介。在該頁面中包含Media Build Wizard(媒介創(chuàng)建向?qū)?、缺省的媒介以及用戶新創(chuàng)建的媒介等項,單擊Media Build Wizard將開始媒介創(chuàng)建向?qū)?,用來?chuàng)建新的媒介。需要說明的是:在各個頁面中,右擊鼠標(biāo)時都會彈出相應(yīng)的快捷菜單,它包含當(dāng)前狀態(tài)下的一些常用操作。 集成開發(fā)環(huán)境的初步實踐2001-01-18 addingyesky前面介紹了關(guān)于集成開發(fā)環(huán)境的一些基本情況,這里以空類型的安裝項目為例,進一步說明集成開發(fā)環(huán)境的使用過程。1.4.1 創(chuàng)建一個空的安裝項目在InstallShield 5.5中,利用Project Wizard(安裝項目向?qū)?和安裝項目模板可以創(chuàng)建Windows應(yīng)用程序、數(shù)據(jù)庫應(yīng)用程序以及其他類型程序的安裝項目。這里,我們首先對空類型的安裝項目作簡單說明,其他安裝項目類型將在以后的章節(jié)中陸續(xù)介紹。一個空類型的安裝項目包含了一般安裝項目的基本框架,只是安裝腳本文件中沒有相應(yīng)的安裝程序代碼,因而不執(zhí)行任何操作。創(chuàng)建一個空類型的安裝項目的最大好處是可以幫助用戶熟悉和掌握InstallScript語言的用法,并由此編制出簡繁隨意的安裝程序來。在InstallShield 5.5中,想要創(chuàng)建一個空類型的安裝項目,只需選擇File菜單-New菜單命令,在New對話框中選定Blank Setup,并單擊確定按鈕即可,如圖1.5所示。此時,InstallShield 5.5自動為該安裝項目命名為Blank Setup,并定位到項目工作區(qū)窗口的Scripts頁面,而且還在集成開發(fā)環(huán)境的右邊窗口中打開相應(yīng)的腳本文件。1.4.2 添加代碼 在空類型安裝項目的腳本文件中,一開始是沒有相應(yīng)的安裝程序內(nèi)容的,它需要用戶添加一些代碼,例如:.program / 每個安裝腳本程序都是以program開始SprintfBox(INFORMATION, 問候, %s, 您好! ); / 消息對話框endprogram / 每個安裝腳本程序都是以endprogram結(jié)束1.4.3 編譯并運行 打開Build菜單,選擇Compile菜單項或按快捷鍵Ctrl+F7,系統(tǒng)開始對Blank Setup進行編譯,同時在輸出窗口中在線地顯示出編譯過程的情況,當(dāng)出現(xiàn)Done - 0 error(s), 0 warning(s)字樣時,表示Blank Setup安裝程序可以被運行了。在Build菜單中選取Run Setup菜單命令或按快捷鍵Ctrl+F5,就可以運行Blank Setup安裝項目。運行剛開始,出現(xiàn)Setup對話框,用來顯示準(zhǔn)備安裝向?qū)У倪M展情況,如圖1.6。然后才執(zhí)行前面添加的程序代碼,其結(jié)果如圖1.7所示。本章著重介紹了InstallShield 5.5的集成開發(fā)環(huán)境,并以空類型的安裝項目為例簡單地說明了安裝腳本程序的添加、編譯、運行的過程。下一章將討論InstallScript腳本語言的基礎(chǔ)內(nèi)容。第 2 章 InstallScript腳本語言基礎(chǔ)2001-01-19 addingyeskyInstallScript是專門用來編寫InstallShield安裝程序的腳本語言。由于InstallScript和C語言極為相似,因而使得Visual C+用戶編寫安裝腳本程序頗為得心應(yīng)手。即使對于沒有任何語言基礎(chǔ)的用戶來說,編寫InstallScript程序也不會覺得無從下手,因為InstallScript程序結(jié)構(gòu)是非常簡單的。并且,InstallScript為用戶提供了超過250個的內(nèi)部函數(shù),從而使得用戶不需要太多的代碼就能編寫出具有專業(yè)水準(zhǔn)的安裝程序來。2.1 InstallScript程序結(jié)構(gòu)同其他程序設(shè)計語言一樣,InstallScript腳本語言也有自己的程序結(jié)構(gòu)。2.1.1 幾個InstallScript程序下面先來看看幾個比較簡單的InstallScript程序。例Ex_Hello 一個簡單的InstallScript程序,用來彈出問候?qū)υ捒?。STRING szTitle;programszTitle = 問候;SetDialogTitle (DLG_MSG_INFORMATION, szTitle);MessageBox(您好!, INFORMATION );endprogram 程序中,program.endprogram構(gòu)成主程序體,每一個InstallScript程序中都必須包含一個且只有一個這樣的主程序體。在主程序體外,只能是變量定義、用戶函數(shù)定義以及預(yù)處理指令等,而程序體內(nèi)可以包括若干條語句,每一條語句都由分號;結(jié)束。本例中,SetDialogTitle和MessageBox都是InstallScript的內(nèi)部函數(shù),它們分別用來設(shè)置對話框的標(biāo)題和顯示指定的信息文本,INFORMATION是一個系統(tǒng)預(yù)定義的常量,szTitle變量是在程序體外定義的字符串變量。例Ex_Func 自已定義一個函數(shù),用來顯示消息對話框。STRING szTitle; / 定義一個字符串變量prototype MyMessage(STRING, STRING); / 自定義函數(shù)的聲明programszTitle = 問候;MyMessage(szTitle, 您好!);endprogramfunction MyMessage(szTitle, szMessage) /* MyMessage函數(shù)體 */beginSetDialogTitle (DLG_MSG_INFORMATION, szTitle);MessageBox(szMessage, INFORMATION );end;盡管本例的結(jié)果和Ex_Hello示例相同,但它使用了自定義函數(shù)MyMessage。InstallScript語言規(guī)定,一個自定義函數(shù)名必須在program關(guān)鍵字前面聲明,而函數(shù)體代碼的實現(xiàn)代碼必須在endprogram后進行,且每個自定義的函數(shù)體都必須以begin開始end結(jié)束(注意end后要有分號;)。程序中的/*.*/之間的內(nèi)容或/開始一直到行尾的內(nèi)容是用來注釋的,它的目的只是為了提高程序的可讀性,對編譯和運行并不起作用。正是因為這一點,注釋的內(nèi)容可以用漢字來表示,也可以用英文來說明,只要便于理解就行。例Ex_Include 使用包含文件。#include Sddialog.h;STRING szTitle, szMsg, svDir;programszTitle = SdAskDestPath Example;svDir = C:EXAMPLETARGET;szMsg = ; / 獲取用戶指定的安裝路徑if (SdAskDestPath(szTitle, szMsg, svDir, 0) = NEXT) thenTARGETDIR = svDir;endif;/ 顯示用戶指定的安裝路徑SprintfBox(INFORMATION, SdAskDestPath, Successful.nnThe Target +directory is: + TARGETDIR);endprogram#include Sddialog.rul該程序是使用Sd(Script Dialog,腳本對話框)對話框函數(shù)的一個示例。InstallScript語言規(guī)定,在調(diào)用Sd對話框函數(shù)時,需要在program前加上#include Sddialog.h語句,而在endprogram后加#include Sddialog.rul。與C語言相似,#include Sddialog.h和#include Sddialog.rul是InstallScript的編譯指令,稱為預(yù)處理指令。InstallScript編譯系統(tǒng)會根據(jù)預(yù)處理指令#include中的文件名,把該文件的內(nèi)容包含進來。也就是說,實際程序的代碼長度是在原來長度的基礎(chǔ)上增加了Sddialog.h和Sddialog.rul文件的長度。程序中,SprintfBox參數(shù)內(nèi)容中的n是換行符,即在Successful.文本后回車換行。2.1.2 InstallScript程序的基本組成 從上面的幾個示例可以看出,一個InstallScript程序往往由預(yù)處理命令、函數(shù)、語句、變量以及注釋等幾個基本部分組成的。(1) 預(yù)處理命令在InstallScript程序的一開始經(jīng)常出現(xiàn)含有以#開頭的命令,它們是預(yù)處理命令。InstallScript提供了三類預(yù)處理命令:宏定義命令、文件包含命令和條件編譯命令。(2) 函數(shù)一個InstallScript程序是由若干個函數(shù)組成的。這些函數(shù)中,有的是InstallScript系統(tǒng)中所提供的內(nèi)部函數(shù),有的是用戶根據(jù)自己需要自己編制設(shè)計的函數(shù)(如例Ex_Func中的MyMessage)。(3) 語句語句是組成程序的基本單元,它可以是用來判斷的條件語句,也可以是用來反復(fù)運行的循環(huán)語句等。這些語句是組成InstallScript程序中的最重要部分之一。(4) 變量大多數(shù)程序離不開變量。InstallScript變量的類型比較簡單,主要有數(shù)值型(NUMBER)、字符串型(STRING)以及鏈表型(LIST)等,例如例Ex_Hello中的szTitle是一個STRING型變量。(5) 注釋程序的目的不僅在于實現(xiàn)某種功能、解決某個問題,而且還在于數(shù)據(jù)結(jié)構(gòu)和算法的交流。因此在程序中添加必要的注釋是非常重要的,它能提高程序的可讀性,幫助用戶對程序的理解。需要說明的是,InstallScript不支持控制臺的輸入和輸出,數(shù)據(jù)的輸入和輸出是通過對話框進行的。2.1.3 InstallScript程序的書寫風(fēng)格 盡管InstallScript語言比C或C+語言容易理解,但對于初學(xué)者來說,一開始就養(yǎng)成良好的編程習(xí)慣仍然是非常重要和必要的。1. 標(biāo)識符命名 標(biāo)識符是用來標(biāo)識變量名、函數(shù)名、結(jié)構(gòu)名、文件名等的有效字符序列。標(biāo)識符命名的好壞直接影響程序的可讀性,例如a1b1、c1d雖然是合法的標(biāo)識符,但卻是不好的標(biāo)識符,因為它不能讓人理解它們所代表的含義。下面幾個原則是命名時所必須注意的:(1) 合法性InstallScript規(guī)定標(biāo)識符由大小寫字母、數(shù)字字符(09)和下劃線組成,且第一個字符必須為字母或下劃線。任何標(biāo)識符中都不能有空格、標(biāo)點符號及其他字符,例如下面的標(biāo)識符是不合法的:93Salary,Youhe.Ding,$178,#5f68,rD注意,InstallScript中標(biāo)識符的大小寫是有區(qū)別的。例如,data、Data、DaTa、DATA等都是不同的標(biāo)識符。用戶定義的標(biāo)識符不能和系統(tǒng)的關(guān)鍵字同名。以下是43個InstallScript關(guān)鍵字:abort begin BOOL BYREFcase CHAR default downtoelse end elseif endfor endif endprogram endswitch endwhileexit for function GDI goto HWND if INTKERNEL LIST LONG NUMBERPOINTER program prototype repeatreturn SHORT step STRINGswitch then to typedefuntil USER while需要注意的是,用戶定義的標(biāo)識符還不能和InstallShield的函數(shù)名、系統(tǒng)變量名以及預(yù)定義的常量名相同。(2) 有效性雖然,標(biāo)識符的長度(組成標(biāo)識符的字符個數(shù))是任意的,但最好不能超過32個,因為InstallShield的編譯系統(tǒng)只能識別前32個字符,也就是說前32個字符相同的兩個不同標(biāo)識符被有的系統(tǒng)認為是同一個標(biāo)識符。(3) 易讀性在定義標(biāo)識符時,若能做到見名知意就可以達到易讀性的目的。為了達到這個目的,許多Visual Basic、Visual C+及Delphi等程序員廣泛使用匈牙利的命名規(guī)則來定義標(biāo)識符,InstallScript也使用這個命名規(guī)則。 匈牙利的命名規(guī)則是將標(biāo)識符的類型(小寫)來作為標(biāo)識符的前綴。例如前面的szTitle表示一個字符串變量,其中的sz表示STRING變量類型。表2.1列出了常用變量的前綴。除此之外,對于函數(shù)名的命名往往使用多個單詞來組成,每個單詞的第一字母都是大寫,例如前面的SdAskDestPath函數(shù)名。2. 縮進和注釋 縮進是指程序在書寫時不要將程序的每一行都由第一列開始,而且在適當(dāng)?shù)牡胤郊舆M一些空行或空格。它同注釋一樣,也是為了提高程序的可讀性。注釋的重要性已在前面論及過,這里不再重復(fù)。但要注意的是:(1) 注釋應(yīng)在編程的過程中同時進行,不要指望程序開發(fā)完成后再補寫注釋。那樣只會多花好幾倍的時間,更為嚴(yán)重的是,時間長了以后甚至?xí)x不懂自己寫的程序。 必要的注釋內(nèi)容應(yīng)包含:腳本程序的總體注釋(文件名、作用、創(chuàng)建時間、版本、作者及引用的手冊、運行環(huán)境等)、函數(shù)注釋(目的、算法、使用的參數(shù)和返回值的含義、對環(huán)境的一些假設(shè)等)及其他的少量注釋。千萬不要陳述那些一目了然的內(nèi)容,否則會使注釋的效果適得其反些空行或空格。它同注釋一樣,也是為了提高程序的可讀性。注釋的重要性已在前面論及過,這里不再重復(fù)。2.2 數(shù)據(jù)類型程序可以看成是由數(shù)據(jù)結(jié)構(gòu)和算法組成的。數(shù)據(jù)結(jié)構(gòu)體現(xiàn)對數(shù)據(jù)的描述,而算法反映了對數(shù)據(jù)的操作及處理。任何一門計算機語言都必須包括數(shù)據(jù)類型、運算符與表達式等內(nèi)容來定義和實現(xiàn)程序中的數(shù)據(jù)結(jié)構(gòu)和算法。2.2.1 基本數(shù)據(jù)類型InstallScript的數(shù)據(jù)類型比其他任何高級語言的數(shù)據(jù)類型要簡單易用,它只有基本類型和結(jié)構(gòu)類型兩類。這里先討論InstallScript的基本數(shù)據(jù)類型?;緮?shù)據(jù)類型是InstallScript的內(nèi)部數(shù)據(jù)類型,包括CHAR(字符型)、NUMBER(數(shù)值整型)等,表2.2列出各種基本數(shù)據(jù)的類型。 需要說明的是:在InstallScript的數(shù)據(jù)類型中,除了BOOL、HWND及LIST類型不能使用小寫外,其余的數(shù)據(jù)類型還有其小寫形式,例如int、number、string等,用來提供一種方便。但是,InstallScript沒有無符號數(shù)值類型以及浮點數(shù)值類型。2.2.2 常量與變量根據(jù)程序中數(shù)據(jù)的可變性,數(shù)據(jù)可以分為常量和變量兩大類。1. 常量在程序運行過程中,其值不能被改變的量稱為常量。常量可分為不同的類型,如1、20、0、-6為整型常量,a、b為字符常量。常量一般從其字面形式即可判別。InstallScript的常量有整型常量、字符常量和字符串常量等類型。這些常量的含義和C語言基本一致,故這里不再重復(fù)。需要說明的是,在InstallScript中還可以用一個標(biāo)識符表示一個常量。例Ex_Define 用#define定義符號常量。#define TITLE 問候programSprintfBox(INFORMATION,TITLE,%s,您好!);endprogram程序中用#define命令行定義TITLE,使其代表字符串常量問候,此后凡是在程序中出現(xiàn)的TITLE都代表問候。這種代替常量本身的標(biāo)識符稱為符號常量。在程序中使用符號常量不僅可以提高程序的可讀性(標(biāo)識符總比常量本身更具意義),而且修改也極為方便。2. 變量變量是指在程序執(zhí)行中其值可以改變的量。變量的作用是存儲程序中需要處理的數(shù)據(jù),它可以放在程序中的任何位置上。但無論如何,在使用一個變量前必須先定義這個變量。變量是用下面的格式語句進行定義的:類型 變量名表;例如:NUMBER nNum1;NUMBER nNum2;NUMBER nNum3;BOOL bValidEntry; 其中,nNum1、nNum2、nNum3被定義成整型變量,而bValidEntry被定義成布爾型變量。有時,還可以將同類型的變量定義在一行語句中,不過變量名要用逗號(,)分隔。例如上面的變量可這樣定義:NUMBER nNum1, nNum2, nNum3;BOOL bValidEntry;在定義字符串常量時,可以指定字符串的長度,例如:STRING szUserName128; / 指定字符串的長度為128個字符若不指定其長度,則InstallScript自動指定。16位操作系統(tǒng)中,字符串的長度被指定為512個字符,而32位操作系統(tǒng)中,字符串的長度被指定為1024個字符。在定義變量時,需要注意:(1) 不能在主程序體(program.endprogram之間)或函數(shù)體內(nèi)部(begin.end之間)定義變量,變量必須定義在程序體外或函數(shù)名與begin關(guān)鍵字之間。例如:function SdAskDestPath(szTitle, szMsg, svDir, nStyle)STRING szDlg, svDirLoc, szTemp;INT nId, nTemp;HWND hwndDlg;BOOL bDone;begin.end;(2) 在同一個主程序或同一個函數(shù)體中不能有同時出現(xiàn)兩個相同的變量名。(3) 不能在變量定義的同時,給變量賦初值。2.2.3 InstallScript運算符簡介和其他的程序設(shè)計語言一樣,InstallScript記述運算的符號稱為運算符,運算符的運算對象稱為操作數(shù)。一個操作數(shù)可以是變量、常量或是具體的數(shù)值等。對一個操作數(shù)運算的運算符稱為單目運算符,如-a;對二個操作數(shù)運算的運算符稱為雙目運算符,如3+5等。InstallScript的運算符分為以下幾類:算術(shù)運算符 ( +, -, *, /)關(guān)系運算符 ( , =, =, != )邏輯運算符 ( &, |, ! )位運算符 ( &, |, , , )賦值運算符 ( = )指針運算符 ( *, & )分量運算符 ( ., - )下標(biāo)運算符 ( )字符串運算符 ( , +, % )其它 ( 如BYREF運算符 )2.2.4 算術(shù)運算符算術(shù)運算符包括常用的加減乘除四則運算符以及單目正負運算符,如下所示:+ (正號運算符,如+4等)- (負號運算符,如-4等)* (乘法運算符,如6*8等)/ (除法運算符,如6/8等)+ (加法運算符,如6+8等)- (減法運算符,如6-8等)InstallScript中算術(shù)運算符和數(shù)學(xué)運算的概念及運算方法是一致的,但要注意以下幾點:(1) 除法運算兩個整數(shù)相除,結(jié)果為整數(shù),如7/5的結(jié)果為1,它是將小數(shù)部分去掉,而不是四舍五入。但InstallScript不支持浮點運算。(2) 優(yōu)先級和結(jié)合性在一個包含多種算術(shù)運算的混合運算中,先乘除后加減的運算規(guī)則是由運算符的優(yōu)先級來保證的。InstallScript將表達式求值中多種運算之間的先后關(guān)系(即運算符之間的優(yōu)先關(guān)系)用運算符的優(yōu)先級表示。在算術(shù)運算符中,單目運算符的優(yōu)先級最高,其次是乘、除,最后是加減。優(yōu)先級相同的運算符,則按它們的結(jié)合性進行處理。所謂運算符的結(jié)合性是指運算符和操作數(shù)的結(jié)合方式,它有從左至右和從右至左兩種。從左至右的結(jié)合又稱左結(jié)合,是指運算符左邊的操作數(shù)先與運算符相結(jié)合,再與運算符右邊的操作數(shù)進行運算,如3*5/4的次序是先乘后除;而自右至左的右結(jié)合的次序剛好相反,它是將運算符右邊的操作數(shù)先與運算符相結(jié)合,如-i+6相當(dāng)于(-i)+ 6。在算術(shù)運算符中,除單目運算符外,其余運算符的結(jié)合性都是從左至右的。(3) 關(guān)于書寫格式在使用運算符進行數(shù)值運算時,若書寫時沒有在雙目運算符兩邊加上空格,則有時編譯系統(tǒng)會做出與自己想象中不同的理解。例如:-5*-6-7和-5 * -6 - -7 / 注意空格結(jié)果是不一樣,前者發(fā)生編譯錯誤,而后果的結(jié)果是37。為了避免上述情況的發(fā)生,在書寫時,有時應(yīng)有意識地加上一些括號。這樣不僅增強程序的可讀性,而且,尤其當(dāng)對優(yōu)先關(guān)系猶豫時,加上括號是保證正確結(jié)果的最好方法。2.2.5 賦值運算符和賦值表達式在InstallScript腳本語言中,賦值符=是一個雙目運算符,結(jié)合性從右至左,其作用是將賦值符右邊操作數(shù)的值賦給左邊的操作數(shù)。每一個合法的表達式在求值后都有一個確定的值和類型。賦值表達式的值是賦值符右邊操作數(shù)的值,賦值表達式的類型是賦值符右邊操作數(shù)的類型。例如下面語句:STRING szName;LONG nValue;BOOL bDone;HWND hInstance;INT iStyle;LIST LISTINFO;programszName = InstallShield;nValue = 15;bDone = FALSE;hInstance = 0;iStyle = DLG_MSG_STANDARD|DLG_CENTERED;LISTINFO = ListCreate(STRINGLIST);.但是,InstallScript不支持多重賦值運算,例如a = b = c 相當(dāng)于C+的a = b =c。也就是說,若 b 不等于c,表達式為a=0,若b和c相等,則表達式為a=1。InstallScript往往利用邏輯運算后的結(jié)果對程序進行判斷、選取等控制。2.3 邏輯運算和判斷選取控制2.3.1 關(guān)系運算符關(guān)系運算是邏輯運算中比較簡單的一種。所謂關(guān)系運算實際上是比較兩個操作數(shù)是否符合給定的條件。若符合條件,則關(guān)系表達式的值為真,否則為假。在InstallScript編譯系統(tǒng)中,往往將真表示為TRUE,將假表示為FALSE。而任何不為0的數(shù)被認為是真,0被認為是假。由于關(guān)系運算需要兩個操作數(shù),所以關(guān)系運算符都是雙目運算符。 InstallScript提供了下列6種關(guān)系運算符:(小于),(大于),=(大于等于),= (相等于),!=(不等于)其中,前4種的優(yōu)先級相同且高于后面的兩種,但關(guān)系運算符的優(yōu)先級低于算術(shù)運算符。需要說明的是:(1) InstallScript賦值運算符和等于的關(guān)系運算符使用同一個=符號。(2) InstallScript不支持賦值和關(guān)系運算同在一個表達式中的情形。例如,下面的語句是不允許的:if (listID = ListCreate (NUMBERLIST) = LIST_NULL) then . . .endif;2.3.2 邏輯運算符邏輯運算符是用于將多個關(guān)系表達式或邏輯量(真或假)組成一個邏輯表達式。InstallScript提供了下列3種邏輯運算符:! 邏輯非(單目)& 邏輯與(雙目)| 邏輯或(雙目)邏輯非是指將真變假,假變真。邏輯與是指當(dāng)兩個操作數(shù)都是真時,結(jié)果才為真,否則為假。邏輯或是指當(dāng)兩個操作數(shù)中有一個是真時,結(jié)果就為真,而只有當(dāng)它們都為假時,結(jié)果才為假。邏輯非、邏輯與和邏輯或的優(yōu)先級依次從高到低,且邏輯非的優(yōu)先級還比關(guān)系運算符高,而邏輯與和邏輯或的優(yōu)先級卻比關(guān)系運算符低。和C不一樣,InstallScript對邏輯表達式的值非常敏感,例如下面代碼:if (iVar = 10) & (MyFunction( ) = 0) then MessageBox(That is so true., INFORMATION); endif;只有當(dāng)&運算符左邊的結(jié)果為TRUE時,右邊的函數(shù)MyFunction才會被執(zhí)行。為了不引起誤解,最好將上述代碼改寫成:if (iVar = 10) then if (MyFunction( ) = 0) then MessageBox(That is so true., INFORMATION); endif;endif;2.3.3 if語句if語句是用來判定所給定的條件是否滿足,并根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。InstallScript提供了下列5種形式的if語句。(1) if-then結(jié)構(gòu)if-then結(jié)構(gòu)具有下列形式:if (條件表達式) then語句endif;當(dāng)條件表達式表達為真時,then后面的語句才會被執(zhí)行。一個條件表達式可以是一個布爾或整型常量、變量、產(chǎn)生布爾或整型結(jié)果的表達式以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module 1 Unit 2 He's cool(教學(xué)設(shè)計)-2023-2024學(xué)年外研版(三起)英語四年級下冊
- 設(shè)備供貨裝合同范本
- 1秋天 第一課時 教學(xué)設(shè)計-2024-2025學(xué)年語文一年級上冊統(tǒng)編版(五四制)
- 綠化栽植勞務(wù)合同范本
- 10《我們所了解的環(huán)境污染》(教學(xué)設(shè)計)-部編版道德與法治四年級上冊
- Unit 1 My Classroom Part B. Lets talk. Lets play (教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語四年級上冊
- 3《學(xué)會反思》教學(xué)設(shè)計-2023-2024學(xué)年道德與法治六年級下冊統(tǒng)編版
- 外裝合同范本
- 個人購買瓷磚合同范本
- 2023-2024學(xué)年高二上學(xué)期體育與健康人教版必修第一冊教學(xué)設(shè)計
- 科雷氏骨折史密斯氏骨折培訓(xùn)課件
- 衛(wèi)生院基本藥物采購供應(yīng)管理制度
- 抽水蓄能輔助洞室施工方案
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter7 Searching
- 護理核心制度及重點環(huán)節(jié)-PPT課件
- 夾套管現(xiàn)場施工方法
- 部編版語文五年級下冊形近字組詞參考
- 第三章走向混沌的道路
- 化探野外工作方法及要求
- 2006年事業(yè)單位工資改革工資標(biāo)準(zhǔn)表及套改表2
- 江蘇省特種設(shè)備安全條例2021
評論
0/150
提交評論