2013-07-10 16 views
2

這可能會被標記爲「不是真正的問題」,但我對NuGet在WiX部署中的適用位置感到困惑(您可以通過結尾處的問題來猜測.. 。)關於WiX,TeamCity和NuGet集成的指導

現狀

我們的TeamCity構建創建WiX的燒傷(3.6)的安裝對於那些FTP'd到我們的服務器我們的WinForms產品。這些應用程序會調用我們的Web服務來確定是否有更高版本的應用程序,如果有的話,請將其下載到後臺,以便在下次應用程序啓動時就可以安裝它。

新要求

我們有一個納入我們的C#通過NuGet包解決方案的一些新功能。由於軟件包中的特定功能,90%的客戶端安裝並不需要該軟件包,因此推測可能需要它自己的msi。有問題的NuGet軟件包不屬於我們的產品,並駐留在我們的某個供應商服務器上,需要進行身份驗證才能獲得。

我莫名其妙新的NuGet的世界,不能讓我的頭一輪在那裏與維克斯適合在...

  • 難道我莫名其妙包括NuGet包作爲CI構建的一部分並將其包含在WiX安裝程序中,以免它從供應商網站下載(這可以解決認證問題)?

  • 我是否會創建一個新的MSI,它包含Nuget包中的組件,但實際上並未真正使用NuGet進行最終客戶端部署? (這將解決許多問題,但每次更新NuGet軟件包時都可能需要工作,並且感覺不對!)

  • 我是否創建無頭MSI軟件包,該軟件包作爲刻錄安裝的一部分單獨下載?客戶將無法輸入所需的身份驗證,因爲他們不會擁有它。

  • 如果在安裝過程中安裝了NuGet軟件包,並且始終獲得最新的可用性,那麼假如我們的安裝可能會在以後由於供應商更新了NuGet軟件包而導致安裝失敗。如果NuGet包在客戶端上下載,是否有解決方法?

非常感謝,困惑!

回答

3

處理第三方軟件包最直接的方法是爲最終用戶使用其可再分發安裝程序(例如,使用Burn)。據推測,他們已經處理了目標平臺所需的所有問題,將來會繼續這樣做,甚至可能會提供更新機制。對於微軟的許多組件來說,這絕對是正確的,例如.NET框架和VC運行時。

Nuget適用於開發人員。它下載依賴關係,將它們以及可能的源代碼,配置元素等添加到項目中。因此,通常不會將庫分發給最終用戶。如果庫沒有最終用戶自己的安裝程序,則可以(如果許可證允許)將其包含在產品設置中,或者按照您的建議單獨安裝。

一如既往,底層就是您的應用程序將如何處理不同版本的庫以及它如何在運行時找到它們。這可能非常簡單,但本身就是一個完整的其他主題。您必須在安裝設計和構建過程中考慮這一點。

+0

謝謝你的湯姆。它填補了是否在客戶端使用nuget的缺失部分。看起來我並不是唯一的供應商,因爲供應商現在要求我們在客戶端上使用他們的nuget軟件包... –