我已經創建了一個用.NET編寫的Windows服務的安裝項目。該服務取決於App.config
中與生產環境(例如:生成環境中的路徑不同)中的幾個元素部署生產中的Windows服務 - .NET
我現在有MSI文件,可以在生產環境中運行以安裝該服務。但是,如何更改配置元素的值?
我不確定最佳實踐是什麼。
我已經創建了一個用.NET編寫的Windows服務的安裝項目。該服務取決於App.config
中與生產環境(例如:生成環境中的路徑不同)中的幾個元素部署生產中的Windows服務 - .NET
我現在有MSI文件,可以在生產環境中運行以安裝該服務。但是,如何更改配置元素的值?
我不確定最佳實踐是什麼。
這不是一個最佳實踐,而是我所做的,以防萬一您會發現它很有趣。
我製作了App.config的副本,比方說App.config.debug和App.config.production,然後我只需打開App.config和相應的其他文件,然後複製/粘貼到App.config中即可需要。是的,這並不理想,如果您有多個生產部署目標,它肯定會吸引人,但是我還沒有找到更多我喜歡的東西。如果你使用的是源代碼控制,你可能會選擇離開App.config,因爲按照我的約定,它只是其他文件的副本。
沒有魔術代碼去做,沒有設計師的幫助。
我所做的是創建一個.NET安裝程序類,並用它來獲取訪問的安裝服務的app.config:
ConfigurationManager.OpenExeConfiguration(Context.Parameters["assemblypath"]);
然後可以使用配置管理器進行更改並保存回。如果需要,您可以設計一個對話框並在您的自定義操作中從安裝程序運行它。
雖然玩得開心,但微星是EVIL。建議的意思是完全忽略關於卸載previousversions,detectifnewer等任何選項。他們不按照您期望的方式工作,升級您的服務會導致嚴重的痛苦。我目前正在經歷這個,我們的解決方案有12個服務來管理...
斯彭斯對MSI格式是邪惡的是正確的。當他們無法卸載我的服務時,讓自己的一些憤怒的客戶:))看看http://installer.codeeffects.com。我用它們來構建我的一項服務的安裝程序。到目前爲止,一切都看起來不錯。如果我的客戶在一個月左右的時間內對這個exe安裝程序沒有任何問題,我打算完全採用exe格式。
那麼,在.NET中安裝項目不可能? :( – Nick 2010-02-02 14:57:10
+1使用WiX創建安裝程序。有點學習曲線,但它非常好,可以做很多。 – JasCav 2010-02-11 22:09:38