2009-07-01 146 views
13

目的:爲了支持Windows服務,可能有一臺機器上的多個實例,使用安裝項目來創建一個能夠MSI:指定Windows服務名稱與安裝項目安裝

  1. 接收用戶輸入對於服務名稱
  2. 安裝服務
  3. 序列化服務名稱從1

我最初的願望就是設置服務(以便正確的名稱可以在日誌和卸載使用)在App.config中命名(然後在實例化ServiceInstaller時在卸載時檢索它。這似乎太天真了,因爲它在安裝過程中無法訪問。

如果MyInstaller擴展了安裝程序,它可以調用base.Install();但是,我嘗試寫入app.config(在MyInstaller.Install()內和base.Install()之後)是不起作用的。

因此,雖然可以使用自定義服務名稱來安裝該服務,但該名稱不會被序列化,並且安裝程序在卸載時最爲不悅。

應該怎麼做?

回答

9

您可以爲安裝程序操作指定參數,因此收集服務名稱並將其作爲參數傳遞給操作。然後,在Installer課程中,您可以覆蓋Install()並通過base.Context.Parameters訪問它。這就是你如何獲得價值。獲得該值並使用該值後,將其放入stateSaverIDictionary參數中,以便如果覆蓋Uninstall(),則可以找出安裝時使用的值。

+0

隱藏在普通的網站!謝謝尼爾。 – 2009-07-20 05:49:18