Microsoft Web Platform, Web Application Gallery, Web Platform Installer (and DasBlog)
It'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:
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):
- DotNetNuke® Community Edition
- DasBlog
- Gallery
- WordPress
- Acquia Drupal
- SilverStripe CMS
- BlogEngine.NET
- SubText
- Umbraco
- ScrewTurn Wiki
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:
- 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:
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.
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.
Congrats 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
- Web Application Gallery and Web Platform Installer
- MSDeploy Team Blog
- Learn the Basics of Web Deploy (Quick Guides)
- Web Deployment Tool Overview (overview of the features)
- Installing the Web Deployment Tool (installation and remote service options)
- Learn How to Package and Deploy an App (Quick Guides)
- Create a Package (creating a package including content, databases and more)
- Install a Package (deploying the package to a local or remote machine)
- Configure the Web Deployment Handler (enable deployment to an IIS 7.0 server)
- Bill’s Web Platform Release
- Mai-lant’s on IIS at MIX
- Mai-lan’s Web App Gallery and community engagement
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.
About Newsletter
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.
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!
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?
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.
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
Then, I copied all the files from my custom theme folder and all the content files. Done.
Thanks!
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.
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.
Comments are closed.