Alternatively, you can use a command-shell to
deploy the package onto a remote server.
To do this, open a command window, and
navigate to the location of the deployment package .zip file on disk. In
addition to the .zip package file, you’ll find that VS also added a few
additional files to the directory:
The ProjectName.deploy.cmd file provides a pre-built script
that you can use to deploy the package onto a remote server.
The ProjectName.SetParameters.xml file contains some
deployment parameters that you can set (like site-name, connection-string
locations, etc). You can use Visual Studio’s project properties pane to
set the default values for the parameters that are generated into this
file. Admins can then optionally edit/change them later if they want
(avoiding the need to explicitly specify them as command-line parameters). Make
sure to open/view this file to see what the current defaults in it are.
In particular, check to make sure that the site name/application name is where
you want the application deployed.
To install the package on a remote Web Deploy server, run
the deployment script with the following parameters:
ProjectName.deploy.cmd /y /M:https://WebDeployUrl:8172/MsDeploy.axd
/u:username /p:password –allowUntrusted /A:basic
A couple of quick notes on the various parameters above:
/y
|
Indicates that Web Deploy should deploy the application
onto the remote server.
Alternatively instead of /y you can specify /t to perform a trial install
that will simulate deployment and help you verify everything is ready
(without actually provisioning it).
|
/M: parameter
|
Specifies the Web Deploy publishing endpoint of the server
you want to deploy the package onto. It should match whatever
publishing service URL you setup (and will be the same as the “Service URL”
parameter in the Publish Web dialog). It should be an “https” based URL if
you are publishing to a Windows Server 2008 or 2008 R2 server.
|
-allowUntrusted
|
Required if the SSL certificate on the remote Web Deploy
server is unsigned (which it isn’t by default)
|
/A:basic
|
Required if the remote server is not using Windows
Authentication to identify the user (it instead specifies that you will use
http basic auth over SSL)
|
When you run the command it will deploy the package to the
remote server, perform all of the deployment steps (including things like
provisioning databases, setting file ACLs, etc), and output the status back to
the command-prompt as it makes progress.
Automating Deployment from a Build Server or Continuous
Integration Server
In addition to having a developer/administrator kick off
deployment explicitly, you can alternatively automate it to happen as part of a
continuous integration process or as part of a build server. The commands
necessary to automate creating a Web Deploy .zip package are available as
MSBuild tasks. You can use them to either create a deployment package as
part of the build process – or optionally have an automated build also deploy
the app as well.
I’ll be covering how to enable these automated build
scenarios in a future blog post.