0

我有一个标准的 azure webrole,需要在云服务上安装一些 3rd 方软件。webrole 本身是非常基本的。第 3 方软件有一些先决条件,因此所有内容都包含在角色的内容中(总共 5 个 MSI 文件),并通过提升的启动任务进行安装。

该软件安装成功并且一切正常,但是将这些 MSI 作为 webrole 的内容包含在一个 80MB *.cspkg 文件中。

排除安装程序会产生 10MB 的包大小。所有 5 个 MSI 文件的总大小为 20.5MB。我不明白为什么包含 20MB 的安装程序会导致 80MB 的云服务包。

我认为打包过程可能会尝试压缩文件(无意中增加了有效负载)。我看到的正常吗?或者,当包含安装程序时,有什么方法可以减少生成的包?

4

2 回答 2

3

WebRoles 的包通常比工作角色的包大,因为您的角色内容包含两次!一次是approot文件夹,一次是文件sites\0\夹。

作为你的第二个想法 - 压缩。这是真实的。Azure 包只是一个普通的 zip 文件。您可以安全地重命名yourpackage.cspkgyourpackage.zip浏览内容。

但是,您将安装文件保存在包中的策略从根本上来说是无效的。我建议您将第 3 方安装程序放在 blob 存储中。然后先下载然后安装。对于下载内容,您可以使用各种技术。从PowerShellAzure Bootstrapper,可能还有更多。

将您的(所有和任何一个)第 3 方安装程序放在 Blob 存储中是为 Windows Azure 设计应用程序的推荐最佳实践。

至于为什么您的 Web 应用程序在 Azure 部署包中被复制两次的问题 - 它起源于Windows Azure Web 角色使用 IIS Hostable Web Core 而不是完整的 IIS的时代。并且可能仍然存在向后兼容性。

于 2013-10-18T11:15:51.070 回答
0

我发现如果将msi添加到 Azure 项目的 \bin 文件夹,它不会以这种方式复制多次:

https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-dotnet-install-dotnet

使用 Visual Studio 2017、Azure SDK 2.9、构建引擎版本 14.0.27530.0

于 2019-05-22T15:41:06.293 回答