catch(Exception generic)
{
EventLog.WriteEntry("SetupDB",generic.Message,
EventLogEntryType.Error) ;
throw new InstallException(generic.Message);
}
}
在清單 2 中,請注意方法的簽名。它有一個名為 stateSaver 的 IDictionary 參數。它會在 Install、Commit、Rollback 等過程中保持該安裝程序所需的信息。最初,此值為 null。只有當您調用 base.Install(StateSaver) 時,IDictionary 對象才會反映過程的當前狀態。因此每個重寫方法都需要調用基類,以便初始化 stateSaver。如果您在各個步驟中執行多個自定義安裝程序,那么這就變得非常重要。接下來的步驟是獲取通過 Custom Actions 屬性 CustomActionData 傳遞的參數。
StringDictionary parameters = Context.Parameters;
這個 Context 屬性非常重要,因為它可返回 System.Configuration.Install.InstallContext。甚至在執行 Install 方法之前,該安裝程序就已經設置了安裝程序的 Context 屬性。表 2 指出了 InstallContext 的一些重要成員。
表 2. InstallContext 的一些重要成員。
成員 說明
LogMessage(string)
記錄指定記錄器中的任何消息。該日志的路徑是在安裝程序的構造函數中指定的。日志文件的名稱/值參數可以傳遞到自定義安裝程序中。
Parameters
返回包含名稱/值對的 StringDictionary。這是一個重要屬性,它將返回 CustomActionData 中的命令行名稱/值對。
文章來源于領測軟件測試網 http://www.kjueaiud.com/