InstallShield常用问题
實現(xiàn)方法:如果對用戶界面等自定義要求不高的話,建議用Basic Msi Project,否則用InstallScript MSI Project。
2、 問題描述:安裝后快捷方式為亂碼。
實現(xiàn)方法:將簡體中文設(shè)為默認安裝語言后刪除English前的勾。
操作步驟:在Installation Designer頁面中Installation Information-General Information->String Tables右擊Chinese(simplify)在彈出的快捷菜單中選擇Make default,回到Project Assistant頁面的相應(yīng)處去掉English前的勾。
3、 問題描述:安裝界面的中文全顯示為亂碼。
產(chǎn)生原因:之前已編譯過英文的安裝包。
實現(xiàn)方法:在Bulid菜單中的Release Wizard中修改設(shè)置再重新編譯即可。
4、 問題描述:如何修改系統(tǒng)默認的安裝文件夾?
實現(xiàn)方法:在Information-Product Properties中INSTALLDIR右側(cè)的文本框中單擊,再單擊文本框右側(cè)的 ,在彈出的Set INSTALLDIR對話框中新建目標文件夾,點擊OK后,再次點擊 選擇剛才建好的那個文件夾。點OK 即可將默認的安裝目錄修改。
5、 問題描述:怎么在開始程序中加上卸載的快捷方式。
實現(xiàn)方法:在Project Assistant頁面的Appication Shotcuts中單擊左側(cè)的Create an unlinstallation shotcut。
6、 問題描述:安裝時怎么使控件自注冊。
實現(xiàn)方法:在Project Assistant頁面的中右側(cè)選中控件,右擊選擇Properties在彈出的對話框中勾上Self Register復選框。
7、 問題描述:怎么實現(xiàn)在卸載時有的控件不被刪除。
實現(xiàn)方法:直接單擊Installation Designer頁面,選中Application Data下的Files and Folders,在Destination computer’s folders中選中不要被卸載的組件,右擊選擇Properties在彈出的對話框中勾上Permanent復選框(若沒有復選框可以在organiztion處的setup design處設(shè)置 )
8、 問題描述:怎么在Basic MSI Project安裝工程中實現(xiàn)安裝后運行指定的安裝程序。
實現(xiàn)方法:首先在Installation Designer頁面的Behavior and Logic中單擊InstallScript,右擊Files在彈出的快捷菜單中選擇New Script file,然后新建相關(guān)函數(shù)。例如:
#include "ifx.h"
export prototype RunSetIIS(HWND);
function RunSetIIS(hMSI)
?? STRING svResult;
begin????
????? if(FindFile(INSTALLDIR,"設(shè)置IIS.exe",svResult)=0) then
????? LaunchAppAndWait (INSTALLDIR^"設(shè)置IIS.exe","AUTORUN",WAIT);
?? endif;
end;
然后再在Behavior and Logic中單擊Custom Actions, 右擊Custom Actions在彈出的快捷菜單中選擇Custom Action Wizard在Action Type中選擇Run InstallScript code,在Insert into Sequence中的Install Execute Sequence處選擇After ISSelRegisterFinalize或者After InstallFinalize都行,其余按向?qū)崾静僮鳌?br />
9、 問題描述:怎么樣在安裝或卸載過程中停止或開啟、重啟有關(guān)服務(wù)。
實現(xiàn)方法:大體操作同8。相關(guān)函數(shù)LaunchAppAndWait, 以停止win自帶的web服務(wù)為例:
#include "ifx.h"
export prototype StopWebservice(HWND);
function StopWebservice(hMSI)
begin
LaunchAppAndWait("","net stop w3svc"+"/S",WAIT);
end;
10、問題描述:怎么樣在卸載后刪除殘留文件。
實現(xiàn)方法:大體操作同8。相關(guān)函數(shù)DeleteDir, DeleteFile,注意不要對INSTALLDIR文件夾進行整個刪除,以防安裝在根目錄時這樣的刪除操作會造成刪除整個盤符的所有數(shù)據(jù)。
11、問題描述:怎么樣在安裝完成之后創(chuàng)建新文件夾。
實現(xiàn)方法:大體操作同8。相關(guān)函數(shù)CreateDir。
12、問題描述:怎么使安裝包只一個exe文件。
實現(xiàn)方法:在Bulid菜單中單擊Release Wizard,在Media Type對話框處選擇Network inage-在Release Configuartion對話框處選中Compress all files,在Windows Installer Location,Installscript Engine處選中Extract engine form Setup.exe,其余按向?qū)崾静僮鳌?br />
13、問題描述:安裝時提示有的文件正在使用不能被覆蓋,怎么解決。
實現(xiàn)方法:單擊Installation Designer頁面,選中Application Data下的Files and Folders,在Destination computer’s folders處右擊選中show compenents,再選中不要被覆蓋的任意一個components,右擊選擇Properties在彈出的對話框中勾上Never Overwrite復選框。或是直接點擊Organazation處的components處選擇即可.
14、問題描述:怎么讓用戶選擇安裝路徑。
實現(xiàn)方法:在project Assistant中installationinterview 處,將第三行的yes選上。
15、問題描述:怎么修改對話框左側(cè)和上部的logo圖片。
實現(xiàn)方法:在Project Assistant->Installation Interview:在右上角的More options處有個Use custom images on dialogs
16、問題描述:怎么在初始化安裝過程時顯示公司的logo作為閃屏。
實現(xiàn)方法:在Installation Designer頁面的Behavior and Logic->Support Files->Splash Screen處的Language Independent單擊,在files列表處右鍵Insert files,選取一幅bmp圖片添加就是。
17、問題描述:怎么使用腳本在安裝過程中調(diào)用另一個MSI安裝程序。
實現(xiàn)方法:以下是函數(shù)片段
string szCommand,szCmdLine;
begin
?? szCommand = WINSYSDIR^"msiexec.exe";
?? LongPathToShortPath(szCommand);
?? szCmdLine =TARGETDIR^"msxmlchs.msi";
?? LongPathToShortPath(szCmdLine);
?? SdShowMsg("正在安裝msxml,請稍候...",TRUE);
?? Delay(5);
?? if (LaunchAppAndWait( szCommand ,"/i"+szCmdLine,WAIT) < 0) then
????? MessageBox("數(shù)據(jù)文件出現(xiàn)錯誤",WA RNING);??????
?? endif;
18、問題描述:怎么設(shè)置背景圖
????? 實現(xiàn)方法:以下是函數(shù)片段
Enable( BACKGROUND );??????
??? GetExtents ( nvDx , nvDy);
??? if(nvDx=800) then
????? PlaceBitmap ( SUPPORTDIR ^ "bbrd1.bmp" , 1 , 800 , 600 ,CENTERED);
??? elseif(nvDx=1024) then???????
????? PlaceBitmap ( SUPPORTDIR ^ "bbrd2.bmp" , 1 ,1024 , 768 ,CENTERED);
??? elseif(nvDx=1152) then
????? PlaceBitmap ( SUPPORTDIR ^ "bbrd3.bmp" , 1 , 1152 , 864 ,CENTERED);
??? endif;
19、使用腳本修改安裝程序
InstallShield開發(fā)工具是采用InstallScript語言來運行一個安裝程序的,你可以在InstallScript視圖中來修改工程的腳本程序。
InstallScript MSI腳本語言采用的事件驅(qū)動模式,也就是說,所有的函數(shù)調(diào)用是安裝一定的順序來進行的。
在你的工程中自己定義的函數(shù)都會出現(xiàn)你的函數(shù)樹上,見上圖,你可以單擊樹上函數(shù)名稱來編輯或者修改該函數(shù)。
事件處理函數(shù)(event-handler functions)是不會出現(xiàn)你的函數(shù)樹上,但是這些函數(shù)你的工程也可以使用,當然,此時我們使用的該函數(shù)的缺省代碼,如果你想修改某個事件處理函數(shù),你可以從事件列表中選擇一個事件比如我們選擇(Befor Move Data),然后選擇一個關(guān)于這個事件的函數(shù)(比如Begin),然后這個函數(shù)的定義就會出現(xiàn)在你的腳本中,在你的腳本中會出現(xiàn)下面的代碼。
//
? //
? // 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;
你可以在這個函數(shù)執(zhí)行自己的代碼了。
下面我們演示一下如何在這個函數(shù)添加一個MessageBox函數(shù)。
1、首先將begin和end間的//開頭的都刪除
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.
最后,其實就是在你的OnBegin函數(shù)中添加了如下的代碼:
function OnBegin( )
? begin
? MessageBox ( "Welcome to the Tutorial installation!" , INFORMATION
? );
? end;
當你修改了你的腳本時,你就要重新編譯它,這樣,當你運行安裝程序的時候,在彈出歡迎對話框之前就會彈出這個消息框。InstallScript語言包含了大概250個函數(shù)用來處理相關(guān)的任務(wù),詳細內(nèi)容參見幫助文檔。
20、修改安裝界面
處理用戶的輸入:
在你的安裝腳本中,所有處理用戶輸入對話框的顯示只在下面的四個函數(shù)中出現(xiàn)
OnFirstUIBefore,這個函數(shù)里包含了用戶第一次安裝該程序,在復制文件之前的所有的對話框。
OnFirstUIAfter,這個函數(shù)包含用戶第一次安裝該程序,在復制文件之后所用到的對話框顯示
OnMaintUIBefore,這個函數(shù)中包含了用戶采用maintenance模式安裝時,在復制文件之前的所用到的所有的對話框。
OnMaintUIAfter,這個函數(shù)中包含了用戶采用maintenance模式安裝,在復制文件之后所用到的對話框。
對于InstallScript MSI工程來說,其實這里最重要的還是OnFirstUIBefore and OnMaintUIBefore兩個函數(shù),用戶無論是第一次安裝還是maintenance安裝,對話框顯示都在這兩個函數(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;
ok,關(guān)于InstallShield8.0的入門就簡單介紹到這里,關(guān)于安裝程序的制作,以后有機會我會寫一些更加詳細關(guān)于InstallShield的幫助文檔,如果大家有有什么問題,希望多交流。
再分享一下我老師大神的人工智能教程吧。零基礎(chǔ)!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們?nèi)斯ぶ悄艿年犖橹衼?#xff01;https://blog.csdn.net/jiangjunshow
總結(jié)
以上是生活随笔為你收集整理的InstallShield常用问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NSIS打包工具用法介绍与NSIS相关软
- 下一篇: 带音效的计算机软件,普通电脑WIN7上安