2010-02-02 94 views
2

我已經創建了一個用.NET編寫的Windows服務的安裝項目。該服務取決於App.config中與生產環境(例如:生成環境中的路徑不同)中的幾個元素部署生產中的Windows服務 - .NET

我現在有MSI文件,可以在生產環境中運行以安裝該服務。但是,如何更改配置元素的值?

我不確定最佳實踐是什麼。

回答

1

這不是一個最佳實踐,而是我所做的,以防萬一您會發現它很有趣。

我製作了App.config的副本,比方說App.config.debug和App.config.production,然後我只需打開App.config和相應的其他文件,然後複製/粘貼到App.config中即可需要。是的,這並不理想,如果您有多個生產部署目標,它肯定會吸引人,但是我還沒有找到更多我喜歡的東西。如果你使用的是源代碼控制,你可能會選擇離開App.config,因爲按照我的約定,它只是其他文件的副本。

3

我有一段時間沒有使用WiX,但它是創建安裝程序的一個非常好的工具集。它具有比Visual Studio內置的msi功能更多的功能。特別是它支持您正在詢問的關於here的信息,我建議將您的安裝程序移至WiX並使用xmlconfig功能。

+0

那麼,在.NET中安裝項目不可能? :( – Nick 2010-02-02 14:57:10

+1

+1使用WiX創建安裝程序。有點學習曲線,但它非常好,可以做很多。 – JasCav 2010-02-11 22:09:38

0

沒有魔術代碼去做,沒有設計師的幫助。

我所做的是創建一個.NET安裝程序類,並用它來獲取訪問的安裝服務的app.config:

ConfigurationManager.OpenExeConfiguration(Context.Parameters["assemblypath"]); 

然後可以使用配置管理器進行更改並保存回。如果需要,您可以設計一個對話框並在您的自定義操作中從安裝程序運行它。

雖然玩得開心,但微星是EVIL。建議的意思是完全忽略關於卸載previousversions,detectifnewer等任何選項。他們不按照您期望的方式工作,升級您的服務會導致嚴重的痛苦。我目前正在經歷這個,我們的解決方案有12個服務來管理...

0

斯彭斯對MSI格式是邪惡的是正確的。當他們無法卸載我的服務時,讓自己的一些憤怒的客戶:))看看http://installer.codeeffects.com。我用它們來構建我的一項服務的安裝程序。到目前爲止,一切都看起來不錯。如果我的客戶在一個月左右的時間內對這個exe安裝程序沒有任何問題,我打算完全採用exe格式。