在Azure上构建MSI

时间:2013-05-14 13:10:31

标签: .net azure windows-installer azure-web-sites

我有一个web项目,我在windows azure上主持。现在我正在尝试添加客户端exe来监视服务器上的内容(类似Windows Tray Notifier for TeamCity) 链接到此安装程序将在我的网站上。

我使用标准的windows azure网站。我使用git repository部署我的项目。

所以问题是:我可以在Azure上构建标准安装项目吗?如果没有,我可以用什么来建立这样的项目?我是否将安装程序项目类型更改为WiX或类似的内容?

1 个答案:

答案 0 :(得分:0)

在Azure网站的上下文中,网站项目不是由MSBuild编译成可执行的.Net代码,而是由ASP.NET和IIS直接编译。

ASP.NET使用所谓的BuildProviders将不同类型的文件构建到单个程序集中,为每个网站文件夹生成一个程序集。

由于ASP.NET Compilation不是完整的MSBuild编译,因此您无法编译任何类型的项目或任何其他将使用MSBuild进行编译的项目。

理论上(但是,唉,理论上只有!)你可以实现自己的类派生自BuildProvider类,它将生成源代码并在web.config中为ASP.NET编译引用它。但即使在这种情况下,您也无法完全控制编译的目标。相反,您的提供程序生成的源代码将在动态链接库中编译,并且没有办法(至少在我看来)将安装程序作为编译器输出。

因此,我建议您在解决方案中添加自定义安装程序项目,在本地构建安装程序(使用标准VS安装项目或WiX,如果您愿意),并在GIT部署之前将新构建的安装程序复制到部署文件夹中以及其他文件。