




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
9.1VB多媒體應(yīng)用系統(tǒng)的發(fā)布和測(cè)試9.2Authorware多媒體作品的發(fā)布本章小結(jié)練習(xí)九9.1.1使用SetupFactory制作安裝程序
SetupFactory貫徹了快速方便的開(kāi)發(fā)理念,讀者無(wú)需長(zhǎng)時(shí)間學(xué)習(xí)便可達(dá)到熟練使用的程度。它強(qiáng)大的功能、方便易用的操作界面較適合大多數(shù)程序員,而且其安裝程序也非常精美。用戶(hù)要做的只是在界面中通過(guò)鼠標(biāo)點(diǎn)擊將軟件文件和目錄直觀地添加到目錄中,整個(gè)過(guò)程完全邏輯化和無(wú)縫化。除此之外,SetupFactory支持創(chuàng)建一個(gè)安裝文件包或一個(gè)單獨(dú)的setup.exe文件,生成文件可以運(yùn)行于任意版本的Windows中,包括Windows95到WindowsXP及其以上版本,且更利于用戶(hù)的發(fā)布,比如通過(guò)網(wǎng)站、CD/DVD刻錄和局域網(wǎng)等。9.1VB多媒體應(yīng)用系統(tǒng)的發(fā)布和測(cè)試?yán)肧etupFactory安裝程序制作向?qū)Ы缑鏁r(shí),即使對(duì)安裝制作不了解,也可以生成專(zhuān)業(yè)性質(zhì)的安裝程序;可建立快捷方式,也可直接在Windows系統(tǒng)的注冊(cè)表中加入內(nèi)容,還可在Win.ini和System.ini文件內(nèi)加入設(shè)定值,更可建立反安裝選項(xiàng)等。它內(nèi)附的向?qū)Э梢砸徊揭徊降匾龑?dǎo)用戶(hù)做出既漂亮又專(zhuān)業(yè)的安裝程序。下面就以SetupFactory?7.0版為例,介紹這個(gè)軟件的一般的使用方法,并簡(jiǎn)要說(shuō)明如何使用SetupFactory來(lái)制作一個(gè)安裝程序。
1.SetupFactory的一般制作過(guò)程
運(yùn)行SetupFactory7.0軟件后,默認(rèn)會(huì)跳出一個(gè)工程向?qū)У慕缑?。此時(shí)可點(diǎn)擊“創(chuàng)建”來(lái)新建一個(gè)工程,或是按Esc鍵退出工程向?qū)?,直接進(jìn)入軟件主界面,如圖9-1所示。圖9-1SetupFactory軟件主界面現(xiàn)在可以開(kāi)始制作安裝程序。先添加安裝文件,在菜單的工程中選擇“添加文件”,或在主界面左側(cè)的“文件”中選擇“添加文件”,然后點(diǎn)擊“添加”按鈕。文件加入后,用鼠標(biāo)右鍵單擊某一文件(也可選中多個(gè)文件對(duì)其編輯),選擇“文件屬性”,可修改相應(yīng)設(shè)置。目標(biāo)中默認(rèn)為%AppFolder%,該變量表示安裝路徑,可以修改成其他自帶變量或自定義變量。如果該文件為可執(zhí)行文件,那么默認(rèn)會(huì)在“開(kāi)始”菜單建立相應(yīng)的快捷方式,以進(jìn)行相關(guān)設(shè)置;如果不需要快捷方式,可取消。文件加入后,可以設(shè)置安裝程序的相關(guān)信息,如變量定義、軟件卸載等,如圖9-2所示。在左側(cè)設(shè)置中點(diǎn)擊“會(huì)話變量”,這些變量是SetupFactory自帶的變量,在此處定義或在代碼中定義后,即可在安裝過(guò)程中使用。新建安裝程序默認(rèn)會(huì)創(chuàng)建卸載,如果軟件不需要卸載,那么單擊主界面左側(cè)卸載中的“設(shè)置”,即可關(guān)閉“創(chuàng)建卸載”。下面來(lái)制作安裝過(guò)程中的屏幕。屏幕分三部分:安裝前、安裝中、安裝后。單擊主界面左側(cè)屏幕中的“工程主題”,在跳出的窗口下方選擇工程主題可改變安裝屏幕的樣式。點(diǎn)擊“安裝之前”,可在窗口左側(cè)添加或刪除相應(yīng)的屏幕,如圖9-3所示。選中某一屏幕后,點(diǎn)擊窗口下方的“編輯”按鈕,即可對(duì)該屏幕進(jìn)行編輯。在“屬性”中可修改屏幕標(biāo)題和按鈕等。在“操作”中可對(duì)該屏幕事件進(jìn)行編程。通過(guò)窗口底部的“添加操作”和“添加代碼”,可加入相應(yīng)的代碼來(lái)實(shí)現(xiàn)所需功能,如圖9-4所示。圖9-2設(shè)置安裝程序的相關(guān)信息圖9-3制作安裝前的屏幕圖9-4編碼設(shè)定屏幕的屬性在“安裝之時(shí)”選項(xiàng)卡中,取消“安裝期間顯示進(jìn)程屏幕”的選擇,該進(jìn)程的屏幕在安裝時(shí)將不再出現(xiàn)。如果只是想在安裝過(guò)程中不顯示復(fù)制的文件名稱(chēng)及其路徑,那么點(diǎn)擊“編輯”按鈕,并取消“顯示狀態(tài)文本”的選擇。在“安裝之后”選項(xiàng)卡中可編輯安裝完畢后的屏幕界面。上述過(guò)程完成后,一個(gè)簡(jiǎn)單的安裝程序就可以發(fā)布了,點(diǎn)擊菜單“發(fā)布”中的“構(gòu)建”,默認(rèn)選擇“Web(單個(gè)文件)”,再點(diǎn)擊“下一步”按鈕即可。也可以發(fā)布成其他軟盤(pán)、光盤(pán)等形式。確定輸出安裝程序的文件夾及安裝程序文件名稱(chēng),然后點(diǎn)擊“構(gòu)建”按鈕。等待向?qū)?gòu)件安裝文件,最后單擊“完成”按鈕結(jié)束整個(gè)過(guò)程?,F(xiàn)在就可以測(cè)試做好的安裝程序了。測(cè)試前,可將SetupFactory工程保存到電腦上。
2.SetupFactory對(duì)VB工程的特別支持
SetupFactory可以方便地為VB應(yīng)用創(chuàng)建安裝程序。它不僅提供了VB運(yùn)行時(shí)文件(Runtime),并且可以對(duì)VB項(xiàng)目、INI及DEP文件進(jìn)行掃描。部分VB開(kāi)發(fā)者因其強(qiáng)大、易用和可靠,而偏愛(ài)使用SetupFactory。如果不希望制作的安裝程序具備過(guò)多的交互功能,也就是說(shuō)不想在程序安裝過(guò)程中讓用戶(hù)過(guò)多參與選擇的話,則可刪除一些選項(xiàng)。反過(guò)來(lái),也可自行添加一些選項(xiàng)以增加安裝程序的靈活性??傊?,要想讓安裝程序做得更專(zhuān)業(yè),設(shè)置ScreenManager中的選項(xiàng)內(nèi)容是十分重要的。設(shè)置好以上參數(shù)后,點(diǎn)擊“確定”按鈕并退出該頁(yè)。如果不想讓打包的程序安裝一些動(dòng)態(tài)鏈接庫(kù)文件和外部控件,那么現(xiàn)在就可以進(jìn)行安裝程序的生成步驟了;否則還得進(jìn)行以下操作(尤其對(duì)VB的項(xiàng)目)。點(diǎn)擊SetupFactory主界面左邊工具欄中的“RuntimeSupport”來(lái)設(shè)置運(yùn)行時(shí)支持文件。若程序是用VB寫(xiě)的,那么在出現(xiàn)的下拉選項(xiàng)中選擇“MicrosoftVisualBasic”,然后點(diǎn)擊“Next”按鈕,隨后選擇“程序開(kāi)發(fā)平臺(tái)VB”。點(diǎn)擊“下一步”按鈕,選擇VB程序的工程文件名(一般用VB開(kāi)發(fā)的程序編譯后應(yīng)該保留工程文件,而不應(yīng)該像平時(shí)那樣把工程文件和窗體文件及模塊代碼等文件備份后就從目錄中刪除,保留工程對(duì)制作VB安裝程序至關(guān)重要)。根據(jù)工程文件,軟件會(huì)自動(dòng)找到程序所用到的全部動(dòng)態(tài)鏈接庫(kù)文件和全部控件,包括在開(kāi)發(fā)過(guò)程中用到的第三方控件。點(diǎn)擊“完成”按鈕,軟件會(huì)把找到的文件在文件列表中全部列出來(lái),這時(shí)還可根據(jù)需要進(jìn)行取舍。最后,點(diǎn)擊“Edit”菜單中的“Addfiles”,在出現(xiàn)的選擇框中選擇想打包的目標(biāo)文件,確定后,此文件會(huì)和已選擇的控件文件等一起出現(xiàn)在文件列表中。然后按“F7”鍵開(kāi)始建立安裝程序,軟件會(huì)提示輸入生成文件的文件名和存放位置等,根據(jù)需要填好后點(diǎn)擊“Output”,一個(gè)專(zhuān)業(yè)的安裝程序就做好了。當(dāng)然,SetupFactory的功能遠(yuǎn)不止這些,比如讓安裝程序在運(yùn)行時(shí)向系統(tǒng)注冊(cè)表寫(xiě)入信息,各種反安裝方式的設(shè)定,給軟件添加安全保護(hù)等很多實(shí)用功能,靈活使用這些功能會(huì)讓安裝程序更專(zhuān)業(yè)、更漂亮。9.1.2使用VB自帶的打包和展開(kāi)向?qū)е谱靼惭b程序
對(duì)于本書(shū)重點(diǎn)介紹的VB應(yīng)用軟件而言,專(zhuān)門(mén)的制作工具將是用戶(hù)的首選,而VB就自帶了一款這樣的工具——打包和展開(kāi)向?qū)?PackageandDeploymentWizard)。
1.打包和展開(kāi)向?qū)Ы榻B
打包和展開(kāi)向?qū)荲isualBasic自帶的工具,它能為VisualBasic應(yīng)用程序創(chuàng)建包裝,并將它們安裝到最終用戶(hù)的機(jī)器上。也可以使用打包和展開(kāi)向?qū)?chuàng)建從屬文件(?.dep),只是在運(yùn)行該向?qū)е?,必須有一個(gè)保存并編譯了的工程。為發(fā)布VB應(yīng)用程序,利用該向?qū)Э梢詣?chuàng)建標(biāo)準(zhǔn)包裝(setup.exe)、Internet包裝和部件一起分發(fā)的從屬文件。該向?qū)?yīng)用程序部件包裝為壓縮文件(?.cab)。另外,如果需要再次包裝或部署相同的應(yīng)用程序,則在向?qū)е泄ぷ鲿r(shí),可以將設(shè)置保存為腳本,以便重復(fù)使用。也可以將打包和展開(kāi)向?qū)ё鳛镸icrosoftVisualBasic的外接程序或一個(gè)獨(dú)立應(yīng)用程序啟動(dòng)。
打開(kāi)和展開(kāi)向?qū)в腥缦乱恍┲匾墓δ苓x項(xiàng):
(1)“激活工程”:顯示當(dāng)前工程的名稱(chēng)和路徑名。只有將向?qū)ё鳛橥饨映绦蜻\(yùn)行時(shí)才可用。
(2)“選定工程”:顯示選定工程的名稱(chēng)和路徑名,同時(shí)列出以前的工程,可以輸入工程的名稱(chēng)和路徑名,或者從列表中選擇一個(gè)工程。只有將向?qū)ё鳛楠?dú)立部件運(yùn)行時(shí)才可用。
(3)“瀏覽...”:顯示一個(gè)可以用來(lái)瀏覽工程的對(duì)話框。只有將向?qū)ё鳛楠?dú)立部件運(yùn)行時(shí)才可用。
(4)“打包”:包裝工程的第一步。在包裝完應(yīng)用程序后,可以返回到主屏幕并部署包裝。
(5)“展開(kāi)”:部署包裝的第一步。如果有一個(gè)包裝好的工程想要發(fā)布到軟盤(pán)、網(wǎng)絡(luò)或本地文件夾,則可以使用向?qū)У倪@一部分。
(6)“管理腳本”:顯示“管理腳本”對(duì)話框,在這里可以重命名、復(fù)制或刪除包裝和部署腳本。
2.打包和展開(kāi)向?qū)У囊话阒谱鬟^(guò)程
程序開(kāi)發(fā)工具中自帶的打包程序,如VB自帶的打包和展開(kāi)向?qū)?,在功能和易用性上不是非常完善,但?duì)應(yīng)用程序的開(kāi)發(fā)人員來(lái)說(shuō)也不難,應(yīng)該掌握。下面詳細(xì)介紹用VB自帶的打包程序?qū)?xiàng)目進(jìn)行打包的操作步驟:
(1)運(yùn)行打包和展開(kāi)向?qū)В鐖D9-5所示。圖9-5“打包和展開(kāi)向?qū)А敝黜?yè)面
(2)點(diǎn)擊“瀏覽”按鈕,選擇要打包的工程。然后單擊“打包”按鈕,進(jìn)入下一個(gè)頁(yè)面,如圖9-6所示。
(3)選擇要打包的類(lèi)型。普通的EXE工程選擇“標(biāo)準(zhǔn)安裝包”;控件類(lèi)要看使用的地點(diǎn),如果是在網(wǎng)頁(yè)中使用,則選擇“Internet軟件包”。然后點(diǎn)擊“下一步”按鈕,如圖9-6所示。
(4)選擇打包文件的存放位置,如圖9-7所示。圖9-6選擇包的類(lèi)型圖9-7打包文件的存放位置
(5)向?qū)ё詣?dòng)找出了工程中應(yīng)用的控件、DLL等文件,需要到工程中檢查一下,看看所包含的文件是否齊全,第三方控件所帶的文件一定要帶上。然后點(diǎn)擊“下一步”按鈕,如圖9-8所示。
(6)根據(jù)需要選擇打包的文件類(lèi)型:如果用光盤(pán)發(fā)布,則選擇“單個(gè)的壓縮文件”;如果用軟盤(pán)發(fā)布,則選擇“多個(gè)壓縮文件”。然后單擊“下一步”按鈕,如圖9-9所示。圖9-8包含文件列表圖9-9壓縮文件類(lèi)型
(7)確定安裝程序的標(biāo)題,也就是確定在安裝背景上要顯示的文字。然后單擊“下一步”按鈕,如圖9-10所示。
(8)可以設(shè)置在“開(kāi)始菜單”中顯示哪些項(xiàng)目,比如可以設(shè)置加載、卸載程序項(xiàng)。選擇“新建項(xiàng)”按鈕,然后在“目標(biāo)”欄中輸入$(WinPath)\st6unst.exe-n"$(AppPath)\ST6UNST.LOG",注意應(yīng)包括雙引號(hào)。在“開(kāi)始”項(xiàng)目中選擇“$(WinPath)”,不包括雙引號(hào)。然后點(diǎn)擊“確定”按鈕,如圖9-11所示。圖9-10確定安裝程序的標(biāo)題圖9-11啟動(dòng)菜單項(xiàng)設(shè)置
(9)在此可以更改文件夾的安裝位置,然后點(diǎn)擊“下一步”按鈕。在此,還可以將文件設(shè)置為共享(即文件可以被多個(gè)程序使用)。
到此為止,安裝制作完成。安裝完之后,會(huì)生成三個(gè)文件和一個(gè)文件夾,如圖9-12所示。其中:SETUP.LST為安裝信息文件;.CAB文件包是數(shù)據(jù)文件,安裝的文件全部在包里;setup.exe是安裝的主文件;Support是壓縮包中包含的所有文件,它內(nèi)部的所有文件如圖9-13所示。圖9-12生成的文件和文件夾圖9-13壓縮包中所包含的文件這個(gè)文件夾里有一個(gè)比較重要的文件就是“執(zhí)照套打.BAT”這個(gè)批處理文件(不同的工程,文件名會(huì)不一樣),當(dāng)工程改動(dòng)之后,可以將工程重新編譯一下,然后將執(zhí)行文件拷貝到此Support目錄下,執(zhí)行這個(gè)批處理文件,就可以重新打包,而不必每次改動(dòng)時(shí)都運(yùn)行打包和展開(kāi)向?qū)А?/p>
還有一個(gè)比較重要的文件是SETUP1.EXE文件,這是安裝的主文件,安裝時(shí)看到的界面就是這個(gè)文件運(yùn)行產(chǎn)生的。該文件是用VB編寫(xiě)的,源程序在VB的安裝目錄下:C:\ProgramFiles\MicrosoftVisual
Studio\VB98\Wizards\PDWizard\Setup1\SETUP1.VBP。可以用VB直接編輯這個(gè)工程,改成具有個(gè)性的安裝界面。如果在安裝之后想在桌面上添加程序的快捷方式,則可以編譯這個(gè)工程,打開(kāi)“frmSetup1”窗口,在其代碼中加上如下代碼:下面介紹由向?qū)傻腟ETUP.LST(安裝信息文件),其內(nèi)容如圖9-14所示,其中SetupTitle是解壓窗口的標(biāo)題,SetupText是解壓窗口的內(nèi)容,將SetupText的內(nèi)容改為“正在復(fù)制文件,請(qǐng)等待”后,其效果如圖9-15所示。接下來(lái)介紹SETUP.LST文件的Setup區(qū),其內(nèi)容如圖9-16所示,其中,如果將Color設(shè)置為不同的值,就可以改變安裝窗口的背景色(默認(rèn)為藍(lán)色)。把Color設(shè)置為16之后,窗口的背景就會(huì)變?yōu)榫G色(當(dāng)然還有其他的顏色,讀者可以自行設(shè)置),其顯示效果如圖9-17所示。圖9-14SETUP.LST文件的內(nèi)容圖9-15改動(dòng)之后的運(yùn)行界面圖9-16SETUP.LST文件中Setup區(qū)的內(nèi)容圖9-17安裝窗口的背景色的變化
VB自帶的打包和展開(kāi)向?qū)С绦蛲耆怯肰B編寫(xiě)的,源程序位于“C:\ProgramFiles\MicrosoftVisualStudio\VB98\Wizards\PDWizard\”的目錄下,用戶(hù)可以自行修改。9.1.3VB打包和展開(kāi)向?qū)Т虬膯?wèn)題與對(duì)策
打包和展開(kāi)向?qū)Э梢詣?chuàng)建兩種軟件包:標(biāo)準(zhǔn)軟件包或Internet軟件包。如果計(jì)劃通過(guò)磁盤(pán)、光盤(pán)或網(wǎng)絡(luò)共享來(lái)發(fā)布應(yīng)用程序,則應(yīng)創(chuàng)建一個(gè)標(biāo)準(zhǔn)軟件包。如果計(jì)劃通過(guò)Intranet或Internet站點(diǎn)來(lái)發(fā)布應(yīng)用程序,則應(yīng)創(chuàng)建一個(gè)Internet軟件包。還可以使用VisualBasic的打包和展開(kāi)向?qū)?yīng)用程序創(chuàng)建到軟盤(pán)、CD、本地或網(wǎng)絡(luò)驅(qū)動(dòng)器以及Web上的軟件包。在這些制作過(guò)程中,可能會(huì)出現(xiàn)各種問(wèn)題,下面從兩個(gè)方面匯總了一些問(wèn)題與對(duì)策。
1.標(biāo)準(zhǔn)軟件包部分
如果使用打包和展開(kāi)向?qū)?,則向?qū)⒆詣?dòng)創(chuàng)建Setup.lst文件。如果需要自定義該文件,則可以在該文件被創(chuàng)建后手工進(jìn)行編輯。Setup.lst文件描述了應(yīng)用程序必須安裝到用戶(hù)機(jī)器上的所有文件,此外還包含了有關(guān)安裝過(guò)程的關(guān)鍵信息。例如,Setup.lst文件告訴系統(tǒng)每個(gè)文件的名稱(chēng)、安裝位置以及應(yīng)如何進(jìn)行注冊(cè)等。
Setup.lst文件共有五個(gè)段:
(1)?BootStrap段:列出了關(guān)于應(yīng)用程序的核心信息。例如,應(yīng)用程序的主安裝程序的名稱(chēng),在安裝過(guò)程中使用的臨時(shí)目錄,以及在安裝過(guò)程的起始窗口出現(xiàn)的文字。BootStrap段包含下述成員:
●?SetupTitle:當(dāng)Setup.exe將文件復(fù)制到系統(tǒng)時(shí)所出現(xiàn)的對(duì)話框中顯示的標(biāo)題。
●?SetupText:當(dāng)Setup.exe將文件復(fù)制到系統(tǒng)時(shí)所出現(xiàn)的對(duì)話框中顯示的文字。
●?CabFile:應(yīng)用程序的?.cab文件的名稱(chēng),如果軟件包有多個(gè)?.cab文件,則表示第一個(gè)?.cab文件的名稱(chēng)。
●?Spawn:當(dāng)Setup.exe完成處理后要啟動(dòng)的應(yīng)用程序名稱(chēng)。在大多數(shù)實(shí)例中,這個(gè)名稱(chēng)將是Setup1.exe文件。
●?TmpDir:存放在安裝過(guò)程中產(chǎn)生的臨時(shí)文件的位置。
●?Uninstall:用作卸載程序的應(yīng)用程序名稱(chēng)。一般來(lái)說(shuō),該程序是st6unst.exe,這個(gè)文件是由向?qū)?chuàng)建所有的軟件包時(shí)自動(dòng)打包加入的。
(2)?BootStrapFiles段:列出了主安裝文件所需的所有文件,通常這部分只包括VisualBasic運(yùn)行時(shí)的文件。BootStrapFiles段列出了在加載應(yīng)用程序和從屬文件之前,必須載入用戶(hù)機(jī)器的所有文件。這些預(yù)安裝的(或稱(chēng)為引導(dǎo))文件包括運(yùn)行任何VisualBasic應(yīng)用程序所必需的核心文件,例如VisualBasic運(yùn)行時(shí)的DLL(Msvbvm60.dll)文件,安裝程序在安裝和啟動(dòng)主安裝程序之前將安裝這些文件。
(3)?Setup1Files段:列出應(yīng)用程序所需的所有其他文件,例如?.exe文件、數(shù)據(jù)、文本。
(4)?Setup段:Setup.lst文件的Setup段是一個(gè)簡(jiǎn)單的列表,它列出了安裝過(guò)程的其他部分所使用的信息。下面列出了Setup段所包含的信息。
●?Title:將出現(xiàn)在安裝期間的快速顯示屏幕、“啟動(dòng)”菜單的程序組以及程序項(xiàng)名稱(chēng)上的應(yīng)用程序名稱(chēng)。●?DefaultDir:缺省的安裝目錄。用戶(hù)可以在安裝過(guò)程中指定一個(gè)不同的目錄。
●?ForceUseDefDir:如果為空,則會(huì)提示用戶(hù)輸入一個(gè)安裝目錄。如果設(shè)為1,則應(yīng)用程序?qū)⒆詣?dòng)安裝到SETUP.LST的“DefaultDir”所指定的目錄中。
●?AppToUninstall:應(yīng)用程序在“控制面板”中的“添加/刪除程序”實(shí)用程序中出現(xiàn)的名稱(chēng)。
●?AppExe:應(yīng)用程序的可執(zhí)行文件的名稱(chēng),例如Myapp.exe。
(5)?IconGroups段:包含了關(guān)于安裝過(guò)程所創(chuàng)建的“啟動(dòng)”菜單的程序組的信息。每個(gè)要?jiǎng)?chuàng)建的程序組首先在IconGroups部分列出,然后指定一個(gè)單獨(dú)部分(Group0,Group1,Group2等),在此部分中包含關(guān)于這個(gè)程序組的圖標(biāo)和標(biāo)題的信息。程序組從0開(kāi)始順序編號(hào)。
注意在安裝過(guò)程中要用到兩個(gè)安裝程序:一個(gè)是Setup.exe,這是一個(gè)預(yù)安裝程序;另一個(gè)是Setup1.exe,這是由安裝工具包編譯生成的。BootStrap部分將為Setup.exe文件提供指示。下面是用這個(gè)工具來(lái)創(chuàng)建一些額外安裝信息的例子。
1)創(chuàng)建“啟動(dòng)”菜單的程序組
按照向?qū)Вx擇“下一步”按鈕,打開(kāi)“啟動(dòng)”菜單項(xiàng)。選中“programs”、“新建組”、輸入“啟動(dòng)”、“新建”項(xiàng),輸入想加入啟動(dòng)項(xiàng)中的名稱(chēng)如“啟動(dòng)應(yīng)用程序”,按“下一步”按鈕直至“完成”按鈕。打開(kāi)生成的Setup.lst文件,注意IconGroups段中的條目及其相關(guān)的字段:當(dāng)運(yùn)行向?qū)鶆?chuàng)建的安裝程序時(shí),該選項(xiàng)就會(huì)出現(xiàn)在“選擇程序組”,現(xiàn)在就可以把程序放在“啟動(dòng)程序組”中了。
2)提供一個(gè)聯(lián)機(jī)幫助安裝選項(xiàng)
除了使用安裝工具包工程來(lái)創(chuàng)建自定義安裝工程外,還可以將安裝工具包工程與打包和展開(kāi)向?qū)б黄鹗褂?。在這種情況下,可以使用安裝工具包工程來(lái)自定義安裝過(guò)程的屏幕或其它部分,然后使用向?qū)?lái)創(chuàng)建和部署應(yīng)用程序的軟件包。例如,可以提供一個(gè)聯(lián)機(jī)幫助,而用戶(hù)可以不安裝它??梢园凑招枰砑尤我獾陌惭b選項(xiàng),還可以將安裝工具包與打包和展開(kāi)向?qū)б黄鹗褂?,為安裝工程添加新的對(duì)話框,以便提示用戶(hù)選擇是否安裝應(yīng)用程序的可選功能。
(1)在Setup1.vbp工程中,編輯Setup1.frm窗體中的Form_Load事件的代碼,在調(diào)用ShowBeginForm函數(shù)(SubShowBeginForm)的代碼塊之后添加如下代碼(該示例顯示了如何添加一個(gè)對(duì)話框,來(lái)詢(xún)問(wèn)用戶(hù)是否要安裝可選文件):
(2)關(guān)閉Setup1.frm,保存該窗體以及安裝工具包工程,并編譯創(chuàng)建Setup1.exe文件。
(3)運(yùn)行打包和展開(kāi)向?qū)?,并從主屏幕中選擇“打包”,根據(jù)向?qū)У母鱾€(gè)屏幕進(jìn)行適當(dāng)?shù)倪x擇。對(duì)上面的示例,可以在“添加和刪除”屏幕列出的“自定義”對(duì)話框中確認(rèn)用戶(hù)可以選擇安裝的所有可選文件。在完成打包和展開(kāi)向?qū)У乃胁僮骱?,將生成發(fā)布媒體。
(4)對(duì)Setup.lst文件進(jìn)行必要的更改。在上面的示例中,可以在代碼CopySection所使用的部分中添加一個(gè)新的部分。在這種情況下,這個(gè)部分可能會(huì)像下面這樣:
(5)部署并測(cè)試軟件包。當(dāng)用戶(hù)運(yùn)行本過(guò)程所示的安裝程序時(shí),安裝程序?qū)⒉榭此械腂ootStrap文件。CalcDiskSpace語(yǔ)句將確定在用戶(hù)機(jī)器上是否有足夠的磁盤(pán)空間來(lái)存放幫助文件。然后該程序會(huì)安裝Setup.lst中的Setup1Files部分列出的所有文件。接下來(lái),程序?qū)⒃贉y(cè)試一次LoadHelp標(biāo)記。如果用戶(hù)選擇安裝幫助文件,Setup1.exe就開(kāi)始為幫助文件執(zhí)行CopySection語(yǔ)句,然后安裝Setup.lst的[Help]部分所列的文件。
2.Internet軟件包部分
Internet軟件包是基于?.cab的安裝程序,是專(zhuān)為從Web站點(diǎn)下載而設(shè)計(jì)的。InternetExplorer使用一個(gè)稱(chēng)為“Internet部件下載”的過(guò)程來(lái)安裝Internet應(yīng)用程序。打包和展開(kāi)向?qū)ё詣?dòng)包括其所創(chuàng)建的軟件包所需的信息??梢允褂肰isualBasic的打包和展開(kāi)向?qū)Э焖佥p松地將ActiveX部件打包以供Internet下載。打包和展開(kāi)向?qū)О巡考虬梢粋€(gè)瀏覽器能識(shí)別的文件,并創(chuàng)建一個(gè)Web頁(yè)面,用戶(hù)可以從其中下載。然后,就可將打包的結(jié)果部署到用戶(hù)能存取的Web頁(yè)面上了。
向?qū)⒉考捌渌P(guān)聯(lián)的文件打包到一個(gè)壓縮(?.cab)文件中,供瀏覽器下載部件時(shí)使用。向?qū)Т_定運(yùn)行工程需要哪些文件,然后收集這些文件,將它們壓縮為一個(gè)?.cab文件,并生成指向部件的HTML;向?qū)⒋蚝冒奈募渴鸬竭x擇的Web服務(wù)器上??梢员淮虬㊣nternet部署的主要類(lèi)型包括:在Web頁(yè)上顯示的ActiveX控件(?.ocx文件),用于在客戶(hù)或Web服務(wù)器上運(yùn)行的ActiveX.exe或?.dll文件,代替Web頁(yè)顯示的ActiveX文檔,DHTML應(yīng)用程序,基于客戶(hù)的、通過(guò)使用動(dòng)態(tài)的HTML來(lái)鏈接HTML頁(yè)與VisualBasic代碼的應(yīng)用程序,IIS應(yīng)用程序,基于服務(wù)器的、鏈接HTML頁(yè)與webclass對(duì)象的應(yīng)用程序Internet軟件包的部分。
Internet軟件包包括的主要文件有:應(yīng)用程序的主要?.cab文件,所有必需的支持文件,應(yīng)用程序的任何輔助?.cab文件。
●主要?.cab文件包括工程部件,例如應(yīng)用程序的可執(zhí)行文件?.DLL、控件的?.ocx文件、一個(gè)引用輔助?.cab文件、包含安全性和注冊(cè)表信息的?.inf文件,以及不屬于輔助?.cab文件的所有必需的從屬文件;
●支持文件包括HTML文件、ActiveServerPages(?.asp)文件、各種格式的圖形文件或應(yīng)用程序運(yùn)行時(shí)必須訪問(wèn)的其它文件;●輔助.cab文件提供了一個(gè)有效的途徑,可以確保用戶(hù)使用的是該部件的最新版本。如果輔助.cab文件中部件的較新版本已經(jīng)可以從外部Web站點(diǎn)上獲得,則下載應(yīng)用程序的用戶(hù)將自動(dòng)收到該部件的更新版本。
注意:如果不能或不愿意讓?xiě)?yīng)用程序的安裝程序與Internet連接,則可以將輔助.cab文件放置在Intranet的服務(wù)器上。Intranet服務(wù)器通常提供了更快的下載,并允許用戶(hù)從安全的網(wǎng)絡(luò)下載。在為供下載的Internet應(yīng)用程序或部件打包之后,就可以將其部署到Web服務(wù)器上的一個(gè)特定位置,用戶(hù)可以從該位置訪問(wèn)這些應(yīng)用程序或部件。通常,軟件包被作為一個(gè)現(xiàn)存Web頁(yè)面的一部分來(lái)引用,也就是說(shuō),控件或其它部件宿駐在一個(gè)Web頁(yè)面上。當(dāng)用戶(hù)訪問(wèn)宿駐軟件包的Web頁(yè)面時(shí),系統(tǒng)將該軟件包下載到用戶(hù)的計(jì)算機(jī)上。該軟件包在確認(rèn)安全性、打開(kāi)、注冊(cè)、安裝之后被激活。所有這些都發(fā)生在后臺(tái),并由瀏覽器控制。在準(zhǔn)備好供下載的Internet應(yīng)用程序和部件后,必須將它們打包為一個(gè)可通過(guò)瀏覽器發(fā)布給用戶(hù)的文件。此外,還必須執(zhí)行一些安全性設(shè)置,以確保應(yīng)用程序不會(huì)損害用戶(hù)的計(jì)算機(jī)。這些步驟包括:對(duì)部件進(jìn)行數(shù)字署名,以便用戶(hù)能驗(yàn)證部件的內(nèi)容,并知道是該軟件的開(kāi)發(fā)者;設(shè)置安全性級(jí)別來(lái)保證部件不會(huì)損害用戶(hù)的計(jì)算機(jī)或毀壞其數(shù)據(jù);為任何需要許可證的部件安排許可。當(dāng)添加一個(gè)ActiveX控件到Web頁(yè)面時(shí),可以將其發(fā)布給從該頁(yè)面下載該控件的任何用戶(hù)。除非對(duì)該控件進(jìn)行了許可,否則很難防止最終用戶(hù)取走控件并在其他的應(yīng)用程序中使用。許可證可以作為控件的一種版權(quán),來(lái)防止未經(jīng)授權(quán)的使用。
打包和展開(kāi)向?qū)г跒镮nternet部件下載打包代碼時(shí)創(chuàng)建兩種類(lèi)型的文件:發(fā)布文件和支持文件?!癜l(fā)布文件放在啟動(dòng)向?qū)r(shí)指定的目錄中,該目錄一般包含.cab文件和任何與之相關(guān)聯(lián)的?.htm文件。注意:如果生成?.cab文件后對(duì)工程進(jìn)行了修改,例如修改文件列表,以使其包括在下載中或?qū)Σ考M(jìn)行數(shù)字簽名,則需要重新生成?.cab文件。
●向?qū)橹С治募?chuàng)建一個(gè)目錄并把.cab的輸入文件(?.inf)放入該目錄。此外,支持文件目錄還包括DiamondDirectives(?.ddf)文件及其他下載需要的文件。以下列出了向?qū)?chuàng)建的所有文件類(lèi)型:
●?.cab文件是Windows安裝文件或包含?.ocx文件、?.inf文件和其他從屬文件的“壓縮包”文件??梢詫?duì)它進(jìn)行數(shù)字簽名以防止被篡改。
●?.htm文件是用于顯示W(wǎng)eb頁(yè)面的HTML文件,該文件包含指向?.cab文件的鏈接并用于啟動(dòng)下載過(guò)程。●?.ddf文件是DiamondDirectives文件,是用于創(chuàng)建.cab文件的工程文件。
●?.inf文件是代碼下載信息文件,該文件包含有關(guān)如何安裝控件的信息,并允許自定義。
●?.ocx文件是ActiveX控件,可以對(duì)它進(jìn)行數(shù)字簽名以防止被篡改。
●?.dll文件是ActiveX文檔或代碼部件。以下為向?qū)ё詣?dòng)創(chuàng)建的?.htm文件:示例中的第二個(gè)OBJECT標(biāo)記包含了一個(gè)類(lèi)標(biāo)識(shí)符5D970D42-D857-11D2-A0A1-
0080C8E2D955,版本號(hào)為1,0,0,91。所創(chuàng)建的每個(gè)ActiveX控件都有一個(gè)不同的類(lèi)標(biāo)識(shí)符。此類(lèi)標(biāo)識(shí)符用于創(chuàng)建HTML頁(yè)面上控件的實(shí)例,與將控件放置到VisualBasic窗體的過(guò)程類(lèi)似。InternetExplorer使用類(lèi)標(biāo)識(shí)符檢查注冊(cè)表來(lái)判斷控件是否存在,當(dāng)不存在或現(xiàn)有控件的版本比CODEBASE屬性中指定的舊時(shí),InternetExplorer將下載并安裝指定的文件。
OBJECT標(biāo)記的重要部分包括:
(1)?CLASSID類(lèi)標(biāo)識(shí)符,包含部件的類(lèi)標(biāo)識(shí)符。
(2)?ID部件的名字,用于腳本中,與VisualBasic窗體中控件的Name屬性相同。
(3)?CODEBASE所需控件的最低版本號(hào)和安裝位置。
3.Internet軟件包部分的問(wèn)題與對(duì)策
由于Internet軟件包中問(wèn)題比較多,因此向?qū)е袆?chuàng)建的文件往往不能正常工作。下面就常見(jiàn)的幾個(gè)問(wèn)題分析其原因及解決方法。
1)程序不能下載
問(wèn)題表象:在一個(gè)Intranet上建立內(nèi)部查詢(xún)網(wǎng)頁(yè),服務(wù)器操作系統(tǒng)為WindowsNT4.0,在客戶(hù)機(jī)上用VB6.0的中文企業(yè)版生成一個(gè)ActiveX用戶(hù)控件(*.ocx),文件存于服務(wù)器,在此客戶(hù)機(jī)上通過(guò)IE?4.0瀏覽器完全可運(yùn)行此程序,然而在另一客戶(hù)機(jī)上則無(wú)法運(yùn)行此控件,用IE?4.0瀏覽器瀏覽時(shí),屏幕上一個(gè)進(jìn)度條窗口很快一閃而過(guò),然后瀏覽器窗口什么也不顯示。
問(wèn)題解決:?jiǎn)栴}出在打包程序生成html文件上。用記事本打開(kāi)html文件可以發(fā)現(xiàn),該文件使用FRAME調(diào)用html文件,這是不正確的。在本地用IE打開(kāi)html文件時(shí),IE把SRC所指的文件按文件方式讀入,IE可以識(shí)別html文件的結(jié)構(gòu)并正確運(yùn)行??墒菑木W(wǎng)上下載html文件時(shí),IE通過(guò)Server接收html文件的數(shù)據(jù)。而在正常情況下,F(xiàn)RAME語(yǔ)句中的SRC所指應(yīng)為一個(gè)HTML文檔。這里,ActiveX用戶(hù)控件是利用〈FRAMESRC="..."〉調(diào)用的,這在本機(jī)瀏覽時(shí)不會(huì)遇到問(wèn)題。但I(xiàn)nternetExplorer在從服務(wù)器調(diào)用HTML時(shí),認(rèn)為凡是出現(xiàn)在〈FRAMESRC="..."〉中的都應(yīng)該是HTML文檔,如果無(wú)法識(shí)別該文件,就下載并保存該文件。屏幕上一個(gè)進(jìn)度條窗口很快一閃而過(guò)就是IE在下載文件。若要解決這個(gè)問(wèn)題,不要使用〈FRAMESRC="..."〉,而改用〈A〉〈/A〉鏈接方式,一般就不會(huì)有問(wèn)題了。所以,只要修改html文件,用如下的方法調(diào)用就可以解決問(wèn)題:
〈ahref=http://YourIpA/firstdoc.vbd〉test〈/a〉
把YourIpA改為地址并把html文件放入正確的目錄中。
例如,需要由Left.htm調(diào)用同一目錄下的“記帳單.htm”,可以使用如下方法。Left.htm內(nèi)容如下:
2)程序下載后卻不運(yùn)行
問(wèn)題表象:用VB生成一個(gè)簡(jiǎn)單的ActiveX用戶(hù)控件(*.ocx),并設(shè)定編譯時(shí)版本自動(dòng)加1,按照微軟的提示編譯成OCX文件,再用打包程序生成Internet下載程序,在本機(jī)上用IE瀏覽器瀏覽正常,其他機(jī)器用IE瀏覽時(shí)卻不能運(yùn)行,查看C:\WINDOWS\Downloaded
ProgramFiles及C:\WINDOWS\TemporaryInternetFiles目錄,從版本號(hào)可知下載程序已下載。
問(wèn)題解決:原因是ActiveX控件沒(méi)有被正確地安裝在客戶(hù)機(jī)上,還有一些所需要的文件并沒(méi)有下載到客戶(hù)機(jī),此問(wèn)題與VB運(yùn)行所需要的鏈接庫(kù)有關(guān)。當(dāng)然,可以手工在客戶(hù)機(jī)上安裝這個(gè)控件,或者每一臺(tái)機(jī)器上都安裝一次VB,但太麻煩并且很難保證版本一致性。還是借助向?qū)?lái)完成這一工作較好。
在向?qū)е羞x擇“下一步”按鈕,繼續(xù)下去,直至“包含文件”項(xiàng)。
由于生成的ActiveX用戶(hù)控件(*.OCX)中使用了別的一些控件,因此在下載時(shí)會(huì)自動(dòng)尋找相關(guān)的一些文件,如果找不到,則程序不會(huì)下載。所以,需要把相關(guān)的一些文件手工地添加進(jìn)去。由于該ActiveX用戶(hù)控件(*.OCX)還引用了其他的一些相關(guān)文件(常見(jiàn)的有DLL、OCX、TLB等),如DATLSCHS.DLL、DBRPRCHS.DLL、FlashControls_Hefawu.ocx、MSADO20.TLB等,因此,也需要為這些文件生成一個(gè)CAB文件,當(dāng)該ActiveX用戶(hù)控件(*.OCX)用到時(shí)會(huì)自動(dòng)查找并下載。
在“包含文件”項(xiàng)中把用到的相關(guān)文件選中,然后選擇“下一步”按鈕,來(lái)到“文件源”,將所用到的一些相關(guān)文件在指定的目錄中生成CAB文件。重要提示:發(fā)布的DLL、OCX、TLB等文件要與生成的CAB文件同名,并且每一個(gè)相關(guān)的文件都要生成自己的CAB文件。
例如,選中FlashControls_Hefawu.ocx,并選擇“從其他web站點(diǎn)下載”項(xiàng),然后輸入指定的目錄位置http://server/vb6/及生成的CAB文件,文件名為FlashControls_Hefawu.CAB。。相應(yīng)地,DATLSCHS.DLL對(duì)應(yīng)為http://server/vb6/DATLSCHS.CAB;DBRPRCHS.DLL對(duì)應(yīng)為http://server/vb6/DBRPRCHS.CAB。另外有些特別的,如MSADO15.DLL對(duì)應(yīng)為http://server
/vb6/MSADO15.CAB;VB6RuntimeANDOLEAutomation對(duì)應(yīng)為http://server/vb6/Vb6RUN.CAB。當(dāng)然,自己要生成的ActiveX用戶(hù)控件(*.OCX)要選擇“包含在此壓縮文件中”選項(xiàng)最后,向?qū)?huì)建立兩個(gè)文件:*.cab和*.htm,并且在http://server/vb6/目錄中生成許多壓縮包。*.cab文件包括了ActiveX控件,應(yīng)該把它放在服務(wù)器上。*.htm的核心是修改Object標(biāo)簽的Codebase屬性。這樣,用戶(hù)機(jī)的IE4.0在瀏覽時(shí)如果沒(méi)有在客戶(hù)機(jī)找到控件,就會(huì)利用Codebase屬性從服務(wù)器上下載*.cab文件,并自動(dòng)解包、安裝并注冊(cè)ActiveX控件。打包和展開(kāi)向?qū)軌驗(yàn)樽约旱腣isualBasic應(yīng)用程序創(chuàng)建和發(fā)布專(zhuān)業(yè)的安裝程序。除了為應(yīng)用程序創(chuàng)建?.cab文件之外,該向?qū)н€通過(guò)編譯隨VisualBasic一起安裝的安裝工具包工程來(lái)為應(yīng)用程序創(chuàng)建安裝程序,使程序在不同的計(jì)算機(jī)環(huán)境下都能“安居樂(lè)業(yè)”,打包和展開(kāi)向?qū)У拇_是程序員的好幫手。
4.其他問(wèn)題與對(duì)策
下面介紹一些制作VisualBasic安裝程序時(shí)常遇到的問(wèn)題及其解決方法。
問(wèn)題1假如VB5.0開(kāi)發(fā)的程序很簡(jiǎn)單,只用到了ShellExecute()這個(gè)API以及CommandButton,這時(shí)能不能不做安裝盤(pán),而在所有客戶(hù)機(jī)上(Windows95/98/NT/XP)都能正常使用程序?如不制作安裝程序,則與EXE放在一起的應(yīng)該包括哪些文件?解決方法:對(duì)于一個(gè)非常簡(jiǎn)單的VB6.0程序,沒(méi)有使用額外的OCX控件,在Windows98/2000下是可以正常運(yùn)行的,而不需要制作安裝盤(pán)。因?yàn)閃indows98/2000/XP帶有VB?6.0程序所需要的DLL文件。但在Windows95/NT4.0下一般是不行的,因?yàn)槿鄙俦匾奈募?。如果用?hù)的機(jī)器上安裝有IE,那么是可以不制作安裝盤(pán)的。在一般情況下,不制作安裝盤(pán)就不能保證程序的正確運(yùn)行。制作的安裝盤(pán)所包括的DLL中,除了Vb5stkit.dll只是安裝時(shí)使用,安裝后就不需要了,其他DLL都是不可缺少的。雖然對(duì)于某些機(jī)器而言,由于安裝過(guò)其他軟件而可能不需要某個(gè)DLL,但要想在所有的機(jī)器上都正確運(yùn)行,則一個(gè)文件都不能少。所以,為了避免由于缺少某個(gè)文件或注冊(cè)不正確而使程序無(wú)法運(yùn)行,建議還是制作安裝盤(pán)比較保險(xiǎn)。如果程序是放在網(wǎng)上供別人下載的,為了減少下載文件的大小,則可以這樣做:將程序單獨(dú)打成一個(gè)包,如果用戶(hù)已經(jīng)有了運(yùn)行VB6.0程序所需要的有關(guān)文件,就只需下載程序,然后,在網(wǎng)頁(yè)上提供一個(gè)VB6.0的運(yùn)行時(shí)間庫(kù)的鏈,如果用戶(hù)的機(jī)器上沒(méi)有這些文件,則讓它單獨(dú)下載運(yùn)行庫(kù)。這是一種比較通行的方法。問(wèn)題2若在一個(gè)程序中使用了其他的控件,則如何在沒(méi)有注冊(cè)該控件的機(jī)器上運(yùn)行?是不是一定要制作安裝程序或注冊(cè)該控件?
解決方法:在Windows?95/98下,如果控件和EXE文件在同一個(gè)目錄中,或者控件文件放置在System目錄中,則EXE程序運(yùn)行時(shí)會(huì)自動(dòng)找到所需要的OCX文件并注冊(cè)。但是這種方法在WindowsNT下不適用,在Windows?NT下必須先注冊(cè)控件才能保證EXE程序的正常運(yùn)行。另外,這種自動(dòng)注冊(cè)有一些毛病,如果機(jī)器已經(jīng)存在一個(gè)低版本的控件,自動(dòng)注冊(cè)可能會(huì)失敗。所以,如果希望自己的程序能夠非常好地工作,最好還是制作安裝程序,否則可能會(huì)有麻煩。問(wèn)題3用VB6.0制作了一個(gè)程序,但在某個(gè)機(jī)器上安裝時(shí),會(huì)出現(xiàn)以下錯(cuò)誤:systemerror&H80004005(02147467259)未指定錯(cuò)誤;“cannotfound‘c:\windows\temp\msftqws.pdw\
st6unst.exe’”無(wú)法開(kāi)始系統(tǒng)安裝程序。
解決方法:這是由于VB?6.0的一個(gè)BUG導(dǎo)致的,可以升級(jí)到VB6SP3,在這個(gè)升級(jí)版本中修復(fù)了這個(gè)錯(cuò)誤。問(wèn)題4用VB6.0制作了一個(gè)程序,但在安裝該軟件時(shí)系統(tǒng)報(bào)告錯(cuò)誤:
在C:WINDOWS\SYSTEM\expsrv.dll中未發(fā)現(xiàn)DllRegisterServer()的\WINDOWS\SYSTEM
\expsrv.dll“輸入點(diǎn)
***在本操作期間:DllSelfRegister:”C:
***錯(cuò)誤:注冊(cè)文件‘C:\WINDOWS\SYSTEM\expsrv.dll’時(shí)出錯(cuò)
***錯(cuò)誤:(用戶(hù)響應(yīng)‘忽略’)
忽略錯(cuò)誤后安裝完成。在Windows98下安裝也有同樣的問(wèn)題。解決方法:DLL有兩種,一種是標(biāo)準(zhǔn)DLL,另一種是ActiveXDLL。前者拷貝到用戶(hù)機(jī)器上就可以工作了,而后者還需要調(diào)用DLL中的DllRegisterServer或者使用RegSvr32進(jìn)行注冊(cè)才能使用。打開(kāi)VB98\Wizards\PDWizard\VB6dep.ini文件,下面是這個(gè)文件的片斷:從上面的文件中可以看到,MSRD2x35.dll比ExpSrv.dll多一行Register=$(DLLSelfRegister),這是因?yàn)镸SRD2x35.dll是ActiveXDLL,ExpSrv.dll是普通的DLL,沒(méi)有DllRegisterServer,也用不著注冊(cè)。所遇到的問(wèn)題是VB6.0的一個(gè)BUG(在VB6?SP3中已經(jīng)修復(fù))。如果VB6dep.ini文件的ExpSrv.dll多了Register一行,則應(yīng)該刪除;或者打開(kāi)安裝程序的Setup.lst,刪除ExpSrv.dll一行中的“$(DLLSelfRegister)”字樣。問(wèn)題5用VB+Access開(kāi)發(fā)數(shù)據(jù)庫(kù)系統(tǒng),發(fā)布時(shí)用VB自己的發(fā)布向?qū)?,程序目錄中子目錄的文件卻加入不正常,向?qū)Р话醋幽夸泤^(qū)分,都加入程序目錄中。怎么辦?
解決方法:VB的安裝向?qū)侵С职ㄗ幽夸浀陌惭b程序的。運(yùn)行安裝向?qū)У健拔募〗Y(jié)”一步,在對(duì)話框中選擇“添加”按鈕,然后選擇應(yīng)該放置在子目錄中的文件,將其添加到文件列表中。然后從文件列表中選擇該文件,點(diǎn)擊“文件詳細(xì)資料”按鈕。在對(duì)話框中設(shè)置的目標(biāo)路徑,最好不要用絕對(duì)路徑(如C:\MyProject)來(lái)指定安裝位置,這樣會(huì)給用戶(hù)帶來(lái)不便。安裝向?qū)褂煤陙?lái)指示文件要安裝的位置,這些宏只在安裝程序中有效。宏的含義參見(jiàn)表9-1。如果要將文件放置在應(yīng)用程序目錄下的\Data子目錄下,可以使用$(AppPath)\Data來(lái)指定安裝路徑。表9-1安裝向?qū)褂玫暮昙捌浜x問(wèn)題6安裝時(shí),用VB自己的“打包與展開(kāi)向?qū)А敝谱靼惭b盤(pán),不知道怎么使程序在桌面上放置一個(gè)快捷方式?
解決方法:VB“打包和展開(kāi)向?qū)А彼傻陌惭b程序的工作步驟是這樣的:先運(yùn)行Setup.exe,這個(gè)程序?qū)B的運(yùn)行庫(kù)安裝到用戶(hù)的機(jī)器上,同時(shí)將?.cab文件中的文件釋放到臨時(shí)目錄中,然后調(diào)用臨時(shí)目錄中Setup1.exe,完成余下的安裝工作。Setup1.exe是用VB編寫(xiě)的(正是這個(gè)原因,所以要先安裝VB的運(yùn)行庫(kù)),其源程序可以在VB98\Wizards\
PDWizard\Setup1中找到。如果對(duì)VB的安裝程序不滿意,希望添加新功能,則可以直接修改Setup1.vbp。具體到問(wèn)題,在VB中可以打開(kāi)Setup1.vbp,然后修改Setup1.frm的Form_Load事件,在其中可以找到如下幾行:在If..EndIf中加上:重新編譯Setup1.vbp,用Setup1.exe替換原來(lái)的Setup1.exe即可。問(wèn)題7用VB6.0的安裝向?qū)е谱鞯某绦虬惭b包里,總有一個(gè)?.dep文件,這個(gè)文件有什么用?是否與OCX注冊(cè)有關(guān)?如何打開(kāi)?如何編輯?解決方法:只有在為ActiveX控件制作安裝包的時(shí)候,才會(huì)出現(xiàn)?.dep文件。這個(gè)文件主要是供使用ActiveX控件的程序設(shè)計(jì)者制作自己的程序的安裝盤(pán)時(shí)使用的。用戶(hù)在使用SetupWizard制作安裝盤(pán)時(shí),SetupWizard會(huì)讀取這個(gè)文件,檢查ActiveX控件需要哪些DLL支持。一般不用手工修改這個(gè)文件,如果認(rèn)為確有必要,可以使用記事本打開(kāi)修改。
問(wèn)題8在制作安裝文件后,安裝過(guò)程中系統(tǒng)缺省的目錄是C:\programfiles\tele,而需要的是C:\tele2000,有辦法修改嗎?解決方法:要修改安裝程序的缺省目錄,可以打開(kāi)安裝盤(pán)的setup.lst文件。在這個(gè)文件中可以找到下面一行:將這行中的“$(ProgramFiles)\tele”修改為想要的目錄(如C:\tele2000)即可。9.1.4用VB開(kāi)發(fā)與機(jī)器環(huán)境無(wú)關(guān)的程序
軟件的開(kāi)發(fā)必須保證與機(jī)器環(huán)境的無(wú)關(guān)性,這是一個(gè)在開(kāi)發(fā)和調(diào)試過(guò)程中都必須注意的問(wèn)題。下面介紹與機(jī)器環(huán)境無(wú)關(guān)的應(yīng)用程序開(kāi)發(fā)與測(cè)試的方法。
利用VisualBasic開(kāi)發(fā)應(yīng)用程序時(shí),常常會(huì)遇到這樣的問(wèn)題:生成的可執(zhí)行文件在開(kāi)發(fā)的機(jī)器上能夠運(yùn)行,復(fù)制到另一臺(tái)機(jī)器上則無(wú)法運(yùn)行,這種現(xiàn)象稱(chēng)之為應(yīng)用程序與機(jī)器環(huán)境相關(guān)。造成這種現(xiàn)象主要有兩個(gè)方面的原因:一是程序在運(yùn)行過(guò)程中調(diào)用了一些文件,如數(shù)據(jù)庫(kù)文件、文本文件和圖片文件等,由于路徑使用不當(dāng)而無(wú)法定位;二是VisualBasic編譯成的?.EXE文件并不是實(shí)際意義上的EXE文件,VisualBasic系統(tǒng)中的標(biāo)準(zhǔn)控件和開(kāi)發(fā)過(guò)程中用到的第三方控件都沒(méi)有包含在內(nèi)。
因此,要解決用VB開(kāi)發(fā)的應(yīng)用程序與機(jī)器環(huán)境的相關(guān)性,必須從兩個(gè)方面入手:一是保證應(yīng)用程序能調(diào)用到所用文件,二是應(yīng)用程序發(fā)布時(shí)同時(shí)發(fā)布所有用到的控件和DLL
文件。
1.開(kāi)發(fā)與路徑無(wú)關(guān)的應(yīng)用程序
無(wú)論應(yīng)用程序開(kāi)發(fā)得多么好,是否成功還取決于其能否在任何機(jī)器的任何目錄下都能運(yùn)行。這就要求應(yīng)用程序要自成一體,不但要包含所有用到的文件,而且還應(yīng)與路徑無(wú)關(guān)。可用兩種方法實(shí)現(xiàn)應(yīng)用程序與路徑無(wú)關(guān):一是利用VB.APP對(duì)象的PATH屬性;二是把調(diào)用文件放在光盤(pán)上,直接調(diào)用。
1)利用VB.APP.PATH實(shí)現(xiàn)與路徑無(wú)關(guān)
該方法的主要思路是在調(diào)用文件時(shí)利用相對(duì)路徑。由于VB中不支持與DOS類(lèi)似的相對(duì)路徑,如調(diào)用當(dāng)前目錄下的“hh1.bmp”文件,寫(xiě)成“hh1.bmp”和“.\hh1.bmp”時(shí)將會(huì)出錯(cuò)。為解決該問(wèn)題,VB提供了一個(gè)VB.APP對(duì)象,該對(duì)象有個(gè)名為PATH的屬性,它記下了執(zhí)行文件所在的路徑,可在運(yùn)行時(shí)訪問(wèn)。用該方法創(chuàng)建與路徑無(wú)關(guān)應(yīng)用程序的要點(diǎn)如下:
(1)為應(yīng)用程序(項(xiàng)目)創(chuàng)建一個(gè)目錄,用以存放建立的窗體或其它文件。
(2)把應(yīng)用程序所調(diào)用的文件放在該目錄下或者放在該目錄的子目錄下。子目錄最好按照引用文件的類(lèi)型進(jìn)行建立,如存放圖片的子目錄名為PIC,存放表的子目錄為DBF等。
(3)除包含在可執(zhí)行文件中的文件(如在設(shè)計(jì)時(shí)圖片框加載的圖片)外的其它文件,調(diào)用一律采用相對(duì)路徑,而禁用絕對(duì)路徑。這樣,在復(fù)制應(yīng)用程序的時(shí)候,只要把應(yīng)用程序目錄下的所有文件(包括子目錄)復(fù)制到任意目錄下,應(yīng)用程序都不會(huì)發(fā)生因找不到文件而產(chǎn)生的錯(cuò)誤。
以下是一個(gè)程序?qū)嵗?,該?shí)例顯示一系列的角度逐漸變化的地球圖片,從而形成地球轉(zhuǎn)動(dòng)動(dòng)畫(huà)。用VB設(shè)計(jì)一個(gè)窗體,窗體上放置一個(gè)圖片框,名為Image1(Strech=.T.),給窗體加一個(gè)定時(shí)器控件,控件名為T(mén)imer1(Interval=25,enabled=.t.)。該項(xiàng)目存放在A:\exam下,圖片文件存放在A:\EXAM1\PIC下面。使用絕對(duì)路徑,程序代碼如下:該程序使用絕對(duì)路徑調(diào)用外部文件(earth0.jpg-earth7.jpg),當(dāng)把EXAM目錄的全部?jī)?nèi)容拷貝到其他機(jī)器上并抽出軟盤(pán)后,運(yùn)行程序?qū)l(fā)生找不到文件的錯(cuò)誤。若采用VB.APP.PATH屬性,把形成圖片文件名的語(yǔ)句改寫(xiě)如下:這樣,無(wú)論把EXAM目錄完全復(fù)制到任何機(jī)器,程序均能運(yùn)行。
2)從光盤(pán)調(diào)用文件實(shí)現(xiàn)與路徑無(wú)關(guān)
把應(yīng)用程序要調(diào)用的文件放在光盤(pán)指定目錄下,應(yīng)用程序發(fā)行時(shí)和該光盤(pán)的拷貝一同發(fā)行。程序運(yùn)行時(shí),直接從光盤(pán)指定目錄調(diào)用文件,故不會(huì)發(fā)生因找不到文件而出現(xiàn)的錯(cuò)誤。由于不同機(jī)器上的光盤(pán)盤(pán)符不同,因此在開(kāi)發(fā)時(shí)不能直接引用光盤(pán)的盤(pán)符,應(yīng)用程序必須先取得光盤(pán)盤(pán)符,然后再生成需要調(diào)用文件的完整文件名。可以使用API函數(shù)來(lái)取得光驅(qū)盤(pán)符,也可以通過(guò)以下程序段來(lái)檢測(cè)光驅(qū)盤(pán)符:以上程序段放在需要檢測(cè)光驅(qū)的地方,通常放在Form.load事件中,光驅(qū)盤(pán)符存放在Drive變量中。檢測(cè)到光驅(qū)后,可直接調(diào)用光盤(pán)上的文件。如上例中,若PIC目錄下的圖片文件存放在光盤(pán)上,則形成文件名的語(yǔ)句可以用以下語(yǔ)句代替:這樣,就實(shí)現(xiàn)了從光盤(pán)調(diào)用文件與路徑無(wú)關(guān)了。
2.包裝應(yīng)用程序?qū)崿F(xiàn)與系統(tǒng)無(wú)關(guān)
解決了與文件路徑相關(guān)的問(wèn)題后,生成的可執(zhí)行文件在其它沒(méi)有安裝VisualBasic的機(jī)器中依然無(wú)法執(zhí)行。原因之一是VisualBasic具有21個(gè)標(biāo)準(zhǔn)控件,這些控件都保存在動(dòng)態(tài)鏈接庫(kù)中(擴(kuò)展名為?.DLL),而VisualBasic的可執(zhí)行程序中并沒(méi)有包含;原因之二是開(kāi)發(fā)的應(yīng)用程序可能包含了第三方控件,VisualBasic的可執(zhí)行程序中也不包含它們。因此,在其它機(jī)器上執(zhí)行VB開(kāi)發(fā)的應(yīng)用程序時(shí),必須使該機(jī)器包含程序中所有用到的動(dòng)態(tài)鏈接庫(kù)和控件文件(OCX或VBX文件),并需要把它們?cè)赪indows中加以注冊(cè)。為了減少拷貝和注冊(cè)DLL、OCX和VBX給用戶(hù)帶來(lái)的麻煩,VB自帶了一個(gè)包裝程序,利用它給應(yīng)用程序打包,生成安裝盤(pán)。包中可以包含應(yīng)用程序相關(guān)文件、DLL文件、OCX文件、VBX文件等。要把程序包安裝到某臺(tái)機(jī)器上時(shí),只需在該機(jī)器上執(zhí)行Setup程序即可,由Setup程序自動(dòng)完成相應(yīng)的DLL、OCX和VBX文件的拷貝和注冊(cè)。
3.應(yīng)用程序與機(jī)器環(huán)境無(wú)關(guān)性測(cè)試方法
要保證程序的機(jī)器環(huán)境的無(wú)關(guān)性,必須進(jìn)行嚴(yán)格測(cè)試。但由于在開(kāi)發(fā)機(jī)器上所有調(diào)用的文件都實(shí)際存在,DLL、OCX和VBX等文件存在并且已經(jīng)注冊(cè),因此無(wú)法進(jìn)行程序的機(jī)器環(huán)境無(wú)關(guān)性測(cè)試。測(cè)試只能在其它機(jī)器上進(jìn)行,可以分成以下幾步:
(1)另找一臺(tái)只安裝了Windows系統(tǒng)而沒(méi)有安裝任何其它軟件的機(jī)器,且只有Windows系統(tǒng)子目錄。
(2)在該機(jī)器上解包并執(zhí)行程序。
(3)若執(zhí)行無(wú)誤,則進(jìn)入下一步,否則該軟件需根據(jù)提示進(jìn)行修改。該步驟保證了調(diào)用DLL、OCX和VBX的正確性,但并不能保證與路徑無(wú)關(guān)。
(4)改變應(yīng)用程序的安裝目錄,再進(jìn)一步驗(yàn)證路徑無(wú)關(guān)性。若無(wú)誤,進(jìn)入下一步,否則該軟件需根據(jù)提示進(jìn)行修改。該步驟保證了軟件自帶文件的調(diào)用正確性。
(5)另找一臺(tái)只安裝了Windows系統(tǒng)的機(jī)器,Windows系統(tǒng)子目錄與前臺(tái)機(jī)器不一樣,然后重復(fù)以上步驟。若無(wú)誤,則說(shuō)明該軟件已經(jīng)達(dá)到了機(jī)器環(huán)境無(wú)關(guān)性的要求;否則,該軟件需根據(jù)提示進(jìn)行修改。該步驟保證軟件絕對(duì)沒(méi)有調(diào)用任何自帶的外部文件。
應(yīng)用程序的系統(tǒng)無(wú)關(guān)性是軟件成敗的一個(gè)重要因素,是程序設(shè)計(jì)中需要詳細(xì)規(guī)劃的一個(gè)重要方面,同時(shí)也是程序調(diào)試的一個(gè)重點(diǎn)內(nèi)容。對(duì)本文討論的方法稍加修改,亦可適用于其它開(kāi)發(fā)工具。9.2.1Authorware一鍵發(fā)行設(shè)定
為了說(shuō)明問(wèn)題,首先打開(kāi)一個(gè)文件,選擇菜單命令File/Publish,其中包含了一個(gè)子菜單,如圖9-18所示。這個(gè)子菜單是一些與作品發(fā)布和打包相關(guān)的命令。
PublishSettings:對(duì)作品的發(fā)布參數(shù)進(jìn)行設(shè)置。
Publish:按照設(shè)置情況將作品發(fā)布。
BatchPublish:對(duì)多個(gè)文件成批發(fā)布。
Package:對(duì)作品打包。
WebPackager:將作品進(jìn)行網(wǎng)絡(luò)環(huán)境下的打包。
下面簡(jiǎn)單介紹PublishSettings設(shè)置情況。9.2Authorware多媒體作品的發(fā)布圖9-18
Publish子菜單
1.Formats頁(yè)框
選擇PublishSettings命令,會(huì)出現(xiàn)如圖9-19所示的對(duì)話窗口,除窗口最上方顯示的是當(dāng)前文件的路徑及名稱(chēng)外,還包含了多個(gè)設(shè)置頁(yè)框,可以滿足多種發(fā)布和打包方式的要求。圖9-19OneButtonPublishing對(duì)話窗口
Formats頁(yè)框顯示的是作品將要發(fā)布的類(lèi)型、發(fā)布文件存放的位置、文件名等信息。
(1)?PublishForCD,LAN,LocalHDD:說(shuō)明發(fā)布設(shè)置是應(yīng)用于CD、LAN或本地硬盤(pán)。
●?PackageAs:知識(shí)打包文件存放的位置。
●?WithRuntimeforWindows9xandNTvariants:選擇此選項(xiàng),打包后的文件是一個(gè)可以獨(dú)立在Windows環(huán)境下運(yùn)行的可執(zhí)行程序(EXE);不選擇此選項(xiàng),則打包后的文件必須在有“Runa6w32.exe”文件的情況下才能夠運(yùn)行,這時(shí)打包文件是以“.a6r”為后綴的文件。
●?CopySupportingFiles:尋找打包文件運(yùn)行所需要的文件,并將它們復(fù)制到打包文件所在的文件夾中。
(2)?PublishForWeb:說(shuō)明下面的設(shè)置是應(yīng)用于網(wǎng)絡(luò)環(huán)境的。
●?ForWebPlayer:生成AuthorwareWebPlayer需要的作品片斷。除第1個(gè)片斷的文件后綴為“.aam”外,其余片斷的文件后綴都是“.aas”。
●?WebPage:生成使用瀏覽器觀看需要的網(wǎng)頁(yè)“.htm”。
2.Package頁(yè)框
Package頁(yè)框的內(nèi)容如圖9-20所示,是幾個(gè)打包選項(xiàng)。
●?PackageAllLibrariesInternally:使Authorware將所有與程序鏈接的庫(kù)文件打包成EXE文件的一部分。
●?PackageExternalMediaInternally:使Authorware將所有外部的媒體打包成作品的一部分,但不能包括數(shù)字電影。圖9-20
Package頁(yè)框的內(nèi)容●?ReferencedIconsOnly:僅將程序中用到的庫(kù)圖標(biāo)打包。
●?ResolveBrokenLinksatRuntime:當(dāng)編寫(xiě)Authorware程序時(shí),每放一個(gè)新圖標(biāo)在流程線上,系統(tǒng)會(huì)自動(dòng)記錄圖標(biāo)的所有數(shù)據(jù),并且Authorware內(nèi)部以鏈接方式將數(shù)據(jù)串聯(lián)起來(lái)。一旦程序作了修改操作,Authorware里的鏈接會(huì)重新調(diào)整,某些數(shù)據(jù)鏈會(huì)形成斷鏈。為了不讓程序運(yùn)行過(guò)程中出現(xiàn)問(wèn)題,最好選擇此項(xiàng),讓Authorware自動(dòng)處理斷鏈。
3.ForWebPlayer頁(yè)框
ForWebPlayer頁(yè)框主要包括網(wǎng)絡(luò)片斷文件的大小、名稱(chēng)、安全性以及是否使用智能流技術(shù)等選項(xiàng)的設(shè)置,如圖9-21所示,一般采用缺省值即可。圖9-21
ForWebPlayer頁(yè)框
4.WebPage頁(yè)框
WebPage頁(yè)框主要包括網(wǎng)頁(yè)的模板、大小、外觀和播放控制等參數(shù),如圖9-22所示,一般不需要修改它。
5.Files頁(yè)框
Files頁(yè)框自動(dòng)列出了需要發(fā)布的文件、發(fā)布的目標(biāo)位置等信息,如圖9-23所示,包括設(shè)計(jì)的程序、Xtras文件、用戶(hù)定義文件(U32)、動(dòng)態(tài)鏈接庫(kù)文件(DLL)、外部文件等。通過(guò)其中的幾個(gè)按鈕還可以增加、刪除文件,查找額外需要的文件等。這是一個(gè)非常重要的頁(yè)框,在每次作品發(fā)布時(shí),大家都應(yīng)仔細(xì)審查一下這里是否包括了自己作品所需要的全部文件。圖9-22WebPage頁(yè)框圖9-23Files頁(yè)框在Commands菜單下有一個(gè)FindXtras選項(xiàng),當(dāng)并不想發(fā)布作品,而只是想了解程序中使用了哪些Xtras文件時(shí),就可以利用它來(lái)查找。在完成了PublishSettings選項(xiàng)中的參數(shù)設(shè)置后,還應(yīng)當(dāng)對(duì)對(duì)話窗口右側(cè)的幾個(gè)按鈕進(jìn)行說(shuō)明:9.2.2作品的發(fā)布和打包
1.Publish作品發(fā)布上一節(jié)介紹了PublishSettings的設(shè)置情況,Publish命令就如同使用PublishSettings命令下OneButtonPublishing對(duì)話窗口(圖9-24)中的按鈕一樣,是按照設(shè)置好的參數(shù)將作品發(fā)布的。
2.BatchPubl
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 滄州地區(qū)泌尿系結(jié)石成分分析單中心研究
- 各個(gè)班組三級(jí)安全培訓(xùn)考試題及參考答案1套
- 基于銀納米線柔性電極的制備及OLED器件性能研究
- 城市居家老年人醫(yī)護(hù)康養(yǎng)一體化服務(wù)需求及影響因素研究
- 投服中心股東代位訴訟效果與作用機(jī)理研究
- 2025年泵及液體提升機(jī)項(xiàng)目建議書(shū)
- 空間想象力訓(xùn)練行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 環(huán)保型涂料生產(chǎn)線擴(kuò)建企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 高純氧化鉬生產(chǎn)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 氯丁橡膠耐化學(xué)腐蝕性研究行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢(xún)報(bào)告
- 完整的六年級(jí)奧語(yǔ)試題及答案
- GB/T 14404-2011剪板機(jī)精度
- GA 1517-2018金銀珠寶營(yíng)業(yè)場(chǎng)所安全防范要求
- 自費(fèi)藥品同意書(shū)
- 路基土石方路基開(kāi)挖開(kāi)工申請(qǐng)報(bào)告
- PLC控制輪式機(jī)器人操作手畢業(yè)論文
- 普通教育學(xué)第八章德育課件
- 政治經(jīng)濟(jì)學(xué)1政治經(jīng)濟(jì)學(xué)-導(dǎo)論課件
- 痙攣康復(fù)及肉毒素的應(yīng)用培訓(xùn)課件
- 江埡中學(xué)學(xué)生會(huì)章程
- 清明節(jié)主題班會(huì)PPT模板
評(píng)論
0/150
提交評(píng)論