您可以建立文稿,以在部署應用程式時執行動作,然後在部署程式期間定義其執行時機。 您可以使用環境變數來分隔程式代碼,同時在相同的腳本中包含安裝和清除程序代碼。 您也可以將命令行自變數傳遞至腳本。
謹慎
您應該一律以靜默模式撰寫適用於生產系統的腳本。 這是因為等候使用者輸入的腳本會導致 BizTalk 資料庫鎖定且無法存取,直到收到輸入為止。
指定文稿在部署期間執行時機
您可以藉由將腳本新增為 System.BizTalk:PreProcessingScript(前置處理腳本)或 System.BizTalk:PostProcessingScript(後續處理腳本)來指定腳本何時執行。
前置和後置處理腳本會執行,如下所示:
前置處理文本會在匯入或安裝程序開始時執行。
後續處理文本會在匯入或安裝程序結束時執行。
卸載期間,所有腳本都會以安裝期間執行的相反順序執行。 因此,後續處理腳本會在卸載的開頭執行,並在卸載結束時執行前置處理腳本。
如果安裝失敗,腳本會以反向順序呼叫,並採取適當的回復動作。
叫用之後,前置或後置處理腳本會藉由檢查環境變數BTAD_ChangeRequestAction、BTAD_InstallMode和BTAD_HostClass,來判斷執行哪個部署狀態(安裝、匯入、刪除、卸載、匯入、匯入回復或安裝復原),如 環境變數指出部署狀態中所述。 如需變數的參考資訊,請參閱 前置和後續處理腳本環境變數。
如需將腳本新增至應用程式的指示,請參閱 如何將前置或後置處理腳本新增至應用程式。
備註
如果您想要在文稿中包含命令行自變數,如本主題稍後所述,您必須使用 AddResource 命令來新增腳本。
支援的腳本副檔名
支援下列腳本擴展名:.com、.exe、.bat、.cmd、.vbs、.vbe、.js、.jse、.wsf 和 .wsh。 此延伸模組集定義於PATHEXT環境變數中。
記錄錯誤
最佳做法是,您應該將每個腳本設定為將錯誤記錄至檔案。 這是因為 Windows Installer 不會記錄腳本中產生的錯誤。 您應該在執行文稿之後檢查這些記錄,找出需要解決的任何錯誤。
為了協助您判斷錯誤發生的時間,您可以在記錄檔中包含日期和時間。
使用下列程式代碼來指定記錄檔,然後將錯誤記錄到其中。
Set LogFile=<full path of log file>
…
echo %DATE% %TIME% <text> >> %LogFile%
在下列範例中,當未定義公鑰令牌時,會在指定的記錄檔中建立一個項目。 在記錄檔中,日期和時間是以與文字相同的行撰寫,「公鑰應該在腳本中設定」。
set LogFile=C:\ScriptLog.txt
set PublicKeyToken=e5fd0ea4ecd37420
if not defined PublicKeyToken (
echo %DATE% %TIME% Public key should be set in script >> %LogFile%
您也可以將這一行 exit /b 1 新增至腳本,以產生 Windows Installer 的錯誤碼,這會導致它回復。
在下列範例中,如果未定義公鑰令牌,腳本會將錯誤傳回 Windows Installer,而且安裝程式會回復。
set LogFile=C:\ScriptLog.txt
set PublicKeyToken=e5fd0ea4ecd37420
if not defined PublicKeyToken (
echo %DATE% %TIME% Public key should be set in script >> %LogFile%
exit /b 1
在相同的腳本中包含安裝和清除程序代碼
因為腳本在安裝和卸載期間會以相反的順序執行,因此您可以在條件語句內,在相同的腳本中包含安裝和清除程序代碼。 例如,您可以將安裝程式代碼放在檢查安裝模式的條件語句內,如下所示:
%BTAD_ChangeRequestAction%=Update AND %BTAD_InstallMode%=Install
您可以在檢查安裝模式的條件語句中限定清除程式代碼,如下所示:
%BTAD_ChangeRequestAction%=Delete AND %BTAD_InstallMode%=Uninstall
傳遞命令列參數
當您使用 BTSTask AddResource 命令將腳本新增至應用程式時,您可以指定下列參數,將命令行自變數傳遞至腳本。 當您這樣做時,參數會在叫用腳本時傳遞至腳本。
/Property:Args=“argument list”
備註
如果您在和 應用程式中有多個前置或後置處理腳本,則它們不會以特定順序執行。
這很重要
您不應該在腳本中使用 BTSTask 命令,尤其是匯入期間執行的命令,因為腳本不會登記在與匯入相同的交易中。
如需使用 AddResource 命令將腳本新增至應用程式的指示,請參閱 AddResource 命令:前置處理腳本。 另請參閱 AddResource 命令:後續處理腳本