<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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/"><channel><title>Chris's unofficial Office Live developer blog : Solution Packaging</title><link>http://blogs.msdn.com/cbeiter/archive/tags/Solution+Packaging/default.aspx</link><description>Tags: Solution Packaging</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Advanced List Publishing</title><link>http://blogs.msdn.com/cbeiter/archive/2008/04/16/advanced-list-publishing.aspx</link><pubDate>Wed, 16 Apr 2008 22:23:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8399414</guid><dc:creator>cbeiter</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/cbeiter/comments/8399414.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cbeiter/commentrss.aspx?PostID=8399414</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cbeiter/rsscomments.aspx?PostID=8399414</wfw:comment><description>&lt;p&gt;In the previous release of Office Live, we had a deeply hidden and difficult to use feature known as Data Sharing. This feature was designed to allow you to take the data from one of the lists in your password-secured 'business applications' and publish it out to your public-facing web site as a dynamic list or table of items.&amp;#160; So when you update an item in the private list it was automatically updated on your public web site.&amp;#160; Data Sharing also provided the inverse... forms on your public web site that collect data into a business application list.&amp;#160; &lt;/p&gt;  &lt;p&gt;Despite the efforts of our intern (hi Chester!), the feature was a dud.&amp;#160; When publishing a list (aka Display Data), there were only 3 options for how to layout the data, and the approval process was onerous at best. The form builder (aka Collect Data) also had some major hurdles, such as numerous unsupported column types and lack of ability to directly set what columns you were collecting data into.&amp;#160; Despite its shortcomings, we did get a good amount of customer and developer feedback that they liked the concept, just not the implementation.&lt;/p&gt;  &lt;p&gt;In our recent release, we set out to address the major usability problems, add more UI flexibility and also address some of the major underlying technical limitations.&amp;#160; We especially wanted to give developers more power so they could unlock scenarios that they know best.&amp;#160; We set a goal that a 'normal' small business user could set this up... you don't have to be a developer.&lt;/p&gt;  &lt;p&gt;I won't give you a full blow-by-blow account of all the changes we implemented, let's just say that instead of having to take a bunch of shortcuts to squeeze this feature into our Nov 06 release, we were able to get a full development milestone to build it the way we thought was best.&amp;#160; OK, OK, we did take a few shortcuts, and big chunks of what we hoped to do were cut (you gotta dream big!), but by and large the end result is a much more flexible, powerful and usable solution.&lt;/p&gt;  &lt;h3&gt;Advanced Mode&lt;/h3&gt;  &lt;p&gt;Hopefully you have seen my blog post about the new Web Site Designer &lt;a href="http://blogs.msdn.com/cbeiter/archive/2008/02/15/advanced-design-mode-in-the-new-office-live-small-business.aspx" target="_blank"&gt;'advanced mode'&lt;/a&gt;.&amp;#160; If you haven't, go check it out to learn how to configure that for your Office Live Small Business web site.&amp;#160; This post will focus on the advanced mode capabilities and other developer-centric features for the List Publisher specifically, so that will be an important piece of homework for you to start with.&lt;/p&gt;  &lt;h3&gt;List Publisher Module&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/cbeiter/WindowsLiveWriter/AdvancedListPublishingandSyndication_5F/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 15px 0px 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/cbeiter/WindowsLiveWriter/AdvancedListPublishingandSyndication_5F/image_thumb.png" width="147" align="left" border="0" /&gt;&lt;/a&gt;To recap, the List Publisher is a module that you can drop onto a web page using the Office Live page designer tool.&amp;#160; To add a module, just click on the zone where you want to add it on the page, select the Modules dropdown, and select the List Publisher module.&amp;#160; The property sheet for the module will pop up to guide you through the rest of the process.&amp;#160; Modules can be moved around into any zone on a page, resized, copy &amp;amp; pasted and packaged up into a &lt;a href="http://blogs.msdn.com/cbeiter/archive/2008/02/22/packaging-your-business-apps-website-into-a-cohesive-office-live-solution.aspx" target="_blank"&gt;solution file&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;The List Publisher property sheet gives you the ability to select lists from any of the business applications or Business Contact Manager in the password-protected area of your Office Live subscription.&amp;#160; Once you pick an app and a list from that app, the controls on the property sheet are populated and enabled.&amp;#160; &lt;/p&gt;  &lt;p&gt;NOTE:&amp;#160; You may not have the Business Applications provisioned on your Office Live Small Business account. If you don't, you will be notified.&amp;#160; They're free, so check 'em out.&amp;#160; If you already have them added to your account, you might not see a list you want to publish.&amp;#160; From the Business Applications, you can add a variety of interesting apps to perform common tasks for small businesses such as Contact Management, Project Management, Team Workspaces and more.&amp;#160; Just click + Add Application in the left nav once you go to the Business Apps and you will see a gallery. Don't see the one you want to use?&amp;#160; You can also create a custom app or add a custom list to one of the Business Apps you already have to suit your needs.&lt;/p&gt;  &lt;h3&gt;Defining your data details&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/cbeiter/WindowsLiveWriter/AdvancedListPublishingandSyndication_5F/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 10px; border-right-width: 0px" height="541" alt="image" src="http://blogs.msdn.com/blogfiles/cbeiter/WindowsLiveWriter/AdvancedListPublishingandSyndication_5F/image_thumb_1.png" width="519" align="right" border="0" /&gt;&lt;/a&gt; On the data details tab, you can define the exact data you want to publish by selecting the 'Create custom information view' radio button.&amp;#160; That allows you to select the columns you want, reorder them, and rename the labels for each column.&amp;#160; &lt;/p&gt;  &lt;p&gt;Instead of picking and choosing from the full set of columns, you may decide to base your data details on a SharePoint view by selecting 'Use columns from an existing view' and then selecting the view you want from the dropdown.&amp;#160; These &amp;quot;views&amp;quot; are kind of like mini-reports that are part of the&amp;#160; Business App that are generally used to format the list data in a way that is more useful.&amp;#160; For example, you might have a task list with an &amp;quot;overdue&amp;quot; view, &amp;quot;assigned to me&amp;quot; view, etc.&amp;#160; &lt;/p&gt;  &lt;p&gt;Selecting one of these views on the module property sheet is kind of like a big shortcut for you, plus it has some added power.&amp;#160; We automatically select only those columns that are present on the view for inclusion on the published list.&amp;#160; You cannot add or remove columns from the data details unless you switch back to the custom information view mode.&amp;#160; &lt;/p&gt;  &lt;p&gt;Why would you want to limit yourself by using an existing view?&amp;#160; Because SharePoint views also give you the ability to add a sort order and create filters on the list.&amp;#160; Using the task list example again, you may want to only publish the active tasks, and the SharePoint view makes that possible by filtering only those tasks where status = active.&amp;#160; You need to go to the Business Application itself to create or modify a SharePoint view, but depending on what you are trying to do, it may well be worth the effort.&lt;/p&gt;  &lt;h3&gt;Creating a layout template&lt;/h3&gt;  &lt;p&gt;Once you have selected the data, now you need to decide how it should appear.&amp;#160; The layout tab gives you 3 options: a dropdown to select one of 3 predefined layouts, an option to link to a &lt;a href="http://msdn2.microsoft.com/en-us/library/ms256069.aspx" target="_blank"&gt;XSLT&lt;/a&gt; file and finally, a text area where you can edit/paste XSLT code directly.&amp;#160; &lt;/p&gt;  &lt;p&gt;The layout dropdown is pretty self-explanatory... grid, repeating form or repeating form centered are standard layouts for basic publishing.&amp;#160; But this blog post is about 'advanced' publishing, so let's talk about the other controls instead.&lt;/p&gt;  &lt;p&gt;So far we have ignored the 'View XML source' button that hovers above the 2 tabs on the right of the property sheet. By clicking it, you get an XML document that describes the schema you have configured on the data details tab.&amp;#160; As you make more changes, that XML will be updated.&amp;#160; Once you have the data details ironed out and are viewing the XML, you can write your own XSLT code to generate HTML/Script output exactly like you want it.&amp;#160; Here's where things get very interesting.&amp;#160; &lt;/p&gt;  &lt;h3&gt;The Grid Layout example&lt;/h3&gt;  &lt;p&gt;The Edit XSLT control contains a default XSLT that you may use as a sample.&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/cbeiter/WindowsLiveWriter/AdvancedListPublishingandSyndication_5F/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 15px 0px 0px; border-right-width: 0px" height="375" alt="image" src="http://blogs.msdn.com/blogfiles/cbeiter/WindowsLiveWriter/AdvancedListPublishingandSyndication_5F/image_thumb_2.png" width="493" align="left" border="0" /&gt;&lt;/a&gt;By writing a couple simple loops, it first iterates over the fields in the schema, and writes out the DisplayName attribute of each Field node.&amp;#160; This lets you write the column headers out in the grid example.&lt;/p&gt;  &lt;p&gt;You can then write a second loop to create a new row in the HTML grid/table for each Row node of the XML, grabbing each of the attributes of the Row and outputting them as the value for one of the columns of the grid.&amp;#160; The attributes on the Row nodes correspond to the order of the Field nodes in the Schema subsection of the XML.&amp;#160; &lt;/p&gt;  &lt;p&gt;Now you have a simple HTML grid of all the items in your list.&lt;/p&gt;  &lt;p&gt;Instead of just outputting the values as raw text into a grid-like table, you can manipulate the values in any way you see fit such as passing them to a javascript function, building them into part of a URL or querystring, applying different fonts &amp;amp; styles conditionally based on a test of the value, and so on. In the grid example, we look at the position of the Row node using the XSLT mod function.&amp;#160; This allows us to change the style class name for each row, and build alternating colors into our grid.&lt;/p&gt;  &lt;p&gt;In XSLT, you can pretty much output any HTML you would normally create for a web page, including styles and javascript. So, the sky and your imagination are really the limit.&lt;/p&gt;  &lt;h3&gt;To Link or Not to Link&lt;/h3&gt;  &lt;p&gt;The main difference between linking to an XSLT file vs. editing it directly on the module is that linking will give you the ability to share an XSLT across multiple modules, and manage the code all in one place for easy maintenance.&amp;#160; The text area is a better option while you are still developing and debugging the XSLT you are working on.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Syndicating your list with RSS 2.0 and Simple List Extensions&lt;/h3&gt;  &lt;p&gt;You've probably noticed by now the recognizable orange RSS icon at the bottom of the page.&amp;#160; This checkbox is selected by default, and by doing so, publishes your list also as an &lt;a href="http://cyber.law.harvard.edu/rss/rss.html" target="_blank"&gt;RSS 2.0&lt;/a&gt; feed at a separate URL.&amp;#160; We also adhere to the &lt;a href="http://msdn2.microsoft.com/en-us/xml/bb190612.aspx" target="_blank"&gt;Simple List Extensions&lt;/a&gt; proposal, which provides both an enhanced experience in Internet Explorer 7.0 and formats the data from your list in a way that is more usable by developers who are consuming your list feed on a 3rd party server/service/application.&amp;#160; I'll dig more into the syndication features in a future blog post.&lt;/p&gt;  &lt;p&gt;You can read more about advanced list publisher features in our &lt;a href="http://msdn2.microsoft.com/en-us/library/bb803070.aspx" target="_blank"&gt;dev guide&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8399414" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Office+Live/default.aspx">Office Live</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/RSS/default.aspx">RSS</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Windows+SharePoint+Services/default.aspx">Windows SharePoint Services</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Web+Services/default.aspx">Web Services</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Data+Sharing/default.aspx">Data Sharing</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Advanced+Design+Mode/default.aspx">Advanced Design Mode</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Web+Site/default.aspx">Web Site</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Solution+Packaging/default.aspx">Solution Packaging</category></item><item><title>Packaging your business apps and web site into a cohesive Office Live Solution</title><link>http://blogs.msdn.com/cbeiter/archive/2008/02/22/packaging-your-business-apps-website-into-a-cohesive-office-live-solution.aspx</link><pubDate>Fri, 22 Feb 2008 23:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7850645</guid><dc:creator>cbeiter</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/cbeiter/comments/7850645.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cbeiter/commentrss.aspx?PostID=7850645</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cbeiter/rsscomments.aspx?PostID=7850645</wfw:comment><description>&lt;P&gt;Another great advance in the Winter 08 release of Office Live Small Business is the new Solution Packaging technology.&amp;nbsp; This service allows you to take components off of your public-facing web site &amp;amp; entire business applications, package them together, creating a comprehensive solution to a Small Business problem.&amp;nbsp; See &lt;A href="http://msdn2.microsoft.com/en-us/library/bb803015.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb803015.aspx"&gt;this article in our dev guide&lt;/A&gt; for a great overview of the packager.&lt;/P&gt;
&lt;P&gt;As an example, you might create a Business Application for a restaurant to manage a rotating menu.&amp;nbsp; The Business Application will be pretty simple, probably just a SharePoint list of names, prices, descriptions, etc.&amp;nbsp; Then let us say that you have pages on your public-facing web site where you have used the List Publisher to publish the menu.&amp;nbsp; By doing this, the changes that the chef makes to the list on the business app can be dynamically published up to the daily rotating menu on your public web site.&lt;/P&gt;
&lt;P&gt;This is great, but how do you wrap this up and allow your friend who also has a restaurant site reuse what you built?&amp;nbsp; Before the new version of Office Live, you would be able to package up the Business App as an .stp file and send it to your friend.&amp;nbsp; That would only recreate the Bizapp.&amp;nbsp; But the public-facing pages and the List Publisher module would all need to be created from scratch.&lt;/P&gt;
&lt;P&gt;Not anymore... now you can package up both the Business Applications and components of your web site into an Office Live Package (.olp) file.&amp;nbsp; From a granularity perspective, you can choose any Business App to include, optionally including the data in the lists as seed data.&amp;nbsp; For the Web Site, you can package web pages, images, documents, and (also new in the Winter release) page templates you have created.&amp;nbsp; Everything is stitched up together into a single .olp file.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So, you send the restaurant .olp file to your friend.&amp;nbsp; She deploys the solution on her subscription.&amp;nbsp; Office Live will read the contents of the file, putting all of the individual components into the correct places. We will even patch up connections made through the List Publisher and Form Designer modules between a public web page and the newly created restaurant business app.&amp;nbsp; Note... we do require your friend to make one final step of visiting the pages and confirming the module settings before we start publishing data for the restaurant menu... this is to prevent people from accidentally publishing business-sensitive data.&lt;/P&gt;
&lt;P&gt;The really big innovation here is the packaging up of your public site, something you could not previously do with anything made on your Office Live site using our Web Site Designer.&amp;nbsp; Now, with the packager, you can package those pages, templates, images etc. and share them to your hearts content!&lt;/P&gt;
&lt;P&gt;Another scenario we are very excited about is supporting the sharing of web page templates.&amp;nbsp; You now have the ability, in advanced mode, of creating web page templates.&amp;nbsp; Maybe you create a great web site for a real estate office.&amp;nbsp; You may not want to share your entire site, but maybe you create templates for a few of the pages such as publishing the home listings.&amp;nbsp; Now you can package that template up in an .olp file and share it to anyone else on Office Live Small Business.&lt;/P&gt;
&lt;P&gt;Before you ask, let me get out in front of the question and say NO, we do not enforce any sort of intellectual property rights on the .olp files you create. So, if you are thinking of building a business around these solutions, you do have to think about the fact that someone else can package up what you give them and give it away for free.&amp;nbsp; Our goal was to get this out ASAP, and this is one of the features that didn't make the cut. Also, we wanted these solutions to be as viral as possible, so everyone can cross-pollinate ideas in a more (gasp) open source kind of way. As we get feedback on the packager, we hope to also learn more about the IP scenarios so we can work them into a future release.&lt;/P&gt;
&lt;P&gt;Versioning is another thing we did not tackle in this release.&amp;nbsp; If pages already exist on your web site, the deployment of a package with files of the same name will fail.&amp;nbsp; There is an "overwrite" checkbox to make this work though.&amp;nbsp; Also, if you package a new version of a business application, and it already exists, we will deploy a second copy of it side-by-side.&amp;nbsp; There really is no good way to do a delta update to a business application yet, so that's what we went with. Again, this is another area we hope to get more feedback and scenarios on.&lt;/P&gt;
&lt;P&gt;I think the most exciting thing about the new packager is that we don't really know how it might be used.&amp;nbsp; I can imagine many things, but ultimately it's up to the creativity of our developer audience to take advantage and help guide us in the right direction for the next round of improvements.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7850645" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Office+Live/default.aspx">Office Live</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Windows+SharePoint+Services/default.aspx">Windows SharePoint Services</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Data+Sharing/default.aspx">Data Sharing</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Advanced+Design+Mode/default.aspx">Advanced Design Mode</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Web+Site/default.aspx">Web Site</category><category domain="http://blogs.msdn.com/cbeiter/archive/tags/Solution+Packaging/default.aspx">Solution Packaging</category></item></channel></rss>