如何:使用 Visual Studio 创建的 deploy.cmd 文件安装部署包

当您在 Visual Studio 中创建一个 Web 部署包时,Visual Studio 会创建一个可用于安装该包的 .cmd 文件。 此 .cmd 文件包含可安装该包的实际 Web Deploy命令。 Web Deploy命令长而复杂,提供此 .cmd 文件是为了使您更易于理解命令行安装语法。

在启动此 .cmd 文件之前,必须确保已正确设置目标服务器。 如果目标是远程服务器,则必须确保您具有与远程服务器的适当连接,并具有远程服务器上的适当权限。 在启动此 .cmd 文件时,可将选项传递给此 .cmd 文件,而此文件会传递给 Web Deploy。

本主题说明用于调用此 .cmd 文件的语法。 它概述了调用此 .cmd 文件需满足的先决条件,还提供了指向其他资源的链接以便您获取更详细的安装信息。

选择安装方法

本节概述了用于本地或远程安装包的选项,以及针对每个选项的服务器配置过程。 针对远程部署的服务器配置过程提供了一个概述,旨在帮助您决定最适合您的方案的方法。 这些过程中的每个过程均链接到 Microsoft IIS TechNet 网站上的一个主题,可在其中查找详细说明。

若要部署到您的开发计算机(可以执行此操作以进行测试),您只需了解描述如何配置计算机以进行进程内本地部署的过程。

若要部署到第三方托管公司或由其他人管理的目标服务器,则托管公司或服务器管理员将指定需使用的方法。 在此情况下,可以跳过选项概述。 相反,您可以只了解该过程中指示针对要使用的方法的开发计算机要求的部分。

有下列安装方法可供使用:

  • 在本地服务器(即运行 .cmd 文件的服务器)上安装进程内程序包。

    您必须在本地服务器上具有管理权限。 通常,开发人员在部署到开发计算机以使用 IIS 进行本地测试时会使用此方法。

  • 通过使用 Web 管理服务 (WMSvc) 和 Web 部署处理程序在远程服务器上进行安装。

    第三方托管公司通常会针对此部署方法设置其服务器,以便客户端能自行部署应用程序。 但托管公司不必向客户端提供服务器上的管理权限。 当 IT 部门不希望向开发人员提供测试服务器或生产服务器上的管理权限时,经常会在企业环境中使用此方法。

    此方法需要 IIS 7。 在目标服务器上具有管理权限的人员可使用 IIS 管理器设置一个可供您用来进行部署的帐户。 可以在部署时使用该帐户的凭据。 此方法的一个优点是,当您部署时,您不必在目标服务器上具有管理权限。 一个缺点是,您通常无法执行需要管理权限的部署任务,如配置 IIS 设置。

  • 通过使用 Web 部署代理服务 (MsDepSvc) 在远程服务器上进行安装。 这也称作 Web 部署远程服务或远程代理。

    您必须在远程服务器上具有管理权限。 此方法的一个优点是,您在部署时可执行任何操作而不会受到限制,因为您是目标服务器上的管理员。 如果执行部署的人员不应是目标服务器的管理员,则您无法使用此方法。

  • 通过使用 Web Deploy tempAgent 提供程序设置在远程服务器上进行安装。

    与远程代理一样,您必须在目标服务器上具有管理权限。 与远程代理相比,此方法的优点是,不必将 Web Deploy安装在运行命令文件的计算机或目标计算机上。 可以从已安装 Web Deploy的服务器上的一个共享文件夹运行 Web Deploy。 因此,无需先在每个服务器上安装 Web Deploy即可部署到多个服务器。 此外,不必在发布 Web Deploy的新版本时更新每个服务器,也不必确保源计算机和目标计算机具有相同版本的 Web Deploy。 与远程代理相比,tempAgent 提供程序设置需要在目标服务器上进行一些附加安装。 但是,如果需要维护多个服务器,则通常会随时间产生少量维护工作。

有关如何选择适合您方案的选项的更多信息,请参见 Microsoft TechNet 网站上的“使用 Web 远程部署”

本节其余部分包含了一些过程,这些过程概述了如何为每个包安装方法配置服务器。

为本地部署配置服务器

下面的过程描述如何为进程内本地包安装设置服务器。

为本地进程内部署设置服务器

  • 请确保服务器已安装以下软件:

    • IIS 5.1、IIS 6 或 IIS 7。

    • .NET Framework 2.0 SP1 或更高版本(如果将安装的 Web 应用程序需要它)。

    • Web Deploy(它与用于创建包的版本相同)。

    有关如何安装 IIS 的信息,.NET Framework,并且 Web Deploy 通过使用 Web 平台安装程序,请参见 Microsoft Web 平台安装程序 2.0 在 Microsoft 网站上。

为 Web 管理服务配置服务器

下面的过程概述如何设置源计算机和目标计算机,以便您能使用 Web 管理服务 (WMSvc) 和 Web 部署处理程序来安装部署包。 有关更多信息和更详细的说明,请参见 Configuring the Web Deployment Handler 在 Microsoft TechNet 网站上或 Configure the Web Deployment Handler 在 IIS 上。 net 网站。

将服务器设置为使用 Web 管理服务进行部署

  1. 请确保运行 deploy.cmd 文件的计算机上已安装以下软件:

    • Web Deploy(它与用于创建包的版本相同)。
  2. 请确保目标服务器已安装以下软件:

    • IIS 7。

    • .NET Framework 2.0 SP1 或更高版本(如果将安装的 Web 应用程序需要它)。

    • Web Deploy(它与用于创建包的版本相同)。

    有关如何安装 IIS 的信息,.NET Framework,并且 Web Deploy 通过使用 Web 平台安装程序,请参见 Microsoft Web 平台安装程序 2.0 在 Microsoft 网站上。

  3. 在目标服务器上,按照以下步骤执行操作来配置 Web 管理服务 (WMSvc):

    1. 添加管理服务角色服务。

    2. 启用远程连接。

    3. 创建一个用于安装包的用户帐户。

    4. 为该用户帐户添加委托规则。

  4. 在目标计算机上,请确保将包安装到的 IIS 网站的应用程序池设置为该包所需的 .NET Framework 版本。 (如果该包指定的是 Web 应用程序名称而非网站名称,则该包将安装在默认网站中。)

为 Web 部署远程服务配置服务器

下面的过程概述如何设置源计算机和目标计算机,以便您能使用 Web 部署代理服务 (MSDepSvc) 以远程方式安装包。 有关更多信息,请参见“Web 部署远程服务” 在 Microsoft TechNet 网站上。

将服务器设置为使用 Web 部署代理服务进行部署

  1. 请确保运行 deploy.cmd 文件的服务器上已安装以下软件:

    • Web Deploy(它与用于创建包的版本相同)。
  2. 请确保目标服务器已安装以下软件:

    • IIS 5.1、IIS 6 或 IIS 7。

    • .NET Framework 2.0 SP1 或更高版本(如果将安装的 Web 应用程序需要它)。

    • Web Deploy(它与用于创建包的版本相同)。

    有关如何使用Web 平台安装程序安装 IIS 的信息,.NET Framework,并且 Web Deploy 通过使用 Web 平台安装程序,请参见 Microsoft Web 平台安装程序 2.0 在 Microsoft 网站上。

  3. 在目标服务器上,请确保已配置并启动 MSDepSvc 服务。

  4. 在目标服务器上,将防火墙配置为允许通过端口 80 的 HTTP 通信。

  5. 在目标计算机上,请确保将包安装到的 IIS 网站的应用程序池设置为该包所需的 .NET Framework 版本。 (如果该包指定的是 Web 应用程序名称而非网站名称,则该包将安装在默认网站中。)

为 tempAgent 提供程序设置配置服务器

下面的过程概述如何设置源计算机和目标计算机,以便使用 Web Deploy tempAgent 提供程序设置进行远程安装。 有关更多信息,请参见“Web 按需部署” 在 Microsoft TechNet 网站上。

将服务器设置为使用 Web 部署 tempAgent 提供程序设置进行部署

  1. 请确保源计算机已安装以下软件:

    • Web 部署代理服务 (MSDepSvc)

      备注

      默认情况下,不会将 Web 部署代理服务作为 Visual Studio 的一部分进行安装。若要安装它,请运行 Web 部署工具安装程序并选择“远程代理服务”。

  2. 请确保目标服务器已安装以下软件:

    • IIS 5.1、IIS 6 或 IIS 7。

    • .NET Framework 2.0 SP1 或更高版本(如果将安装的 Web 应用程序需要它)。

    有关如何安装 IIS 的信息,.NET Framework,并且通过使用 Web 平台安装程序,请参见在 Microsoft 网站上。

  3. 在目标服务器上,将防火墙配置为允许:

    • 通过端口 80 的 HTTP 通信。

    • WMI 通信。

  4. 在目标服务器上,请确保正在运行 Windows Management Instrumentation (WMI) 服务。

  5. 在目标服务器上,请确保有一个可将临时 Web Deploy程序文件复制到其中的共享文件夹。

  6. 在目标服务器上,请确保尚未安装 Web 部署代理服务 (MSDepSvc)。 如果已安装该服务,则它会影响部署过程。

  7. 请确保执行部署命令文件时使用的凭据来自在远程服务器上作为本地管理员的用户帐户。

  8. 在目标计算机上,请确保将包安装到的 IIS 网站的应用程序池设置为该包所需的 .NET Framework 版本。 (如果该包指定的是 Web 应用程序名称而非网站名称,则该包将安装在默认网站中。)

执行命令文件

建议您先在试用模式下运行 Web Deploy以验证部署是否按预期进行。 这样,如果发生任何异常情况,您便能在执行实际部署之前做出相应的更改。 下面的过程描述如何为一些典型方案执行命令文件。

使用命令文件进行部署

  1. 请确保此包 (ProjectName.zip),ProjectName .SetParameters.xml 文件,和 ProjectName .deploy.cmd 文件 都在相同的文件夹里。

    如果使用的是 tempAgent 提供程序设置,则此文件夹可位于远程计算机上。 否则,此文件夹必须位于您打算在其上运行命令文件的计算机上。

  2. 若要自定义 SetParameters.xml 文件中包含的任何参数的值,请编辑该文件以更改这些值。

    例如,您可以使用同一个包,以便先安装到一个临时服务器,然后在安装到生产服务器。 如果是这样,所有这些安装的数据库连接字符串值可能必须各不相同。

  3. 执行命令文件,指定 t 标志(试用模式)和适合您方案的可选标志。

    以下是一些典型方案以及适合这些方案的可选标志。

    备注

    若要查看支持的可选标志的列表,请在命令提示符下输入 .cmd 文件名,其后不跟任何标志。如果打开此 .cmd 文件,您可能会看到其他标志。帮助文本中未显示的任何标志和本主题未描述的任何标志都不受支持,不应使用这些标志。

    备注

    如果将未包含在活动代码页中的字符用于目标服务器名称、用户名或密码,则此 .cmd 文件可能会失败。

    • 对于 Web 管理服务 (WMSvc),可使用以下语法来包括 m 标志并将服务 URL 指定为 MSDeploy.axd:

      ProjectName.deploy.cmd /t /m:https://DestinationServerName:8172/MSDeploy.axd

      若要指定用户名和密码,请包含 u 和 p 标志。 添加 a 标志可指定基本身份验证。 下面的示例演示如何使用这些标志。

      ProjectName.deploy.cmd /t /m:DestinationServerName /u:User /p:Password /a:basic

      若要允许不受信任的证书,请添加 -AllowUntrusted=True,如下面的示例所示:

      ProjectName.deploy.cmd /t /m:DestinationServerName /u:User /p:Password /a:basic -AllowUntrusted=True

    • 对于 Web 部署代理服务 (MSDepSvc),可使用以下语法来包括 m 标志并将目标服务器名称或服务 URL 指定为 MSDeployAgentService:

      ProjectName.deploy.cmd /t /m:DestinationServerName

      ProjectName.deploy.cmd /t /m:http://DestinationServerName/MSDeployAgentService

      若要指定用户名和密码,请包含 u 和 p 标志。 (在对 WMSvc 执行此操作时,不添加 a 标志。)

    • 对于 tempAgent 提供程序设置,可使用以下语法来包括 g 标志和 m 标志以指定计算机名称:

      ProjectName.deploy.cmd /t /m:DestinationServerName /g:true

      若要指定用户名和密码,请包含 u 和 p 标志。 (在对 WMSvc 执行此操作时,不添加 a 标志。)

    • 若要跳过数据库提供程序,可使用以下语法来包括 SQL Server 提供程序的 Web Deploy skip 命令:

      ProjectName.deploy.cmd /t "-skip:objectName=dbFullSql"

      您可以在部署到 Web 场时执行此操作,这样您只需部署一次数据库。

    • 若要跳过正在更新的 Web.config,请包含文件的 Web Deploy skip 命令。 可以执行此操作以避免覆盖在目标服务器上手动配置的 Web.config 文件设置。

      下面的示例演示如何跳过应用程序中所有的 Web.config 文件。

      ProjectName.deploy.cmd /t "-skip:objectName= filePath,absolutePath=\\ApplicationFolder\\[\w\s]+web\.config$"

      下面的示例演示如何只跳过应用程序的 Web.config 文件。

      ProjectName.deploy.cmd /t "-skip:objectName= filePath,absolutePath=\\ApplicationFolder\\web\.config$"

  4. 检查由试用模式部署生成的日志,进行所需的任何更改,然后使用 t 标志重新运行命令文件。

  5. 重复上一个步骤,直到该日志准确反映所需的部署更改。

  6. 通过将 y 标志(“是”或更新模式)而非 t 标志与所选的可选标志一起使用来执行命令文件。

    Web Deploy执行部署并显示它执行的操作的日志。

上一过程提供了典型方案的语法示例,并演示了如何使用 .cmd 文件中定义的标志。 对于其他方案,可以将任何 Web Deploy命令传递给 Web Deploy。 您可以随意使用 .cmd 文件中定义的标志。 若要指定一个包含等号 (=) 的命令,则必须用引号将标志引起来,如上一个示例所示。

也可通过设置 __MsDeployAdditionalFlags 环境变量来指定 Web Deploy命令。

有关可使用的其他 Web Deploy 命令的更多信息,请参见“Web 部署命令行参考”

请参见

概念

用于 Visual Studio 和 ASP.NET 的 Web 部署内容映射