<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:cs="http://blogs.iis.net/"><channel><title>Kateryna&amp;#39;s Blog</title><link>http://blogs.iis.net/kateroh/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Web PI Options Dialog</title><link>http://blogs.iis.net/kateroh/archive/2009/11/04/web-pi-options-dialog.aspx</link><pubDate>Wed, 04 Nov 2009 22:16:34 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3494880</guid><dc:creator>kateroh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3494880</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/11/04/web-pi-options-dialog.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As many of you already know, version 2 RTW of &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Web Platform Installer&lt;/a&gt; released in September. So what’s new in this version since RC that was released in March? First of all, Web PI now caches downloaded installers. Second of all, Web PI now supports 9 additional languages – German, French, Spanish, Russian, Italian, Japanese, Korean, Traditional and Simplified Chinese. This language support extends to both displaying Web PI UI in the language of the current OS locale and installing a product (if available) in the language specified by the user. Finally, the last biggest feature of RTW is extensibility.&lt;/p&gt;  &lt;p&gt;All the new features are surfaced through the Options dialog, which is also new in RTW. Here is a list of new features surfaced through the dialog:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.iis.net/kateroh/archive/2009/10/29/web-pi-additional-scenarios-media-and-developer-tools.aspx"&gt;Additional scenarios&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Extensibility      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-products.aspx"&gt;installing custom products&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-applications.aspx"&gt;installing custom applications&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.iis.net/kateroh/archive/2009/10/29/web-pi-localization.aspx"&gt;Localization&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Installer caching &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Some of these features are rather too big to include them in one article and are described separately through the links provided in each title. Thus, this article will cover only the remaining features surfaced through the Options dialog &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Installer caching, and &lt;/li&gt;    &lt;li&gt;Resetting the options &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/image_43852EC3.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="429" alt="image" src="http://blogs.iis.net/blogs/kateroh/image_thumb_283CAFF5.png" width="560" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Installer Caching&lt;/h2&gt;  &lt;p&gt;In previous versions of Web PI, if installation fails for some reason and the user has to start installation again, Web PI would have to download the selected product again in order to start installation. This version of Web PI caches downloaded products in case it would want them again. Thus, every time you install something it gets cached under &lt;/p&gt;  &lt;p&gt;&lt;font face="Arial Black" size="2"&gt;%LocalAppData%\Microsoft\Web Platform Installer\installers&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;If installation fails, you can always run the cached installer that is likely to have a UI that might surface the errors better. Also, if you want to install the same set of products on a different machine, you can just copy the installer cache folder to that machine to the same location and Web PI will pick it up. No worries if an installer gets updated for a product, since Web PI will compare the time stamps and download the newer file when you request to install the product again. The size of the cache is always shown in the dialog. If it gets too big or you don’t find it useful anymore (everything installs fine), you can clear the cache by clicking on “Delete installer cache folder” hyperlink.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Resetting the options&lt;/h2&gt;  &lt;p&gt;From the command line you can launch Web PI with a /reset switch that will restore your options to the default state:&lt;/p&gt;  &lt;p&gt;&lt;font face="Arial Black" size="2"&gt;%ProgramFiles%\Microsoft\Web Platform Installer\WebPlatformInstaller.exe /reset&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy the new set of features in Web Platform Installer and please provide your feedback to help us make the product serve your needs better!&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3494880" width="1" height="1"&gt;</description></item><item><title>Web PI Additional Scenarios: Media and Developer Tools</title><link>http://blogs.iis.net/kateroh/archive/2009/10/29/web-pi-additional-scenarios-media-and-developer-tools.aspx</link><pubDate>Thu, 29 Oct 2009 22:18:45 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3484584</guid><dc:creator>kateroh</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3484584</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/10/29/web-pi-additional-scenarios-media-and-developer-tools.aspx#comments</comments><description>&lt;p&gt;Web Platform Installer now offers a set of Media and Azure products that are not included in the set of Web PI products by default. These additional scenarios can be enabled through the options dialog:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/image_37C3B817.png" mce_href="http://blogs.iis.net/blogs/kateroh/image_37C3B817.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="454" alt="image" src="http://blogs.iis.net/blogs/kateroh/image_thumb_0D940A2F.png" width="615" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/image_thumb_0D940A2F.png" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Options dialog is a new RTW dialog that allows enabling the additional scenarios among other new features:     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/clip_image0044_0125E706.jpg" mce_href="http://blogs.iis.net/blogs/kateroh/clip_image0044_0125E706.jpg"&gt;&lt;img title="clip_image004[4]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="427" alt="clip_image004[4]" src="http://blogs.iis.net/blogs/kateroh/clip_image0044_thumb_643CC230.jpg" width="619" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/clip_image0044_thumb_643CC230.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/expression/products/Web_Overview.aspx" mce_href="http://www.microsoft.com/expression/products/Web_Overview.aspx"&gt;Media Platform&lt;/a&gt; offers a set of products and services to enable a server side story of the HD smooth streaming. To include all Media products, check “Media” and click Ok. The new tab “Media Platform” will appear in Web PI that will offer a full set of Media Products offered up to the date. The following set of products is available so far (together with &lt;a href="http://www.microsoft.com/expression/products/Encoder_Overview.aspx"&gt;Expressions Encoder&lt;/a&gt; that is available from Media Content pillar):     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/clip_image0064_381FC53F.jpg" mce_href="http://blogs.iis.net/blogs/kateroh/clip_image0064_381FC53F.jpg"&gt;&lt;img title="clip_image006[4]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="460" alt="clip_image006[4]" src="http://blogs.iis.net/blogs/kateroh/clip_image0064_thumb_302822DD.jpg" width="622" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/clip_image0064_thumb_302822DD.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;For additional Developer Tools products the following products are offered: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Azure Tools for Microsoft Visual Studio &lt;/li&gt;    &lt;li&gt;Expressions Web 3 Trial &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Windows Azure Tools for Visual Studio enables web application development on &lt;a href="http://microsoft.com/azure" mce_href="http://microsoft.com/azure"&gt;Windows Azure Platform.&lt;/a&gt; It is one of the offered &lt;a href="http://www.microsoft.com/azure/sdk.mspx" mce_href="http://www.microsoft.com/azure/sdk.mspx"&gt;Windows Azure Developer SDKs&lt;/a&gt;. &lt;a href="http://www.microsoft.com/expression/products/Web_Overview.aspx" mce_href="http://www.microsoft.com/expression/products/Web_Overview.aspx"&gt;Expressions Web 3&lt;/a&gt; is a WYSIWYG HTML editor for faster and easier design of web sites.&lt;/p&gt;  &lt;p&gt;To enable a set of products under Developers Tools, enable Developers scenario through the Options dialog.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/clip_image0084_561DD333.jpg" mce_href="http://blogs.iis.net/blogs/kateroh/clip_image0084_561DD333.jpg"&gt;&lt;img title="clip_image008[4]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="459" alt="clip_image008[4]" src="http://blogs.iis.net/blogs/kateroh/clip_image0084_thumb_7C138389.jpg" width="620" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/clip_image0084_thumb_7C138389.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Now you can install any additional Media or Developers Tools product with a full-blown Web PI experience, where Web PI pulls in the dependencies for you and checks for incompatibilities with already installed products.&lt;/p&gt;  &lt;p&gt;These are the “extra” products offered by Web PI in additional scenarios: Media and Developer Tools scenarios. Stay tuned for more products and updates!&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3484584" width="1" height="1"&gt;</description></item><item><title>Web PI Localization</title><link>http://blogs.iis.net/kateroh/archive/2009/10/29/web-pi-localization.aspx</link><pubDate>Thu, 29 Oct 2009 18:36:51 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3484264</guid><dc:creator>kateroh</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3484264</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/10/29/web-pi-localization.aspx#comments</comments><description>&lt;p&gt;Version 2 RTW of Web Platform Installer, released in September, now not only comes localized in 9 languages - English, German, French, Spanish, Russian, Italian, Japanese, Korean, Traditional and Simplified Chinese, but also supports installations of products in supported languages. Now, users can choose the language in which they want Web PI to install the products. Though, not all products are localized in all 9 languages. Those products that are not available in the language selected by the user or not localized at all, will be offered in English. &lt;/p&gt;  &lt;p&gt;This article will talk about the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="#DisplayLanguage"&gt;The display language of Web PI UI&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="#LanguageOfInstallers"&gt;The language of products available in more than one language&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="#CustomLoc"&gt;Custom products and localization &lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;With extensibility added to Web PI story, the users will also be able to install &lt;em&gt;custom &lt;/em&gt;products in different languages. To read about extensibility refer to the following articles:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-products.aspx"&gt;Web PI Extensibility: Custom Feeds – Installing Custom Products&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-applications.aspx"&gt;Web PI Extensibility: Custom Feeds – Installing Custom Applications&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;&lt;a style="color: black; text: decoration:none" name="DisplayLanguage"&gt;The display language of Web PI UI&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;If your system display language is one of the nine Web PI supported languages, Web PI will automatically show up translated in your display language. To change or install a display language (Vista and above) go to Control Panel--&amp;gt;Regional and Language Options--&amp;gt;Install or Uninstall display languages, install a display language from the original installation CD, restart the machine and enjoy your operating system in your preferred language… along with Web PI localized in the same language, given it is one of the supported languages.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;&lt;a style="color: black; text: decoration:none" name="LanguageOfInstallers"&gt;The language of products&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;Now, Web PI offers products that are available in more than one language. However, not all products are available in multiple languages and not all products that support more than one language, support all other 9 Web PI supported languages. Below is the matrix of products offered with Web PI v2 RTW and languages these products are localized in.    &lt;table cellspacing="3" cellpadding="3" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="bottom"&gt;&lt;b&gt;Title&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;French&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;Spanish&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;German&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;Japanese&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;Korean&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;Simplified              &lt;br /&gt;Chinese&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;Traditional              &lt;br /&gt;Chinese&lt;/b&gt;&lt;/td&gt;          &lt;td valign="bottom"&gt;&lt;b&gt;Italian&lt;/b&gt;&lt;/td&gt;          &lt;th valign="bottom"&gt;&lt;b&gt;Russian&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/th&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom" width="79"&gt;           &lt;p&gt;Administration Pack 1.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom" width="79"&gt;           &lt;p&gt;Application Request Routing 1.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;Database Manager 1.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom" width="52"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom" width="48"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;External Cache 1.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;FTP Publishing Service 7.5&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;PowerShell Snap-in For IIS7 1.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;IIS Media Services 2.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;Remote Admin Manager for IIS7 1.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;Silverlight 3 Tools for Visual Studio&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;SQL Server Express 2008 with Service Pack 1&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;SQL Server 2008 Express with Advanced Services&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;SQL Server 2008 Express with Tools&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;SQL Server 2008 Management Studio Express&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;Web Deployment Tool 1.0 RC&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;Visual Web Developer 2008 Express with SP1&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;WebDav 7.5&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;Web Farm Framework 1.0&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom"&gt;           &lt;p&gt;URL Rewrite 1.1&lt;/p&gt;         &lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td class="xloc" valign="bottom"&gt;x&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="bottom"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To make Web PI offer products in a language other than English, go to Options dialog and select the language for your installations:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/clip_image002_496F58FF.jpg"&gt;&lt;img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="432" alt="clip_image002" src="http://blogs.iis.net/blogs/kateroh/clip_image002_thumb_2FD7A605.jpg" width="627" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once you choose a language other than English for your installations, Web PI UI will show you the same set of products with the only difference, that those products that are not available in the language you have chosen, will have “(English)” next to their title suggesting that if you pick those, they will install in English.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/image_21D03192.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="475" alt="image" src="http://blogs.iis.net/blogs/kateroh/image_thumb_5C1B81A6.png" width="631" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;h2&gt;&lt;a style="color: black; text: decoration:none" name="CustomLoc"&gt;Custom products and localization&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;It was briefly covered in previous articles about extensibility, how to make a custom product localizable in more than one language. Let’s take a sample feed from &lt;a href="http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-products.aspx"&gt;that article&lt;/a&gt; and get it localized.&lt;/p&gt;  &lt;p&gt;In the example below, SampleProduct is localized in Italian – both in display language and installer. Note, how you have to add a unique (across all Web PI) resource name id to each element you want to translate: resourceName=&amp;quot;&amp;quot; and then reference it in your translation xml.&lt;/p&gt;  &lt;div style="border-right: #c3b091 1px solid; border-top: #c3b091 1px solid; overflow: auto; border-left: #c3b091 1px solid; width: 731px; border-bottom: #c3b091 1px solid; height: 400px; background-color: #fffacd"&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;feed&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/2005/Atom&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product WebPI v2 RTW Feed&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.contoso.com/SampleProductFeed.xml&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-9-29T16:30:00Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product Builder&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleProductFeed.xml&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;resourcesList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;culture&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;en&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;culture&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;culture&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;it&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;culture&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;url&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleProduct_it.xml&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;url&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;resourcesList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt; &lt;span class="attr"&gt;resourceName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Entry_SampleProduct_Title&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt; &lt;span class="attr"&gt;resourceName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Entry_SampleProduct_Summary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Just summary&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt; &lt;span class="attr"&gt;resourceName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Entry_SampleProduct_LongSummary&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Long summary of SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productFamily&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Products&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productFamily&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;c:\SampleProductIcon.png&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product Builder&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-9-29T12:30:00Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span class="rem"&gt;&amp;lt;!-- How can WebPI know your product is installed? --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;or&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- 1. Through registry (version value should be 1.0.0, if dont care about the verion, should be just keypath) --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;registry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keyPath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;HKEY_LOCAL_MACHINE\SOFTWARE\SampleProduct\Sample Product Version 1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keyPath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;valueName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Version&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;valueName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;valueValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;valueValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;registry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;file&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="rem"&gt;&amp;lt;!-- 2. Through filepath - if the exe is at this location, WebPI will know that SampleProduct is installed --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;filePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;%ProgramFiles%\SampleProduct\SampleProduct.exe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;filePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;file&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;or&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;         What products need to be installed first? &lt;/span&gt;
&lt;span class="rem"&gt;         Define dependencies through ProductId property of products&lt;/span&gt;
&lt;span class="rem"&gt;         declared in the main WebProductList file or other previously &lt;/span&gt;
&lt;span class="rem"&gt;         added feeds &lt;/span&gt;
&lt;span class="rem"&gt;    --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;IISManagementConsole&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- SampleProduct cannot be installed if product IncompatibleSampleProduct is already installed --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;incompatibilities&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;incompatibleProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;IncompatibleSampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;incompatibleProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;incompatibilities&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;         installers and installer commands. Here you can define separate installers for&lt;/span&gt;
&lt;span class="rem"&gt;         different architectures, OSes, SKUs and languages&lt;/span&gt;
&lt;span class="rem"&gt;    --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- installer Id should be unique for every SampleProduct installer --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- English installer --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;en&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- same English installer for both x86 and x64 --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;x86&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;x64&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;             list of OSes and SKUs this product can be installed on. On every OS/SKU that is not &lt;/span&gt;
&lt;span class="rem"&gt;             supported, the product will not display &lt;/span&gt;
&lt;span class="rem"&gt;        --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="rem"&gt;&amp;lt;!-- the product is supported on Vista/Windows Server SP1 + --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;6&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="rem"&gt;&amp;lt;!-- list of SKUs --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Server&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HomePremium&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Ultimate&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Enterprise&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Business&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- before the user will install the product, the link to the following EULA will be presented --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/eula.html&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- this info is important for WebPI to verify that the downloaded file was not tampered --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- size in KBs --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1024&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleProduct_EnglishInstaller.msi&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;111222FFF000BBB444555EEEAAA777888999DDDD&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- how should WebPI install your product? --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;%InstallerFile%&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="rem"&gt;&amp;lt;!-- x64 architecture installer --&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- installer Id should be unique for every SampleProduct installer --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- Italian installer --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;it&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        
        &lt;span class="rem"&gt;&amp;lt;!-- same Italian installer for both x86 and x64 --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;x86&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;x64&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="rem"&gt;&amp;lt;!-- the product is supported on Vista/Windows Server SP1 + --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;6&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="rem"&gt;&amp;lt;!-- list of SKUs --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Server&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HomePremium&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Ultimate&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Enterprise&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Business&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- before the user will install the product, the link to the following EULA will be presented --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/eula.html&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- this info is important for WebPI to verify that the downloaded file was not tampered --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- size in KBs --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1024&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleProduct_ItalianInstaller.msi&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;111222FFF000BBB444555EEEAAA777888999DDDD&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- how should WebPI install your product? --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;%InstallerFile%&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- define a tab that contains SampleProduct --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tabs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;pillarTab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleTab&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Tab&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;My sample tab for my sample product&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;pillar&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Pillar&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Install sample product&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupingId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProductFamilyGrouping&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupingId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;recommended&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;recommended&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;pillar&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;pillarTab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tabs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;grouping&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProductFamilyGrouping&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="rem"&gt;&amp;lt;!-- combine products based on their productFamily attributes --&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;productFamily&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Products&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;grouping&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;feed&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color:#fffacd;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
.xloc { background-color: #f1e788; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;And SampleProduct_it.xml referenced in the resource list will have to look something like this:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div style="border-right: #c3b091 1px solid; border-top: #c3b091 1px solid; overflow: auto; border-left: #c3b091 1px solid; width: 730px; border-bottom: #c3b091 1px solid; height: 220px; background-color: #fffacd"&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;root&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;data&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Entry_SampleProduct_Title&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xml:space&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;preserve&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct Title in Italian&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;data&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Entry_SampleProduct_Summary&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xml:space&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;preserve&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct Summary in Italian&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;data&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Entry_SampleProduct_LongSummary&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xml:space&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;preserve&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct Long Summary in Italian&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;root&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion:&lt;/u&gt;&lt;/strong&gt; to get all resource strings in your xml file localized, you need to point Web PI to another xml with all the translations. Resource section in resourceList of the first xml takes care of this. If you have your custom product available in more than one language, you can have a different installer for each of your supported language and hint Web PI with &amp;lt;languageId&amp;gt; element in your installer portion of the product definition, which installer to use for which language. &lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3484264" width="1" height="1"&gt;</description></item><item><title>Web PI Extensibility: Custom Feeds – Installing Custom Applications</title><link>http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-applications.aspx</link><pubDate>Sat, 24 Oct 2009 04:13:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3474735</guid><dc:creator>kateroh</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3474735</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-applications.aspx#comments</comments><description>&lt;p&gt;One of the most important features of &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx" target="_blank" mce_href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Web Platform Installer&lt;/a&gt;, version 2 RTW of which released in September, is that it surfaces web applications offered by &lt;a href="http://www.microsoft.com/web/gallery/default.aspx" mce_href="http://www.microsoft.com/web/gallery/default.aspx"&gt;Windows Web App Gallery&lt;/a&gt;. The Gallery is the place for open source apps that can be submitted through &lt;a href="http://www.microsoft.com/web/gallery/developer.aspx" mce_href="http://www.microsoft.com/web/gallery/developer.aspx"&gt;online submission process&lt;/a&gt; and be available through various sources, including Web PI, to millions of people. Both submission and admission is totally free, the application just needs to adhere to &lt;a href="http://learn.iis.net/page.aspx/605/web-application-gallery-principles/" mce_href="http://learn.iis.net/page.aspx/605/web-application-gallery-principles/"&gt;App Gallery Principles&lt;/a&gt; and be a &lt;a href="http://learn.iis.net/page.aspx/578/application-packaging-guide-for-the-windows-web-application-gallery/" mce_href="http://learn.iis.net/page.aspx/578/application-packaging-guide-for-the-windows-web-application-gallery/"&gt;Web Deploy zip package&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;However, you don’t need to submit an app to the App Gallery to make Web PI install it for you. With a new feature that version 2 comes with – extensibility – deploying your custom application via Web PI becomes a piece of cake. This article will show you how to create a custom feed for Web PI to recognize your application and be able to install it.&lt;/p&gt;  &lt;p&gt;All you need to start with this article is a &lt;a href="http://www.iis.net/extensions/WebDeploymentTool" target="_blank" mce_href="http://www.iis.net/extensions/WebDeploymentTool"&gt;Web Deploy&lt;/a&gt; zip package of your app and (optionally) an icon for the prettier UI display of your app.&lt;/p&gt;  &lt;p&gt;Let the fun begin!&lt;/p&gt;  &lt;p&gt;The feed below represents an example of how to add applications with ASP.NET/SQL and PHP/MySql dependencies, create a new tab and subtabs based on keywords, group products together and hint Web PI that your product is available in different languages. Please note that you have to define a new custom tab for your custom products, since they cannot to be added to Web PI core tabs.&lt;/p&gt;  &lt;div style="border-right: #c3b091 1px solid; border-top: #c3b091 1px solid; overflow: auto; border-left: #c3b091 1px solid; width: 730px; border-bottom: #c3b091 1px solid; height: 570px; background-color: #fffacd"&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;feed&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/2005/Atom&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Applications for WebPI v2 RTW Feed&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.contoso.com/SampleApplicationsFeed.xml&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-10-5T16:30:00Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Application Builder&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleApplicationsFeed.xml&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- Sample ASP.NET &amp;amp; SQL app with dependencies --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;application&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample_ASPNET_SQL_App&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample ASP.NET and SQL application&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ASP.NET and SQL application sample&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample ASP.NET and SQL to show how to add a feed with a custom ASP.NET application to WebPI and define all dependencies.&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- Defines grouping for the application based on the keyword(s) --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ASPNETApps&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;c:\SampleASPNETAppIcon.jpg&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-10-5T18:30:02Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-10-5T18:30:02Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Application Builder&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span class="rem"&gt;&amp;lt;!-- Bring along SQLExpress, if it is not installed as a related/nice-to-have product, not a dependency --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;related&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;relatedProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SQLExpress&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;relatedProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;related&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;         Minimum set of requirements/dependencies in order to successfully install the application: &lt;/span&gt;
&lt;span class="rem"&gt;         WDeploy, SQL Management Objects and URL Rewrite.&lt;/span&gt;
&lt;span class="rem"&gt;    --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;and&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SMO&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;WDeployNoSMO&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;UrlRewrite2RC1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;and&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
     
    &lt;span class="rem"&gt;&amp;lt;!-- Installer for an application should be Web Deploy package --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- List of languages this package is localized in: English, Korean, Spanish, Traditional and Simplified Chinese --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;en&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ko&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;es&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;zh-tw&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;zh-cn&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- size of the package in KBs --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1024&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleASPNETApplication.zip&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;displayURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleASPNETApplication.aspx&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;displayURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- SHA of the package file for signature verification --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1223334444555556666667777777888888889999&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;helpLink&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleASPNETApplicationForum.aspx&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;helpLink&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msDeploy&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;startPage&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="rem"&gt;&amp;lt;!-- start with a setup page rather than a default one --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;startPage&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Setup.aspx&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;startPage&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;startPage&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msDeploy&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- Sample PHP &amp;amp; MySQL app with dependencies --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;application&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample_PHP_MySQL_App&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample PHP and and MySQL application&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PHP and MySQL application sample&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample PHP and MySQL to show how to add a feed with a custom PHP application to WebPI and define all dependencies.&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- Display under PHPApps keyword subtab --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PHPApps&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;c:\SamplePHPAppIcon.jpg&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-10-5T18:30:02Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-10-5T18:30:02Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Application Builder&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- Bring along SQLExpress, if it is not installed as a related/nice-to-have product, not a dependency --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;related&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;relatedProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SQLExpress&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;relatedProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;related&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;         Minimum set of requirements/dependencies in order to successfully install the application: &lt;/span&gt;
&lt;span class="rem"&gt;         PHP, WDeploy, SQL Management Objects, MySql Connector and URL Rewrite.&lt;/span&gt;
&lt;span class="rem"&gt;     --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;and&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;WDeployNoSMO&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PHP&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;MySQLConnector&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;UrlRewrite2RC1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;and&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span class="rem"&gt;&amp;lt;!-- Installer for an application should be Web Deploy package --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- List of languages this package is localized in: English, Russian, French, German and Italian --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;en&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ru&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;fr&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;de&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;it&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- size of the package in KBs --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1024&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SamplePHPApplication.zip&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;displayURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SamplePHPApplication.aspx&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;displayURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- SHA of the package file for signature verification --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1223334444555556666667777777888888889999&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;helpLink&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SamplePHPApplicationForum.aspx&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;helpLink&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msDeploy&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- Default page is a start page --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;startPage&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msDeploy&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  
  &lt;span class="rem"&gt;&amp;lt;!-- Tab definition --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tabs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywordTab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleApplications&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Applications&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Select from sample applications:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        
        &lt;span class="rem"&gt;&amp;lt;!-- Subtabs definitions --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ASPNETApps&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PHPApps&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywordId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywordTab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tabs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- Keyword/titles of subtabs to group apps with those keywords under --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keyword&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ASPNETApps&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ASP.NET Apps&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keyword&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keyword&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PHPApps&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;PHP Apps&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keyword&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keywords&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;feed&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode {
	font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #fffacd
}
.csharpcode pre {
	font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #fffacd
}
.csharpcode pre {
	margin: 0em
}
.csharpcode .rem {
	color: #008000
}
.csharpcode .kwrd {
	color: #0000ff
}
.csharpcode .str {
	color: #006080
}
.csharpcode .op {
	color: #0000c0
}
.csharpcode .preproc {
	color: #cc6633
}
.csharpcode .asp {
	background-color: #ffff00
}
.csharpcode .html {
	color: #800000
}
.csharpcode .attr {
	color: #ff0000
}
.csharpcode .alt {
	margin: 0em; width: 100%
}
.csharpcode .lnum {
	color: #606060
}&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;You can get a hash of your zip package, by using a free utility called &lt;a href="http://support.microsoft.com/kb/841290"&gt;File Checksum Integrity Verifier&lt;/a&gt; (FCIV) and running &lt;strong&gt;fciv.exe –sha &amp;lt;path to your zip package&amp;gt;&lt;/strong&gt; from the command prompt.&lt;/p&gt;

&lt;p&gt;Now, you can try the feed out by saving it locally or uploading it, opening the Options dialog and adding a feed through either a physical path or URL.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/image_22FD69CD.png" mce_href="http://blogs.iis.net/blogs/kateroh/image_22FD69CD.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="541" alt="image" src="http://blogs.iis.net/blogs/kateroh/image_thumb_4886E72E.png" width="731" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/image_thumb_4886E72E.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Note how applications are grouped based on keywords rather than product families like products do. Also, applications are grouped into keyword subtabs rather than group boxes (pillars for products). To read about adding a custom product through a custom feed refer to this article - &lt;a title="WebPI Extensibility: Custom Scenarios - Installing Custom Products" href="http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-products.aspx"&gt;Web PI Extensibility: Custom Feeds – Installing Custom Products&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3474735" width="1" height="1"&gt;</description></item><item><title>Web PI Extensibility: Custom Feeds – Installing Custom Products</title><link>http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-products.aspx</link><pubDate>Sat, 24 Oct 2009 04:09:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3474732</guid><dc:creator>kateroh</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3474732</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/10/24/web-pi-extensibility-custom-feeds-installing-custom-products.aspx#comments</comments><description>&lt;p&gt;As it was already mentioned in several articles about Web Platform Installer (Web PI), version 2 RTW of the product now offers extensibility as a part of its new set of features. Now, users can not only add additional Media and Developer Tools scenarios with a set of products not offered in Web PI by default, but also define and install their own products through Web PI. To add a new product to Web PI UI interface, you need to create a custom feed with some information for Web PI to parse and be able to display and later install products offered by your feed.&lt;/p&gt;  &lt;p&gt;To make a product show up in the UI, you will need to define a new Web PI tab, pillar and product entities in the feed.&lt;/p&gt;  &lt;p&gt;Here is sample XML that defines a Sample Product with a unique SampleProduct productId, that is grouped by Sample Products product family and put into a newly defined Sample Tab. Please note that you have to define a new custom tab for your custom products, since they cannot to be added to Web PI core tabs.&lt;/p&gt;  &lt;div style="border-right: #c3b091 1px solid; border-top: #c3b091 1px solid; overflow: auto; border-left: #c3b091 1px solid; width: 700px; border-bottom: #c3b091 1px solid; height: 400px; background-color: #fffacd"&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;feed&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.w3.org/2005/Atom&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product WebPI v2 RTW Feed&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.contoso.com/SampleProductFeed.xml&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-9-29T16:30:00Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;updated&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product Builder&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleProductFeed.xml&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Just summary&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;summary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Long summary of SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;longSummary&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productFamily&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Products&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productFamily&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;c:\SampleProductIcon.png&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;images&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Product Builder&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;uri&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;author&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2009-9-29T12:30:00Z&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;published&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span class="rem"&gt;&amp;lt;!-- How can WebPI know your product is installed? --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;or&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- 1. Through registry (version value should be 1.0.0, if dont care about the verion, should be just keypath) --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;registry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;keyPath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;HKEY_LOCAL_MACHINE\SOFTWARE\SampleProduct\Sample Product Version 1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;keyPath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;valueName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Version&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;valueName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;valueValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;valueValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;registry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;file&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="rem"&gt;&amp;lt;!-- 2. Through filepath - if the exe is at this location, WebPI will know that SampleProduct is installed --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;filePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;%ProgramFiles%\SampleProduct\SampleProduct.exe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;filePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;file&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;or&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;discoveryHint&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;         What products need to be installed first? &lt;/span&gt;
&lt;span class="rem"&gt;         Define dependencies through ProductId property of products&lt;/span&gt;
&lt;span class="rem"&gt;         declared in the main WebProductList file or other previously &lt;/span&gt;
&lt;span class="rem"&gt;         added feeds &lt;/span&gt;
&lt;span class="rem"&gt;    --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;IISManagementConsole&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependency&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- SampleProduct cannot be installed if product IncompatibleSampleProduct is already installed --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;incompatibilities&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;incompatibleProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;IncompatibleSampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;incompatibleProduct&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;incompatibilities&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;         installers and installer commands. Here you can define separate installers for&lt;/span&gt;
&lt;span class="rem"&gt;         different architectures, OSes, SKUs and languages&lt;/span&gt;
&lt;span class="rem"&gt;    --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="rem"&gt;&amp;lt;!-- x86 architecture installer --&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- installer Id should be unique for every SampleProduct installer --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- language of installer is English --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;en&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;x86&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;
&lt;span class="rem"&gt;             list of OSes and SKUs this product can be installed on. On every OS/SKU that is not &lt;/span&gt;
&lt;span class="rem"&gt;             supported, the product will not display &lt;/span&gt;
&lt;span class="rem"&gt;        --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="rem"&gt;&amp;lt;!-- the product is supported on Vista/Windows Server SP1 + --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;6&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="rem"&gt;&amp;lt;!-- list of SKUs --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Server&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HomePremium&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Ultimate&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Enterprise&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Business&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- before the user will install the product, the link to the following EULA will be presented --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/eula.html&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- this info is important for WebPI to verify that the downloaded file was not tampered --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- size in KBs --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1024&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleProduct_x86.msi&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;111222FFF000BBB444555EEEAAA777888999DDDD&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- how should WebPI install your product? --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;%InstallerFile%&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="rem"&gt;&amp;lt;!-- x64 architecture installer --&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;&amp;lt;!-- installer Id should be unique for every SampleProduct installer --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- language of installer is English --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;en&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;languageId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;x64&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;architectures&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="rem"&gt;&amp;lt;!-- the product is supported on Vista/Windows Server SP1 + --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;6&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osMinorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;spMajorVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;minimumVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

            &lt;span class="rem"&gt;&amp;lt;!-- list of SKUs --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Server&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HomePremium&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Ultimate&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Enterprise&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Business&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osTypes&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;osList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- before the user will install the product, the link to the following EULA will be presented --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/eula.html&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;eulaURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- this info is important for WebPI to verify that the downloaded file was not tampered --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="rem"&gt;&amp;lt;!-- size in KBs --&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1024&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fileSize&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.contoso.com/SampleProduct_64.msi&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerURL&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;111222FFF000BBB444555EEEAAA777888999DDDD&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sha1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installerFile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="rem"&gt;&amp;lt;!-- how should WebPI install your product? --&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;%InstallerFile%&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msiInstall&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installCommands&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;installers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;entry&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="rem"&gt;&amp;lt;!-- define a tab that contains SampleProduct --&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tabs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;pillarTab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleTab&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Tab&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;My sample tab for my sample product&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;pillar&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Pillar&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Install sample product&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupingId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProductFamilyGrouping&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupingId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;recommended&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProduct&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;productId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;recommended&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;pillar&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;pillarTab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tab&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tabs&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;groupings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;grouping&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;SampleProductFamilyGrouping&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="rem"&gt;&amp;lt;!-- combine products based on their productFamily attributes --&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;productFamily&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;attribute&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sample Products&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;item&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;include&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;grouping&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;groupings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;feed&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color:#fffacd;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;
  &lt;br /&gt;You can get a hash of your product, by using a free utility called &lt;a href="http://support.microsoft.com/kb/841290"&gt;File Checksum Integrity Verifier&lt;/a&gt; (FCIV) and running &lt;strong&gt;fciv.exe –sha &amp;lt;path to your file&amp;gt;&lt;/strong&gt; from the command prompt.

  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;To add a product from this feed to Web PI, save this text to an xml file. Then, go to the Options dialog (click Options link on the main window) and type the location of the xml file into the text box, click “Add feed” and close the dialog. You will see a new tab called “Sample Tab” that contains the grouping with the product – all defined in the xml above.&lt;/p&gt;

&lt;p&gt;Below is a drill down of how your feed data is represented in the UI. The first screenshot shows how Web PI interprets tab and pillar feed elements.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/image_1CC59136.png" mce_href="http://blogs.iis.net/blogs/kateroh/image_1CC59136.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="522" alt="image" src="http://blogs.iis.net/blogs/kateroh/image_thumb_347CC89C.png" width="699" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/image_thumb_347CC89C.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;To see how tabs group products based on their productFamily element, click on “Customize” link. The “Sample Products” group box represents a grouping by productFamily, to which Sample Product belongs. All other products with the same productFamily element would be grouped in the same group box.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/image_61258275.png" mce_href="http://blogs.iis.net/blogs/kateroh/image_61258275.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="518" alt="image" src="http://blogs.iis.net/blogs/kateroh/image_thumb_242150E3.png" width="701" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/image_thumb_242150E3.png" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;To see product details, click on the small “i” icon next to the product title. Finally, the product details page shows all the details defined for the product itself. To install Sample Product, check “Install Sample Product” and click Install. Web PI will select an installer based on the current machine architecture and the language of the current UI culture (if such is available). &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/kateroh/image_3EED76EF.png" mce_href="http://blogs.iis.net/blogs/kateroh/image_3EED76EF.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="525" alt="image" src="http://blogs.iis.net/blogs/kateroh/image_thumb_5D57B7D8.png" width="705" border="0" mce_src="http://blogs.iis.net/blogs/kateroh/image_thumb_5D57B7D8.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Note that the feed refers to an icon located at my local path c:\SampleProductIcon.png, the feed is also added from a physical location c:\SampleProduct.xml. Most likely, you will want to host this content somewhere and refer to it through URLs. Your feed is ready to go – you can publish it and let other people install your product through Web PI. Enjoy!&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3474732" width="1" height="1"&gt;</description></item><item><title>MSDeploy Custom Provider to execute batch files</title><link>http://blogs.iis.net/kateroh/archive/2009/06/19/msdeploy-custom-provider-to-execute-batch-files.aspx</link><pubDate>Fri, 19 Jun 2009 16:54:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3246060</guid><dc:creator>kateroh</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3246060</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/06/19/msdeploy-custom-provider-to-execute-batch-files.aspx#comments</comments><description>&lt;h2&gt;Overview&lt;/h2&gt;  &lt;p&gt;The &lt;a href="http://www.iis.net/extensions/WebDeploymentTool" mce_href="http://www.iis.net/extensions/WebDeploymentTool"&gt;IIS Web Deployment Tool&lt;/a&gt; (also known as MSDeploy) simplifies the migration, management and deployment of IIS Web servers, Web applications and Web sites. MSDeploy also offers the ability to run custom providers. These providers unlock hidden power in MSDeploy.&lt;/p&gt;  &lt;p&gt;In this article you will find a sample code for a custom MSDeploy provider that executes batch file commands as a part of MSDeploy sync. The batch file provider can be used to execute custom scripts before or after deployment to make the deployment process a seamless one. You can set up performance counters for a particular MSDeploy sync, make a batch file to copy content with xcopy rather than with MSDeploy (but remember that we’re faster than xcopy!) to name just a few possibilities. The code in this article is meant as a sample to get you started on writing your own custom MSDeploy provider, so that you do not have to wait for the MSDeploy RTW release (Rumor has it that the MSDeploy team is going to have a batch file provider in RTW release). In any case, the code is built thankfully to a &lt;a href="http://blogs.iis.net/msdeploy/archive/2009/03/30/msdeploy-sample-custom-provider-to-sync-mysql-databases-dbfullmysql.aspx" mce_href="http://blogs.iis.net/msdeploy/archive/2009/03/30/msdeploy-sample-custom-provider-to-sync-mysql-databases-dbfullmysql.aspx"&gt;great sample and blog&lt;/a&gt; that Yamini Jagadeesan wrote a couple of months ago on MSDeploy MySql custom provider that lets you sync from one MySql database to another. If you haven’t familiarized yourself with the article, it is a great read and another good start-up solution for MSDeploy custom provider.&lt;/p&gt;  &lt;h2&gt;Needed for this Walkthrough&lt;/h2&gt;  &lt;p&gt;To walk through installation of the provider, you might need to download &lt;a href="http://msdn.microsoft.com/en-us/library/ex0ss12c%28VS.80%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ex0ss12c(VS.80).aspx"&gt;gacutil&lt;/a&gt; to add the assembly to the GAC. You can get &lt;b&gt;gacutil&lt;/b&gt; as a part of &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d" mce_href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d"&gt;.NET Framework SDK&lt;/a&gt; or download it separately. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h2&gt;Download and Install&lt;/h2&gt;  &lt;p&gt;First, &lt;a href="http://www.iis.net/downloads/files/blogs/kateroh/BatchProvider_solution.zip"&gt;download the zip file with the project&lt;/a&gt;. Solution contains the following files:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;BatchProviderFactory.cs&lt;/b&gt; – an entry point to your provider that kindly returns an instance of the provider in overridden CreateProvider method. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;BatchProvider.cs &lt;/b&gt;– the provider itself that initiates execution of a batch file. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Strongname.pfx&lt;/b&gt; – the file with a key to sign the assembly for strong name verification. The password is “MSDeployRocks”, but you can delete the pfx file and specify your own key and password for singing the assembly by going to Project Properties--&amp;gt;Signing in Visual Studio. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To install the provider you need to &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Compile the project (or just &lt;a href="http://www.iis.net/downloads/files/blogs/kateroh/BatchProvider_dll.zip"&gt;use this dll&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Add the new assembly to the GAC by executing&lt;br&gt;      &lt;br&gt;&lt;font size="2" face="Consolas"&gt;&lt;b&gt;gacutil /if BatchProvider.dll&lt;/b&gt;&lt;/font&gt;      &lt;br&gt;&lt;/li&gt;    &lt;li&gt;Register the assembly in the registry by adding a string value under      &lt;br&gt;      &lt;br&gt;&lt;b&gt;&lt;font size="2" face="Consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1\Providers\batch &lt;/font&gt;&lt;/b&gt;      &lt;br&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The string value should point MSDeploy to your DeploymentProviderFactory, your namespace and, finally, your provider with assembly info. For the batch provider, the following string registry value needs to be added: “MSDeployCustomProviders.BatchProviderFactory, BatchProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a0b65de31a9f7a07, processorArchitecture=MSIL", where &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;MSDeployCustomProviders&lt;/b&gt; – is the namespace containing both the factory and provider, and &lt;/li&gt;    &lt;li&gt;&lt;b&gt;BatchProviderFactory&lt;/b&gt; – is the factory, and &lt;/li&gt;    &lt;li&gt;&lt;b&gt;BatchProvider&lt;/b&gt; + the rest – assembly info, which you can get by running the following:       &lt;br&gt;&lt;b&gt;       &lt;br&gt;&lt;font size="2" face="Consolas"&gt;gacutil /l BatchProvider&lt;/font&gt;&lt;/b&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;For your convenience, &lt;b&gt;register.bat&lt;/b&gt; is provided to do both (which runs every time the project is compiled according to project properties: in Visual Studio go to Project Properties--&amp;gt;Build Events and see that register.bat is called as a Post-Build event)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h2&gt;The Internals of BatchProvider&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;GetAttributes&lt;/b&gt; method is called on both source and destination to validate the object (think of performing a dump) without taking any action. If the object is invalid or if the object requires an action (in the example of the batch file provider, we need to run its commands in a shell program in a separate process), the method will throw a DeploymentException to make sure Add method is called. Finally, we want the code to take an action only when it is called on a destination object, which is insured by the following condition:       &lt;br&gt;      &lt;br&gt;      &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.BaseContext.IsDestinationObject)&lt;/pre&gt;
    &lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

    &lt;br&gt;&lt;/li&gt;

  &lt;li&gt;&lt;b&gt;Add&lt;/b&gt; method insures that the object is valid. Think of this method as a “Make valid” method that requires an action, since it is called only on a destination object. Destination objects will always be the objects that require an action, since dump can be performed only on source objects. Which makes sense, because in the command line, dump can be performed only with –source switch: 

    &lt;br&gt;

    &lt;br&gt;&lt;b&gt;&lt;font size="2" face="Consolas"&gt;msdeploy –verb:dump –source:&amp;lt;destination&amp;gt; 
        &lt;br&gt;&lt;/font&gt;

      &lt;br&gt;&lt;/b&gt;&lt;/li&gt;

  &lt;li&gt;&lt;b&gt;GetStream&lt;/b&gt; method is called when the source is getting synced to an archive directory (archiveDir provider) or a package (package provider). For example, this method will get called whenever the following commands are executed: 

    &lt;br&gt;

    &lt;br&gt;&lt;b&gt;&lt;font size="2" face="Consolas"&gt;msdeploy –verb:sync –source:batch=”myBatchJob.bat” –dest:archiveDir=c:\backup 
        &lt;br&gt;&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font size="2" face="Consolas"&gt;msdeploy –verb:sync –source:batch=”myBatchJob.bat” –dest:package=c:\backup.zip 
        &lt;br&gt;&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font size="2" face="Consolas"&gt;msdeploy –verb:sync –source:manifest=”manifestWithBatchInIt.xml” –dest:package=c:\backup.zip 
        &lt;br&gt;&lt;/font&gt;

      &lt;br&gt;&lt;/b&gt;In GetStream method, the FileStream is returned, so that MSDeploy can attach a batch file to an archive or package as a simple text file. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
  &lt;br&gt;You can tweak the provider to suit the task you have in mind. For example, you might want to tweak ProcessStartInfo of the process that will execute the batch file commands to control its behavior during sync. You might want to redirect output and error streams of the process to log the results of execution. &lt;/p&gt;

&lt;p&gt;Please feel free to post any comments and questions.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3246060" width="1" height="1"&gt;</description><enclosure url="http://blogs.iis.net/kateroh/attachment/3246060.ashx" length="32005" type="application/x-zip-compressed" /></item><item><title>Troubleshooting Common MSDeploy Issues</title><link>http://blogs.iis.net/kateroh/archive/2009/06/05/troubleshooting-common-msdeploy-issues.aspx</link><pubDate>Fri, 05 Jun 2009 16:28:04 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3213583</guid><dc:creator>kateroh</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3213583</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/06/05/troubleshooting-common-msdeploy-issues.aspx#comments</comments><description>&lt;p&gt;This article is meant to provide a quick reference troubleshooting guide to help with the most frequently encountered problems and questions. It does not contain a full list of issues and problems, but will be updated with the latest issues and workarounds as the need arises.&lt;/p&gt;  &lt;p&gt;Issues covered in this article:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Connection Issues and Remoting &lt;/li&gt;    &lt;li&gt;Logging &lt;/li&gt;    &lt;li&gt;Skip Replace Rules &lt;/li&gt;    &lt;li&gt;Enabling/Disabling Link Extensions &lt;/li&gt;    &lt;li&gt;Insufficient Privileges (401) &lt;/li&gt;    &lt;li&gt;Working with IIS6 &lt;/li&gt;    &lt;li&gt;If None of the Above Works &lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;h2&gt;Connection Issues and Remoting&lt;/h2&gt;  &lt;h3&gt;MSDeploy agent&lt;/h3&gt;  &lt;p&gt;If you are syncing over the MSDeploy agent, make sure the corresponding MSDeploy service is started on the remote machine:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;net start msdepsvc      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Handler&lt;/h3&gt; (Web Management Service)   &lt;p&gt;Similar to the agent case, if you are syncing over the handler, make sure the corresponding service is started:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;net start wmsvc      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Default TCP Port&lt;/h3&gt;  &lt;p&gt;MSDeploy operates through port 8172 by default. Enable port 8172 through the firewall by running&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;netsh firewall add portopening TCP 8172 WdeployAgent      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Logging&lt;/h2&gt;  &lt;p&gt;Fatal errors are logged in %TEMP%\Web_Deployment_Agent_Service.log. Where %TEMP% refers to the service identity's temp folder which by default is Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\MSDepSvc    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h2&gt;Skip Replace Rules&lt;/h2&gt;  &lt;p&gt;If some destination settings are different from source settings (e.g. different system drives in file paths), you can write a skip replace rule to change the setting. Thus, if you sync an IIS6 site with the content that resides on c:\wwwroot\inetpub to another site that is mapped to d:\wwwroot\inetpub, you’d write the following replace rule to make the 1-liner sync possible:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;msdeploy.exe -verb:sync -source:metaKey=/lm/w3svc/2 -dest:metaKey=/lm/w3svc/3 -replace:objectName=metaProperty,scopeAttributeName=name,scopeAttributeValue=path,targetAttributeName=value,match=&amp;quot;e:&amp;quot;,replace=&amp;quot;d:&amp;quot;&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;An excellent resource for writing skip replace rules is the blog post: &lt;a href="http://blogs.iis.net/msdeploy/archive/2008/05/23/how-to-write-skip-and-replace-rules-for-msdeploy.aspx" target="_blank"&gt;How to write skip and replace rules for MSDeploy&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;h2&gt;Enabling/Disabling Link Extensions&lt;/h2&gt;  &lt;p&gt;If you copy content of a webserver/site separately and don’t want it to be copied during your MSDeploy sync operation, you can do it by using -disableLink:ContentExtension command line option. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;&lt;u&gt;Example (sync one server to another w/o content): &lt;/u&gt;&lt;/i&gt;      &lt;br /&gt;&lt;b&gt;msdeploy -verb:sync -source:webserver -dest:webserver,computerName=URLtoRemoteAgent&lt;/b&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you sync a site and its app pool is not pulled in (default behavior), you can enable pulling in the app pool by using the &lt;b&gt;–enableLink:AppPoolExtension &lt;/b&gt;switch. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;&lt;u&gt;Example (create a backup of a site with app pool): &lt;/u&gt;&lt;/i&gt;      &lt;br /&gt;&lt;b&gt;msdeploy -verb:sync –source:appHostConfig=”MySite” –dest:package=”c:\BackupUpOfSiteWithAppPool.zip” –enableLink:AppPoolExtension&lt;/font&gt;&lt;/b&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Insufficient Privileges (401)&lt;/h2&gt;  &lt;p&gt;Things to check:&lt;u&gt;      &lt;br /&gt;&lt;/u&gt;&lt;/p&gt;  &lt;h3&gt;ACLs&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If you are syncing as an IIS user, the content path that you are trying to access should be ACL’ed for read/write access for NT Service\WMSvc identity.    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;AppPoolIndentity&lt;/h3&gt;  &lt;p&gt;If you think you might have problems with app pool identity, try to run the app pool with admin privileges, see if the problem persists, fix permissions problem if necessary and set the app pool back its original identity.    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Delegation Rules &lt;/h3&gt;  &lt;p&gt;If you are running a sync operation as a non-admin account, make sure delegation rules are set up correctly on the remote server. For example, to allow all users to import iisApp packages and set ACLs within user connection scope, add the rule below to &amp;quot;system.webServer/management&amp;quot; section in administration.config file.    &lt;br /&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;&amp;lt;!-- set allowAdministrators to &amp;quot;false&amp;quot; if you don't want administrators to bypass delegation rules --&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;delegation&lt;/span&gt; &lt;span class="attr"&gt;allowAdministrators&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="rem"&gt;&amp;lt;!--&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="rem"&gt;Will attempt to perform the operations as the current identity. &lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="rem"&gt;If you want to run these opearations as a specific user, uncomment &amp;quot;runAs&amp;quot; below&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="rem"&gt;--&amp;gt;&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;rule&lt;/span&gt; &lt;span class="attr"&gt;providers&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;iisapp,createapp,contentpath,setAcl&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;actions&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;*&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{userScope}&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;permissions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;user&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;*&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;isRole&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;accessType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Allow&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;permissions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="rem"&gt;&amp;lt;!-- &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;runAs identityType=&amp;quot;SpecificUser&amp;quot; userName=&amp;quot;iisAppUser&amp;quot; password=&amp;quot;iis6!dfu&amp;quot; /&amp;gt; &lt;/span&gt;&lt;span class="rem"&gt;--&amp;gt;&lt;/span&gt;
&lt;b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;rule&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;delegation&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;












.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Another useful reference on automating the creation of delegation rules in C# is the following IIS.NET article: &lt;a href="http://learn.iis.net/page.aspx/516/configure-the-web-deployment-handler/"&gt;Configure the Web Deployment Handler&lt;/a&gt; 

  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Server Certificates&lt;/h3&gt;

&lt;p&gt;How does your client validate server certificates? 
  &lt;br /&gt;- If you are running a command line and trust the server, specify the –allowUntrusted switch to accept untrusted certificates. 

  &lt;br /&gt;- If you wrote your own client to interface with MSDeploy APIs and sync to a remote machine, make sure to provide a certificate validation delegate to validate the server certificate. 

  &lt;br /&gt;Another great reference on the subject of certificate validation delegate is the MSDN article: &lt;a href="http://blogs.msdn.com/webdevelopertips/archive/2009/01/04/tip-41-did-you-know-establishing-a-remote-connection-to-a-iis-server-with-self-issued-certificate-will-require-a-certificate-validation-delegate.aspx"&gt;Did you know... establishing a remote connection to a IIS server with self-issued certificate will require a certificate validation delegate?&lt;/a&gt; 

  &lt;br /&gt;

  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;Working with IIS6&lt;/h2&gt;

&lt;p&gt;MSDeploy does work with IIS. Moreover, MSDeploy can migrate a site from IIS6 to IIS7. Another excellent article about how to migrate a site from IIS6 to IIS7: &lt;a href="http://learn.iis.net/page.aspx/427/migrate-from-iis-60-to-iis-70/" target="_blank"&gt;Migrate from IIS 6.0 to IIS 7.0&lt;/a&gt;. Below are some important tips and tricks that will help you get around common problems. 

  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Webserver Provider&lt;/h3&gt;

&lt;p&gt;To sync the whole IIS6 server, you need to user &lt;b&gt;webserver60&lt;/b&gt; provider instead of &lt;b&gt;webserver, &lt;/b&gt;which is reserved for IIS7 servers 

  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Specific Metabase Path&lt;/h3&gt;

&lt;p&gt;To sync a specific metabase path (a site or application), you need to use &lt;b&gt;metakey &lt;/b&gt;provider 

  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Site Identifiers&lt;/h3&gt;

&lt;p&gt;To specify a siteId for your metabase path, you need to find out what identifier your site/application has. Run the following command to list metabase paths:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;adsutil enum /p w3svc&lt;/b&gt; 

    &lt;br /&gt;Microsoft (R) Windows Script Host Version 5.7 

    &lt;br /&gt;Copyright (C) Microsoft Corporation. All rights reserved. &lt;/p&gt;

  &lt;p&gt;[/w3svc/Info] 
    &lt;br /&gt;[/w3svc/Filters] &lt;/p&gt;
&lt;/blockquote&gt;

&lt;br /&gt;

&lt;br /&gt;

&lt;h2&gt;If None of the Above Works&lt;/h2&gt;

&lt;p&gt;Run your command with -debug switch and post your question on &lt;a href="http://forums.iis.net/1144.aspx"&gt;MSDeploy forum&lt;/a&gt; with the stack trace. 

  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Hope this helps!&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3213583" width="1" height="1"&gt;</description></item><item><title>IIS Remote Manager for Windows 7 is out</title><link>http://blogs.iis.net/kateroh/archive/2009/06/03/iis-remote-manager-for-windows-7-is-out.aspx</link><pubDate>Tue, 02 Jun 2009 23:47:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3206007</guid><dc:creator>kateroh</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/kateroh/rsscomments.aspx?PostID=3206007</wfw:commentRss><comments>http://blogs.iis.net/kateroh/archive/2009/06/03/iis-remote-manager-for-windows-7-is-out.aspx#comments</comments><description>&lt;p&gt;   &lt;br /&gt;Last week, IIS Remote Manager was re-released to support Windows 7. Prior to this release, remote management was supported only on XP, Vista, Windows Server 2003 and Server 2008 (excluding Home Basic editions). Now, the users can install Remote Manager on Windows 7 Client to manage Server 2008 and Server 2008 R2 remotely.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Remote Manager is available for download on iis.net download center:     &lt;br /&gt;    &lt;br /&gt;· &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1626"&gt;IIS Manager for Remote Administration (x86)&lt;/a&gt;     &lt;br /&gt;· &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1633&amp;amp;g=6"&gt;IIS Manager for Remote Administration (x64)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;    &lt;br /&gt;And also on microsoft.com:     &lt;br /&gt;    &lt;br /&gt;· &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=32c54c37-7530-4fc0-bd20-177a3e5330b7"&gt;Internet Information Services (IIS) Manager&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Finally, you can install IIS Remote Manager through &lt;a href="http://www.microsoft.com/web/downloads/"&gt;Web Platform Installer&lt;/a&gt;:     &lt;br /&gt;&lt;a href="http://go.microsoft.com/?linkid=9655670"&gt;&lt;b&gt;&lt;img title="clip_image001" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="51" alt="clip_image001" src="http://blogs.iis.net/blogs/kateroh/clip_image001_5ACA0C9B.gif" width="176" border="0" /&gt;&lt;/b&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Learn about Remote Manager:     &lt;br /&gt;· &lt;a href="http://learn.iis.net/page.aspx/390/remote-manager-for-windows-2003-xp-and-vista-sp1/"&gt;Remote Manager for Windows 2003, XP and Vista SP1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://iis.net" target="_blank"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3206007" width="1" height="1"&gt;</description></item></channel></rss>