用InstallShield制作商品化軟件安裝程序
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
摘 要:結(jié)合對作者利用VC++6.0開發(fā)的工控軟件包制作安裝程序的實例,介紹了如 何用InstallShield來制作標準的Windows安裝程序,重點敘述了如何編制程序組(項)、 分類安裝(典型、完全和自定義安裝)、卸載、注冊控件和界面漢化等方面的內(nèi)容。 關(guān)鍵詞:InstallShield;安裝程序;包裝;媒體;卸載;控件注冊 一 、引言 軟件既是一項工程又是一種產(chǎn)品,稱其為工程是因為它是按照工程的方法進行設(shè)計、實施,也就是所謂的軟件工程,作為一項完整的工程項目就必須把最終產(chǎn)品完整有效地交付給用戶;說它是一種產(chǎn)品,它符合產(chǎn)品的一系列特性,當然最重要的就是產(chǎn)品的包裝,在當今充滿競爭的時代里,在提高軟件質(zhì)量的基礎(chǔ)上給產(chǎn)品一個好的“外殼”,已經(jīng)成為軟件業(yè)的一大需求。 軟件安裝由DOS時代通過批處理文件實現(xiàn)直到UCDOS圖形安裝界面的出現(xiàn),才有一些新意;再到易學易用的圖形用戶界面、多任務(wù)功能的WINDOWS系統(tǒng)的出現(xiàn),安裝一個軟件或應(yīng)用程序已不再僅僅是將相關(guān)的文件復制到硬盤中,而是必須允許用戶按自己的愿望選擇安裝類型和安裝路徑,并且在不需要的時候,還要能夠?qū)惭b的相關(guān)內(nèi)容全部刪除掉,而且還要保證其完整性和有效性,Installshield就能夠滿足這樣的要求。針對作者開發(fā)的用于化工行業(yè)間歇聚合反應(yīng)過程先進控制的軟件包――化工間歇聚合反應(yīng)過程的辨識與控制軟件的商品化問題,作者應(yīng)用Installshield制作了Windows環(huán)境下的標準安裝程序,經(jīng)過反復調(diào)試和檢驗達到了預期的目標,安裝及卸載都十分方便。 二、用InstallShield制作安裝程序的步驟 1.建立工程文件 打開InstallShield 相關(guān)應(yīng)用程序,雙擊“Project Wizard”,按照向?qū)崾据斎牍こ痰南嚓P(guān)信息。當然這里輸入的是給相關(guān)變量賦值,在編譯之前可以對其進行修改,打開資源Resources,對其相關(guān)屬性的變量進行重新賦值即可;另外,還需對菜單項“Project”中的產(chǎn)品名稱進行更改。 2.文件組配置 打開文件組File Groups工作區(qū),展開樹,給相應(yīng)的文件組鏈接對應(yīng)文件,對應(yīng)文件會顯示在相應(yīng)的區(qū)域。單擊相應(yīng)文件組,對其其屬性進行設(shè)置,重要的有:[Shared]指定當前文件組中的文件是否為共享文件,即該文件是否被多個應(yīng)用程序共同使用,若設(shè)為共享文件InstallShield在應(yīng)用程序安裝過程中會自動處理這些文件的注冊;[Self Registered]設(shè)置當前文件組中的文件是否自注冊,這個功能能夠?qū)⑾嚓P(guān)文件在安裝過程中進行注冊,卸載時也會自動將這些注冊信息刪除;[Compressed]指定當前文件組中的文件在建立媒體庫時是否被壓縮,這里的設(shè)置在安裝媒體向?qū)У拇疟P類型中不選擇[Data as files]復選框是有效的,否則不管如何設(shè)置應(yīng)用程序即不存儲在電纜文件中也不被壓縮;[Overwrite]指定當前文件組中文件覆蓋終端用戶計算機系統(tǒng)中已存在同名文件的條件;[Destination]指定當前文件組在安裝過程中被傳輸?shù)哪繕宋恢谩?SPAN lang=EN-US> 3.組件設(shè)置 打開組件“Components”工作區(qū),可以新建組件,組件的重要屬性有:“Status Text”是標志在復制對話的進度條上看到的文本;“Display Name”是給定當前組件顯示給終端用戶的文本;“File Need”是指定組件的級別,【Critical】對于安裝程序不允許終端用戶不選擇該組件,【Recommended】是建議終端用戶應(yīng)該選擇安裝該組件,【Standard】如果終端用戶沒有選擇該組件,不會顯示任何信息;“Include in Build”是表示是否將該組件包含到發(fā)行媒體中,暫時將本特征不包含到發(fā)行媒體給這個組件留下位置,以便以后升級?!?SPAN lang=EN-US>Required Components”是將此組件必需的其它組件鏈接在一起;“Included File Groups”可以為當前組件增加和刪除與之相關(guān)的文件組;其它屬性默認即可。 4.在Setup.rul底稿文件中添加代碼 充分利用InstallShield資源可以省去不少代碼編寫,特別是InstallShield提供的一些內(nèi)部函數(shù),可以實現(xiàn)豐富的功能,需要特別注意的是大小寫是嚴格區(qū)分的。 5.編譯工程 從【Build】菜單中選擇【Compile】選項對腳本進行編譯;編譯通過后選擇【File】菜單中的【Save】選項進行腳本修改的保存。 6.定制MEDIA(安裝媒體) 從【Build】菜單中選擇【Media Wizard】選項啟動媒體制作向?qū)?,按照提示一步一步進行,最后出現(xiàn)所設(shè)置的總信息,不妥后退進行修改,最后確認后按【完成】后定制媒體。 7.測試 文件安裝媒體制作完成之后,就可以進行測試,從【Build】菜單中選擇【Run Setup】運行,安裝完成后可以通過【開始】菜單的【程序】中的快捷方式運行安裝的應(yīng)用程序。最后運行卸載程序?qū)?yīng)用程序從系統(tǒng)中刪除。 三、安裝程序初始化 在函數(shù)OnFirstUIBefore()中輸入如下腳本代碼進行初始化程序。 1.安裝背景設(shè)置 SetFont(FONT_TITLE,STYLE_BOLD|STYLE_SHADOW, "Arial");//設(shè)置字體 SetTitle(@TITLE_CAPTIONBAR,0, BACKGROUNDCAPTION );//設(shè)置標題 SetTitle( @TITLE_MAIN, 24, WHITE ); //設(shè)置對話框主題字體和顏色 Enable( FULLWINDOWMODE ); //允許全屏顯示 Enable( BACKGROUND ); //允許背景設(shè)置有效 SetColor(BACKGROUND,RGB (0, 128, 128)); //設(shè)置背景顏色 2.加載圖片 在任何時候都可以加載圖片以裝飾安裝程序,方法如下: svPicName = SUPPORTDIR ^ "pic6.bmp"; //定義圖片路徑 DialogSetInfo(DLG_INFO_ALTIMAGE,svPicName,TRUE);//在對話框中顯示 svPicName = SUPPORTDIR ^ "pic2.bmp"; PlaceBitmap(svPicName,13,0,0,FULLSCREENSIZE);//全屏顯示圖片作為背景 在加載下一幅圖片的時候要先移去上一幅已加載的圖片,方法如下: PlaceBitmap ("",13,0,0,REMOVE); 3.系統(tǒng)變量的設(shè)置 nSetupType = TYPICAL; //預設(shè)默認安裝類型 TARGETDIR = "D:\\"^@PRODUCT_NAME; //設(shè)置默認安裝路徑 svName = "Name"; //用戶默認名 svCompany = "Company"; //公司默認名 svSerial = "123-EDC-532-386"; //序列號 四、定制程序組(項) function SetupFolders() NUMBER nResult,nIcon, nFlag; STRING szProgramFolder,szItemName,szCommandLine,szWorkingDir,szIconPath; STRING szShortCutKey, szProgram, szParam,svTmp; begin szProgramFolder = @PRODUCT_NAME; if (CreateProgramFolder(szProgramFolder) < 0) then return -1; endif; //設(shè)置快捷方式的工作環(huán)境 nIcon = 0; szShortCutKey = ""; nFlag = REPLACE; szWorkingDir = TARGETDIR; szIconPath = TARGETDIR+"\\"+@PRODUCT_KEY; //圖標選擇 szItemName = @PRODUCT_NAME; szProgram = szIconPath; LongPathToQuote(szProgram, TRUE); szCommandLine = szProgram; if(AddFolderIcon(szProgramFolder,szItemName,szCommandLine,szWorkingDir, szIconPath,nIcon,szShortCutKey,nFlag)< 0) then return -1; //在開始菜單的程序組中增加啟動該應(yīng)用程序的快捷方式 endif; if(AddFolderIcon(FOLDER_DESKTOP, szItemName, szCommandLine, szWorkingDir,szIconPath,nIcon,szShortCutKey, nFlag) < 0)then return -1; //在桌面上增加啟動該應(yīng)用程序的快捷方式 endif; //卸載的設(shè)置 szWorkingDir = WINDIR; szIconPath = SUPPORTDIR+"\\IsUninst.exe"; szItemName = "卸載"+@PRODUCT_NAME; svTmp=PROGRAMFILES+"InstallShieldInstallationInformation\\"+PRODUCT_GUID+"\\setup.exe"; LongPathToQuote(svTmp, TRUE); szParam = svTmp; LongPathToShortPath(szParam); svTmp=COMMONFILES+"InstallShield\\engine\\6\\Intel32\\ctor.dll"; LongPathToShortPath(svTmp); szProgram = "RunDll32"+" "+ svTmp+",LaunchSetup"; szCommandLine = szProgram + " " + szParam; if(AddFolderIcon(szProgramFolder,szItemName,szCommandLine,szWorkingDir, szIconPath, nIcon,szShortCutKey,nFlag)< 0) then // 在開始菜單中設(shè)置卸載快捷//方式 return -1; endif; end; 五、對象嵌入技術(shù) 使用InstallShield對象,我們可以很方便地安裝關(guān)鍵的Windows技術(shù),包括ODBC、Access、ADO、DAO、RDO、OLE DB、DirectX以及其它技術(shù),只要按照InstallShield嵌入對象向?qū)Р僮骷纯?/SPAN>,這里以嵌入ODBC為例子詳細說明: 首先利用 Windows控制面板中的ODBC數(shù)據(jù)源建立數(shù)據(jù)配置文件,需要與所建的數(shù)據(jù)庫文件聯(lián)系起來,這里是DOT.MDB文件,數(shù)據(jù)源名設(shè)置為DOT,退出后可以看到剛才建立的數(shù)據(jù)源。在Components工作區(qū)右擊相應(yīng)的組件,從彈出菜單中選擇【Insert InstallShield Object】,打開對象瀏覽樹,選中“NEW ODBC 3.51”,單擊【Add Object】按鈕將會把該對象加入到Resources工作區(qū)中的InstallShield Objects文件夾中以及剛才的組件中,然后就會有向?qū)樱ㄇ度肫渌鼘ο髸r,沒有向?qū)дf明已經(jīng)完成,關(guān)閉對象瀏覽器即可),按照向?qū)崾就瓿蒓DBC對象嵌入,在安裝過程中會自行注冊。大多數(shù)對象都是直接嵌入即可。 六、控件注冊 方法一:用戶手工注冊,利用VC++自帶的DOS命令REGSVR32.EXE(在\bin目錄下)或者直接用下列方法:點擊“開始”→“運行”;輸入以下命令進行注冊: regsvr32 < 文 件 名 > 注冊一個控件 regsvr32 /u< 文 件 名 > 解除某控件的注冊 方法二:利用InstallShield的自注冊功能,在文件組里新建一個文件組,這里取名為“BatchAPC 環(huán)境變量”,然后在這個新建文件組里鏈接需要注冊的文件,這里是兩個ActiveX控件MSCHRT20.OCX和MSCOMM32.OCX,將屬性中的“Self-Registered” 設(shè)置為“Yes”,一般默認為“No”,這樣就不需要編寫代碼來進行注冊了。 七、界面漢化 一般用InstallShield作出來的安裝程序是英文安裝界面,這里我們使用的是InstallShield Profession standard 6.22版本,《InstallShield 6.X/VB/VC/Delphi安裝程序設(shè)計與制作》這本書所帶的光盤上有漢化工具,若沒有,可以手工漢化,方法如下: 首先找到用InstallShield 5.X制作的漢化版安裝程序,執(zhí)行,在安裝出現(xiàn)歡迎對話框的時候最小化,安裝程序會在“C:\Windows\Temp\_istmp0.dir\”目錄下生成一個.dll文件,將其拷貝到其它地方,然后改名為_isres.dll,再將恢復后的_isres.dll拷貝到InstallShield安裝目錄“\Redistributable\CompressedFiles \0009-English \Intel 32”下;再將Setup.exe中文版拷貝到“\Redistributable\UncompressedFiles\Language Indepedent\Intel 32\”目錄下;最后將Setup.dll中文版拷貝到“\Redistributable \UncompressedFiles\LanguageIndepedent\OSIndepedent\”目錄下即可。一般情況下要是不能正常運行,恢復英文版的Setup.exe,然后在Win2000下用VC++ 6.0對其按資源編輯。漢化的實質(zhì)就是將這三個文件改為中文版,另兩個文件也可以用VC++6.0 編輯漢化。 注意:在漢化之前務(wù)必將英文版的_IsRes.dll、Setup.dll和Setup.exe三個文件備份。 八、結(jié)束語 綜上所述,通過上面的介紹可以制作出標準的安裝程序,當然,InstallShield的功能不僅僅是這些,界面的友好性和多媒體技術(shù)的應(yīng)用已經(jīng)成為完善安裝程序的方向,軟件的包裝現(xiàn)在已經(jīng)受到重視,特別是商品化所帶來的競爭機制,使其發(fā)展更快捷、更豐富。 參考文獻 1.丁有和 著 InstallShield簡明使用教程(電子文檔),2001.1 2.張君等 著 2001編程寶典叢書4 引人入勝InstallShield6.X/VB/VC/Delphi安裝程序設(shè)計與制作.北京希望電子出版社, 2001.1 3.Jeffrey M. Rhodes 著 InstallShield Professional Primer for ToolBook Installations 4.黃進林 著 利用InstallShield 制作PowerBuilder應(yīng)用程序安裝盤.電腦編程技巧與維護, 2001.3:9-12 該文章在 2010/12/2 12:19:06 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |