用InstallShield制作商品化軟件安裝程序
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
摘 要:結合對作者利用VC++6.0開發的工控軟件包制作安裝程序的實例,介紹了如 何用InstallShield來制作標準的Windows安裝程序,重點敘述了如何編制程序組(項)、 分類安裝(典型、完全和自定義安裝)、卸載、注冊控件和界面漢化等方面的內容。 關鍵詞:InstallShield;安裝程序;包裝;媒體;卸載;控件注冊 一 、引言 軟件既是一項工程又是一種產品,稱其為工程是因為它是按照工程的方法進行設計、實施,也就是所謂的軟件工程,作為一項完整的工程項目就必須把最終產品完整有效地交付給用戶;說它是一種產品,它符合產品的一系列特性,當然最重要的就是產品的包裝,在當今充滿競爭的時代里,在提高軟件質量的基礎上給產品一個好的“外殼”,已經成為軟件業的一大需求。 軟件安裝由DOS時代通過批處理文件實現直到UCDOS圖形安裝界面的出現,才有一些新意;再到易學易用的圖形用戶界面、多任務功能的WINDOWS系統的出現,安裝一個軟件或應用程序已不再僅僅是將相關的文件復制到硬盤中,而是必須允許用戶按自己的愿望選擇安裝類型和安裝路徑,并且在不需要的時候,還要能夠將安裝的相關內容全部刪除掉,而且還要保證其完整性和有效性,Installshield就能夠滿足這樣的要求。針對作者開發的用于化工行業間歇聚合反應過程先進控制的軟件包――化工間歇聚合反應過程的辨識與控制軟件的商品化問題,作者應用Installshield制作了Windows環境下的標準安裝程序,經過反復調試和檢驗達到了預期的目標,安裝及卸載都十分方便。 二、用InstallShield制作安裝程序的步驟 1.建立工程文件 打開InstallShield 相關應用程序,雙擊“Project Wizard”,按照向導提示輸入工程的相關信息。當然這里輸入的是給相關變量賦值,在編譯之前可以對其進行修改,打開資源Resources,對其相關屬性的變量進行重新賦值即可;另外,還需對菜單項“Project”中的產品名稱進行更改。 2.文件組配置 打開文件組File Groups工作區,展開樹,給相應的文件組鏈接對應文件,對應文件會顯示在相應的區域。單擊相應文件組,對其其屬性進行設置,重要的有:[Shared]指定當前文件組中的文件是否為共享文件,即該文件是否被多個應用程序共同使用,若設為共享文件InstallShield在應用程序安裝過程中會自動處理這些文件的注冊;[Self Registered]設置當前文件組中的文件是否自注冊,這個功能能夠將相關文件在安裝過程中進行注冊,卸載時也會自動將這些注冊信息刪除;[Compressed]指定當前文件組中的文件在建立媒體庫時是否被壓縮,這里的設置在安裝媒體向導的磁盤類型中不選擇[Data as files]復選框是有效的,否則不管如何設置應用程序即不存儲在電纜文件中也不被壓縮;[Overwrite]指定當前文件組中文件覆蓋終端用戶計算機系統中已存在同名文件的條件;[Destination]指定當前文件組在安裝過程中被傳輸的目標位置。 3.組件設置 打開組件“Components”工作區,可以新建組件,組件的重要屬性有:“Status Text”是標志在復制對話的進度條上看到的文本;“Display Name”是給定當前組件顯示給終端用戶的文本;“File Need”是指定組件的級別,【Critical】對于安裝程序不允許終端用戶不選擇該組件,【Recommended】是建議終端用戶應該選擇安裝該組件,【Standard】如果終端用戶沒有選擇該組件,不會顯示任何信息;“Include in Build”是表示是否將該組件包含到發行媒體中,暫時將本特征不包含到發行媒體給這個組件留下位置,以便以后升級。“Required Components”是將此組件必需的其它組件鏈接在一起;“Included File Groups”可以為當前組件增加和刪除與之相關的文件組;其它屬性默認即可。 4.在Setup.rul底稿文件中添加代碼 充分利用InstallShield資源可以省去不少代碼編寫,特別是InstallShield提供的一些內部函數,可以實現豐富的功能,需要特別注意的是大小寫是嚴格區分的。 5.編譯工程 從【Build】菜單中選擇【Compile】選項對腳本進行編譯;編譯通過后選擇【File】菜單中的【Save】選項進行腳本修改的保存。 6.定制MEDIA(安裝媒體) 從【Build】菜單中選擇【Media Wizard】選項啟動媒體制作向導,按照提示一步一步進行,最后出現所設置的總信息,不妥后退進行修改,最后確認后按【完成】后定制媒體。 7.測試 文件安裝媒體制作完成之后,就可以進行測試,從【Build】菜單中選擇【Run Setup】運行,安裝完成后可以通過【開始】菜單的【程序】中的快捷方式運行安裝的應用程序。最后運行卸載程序將應用程序從系統中刪除。 三、安裝程序初始化 在函數OnFirstUIBefore()中輸入如下腳本代碼進行初始化程序。 1.安裝背景設置 SetFont(FONT_TITLE,STYLE_BOLD|STYLE_SHADOW, "Arial");//設置字體 SetTitle(@TITLE_CAPTIONBAR,0, BACKGROUNDCAPTION );//設置標題 SetTitle( @TITLE_MAIN, 24, WHITE ); //設置對話框主題字體和顏色 Enable( FULLWINDOWMODE ); //允許全屏顯示 Enable( BACKGROUND ); //允許背景設置有效 SetColor(BACKGROUND,RGB (0, 128, 128)); //設置背景顏色 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.系統變量的設置 nSetupType = TYPICAL; //預設默認安裝類型 TARGETDIR = "D:\\"^@PRODUCT_NAME; //設置默認安裝路徑 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; //設置快捷方式的工作環境 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; //在開始菜單的程序組中增加啟動該應用程序的快捷方式 endif; if(AddFolderIcon(FOLDER_DESKTOP, szItemName, szCommandLine, szWorkingDir,szIconPath,nIcon,szShortCutKey, nFlag) < 0)then return -1; //在桌面上增加啟動該應用程序的快捷方式 endif; //卸載的設置 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 // 在開始菜單中設置卸載快捷//方式 return -1; endif; end; 五、對象嵌入技術 使用InstallShield對象,我們可以很方便地安裝關鍵的Windows技術,包括ODBC、Access、ADO、DAO、RDO、OLE DB、DirectX以及其它技術,只要按照InstallShield嵌入對象向導操作即可,這里以嵌入ODBC為例子詳細說明: 首先利用 Windows控制面板中的ODBC數據源建立數據配置文件,需要與所建的數據庫文件聯系起來,這里是DOT.MDB文件,數據源名設置為DOT,退出后可以看到剛才建立的數據源。在Components工作區右擊相應的組件,從彈出菜單中選擇【Insert InstallShield Object】,打開對象瀏覽樹,選中“NEW ODBC 3.51”,單擊【Add Object】按鈕將會把該對象加入到Resources工作區中的InstallShield Objects文件夾中以及剛才的組件中,然后就會有向導啟動(嵌入其它對象時,沒有向導說明已經完成,關閉對象瀏覽器即可),按照向導提示完成ODBC對象嵌入,在安裝過程中會自行注冊。大多數對象都是直接嵌入即可。 六、控件注冊 方法一:用戶手工注冊,利用VC++自帶的DOS命令REGSVR32.EXE(在\bin目錄下)或者直接用下列方法:點擊“開始”→“運行”;輸入以下命令進行注冊: regsvr32 < 文 件 名 > 注冊一個控件 regsvr32 /u< 文 件 名 > 解除某控件的注冊 方法二:利用InstallShield的自注冊功能,在文件組里新建一個文件組,這里取名為“BatchAPC 環境變量”,然后在這個新建文件組里鏈接需要注冊的文件,這里是兩個ActiveX控件MSCHRT20.OCX和MSCOMM32.OCX,將屬性中的“Self-Registered” 設置為“Yes”,一般默認為“No”,這樣就不需要編寫代碼來進行注冊了。 七、界面漢化 一般用InstallShield作出來的安裝程序是英文安裝界面,這里我們使用的是InstallShield Profession standard 6.22版本,《InstallShield 6.X/VB/VC/Delphi安裝程序設計與制作》這本書所帶的光盤上有漢化工具,若沒有,可以手工漢化,方法如下: 首先找到用InstallShield 5.X制作的漢化版安裝程序,執行,在安裝出現歡迎對話框的時候最小化,安裝程序會在“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對其按資源編輯。漢化的實質就是將這三個文件改為中文版,另兩個文件也可以用VC++6.0 編輯漢化。 注意:在漢化之前務必將英文版的_IsRes.dll、Setup.dll和Setup.exe三個文件備份。 八、結束語 綜上所述,通過上面的介紹可以制作出標準的安裝程序,當然,InstallShield的功能不僅僅是這些,界面的友好性和多媒體技術的應用已經成為完善安裝程序的方向,軟件的包裝現在已經受到重視,特別是商品化所帶來的競爭機制,使其發展更快捷、更豐富。 參考文獻 1.丁有和 著 InstallShield簡明使用教程(電子文檔),2001.1 2.張君等 著 2001編程寶典叢書4 引人入勝InstallShield6.X/VB/VC/Delphi安裝程序設計與制作.北京希望電子出版社, 2001.1 3.Jeffrey M. Rhodes 著 InstallShield Professional Primer for ToolBook Installations 4.黃進林 著 利用InstallShield 制作PowerBuilder應用程序安裝盤.電腦編程技巧與維護, 2001.3:9-12 該文章在 2010/12/2 12:19:06 編輯過 |
關鍵字查詢
相關文章
正在查詢... |