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)。
文章來源于領測軟件測試網 http://www.kjueaiud.com/