在InstallShield中調(diào)用批處理文件其實是安裝打包中很常用的一種手段,通過批處理啟動服務(wù),進(jìn)行數(shù)據(jù)庫初始配置等等。
在實際操作中,針對不同工程類型,對批處理的調(diào)用還是有很多疑惑困擾著大家,撰寫此文希望能幫助到那些被困擾的打包開發(fā)人員。
這里假設(shè)我們的需求是要啟動安裝路徑下的批處理文件Sample.bat。
InstallScript工程:
這種類型調(diào)用批處理相對簡單,通過LaunchAppAndWait函數(shù)進(jìn)行調(diào)用,下面是簡單示例:
szProgram = TARGETDIR ^ "sample.bat";
szParam = "";
LaunchAppAndWait(szProgram, szParam, LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN);
Basic MSI工程:
MSI工程中對于批處理的調(diào)用較復(fù)雜,我們逐步說明如何操作:
- 通過Custom Action Wizard添加一個CA,啟動向?qū)?/li>
- 在Basic Information界面中為CA命名
- 在Action Type界面中指定Type為Launch an Executable;Location選擇Stored in the Directory table
- 在Action Parameters界面中,Source選擇INSTALLDIR,Target中輸入內(nèi)容:"[SystemFolder]cmd.exe" /c "[INSTALLDIR]Sample.bat"
- Additional Options界面默認(rèn)
- 在Respond Options界面中,In-Script Execution選擇Deferred Execution
- 在Insert into Sequence界面中,將CA插入到InstallFinalize之前,并設(shè)定Install Execute Condition為:Not Installed
- 其余默認(rèn)