1、 問題描述:采用何種安裝模式?
實作方法:如果對使用者界面等自定義要求不高的話,建議用Basic Msi Project,否則用InstallScript MSI Project。
2、 問題描述:安裝後快捷方式為亂碼。
實作方法:将簡體中文設為預設安裝語言後删除English前的勾。
操作步驟:在Installation Designer頁面中Installation Information-General Information->String Tables右擊Chinese(simplify)在彈出的快捷菜單中選擇Make default,回到Project Assistant頁面的相應處去掉English前的勾。
3、 問題描述:安裝界面的中文全顯示為亂碼。
産生原因:之前已編譯過英文的安裝包。
實作方法:在Bulid菜單中的Release Wizard中修改設定再重新編譯即可。
4、 問題描述:如何修改系統預設的安裝檔案夾?
實作方法:在Information-Product Properties中INSTALLDIR右側的文本框中單擊,再單擊文本框右側的 ,在彈出的Set INSTALLDIR對話框中建立目标檔案夾,點選OK後,再次點選 選擇剛才建好的那個檔案夾。點OK 即可将預設的安裝目錄修改。
5、 問題描述:怎麼在開始程式中加上解除安裝的快捷方式。
實作方法:在Project Assistant頁面的Appication Shotcuts中單擊左側的Create an unlinstallation shotcut。
6、 問題描述:安裝時怎麼使控件自注冊。
實作方法:在Project Assistant頁面的中右側選中控件,右擊選擇Properties在彈出的對話框中勾上Self Register複選框。
7、 問題描述:怎麼實作在解除安裝時有的控件不被删除。
實作方法:直接單擊Installation Designer頁面,選中Application Data下的Files and Folders,在Destination computer’s folders中選中不要被解除安裝的元件,右擊選擇Properties在彈出的對話框中勾上Permanent複選框(若沒有複選框可以在 organiztion處的setup design處設定 )
8、 問題描述:怎麼在Basic MSI Project安裝工程中實作安裝後運作指定的安裝程式。
實作方法:首先在Installation Designer頁面的Behavior and Logic中單擊InstallScript,右擊Files在彈出的快捷菜單中選擇New Script file,然後建立相關函數。例如:
#include "ifx.h"
export prototype RunSetIIS(HWND);
function RunSetIIS(hMSI)
STRING svResult;
begin
if(FindFile(INSTALLDIR,"設定IIS.exe",svResult)=0) then
LaunchAppAndWait (INSTALLDIR^"設定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都行,其餘按向導提示操作。
9、 問題描述:怎麼樣在安裝或解除安裝過程中停止或開啟、重新開機有關服務。
實作方法:大體操作同8。相關函數LaunchAppAndWait, 以停止win自帶的web服務為例:
#include "ifx.h"
export prototype StopWebservice(HWND);
function StopWebservice(hMSI)
begin
LaunchAppAndWait("","net stop w3svc"+"/S",WAIT);
end;
10、問題描述:怎麼樣在解除安裝後删除殘留檔案。
實作方法:大體操作同8。相關函數DeleteDir, DeleteFile,注意不要對INSTALLDIR檔案夾進行整個删除,以防安裝在根目錄時這樣的删除操作會造成删除整個盤符的所有資料。
11、問題描述:怎麼樣在安裝完成之後建立新檔案夾。
實作方法:大體操作同8。相關函數CreateDir。
12、問題描述:怎麼使安裝包隻一個exe檔案。
實作方法:在Bulid菜單中單擊Release Wizard,在Media Type對話框處選擇Network inage-在Release Configuartion對話框處選中Compress all files,在Windows Installer Location,Installscript Engine處選中Extract engine form Setup.exe,其餘按向導提示操作。
13、問題描述:安裝時提示有的檔案正在使用不能被覆寫,怎麼解決。
實作方法:單擊Installation Designer頁面,選中Application Data下的Files and Folders,在Destination computer’s folders處右擊選中show compenents,再選中不要被覆寫的任意一個components,右擊選擇Properties在彈出的對話框中勾上Never Overwrite複選框。或是直接點選Organazation處的components處選擇即可.
14、問題描述:怎麼讓使用者選擇安裝路徑。
實作方法:在project Assistant中installationinterview 處,将第三行的yes選上。
15、問題描述:怎麼修改對話框左側和上部的logo圖檔。
實作方法:在Project Assistant->Installation Interview:在右上角的More options處有個Use custom images on dialogs
16、問題描述:怎麼在初始化安裝過程時顯示公司的logo作為閃屏。
實作方法:在Installation Designer頁面的Behavior and Logic->Support Files->Splash Screen處的Language Independent單擊,在files清單處右鍵Insert files,選取一幅bmp圖檔添加就是。
17、問題描述:怎麼使用腳本在安裝過程中調用另一個MSI安裝程式。
實作方法:以下是函數片段
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("資料檔案出現錯誤",WA RNING);
endif;
18、問題描述:怎麼設定背景圖
實作方法:以下是函數片段
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;
1.拷貝到system32目錄下的檔案,在解除安裝時不能自行删除?
解:使用Deletefile在腳本中删除。
2.檔案不能安裝到x64系統的system32下?
解:x64系統system32下放的是64位的dll,而sysWOW64下放的反倒是32位的dll,我是用xcopyfile指令拷貝到64位系統的system32目錄下。
3.64位系統中system32下的dll删除不掉?
解:拷貝到x64的sys下的dll用deletefile怎麼也删除不掉,到最後實在沒法,請教高手,disable掉WOW64FSREDIRECTION才把dll給删掉。
4.怎麼把一個feature變灰,使其狀态不可選擇?
解:Installation Designer --> Organization -->Features中,選中要設定的feature,在右邊的屬性欄中,将Required選為Yes即可,安裝時可以看到該feature為選中狀态,且勾選框為灰色不可更改狀态,即此feature不允許使用者選擇,一定會安裝到目标機上。
5.FeatureSelectItem函數的作用範圍?
解:這個函數如果隻給跟feature的名字,則該feature下的所有component和子feature都會起作用。
6.FeatureSelectItem函數和setuptype的選擇沖突?
解:這兩個會以誰最後設定誰就起作用,會覆寫前面的設定。