HOW TO:使用 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 (用來建立套件的相同版本)。

    如需如何使用 Web Platform Installer 安裝 IIS、.NET Framework 和 Web Deploy 的詳細資訊,請參閱 Microsoft 網站上的 Microsoft Web Platform Installer 2.0

針對 Web 管理服務設定伺服器

下列程序提供如何設定來源和目的電腦的概觀,好讓您可以使用 Web 管理服務 (WMSvc) 和 Web 部署處理常式來安裝部署套件。 如需詳細資訊和詳細指示,請參閱 Microsoft TechNet 網站上的設定 Web 部署處理常式或 IIS 網站上的設定 Web 部署處理常式。 。

若要設定伺服器使用 Web 管理服務進行部署

  1. 請確定您執行 deploy.cmd 檔案的電腦已安裝下列軟體:

    • Web Deploy (用來建立套件的相同版本)。
  2. 請確定目的伺服器已安裝下列軟體:

    • IIS 7。

    • .NET Framework 2.0 SP1 或更新版本 (如果您所安裝的 Web 應用程式需要的話)。

    • Web Deploy (用來建立套件的相同版本)。

    如需如何使用 Web Platform Installer 安裝 IIS、.NET Framework 和 Web Deploy 的詳細資訊,請參閱 Microsoft 網站上的 Microsoft Web Platform Installer 2.0

  3. 在目的伺服器上,遵循以下步驟來設定 Web 管理服務 (WMSvc):

    1. 加入「管理服務」角色服務。

    2. 啟用遠端連接。

    3. 建立用於套件安裝的使用者帳戶。

    4. 為使用者帳戶加入委派角色。

  4. 在目的電腦上,確定您安裝套件之 IIS 網站的應用程式集區已設定為套件所需的 .NET Framework 版本 (如果此套件指定了 Web 應用程式名稱,但沒有指定網站名稱,此套件就會安裝在預設網站中)。

針對 Web 部署遠端服務設定伺服器

下列程序提供如何設定來源和目的電腦的概觀,好讓您可以使用 Web 部署代理程式服務 (MSDepSvc) 在遠端安裝套件。 如需詳細資訊,請參閱 Microsoft TechNet 網站上的 Web 部署遠端服務

若要設定伺服器使用 Web 部署代理程式服務進行部署

  1. 請確定您執行 deploy.cmd 檔案的伺服器已安裝下列軟體:

    • Web Deploy (用來建立套件的相同版本)。
  2. 請確定目的伺服器已安裝下列軟體:

    • IIS 5.1、IIS 6 或 IIS 7。

    • .NET Framework 2.0 SP1 或更新版本 (如果您所安裝的 Web 應用程式需要的話)。

    • Web Deploy (用來建立套件的相同版本)。

    如需如何使用 Web Platform Installer 安裝 IIS、.NET Framework 和 Web Deploy 的詳細資訊,請參閱 Microsoft 網站上的 Microsoft Web Platform Installer 2.0

  3. 在目的伺服器上,確定 MSDepSvc 服務已設定及啟動。

  4. 在目的伺服器上,設定防火牆允許通過連接埠 80 的 HTTP 流量。

  5. 在目的電腦上,確定您安裝套件之 IIS 網站的應用程式集區已設定為套件所需的 .NET Framework 版本 (如果此套件指定了 Web 應用程式名稱,但沒有指定網站名稱,此套件就會安裝在預設網站中)。

針對 tempAgent 提供者設定設定伺服器

下列程序提供如何設定來源和目的電腦,以便利用 Web Deploy tempAgent 提供者設定進行遠端安裝的概觀。 如需詳細資訊,請參閱 Microsoft TechNet 網站上的視需要的 Web Deploy

若要設定伺服器使用 Web 部署 tempAgent 提供者設定進行部署

  1. 請確定來源電腦已安裝下列軟體:

    • Web 部署代理程式服務 (MSDepSvc)

      注意事項注意事項

      根據預設,Web 部署代理程式服務不會安裝為 Visual Studio 的一部分。若要安裝此服務,請執行 Web 部署工具安裝程式,並選取遠端代理程式服務。

  2. 請確定目的伺服器已安裝下列軟體:

    • IIS 5.1、IIS 6 或 IIS 7。

    • .NET Framework 2.0 SP1 或更新版本 (如果您所安裝的 Web 應用程式需要的話)。

    如需如何使用 Web Platform Installer 安裝 IIS 和 .NET Framework 的詳細資訊,請參閱 Microsoft 網站上的 Microsoft Web Platform Installer 2.0

  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 旗標 ("yes" 或更新模式) 執行命令檔,而不要使用 t 旗標,並使用您所選取的選擇性旗標。

    Web Deploy 會執行部署,並顯示其所執行之動作的記錄。

上述程序針對典型案例提供語法範例,並示範如何使用 .cmd 檔案中所定義的旗標。 在其他情況下,您可以傳遞任何 Web Deploy 命令給 Web Deploy。 您不受限於 .cmd 檔案中所定義的旗標。 如果您指定包含等號 (=) 的命令,此旗標必須括在引號中,如上述範例所示。

您也可以設定 __MsDeployAdditionalFlags 環境變數來指定 Web Deploy 命令。

如需您可以使用之其他 Web Deploy 命令的詳細資訊,請參閱 Web Deploy 命令列參考

請參閱

概念

Visual Studio 及 ASP.NET 的 Web 部署內容對應