2013-10-18 90 views
0

我有一個標準的azure webrole,需要在雲服務上安裝一些第三方軟件。捲筒紙本身非常基本。第三方軟件有一些先決條件,因此所有內容都包含在角色的內容中(總共5個MSI文件),並通過提升的啓動任務進行安裝。在Azure cloudservice中包含安裝程序bloats生成的包

軟件安裝成功,一切正常,但將這些MSI作爲捲動內容包含在80MB * .cspkg文件中。

排除安裝程序會產生10MB的封裝大小。所有5個MSI文件的總大小爲20.5MB。我不明白爲什麼包含20MB的安裝程序會產生80MB的雲服務包。

我認爲打包過程可能會嘗試壓縮文件(無意中增加有效負載)。我看到的是正常的嗎?或者當安裝程序包含在內時,是否有任何方法可以減少結果包?

回答

2

WebRoles的包通常比工作角色更大,因爲您的角色內容包含兩次!一旦是approot文件夾和一次在sites\0\文件夾中。

作爲你的第二個想法 - 壓縮。這是真的。 Azure包只是一個普通的zip文件。您可以安全地將yourpackage.cspkg重命名爲yourpackage.zip並瀏覽內容。

但是,將包中的安裝文件保留在包中的策略並不有效。我會建議您將第三方安裝程序放入Blob存儲中。然後先下載並安裝它。爲了下載內容,您可以使用各種技術。從PowerShellAzure Bootstrapper,可能還有更多。

在Blob存儲中安裝第三方安裝程序是所有和任何第三方安裝程序,這是推薦的用於設計Windows Azure應用程序的最佳實踐。

至於爲什麼您的Web應用程序在Azure部署包中被複制兩次的問題 - 它的根源在於Windows Azure Web Role was using IIS Hostable Web Core and not full IIS。並且可能仍然存在向後兼容性。

+0

謝謝,我知道* .cspkg文件被壓縮,但不能解釋看起來指數增長的情況。現在明顯,考慮到安裝程序包含兩次!將安裝程序存儲在blob存儲中將成爲我的下一步;這是其最佳做法,是一項巨大的獎勵。 – MoSlo