可以创建一个脚本,用于在部署应用程序时执行作,然后在部署过程中定义其何时运行。 可以在同一脚本中包含安装和清理代码,使用环境变量来分隔代码。 还可以将命令行参数传递到脚本中。
谨慎
应始终以无提示模式编写适用于生产系统的脚本。 这是因为等待用户输入的脚本将导致 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 命令:后处理脚本