ASP.NET MVC以分发包的forms部署

我有一个ASP.NET MVC应用程序。 我需要一种方法来部署它。

我不需要将它复制到我自己的Web服务器上。 它并不是一个可以在互联网上找到的网站。 没有。

相反, 我需要我的用户能够在自己的服务器上安装它 。 从互联网上可以看到或不可见。

也就是说,我需要创建一个MSI包(或EXE自解压安装程序,或其他任何东西),我的客户只需双击它,MVC应用程序应该安装在他们的本地IIS上。

当然,我可以简单地编写一些代码来提取文件,将它们复制到本地硬盘驱动器,然后在IIS中创建一个网站或虚拟目录,等等等等。 但有些东西告诉我应该有一个更简单的方法。 比如说,WiX扩展已经做到了。 或者其他的东西。

注意:应用程序非常简单。 不需要数据库,特权,SMTP服务器配置……或者,实际上,任何类型的配置都是如此。 只需复制文件并创建IIS应用程序。

这可能需要一些编码,但(如果您需要一个非常漂亮的UI),Visual Studio构建部署包中有一个function。

构建delpoyment包

它将为您构建一个包,您的客户可以运行该包以在IIS中创建所有必需的东西,因此也会应用IIS设置。 Scott Hanselman有一系列关于它的post。 您可以从包/发布设置更改默认设置。

包/发布设置 。 要部署软件包,必须具有msdeploy.exe 。 您可以发送压缩文件夹,当客户运行.cmd文件时,它们将立即启动并运行。 但是,如果你想在包装周围放置漂亮的弓,你可以从C#应用程序运行它将需要一些编码,但我确信不会超过15分钟。

 Usage: -------------------------- {0} [/T|/Y] [/M:ComputerName] [/U:UserName] [/P:Password] [/G:UseTempAgent] [Additional msdeploy.exe flags ...] 

你基本上要做的就是

 System.Diagnostics.Process proc = new System.Diagnostics.Process(); const string filename = @"/*some file location*/"; proc.StartInfo.FileName = filename; proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; proc.StartInfo.CreateNoWindow = true; proc.Start(); proc.WaitForExit(); 

每当我遇到复杂安装的需要时,我总是转向WiX。

您可以使用WiX安装基于MVC的网站,然后使用IIS扩展( http://wix.sourceforge.net/manual-wix3/iis_xsd_index.htm )创建一个新的应用程序池和站点,以便在其下运行。

我可以想到的一些问题,你可能想深入研究一下:

  • 如果用户没有安装IIS怎么办?
  • 如果他们没有安装MVC Tools软件包(也就是捆绑或不捆绑)怎么办?

除了这些点,我认为WiX + IISExtension将轻松覆盖您的基本,复制文件和创建网站要求。

那么web平台安装程序呢? 通过为您的产品使用Web平台安装程序可能有所帮助的一些链接:

  • Web PI可扩展性:自定义源 – 安装自定义产品
  • Web PI API:从自定义源安装产品
  • Web PI可扩展性:自定义源 – 安装自定义应用程序

您可以使用Visual Studio中的特定于Web的安装项目,但我相信各种部署项目类型在某些时候都会停止使用,以支持WiX。

我对WiX知之甚少,但我肯定会先看看它是否能满足您的需求。 我想我最终会得到一个WiX软件包,它将文件解压缩到用户要求的位置,然后执行PowerShell脚本(部署在软件包中)以根据需要配置IIS等。