Scott Hanselman

Microsoft Web Platform, Web Application Gallery, Web Platform Installer (and DasBlog)

March 18, '09 Comments [18] Posted in ASP.NET | DasBlog | IIS | Mix | Open Source | Tools
Sponsored By

Slash WebIt's so fun to help "announce" things, especially things that are a long time coming and that a lot of people worked on to make things "just work." (You can follow them on Twitter @mswebplatform.)

This is one of those fantastic things. Today, you can install free applications direct to IIS using the Web Platform Installer 2.0 and the Web Application Gallery. The WebPI will also check for application dependencies, and if you like, automatically download and install them. It'll install SQL Express, PHP, whatever you need to get your apps running.

For example, you can now install DasBlog just by clicking this button:

Install DasBlog now with the Web Platform Installer

There's a bunch of cool apps available in the gallery immediately, both ASP.NET and PHP (remember that IIS kicks ass at hosting PHP):

This gallery sits on top of some technologies that have been slowly but surely sneaking out of the most-awesome IIS team lately.

How's it work?

Here's some technical details. You can install free apps a few ways, and they are all easy.

  • You can visit the Web App Gallery, find an app and click install. If you've got the Web Platform Installer it'll launch out of the browser. (Don't worry, it's not a browser plugin, it's more like iTunes. It'll "leap out of the browser" from a link.)
  • You can open IIS manager on your machine after installing WebPI, and click "Install Application from Gallery." This feature is awesome enough to require a screenshot to drink in:image
  • Or, just run the Web Platform Installer and browse around the catalog. The list of apps comes down as an Atom Feed.

Hey, isn't that dasBlog in the list there? Why, yes! ;)

Packaging Your App - Technical Details - DasBlog

You can upload YOUR free app to the gallery. Start by downloading the Application Developer's Kit. We packaged up DasBlog 2.3 like this. You install DasBlog

The package is a zip file. Inside at the root are two files, manifest.xml and parameters.xml. You start by "exporting" your app already working in IIS. Then, if your app has specific needs you can edit the files manually.

For example, here's our manifest.xml, which is an MSDeploy file:

<MSDeploy.iisApp>

<!-- Copies content from path into the destination specified in parameters.xml and marks as an app in IIS 5.1, 6.0 and 7.x -->
<iisapp path="dasblogce" />

<!-- Set NTFS ACLs on the destination specified in parameters.xml -->
<setAcl path="dasblogce/content" setAclAccess="Read,Write,Delete" />
<setAcl path="dasblogce/logs" setAclAccess="Read,Write,Delete" />
<setAcl path="dasblogce/siteconfig" setAclAccess="Read,Write,Delete" />

</MSDeploy.iisApp>

Remember that DasBlog doesn't use a database, but rather stores all data in XML files in the content folder. Our MSDeploy file sets ACLs on a few directories to allow "Read,Write,Delete." This file encapsulates a potentially tricky setup step for DasBlog.

The parameters.xml is a little more sophisticated and drives a dynamic UI form inside of the Web Platform Installer 2.0.

For example, the blog owner's email is a parameter, and it's entered in two files. Since DasBlog uses XML files, we can use XPath to describe where to poke the values in.

<!-- Prompts for admin email -->
<parameter name="Email Address" description="Enter the blog owner's email address." defaultValue="dasblog@example.com">
<parameterEntry type="XmlFile" scope="dasblogce\\siteconfig\\site.config" match="//MSDeploy:Contact/text()" />
<parameterEntry type="XmlFile" scope="dasblogce\\siteconfig\\siteSecurity.config" match="//EmailAddress/text()" />
</parameter>

Here's what the generated UI looks like:

image

You can read about this format in the Application Developer's Kit. You can parameterize your SQL files as well, it's a very flexible format.

Then we zipped up the deployment and uploaded it to CodePlex. The CodePlex site is smart enough to notice when the Platform Installer is requesting a release (it sniffs the User-Agent) and serves up the file rather than the web site, so I can use CodePlex to host the zip. (It would have sucked to have to host somewhere else.)

MSDeploy -> WebDeploy -> Web Platform Installer 2.0 -> Web App Gallery

Just to take a second, and make sure this is clear.

There's the command-line MSDeploy engine, there's WebDeploy that integrates with IIS and has a nice UI, and there's the Web Application Gallery where you can get a bunch of free applications. When you're in the App Gallery, the Web Platform Installer will do the installation.

Here's how I see it. Of course, you just have to click a button, but I always like to see what's underneath.

image 

What's cool about this is that even if you don't want to put your app up on the Web Application Gallery, you can still use MSDeploy/WebDeploy to deploy your apps. They are REALLY powerful tools that can help you deploy, migrate between IIS6 and IIS7, and synchronize content and apps between machines in a web farm. If you deal with IIS apps all day, host them, develop them, etc, take some time and spend it over at http://www.iis.net.

Now, if you want to have your app included in the gallery, here's the principles your app should follow:

Web Application Gallery Development Principles

1. Be Current: The application you provide a link to must be the latest, stable final release version available, hosted on a publically available Web URL

2. Be Free of Charge: The application for which you submit a link to the Microsoft Web App Gallery must be provided free of charge and fully functional without time restrictions. You are welcome to charge for professional support or consulting services and/or provide an enhanced, enterprise version of the application for purchase on your site.  We will be happy to provide a link to your commercial products and services from your page in the Microsoft Web Application Gallery.

3. Be Compatible: The application to which you provide a link must run on Windows Server 2003, Windows Server 2008, Windows XP & Windows Vista using best practices on running ASP.NET applications and PHP applications on IIS.

4. Be Deployable: The application to which you provide a link must integrate with Microsoft Web Deploy as described in the Microsoft Web Application Packaging Guide, and run with the Microsoft Web Platform Installer v2.

5. Be Supported: You must provide a publicly available Web site where end users can download your application, find documentation and/or get free on a best effort basis support through a forum.

6. Be Hostable: The application to which you provide a link must run well in a shared hosted environment as well as when the user has administrative rights for the computer.

7. Be Inclusive: If your link is included in the Gallery, you should include a link on your application community’s Web site to your Application entry on the Microsoft Web Application Gallery.

8. Be Safe: The application to which you provide a link must not harm customers or be malicious, dishonest, destructive, invasive, or act in any manner restricted by the Web Gallery Application Submission agreement.

Get the Microsoft Web PlatformCongrats to the IIS and /Web teams for this release, and thanks for all the guys on dasBlog for helping. Big thanks to Bill Staples for letting dasBlog 2.3 in on the launch.

Enjoy!

Related Links

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Wednesday, March 18, 2009 4:22:51 PM UTC
That is some cools stuff, I wonder how many more announcements you have ready to be published :-)
Wednesday, March 18, 2009 5:18:35 PM UTC
Scott,

Great stuff and thanks for posting and giving some insight how DasBlog was deployed.

I haven't looked into this yet myself, but is there support in the Web Platform Installer to allow updates to pushed through this model.
Wednesday, March 18, 2009 7:59:45 PM UTC
Any plans to make this available on Azure. I know it's early days but the combination of Azure and something like Subtext or Screwturn would be perfect. One click install, lovely.
Wednesday, March 18, 2009 8:48:45 PM UTC
Very cool! This is a very important piece of the hosting puzzle for those wishing to either publish hosted software, or more importantly for those wishing to consume it. Even those "in the industry" have had their fair share of troubles deploying and configuring blog or image hosting packages. Wrapping up the final layer goes a long way to closing the gap.

I really like the markup for the MSDeploy file. That makes specifying access rights and other similar configuration items look pretty simple indeed. Thanks for sharing!
Wednesday, March 18, 2009 9:00:19 PM UTC
Great announcement Scott!

In the Web Application Gallery Development Principles you mention that the application has to work in shared hosted environment . Do this mean that the Web Platform will work on cheap hosts (like godaddy)? Or is this more of a "the host has to offer support for this" scenario?
Wednesday, March 18, 2009 11:59:48 PM UTC
This is great news! Now people with less technical skills can easily install web applications on IIS7 :)
Thursday, March 19, 2009 8:58:30 AM UTC
i think all of the app as software are here
Thursday, March 19, 2009 9:14:56 AM UTC
Intersting news. Now deploing web application in easy
Thursday, March 19, 2009 9:16:11 AM UTC
Intersting news. Now deploing web application in easy
Thursday, March 19, 2009 10:49:27 AM UTC
Hi Scott,

do you know if the Web Platform Installer will be supported under Windows Home Server?

I guess its just Server 2003 under the covers so it should work, but I wonder if this is an area that will be supported, it would seem like an ideal way of allowing those with a server at home to run web apps easily.


AndyMcG
Thursday, March 19, 2009 2:43:16 PM UTC
Hi Scott,

Is there a way to deploy to IIS hosters when we have FTP access but no IIS management console?

Perhaps we deploy to local IIS and then export/upload from there?

--Pete
Thursday, March 19, 2009 3:07:08 PM UTC
Great concept. I really love that Microsoft is allowing third party vendors to get in on this so easily.
Thursday, March 19, 2009 4:50:28 PM UTC
So this is like cpanel fantastico, but for IIS7?
Nice.
Friday, March 20, 2009 12:39:33 AM UTC
Great idea. I'll try this soon (I hope to keep that impression after :)).
Friday, March 20, 2009 2:26:15 PM UTC
I've been running dasBlog since v1.3. Since I have a new hosting company, I just ran the WebDeployInstaller w/dasBlog 2.3. Worked as advertised.

Then, I copied all the files from my custom theme folder and all the content files. Done.

Thanks!
Saturday, March 21, 2009 10:11:11 PM UTC
I just tried the Beta 2.0 installer on my Windows Home Server with much success. I also marked to download ASP.NET MVC 1.0 (very cool that it is available there alread) and it downloaded just fine.

One thing that I would like to feed back to some team at MS (not sure who's doing what), is that just perhaps the MVC-installer would have an option to also add an .mvc extension or a wildcard so that your deployed MVC apps can work with extension-less URLs on IIS6 (like on the WHS) and IIS7 classic. It's an easy fix, but it would be cool.

I love the tool and it's a perfect thing for Home Server users that would like to run their own things.
Monday, March 23, 2009 6:18:46 PM UTC
This MS Web Platform Installer is great!

Do you know of any Twitter like application that can be installed in an Intranet, running on IIS 6.0, this will be for internal tweets, we don't want it to go out to the Internet.
Tuesday, March 24, 2009 5:32:04 PM UTC
Cool!
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.