What is the best way to rollout web applications? - asp.net

I'm trying to create a standard way of rolling out web applications for our company. Currently we do it with zip files, vbscript/javascript, and manual some steps.
For thick client installs we generate MSI installers using Wise/Wix. We don't create installers currently for websites as in general they are just xcopy deploy. However we have some config files that need to be changed, verify that certain handlers are registered in IIS... The list goes on.
Do most people use MSI installers for web applications as well, or some other tool/scripting language?

I recently spent a few days working on automating deployments at my company.
We use a combination of CruiseControl, NAnt, MSBuild to generate a release version of the app. Then a separate script uses MSDeploy and XCopy to backup the live site and transfer the new files over.
Our solution is briefly described in an answer to this question Automate Deployment for Web Applications?

Do consider MSDeploy, that is the direction Microsoft will be investing in the future for deployment of web applications...
Know more about the future direction at Overview Post for Web Deployment in VS 2010

We have been using FinalBuilder (www.finalbuilder.com) for this purpose for long time and for some time also using InstallAce (www.Installace.com) for build deployment on the Web Farm.

You may want to look at:
How do I get a deployable output from a build script with ASP.NET
Step by Step ASP.NET Automated Build/Deploy
We use MSI to create basic installers for our web projects too, often using the Web Setup Projects in VS and sometimes completely custom installers. You may also want to look at MSDeploy.

We're moving to an MSI for our installs, so far with mixed results. I'm a control freak so I would personally prefer a series of scripts that I had more direct control over. I've used ANT in the past with good results.

Have you checked out NAnt and CruiseControl?
Combined, they can provide an easy and automated way to build and deploy your web apps.

I work for a state agency and we do all our deployments using a product called RepliWeb.
It works good because as dev's we have no control over the webservers. But we can deploy to a deployment area and run the RepliWeb job to do the deployment. Not sure on pricing though...

Related

Simplifying publishing multiple ASP.NET Web Site Projects in VS2008

I have a solution in Visual Studio 2008 that contains three projects: a C# Library and two ASP.NET Web Sites (call them A and B). Web Site A depends on the library, and Web Site B depends on Web Site A.
This means that if I make a change to the library project, I have to build it, then publish A, and then publish B. Similarly, if I change A, I have to publish it and then publish B in order to push my changes through.
Is there any way to make this a one-click process for the entire solution? Basically I'm just looking for a way to, in one opaque step, build the library, build/publish A, and then build/publish B.
I have looked into the Web Deployment Project option and it does not do what I need - as far as I can tell, it kind of does the opposite (highly customized build & deployment for a single web site, rather than pretty much default-config building/publishing for multiple projects all at once).
I believe that Web Deployments projects will work for multiple projects within the same solution.
http://weblogs.asp.net/scottgu/archive/2005/11/06/429723.aspx
If you look at his examples, you can see that he has a website project or WAP as well as a C# library within the same solution, and he seems to be able to compile and deploy them all together.
You could probably also use multiple WDP within the same solution configued to do multiple things.
Basically the best way is to forget clicks and make this single-step deployable from the command line. Check out MsBuild to build the solution, then possibly the aspnet_compiler for build/deploy usage.

What's this with the Microsoft Web Plaform

Sorry. I'm just bitten (or bit. Go figure with this left-to-right language :-)
I've invested a huge amount of effort studying NANT and learning how to build a command line CI environment. My goal was to solve the build issue once and for all so I'll be able to develop a few projects (web sites) and have them deployed "at the press of a button". So cool...
Then, trying to see the difference between Web Sites and Web Application (been there, done that, can never remember the difference) I stumble today upon Microsoft's Web Deployment tool MSDeploy, and now the Microsoft Web Platform.
So my question - Is this something completely new changing the rules of the development/deployment game, or is this just Microsotian Marketing Wrapper for ASP.Net etc. and I should stick with nAnt process and just integrate a different final step?
No. MSDEPLOY is a very rich deployment technology they've been working on for some time. It's available in VS2010 beta 1, I believe. I allows the deployment of the web application, including any databases it uses. It permits different versions of web.config to be used in a Debug deployment vs. a Release deployment, and much more.
The Microsoft Web Platform Installer is simply a packaging of a bunch of their server technologies. The idea was to have a single installer that installs everything.
I had not seen that Microsoft Web Platform site before. It looks like a packaging of the marketing around this stuff!

Asp.net Deployment (web installer)

I need to implement a web site installer for my asp.net application. The installer will be handling following features -
Deploy the .net web application on to the IIS server
Setting up the Sql database connection to run the DB scripts.
Execute all the DB scripts.
Run another exe for the license management.
If some thing goes wrong, need to rollback everything.
I have heard about wix and install shield and wondering what would be the best technology suitable for this particular case.
Thanks Thurein
MSDeploy does all this and more. Find it over on www.iis.net.
-Oisin
WIX has the advantage of being very flexible and free. It also has a somewhat steep learning curve. If you are going to be doing something like this frequently however, it is certainly worth the investment.
After that, there are any number of commercial options to choose from, i.e InstallShield.

Using Web Setup Project for multiple types of projects

I am trying to a create an installer for my web application. My solution contains several projects. They include:
Class library project (referenced by the web application)
Web Application
Windows Service
Web Services project
Database project (execute update script)
I also have an unmanaged dll (crystal reports) in my web application project, so I might have to do some editing of the registry.
I ideally want to be able to use a web setup project to install the whole solution. Can this be done? Is there a better method/solution?
The short answer is "Yes" it can be done.
Other better solution? Well, I'm not a huge fan of VS.NET's installer/setup, can be kind of bulky, 3rd parties could be better at a price. Having said that, it should be able to satisfy your requirements.

ASP.Net portable server

I'm trying to start on a new project to help enrich my asp.net knowledge, since I'm not completely satisfied with what my class is teaching me. From my (very little) experience with Rails, I recall every application containing its own development web server. Say I were trying to create a local-only application, but I want it to run in a web browser (Therefore ASP.Net). Are there any options in terms of being able to distribute an application and have it launch its own, or just not require IIS/VS/Apache-mono?
You may want to look into aspNETserve. It sounds like it would fit your needs. I haven't worked on it recently, so it probably has some rough edges.
On the plus side its all open source, and if you are just getting started with ASP.NET it would be a real eye opener on how the internals of the ASP.NET lifecycle operate.
The simple answer is that you need a web server to run the application. It cannot run without one.
If we're talking demo purposes or you don't require that many features of a web server there are redistributable web-servers that you can include with your setup package.
Like Alex mentioned the most popular one seems to be Cassini.
I'm assuming that you want to run the site on the same machine you are developing it on.
Visual Studio 2005 and up allows you to run the site from VS itself if you want to view it locally on your development machine.
To my understanding Visual Web Developer allows you to do the same as well.
Visual Web Developer
You can use the cassini web server. Please note that those are different redistributable:
http://www.asp.net/Downloads/archived/cassini/
http://ultidev.com/products/Cassini/
I'm not really certain why you would want to develop a web application (with all the difficulties it entails, due to the fact that you are dealing with a stateless connection to an unknown client machine), but then run the entire thing on the client machine.
Surely it makes more sense to develop a WinForms application?
Follow this guide to setup IIS on your PC to run ASP.NET apps:
http://www.geekpedia.com/tutorial25_Setting-up-your-ASPNET-server-IIS.html

Resources