osql.WaitForExit();
EventLog.WriteEntry(
"DatabaseInstaller","Database created..");
osql.Dispose();
return true;
ProcessStartInfo 可用于对您将要启动的进程(OSQL)进行更好的控制。它为您提供了一种用于设置参数、控制窗口样式等的简便方法。然后,它可以与清单 4 中所示的进程 结合使用。该进程启动之后,您可以等待它退出,也可以使用 WaitForExit 方法来控制退出时间。另外,您在构造函数中使用初始化的 XmlDocument 来选择一个预定义的节点,您在其中存储了数据库脚本文件的名称。然后,您将参数构建的过程委托给一个特定的方法 (GetCommonProcessArguments),同时传递了该脚本文件的名称以及要从中运行的数据库上下文的名称。在数据库创建过程中,您可以将 master 作为数据库传递,原因是您的应用程序数据库正处于创建过程中。下一行代码(方法 PopulateDatabaseNamePlaceHolder)使用用户提供的实际名称来替换数据库名称的占位符。
请注意,无论何时,只要存在 try、catch 代码块或者发生了自定义异常,就会引发一个 InstallException。它的类型为 SystemException,该安装程序甚至会在 Commit、Rollback 和 Uninstall 阶段引发这种类型的异常。较好的做法是使用 EventLog 或自定义安装日志文件来跟踪并记录该错误。您可以使用 Context 属性来创建自定义日志。
您已经为数据库创建成功自定义了安装!
使用相似的方式,您可以重写 Installer 类的 Uninstall 方法,然后复制附带示例中的代码。此时您会看到,当用户确认时,删除数据库的任务就委托给 DatabaseInstaller 类。在接下来的步骤中,您将创建一个安装项目,并使用它进行部署。
返回页首
创建安装项目并进行安装
最后,您要准备创建安装项目了。表 4 说明了 VS.NET 提供的各种部署方式(另请参见图 2)。
文章来源于领测软件测试网 https://www.ltesting.net/