<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Thoughts from the Wet Coast</title>
    <description>The musings of an ASP.NET Developer from the We(s)t Coast of Canada</description>
    <link>http://www.charlesnurse.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.charlesnurse.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>My name</dc:creator>
    <dc:title>Thoughts from the Wet Coast</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ThoughtsFromTheWetCoast" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>DotNetNuke in the Cloud – Part 2, Amazon EC2 – Creating an Instance</title>
      <description>&lt;p&gt;In my first article on DotNetNuke and Cloud Computing, I briefly introduced the many aspects of “Cloud Computing”. In this article I will begin to describe how to get DotNetNuke running on Amazon EC2, an “Infrastructure as a Service (IaaS)” provider.&lt;/p&gt;  &lt;h2&gt;Amazon Elastic Cloud Computing (EC2)&lt;/h2&gt;  &lt;p&gt;Amazon Elastic Cloud Computing (EC2) is a web service provided by Amazon Web Services that provides resizable compute capacity in the cloud.&amp;#160; The web service interfaces allow users to launch machine instances with a variety of operating systems, load them with custom applications, and run as many instances of your configured image.&lt;/p&gt;  &lt;p&gt;Once you have created an account on Amazon Web Services (AWS) you will be able to launch a &lt;a href="http://aws.amazon.com/console/"&gt;web based console&lt;/a&gt; which allows you to manage your EC2 services (Figure 1).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 1 - Launch the AWS Console&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/48458E6B/AWSConsole.png" rel="lightbox[AmazonEC2]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AWSConsole" border="0" alt="AWSConsole" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/62099ECD/AWSConsole_thumb.png" width="284" height="197" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;If you are not already signed in to AWS then you will be asked to enter your Amazon credentials and you will then see the EC2 Console (Figure 2)&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 2 – The AWS Console Dashboard&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/42B6D22D/AWSConsole2.png" rel="lightbox[AmazonEC2]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AWSConsole2" border="0" alt="AWSConsole2" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/56901929/AWSConsole2_thumb.png" width="644" height="304" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;On the left menu is a number of tasks that you can do.&amp;#160; For the purpose of this article we will only focus on the four of the items.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h3&gt;Instances Manager&lt;/h3&gt; lets you view your currently running Instances &lt;/li&gt;    &lt;li&gt;     &lt;h3&gt;AMIS &lt;/h3&gt; allows you to view the available Amazon Machine Images (AMIS). &lt;/li&gt;    &lt;li&gt;     &lt;h3&gt;Bundle Tasks &lt;/h3&gt; allows you to view the bundling tasks (more on this later) &lt;/li&gt;    &lt;li&gt;     &lt;h3&gt;Security Groups &lt;/h3&gt; allows you to manage Security Groups &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;On the top right is a summary of the resources you are currently using.&amp;#160; In this example I have one Key Pair (you will receive a Key Pair file when you sign up for AWS) and two Security Groups.&amp;#160; Security Groups allow you to open up ports for specific protocols.&amp;#160; For a webserver you may want to just open up ports for the HTTP Protocol (to serve web pages) and the RDP Protocol (to allow you to remote into the server) (Figure 3).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 3 – The Security Groups Manager&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/4CB7398C/AWSConsole3.png" rel="lightbox[AmazonEC2]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AWSConsole3" border="0" alt="AWSConsole3" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/0BD51790/AWSConsole3_thumb.png" width="644" height="387" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Finally in the middle of the console is a big button that allows you to launch an instance (there is also an option to launch new instances from the Instances Manager).&lt;/p&gt;  &lt;h2&gt;Launching your first Amazon AC2 Instance&lt;/h2&gt;  &lt;p&gt;Whether you first go into the Instances Manager to launch an instance or click the “Launch Instance” button on the main Console you will start the “Launch Instance Wizard” (Figure 4).&amp;#160; The first page of the wizard allows you to choose the Instance you want to launch.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 4 – Launching an AMI Instance&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/3FB9457C/AWSConsole4.png" rel="lightbox[AmazonEC2]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AWSConsole4" border="0" alt="AWSConsole4" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/57503148/AWSConsole4_thumb.png" width="644" height="429" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Instances are essentially virtual machines, and Amazon provides a number of basic configurations (Linux and Windows) as Amazon Machine Images (AMIs).&amp;#160; In addition you can configure an instance and save it.&amp;#160; These customized AMIs can be private or public.&lt;/p&gt;  &lt;p&gt;For this example we obviously need to select a Windows AMI and we will choose the Basic Windows Server 2003 instance, with SQL Server Express (as an instance with SQL Server costs more).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 5 – Configuring the Instance&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/09839361/AWSConsole5.png" rel="lightbox[AmazonEC2]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AWSConsole5" border="0" alt="AWSConsole5" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/2AC2ED63/AWSConsole5_thumb.png" width="644" height="371" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;You can then select the number of instances to launch, the type of instance (in this case small or medium) the Key Pair to use and the Security Groups to use (Figure 5).&amp;#160; Finally click launch and your instance will be started.&lt;/p&gt;  &lt;p&gt;In the Instances Manager you can review the status of the instance.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 6 – My Instances shows the state of the Instances&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/4DDF70A1/AWSConsole6.png" rel="lightbox[AmazonEC2]"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="AWSConsole6" border="0" alt="AWSConsole6" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/5D22ACE3/AWSConsole6_thumb.png" width="644" height="347" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;You can click on a row in the Instances grid and you can view more detail about the Instance (Figure 7).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 7 – Detail View for the new Instance&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/2EA8DB9C/AWSConsole7.png" rel="lightbox[AmazonEC2]"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="AWSConsole7" border="0" alt="AWSConsole7" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/DotNetNukeintheCloudPart2AmazonEC2/65061579/AWSConsole7_thumb.png" width="644" height="484" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The important information in this screen is the Public DNS – this is the DNS mapping of your new instance (ec2-174-129-147-158.compute-1.amazonaws.com).&amp;#160; The important thing to note here is that the DNS mapping will be different every time you launch an instance.&lt;/p&gt;  &lt;p&gt;Now our instance is running, the next step is to set up DotNetNuke to run on our instance and to configure our own custom AMI.&amp;#160; I will describe this in the Part 3 of this series.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/szFpbR_JOXA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/szFpbR_JOXA/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/DotNetNuke-in-the-Cloud-Part-2-Amazon-EC2-Creating-an-Instance.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=9fdd3c16-18c9-4a9d-b098-29245e676252</guid>
      <pubDate>Tue, 06 Oct 2009 20:49:08 -0700</pubDate>
      <category>DotNetNuke</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=9fdd3c16-18c9-4a9d-b098-29245e676252</pingback:target>
      <slash:comments>10</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=9fdd3c16-18c9-4a9d-b098-29245e676252</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/DotNetNuke-in-the-Cloud-Part-2-Amazon-EC2-Creating-an-Instance.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=9fdd3c16-18c9-4a9d-b098-29245e676252</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=9fdd3c16-18c9-4a9d-b098-29245e676252</feedburner:origLink></item>
    <item>
      <title>DotNetNuke in the Cloud – Part 1, Introduction</title>
      <description>&lt;p&gt;The “Cloud” or “Cloud Computing” has become rather a buzzword for the future of of computing.&amp;#160; But what is it, and where does DotNetNuke fit in this “Brave New World”.&amp;#160; &lt;/p&gt;  &lt;p&gt;This article is the first in a series of blogs I will be writing as I dive into this exciting area and I will be speaking on this topic at the upcoming Open Force conferences in &lt;a href="http://www.sdc.nl/Home/OpenForce09/tabid/64/language/en-US/Default.aspx"&gt;Europe&lt;/a&gt; and in &lt;a href="http://www.devconnections.com/openforce/"&gt;Las Vegas&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;h2&gt;What is Cloud Computing&lt;/h2&gt;  &lt;p&gt;Cloud computing is defined in &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;Wikipaedia&lt;/a&gt; as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Cloud computing is an example of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The concept generally includes combinations of the following services:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h3&gt;Infrastructure as a Service (IaaS)&lt;/h3&gt; delivery of computer infrastructure (usually using virtualization).&amp;#160; Rather than purchasing servers, software and data centre space, client instead purchase these resources as a service, based on how much computing power is used, much like other utility services such as cable or telephone service.&amp;#160; Examples of Infracstructre as a Service include Amazon EC2 and Rackspace Cloud &lt;/li&gt;    &lt;li&gt;     &lt;h3&gt;Platform as a Service (PaaS)&lt;/h3&gt; delivery of a computing platform or API, which facilitates the deployment of applications, without the complexity of purcahsing the hardware needed.&amp;#160; Examples of Platform as a Service include Windows Azure and Google App Engine. &lt;/li&gt;    &lt;li&gt;     &lt;h3&gt;Software as a Service (SaaS)&lt;/h3&gt; delivery of a software package, whereby a provider licenses an application for use as service on demand.&amp;#160; An Example of Software as a Service is Salesforce.com. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As you can see there is a common thread in these three major pillars of Cloud Computing -Cloud computing customers do not generally own the physical infrastructure serving as host to the software platform in question.&amp;#160; Cloud computing customers consume resources as a service and pay only for those resources that they consume.&amp;#160; &lt;/p&gt;  &lt;p&gt;In theory, by sharing the “physical” hardware resources with many other users (multiple tenants) means that cloud services are typically cheaper than building and operating the infrastructure yourself.&amp;#160; This is certainly true with regard to up-front capital costs and less true for operating costs, but the economic model provides clients with the flexibility to scale as necessary.&lt;/p&gt;  &lt;h2&gt;Examples of Cloud Computing&lt;/h2&gt;  &lt;p&gt;Basically you can divide the types of Cloud services into 5 categories.&lt;/p&gt;  &lt;h3&gt;Infrastructure&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Amazon Elastic Cloud Computing (EC2) &lt;/li&gt;    &lt;li&gt;Rackspace Cloud Servers &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Storage&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Amazon Simple Storage Service (S3) &lt;/li&gt;    &lt;li&gt;Rackspace Cloud Files &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Platform&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Windows Azure &lt;/li&gt;    &lt;li&gt;Google AppEngine &lt;/li&gt;    &lt;li&gt;Rackspace Cloud Sites &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Applications&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Salesforce.com &lt;/li&gt;    &lt;li&gt;Twitter &lt;/li&gt;    &lt;li&gt;BitTorrent &lt;/li&gt;    &lt;li&gt;Skype &lt;/li&gt;    &lt;li&gt;Berkeley Open Infrastructure for Network Computing eg. SETI @ Home &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Services&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Identitiy – oAuth, OpenID, LiveID &lt;/li&gt;    &lt;li&gt;Mapping – Google Maps, Live Maps &lt;/li&gt;    &lt;li&gt;Payments – Paypal, Google Checkout &lt;/li&gt;    &lt;li&gt;Search &lt;/li&gt;    &lt;li&gt;Videos – YouTube &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In the next part of this series I will start by exploring Infrastructure services by looking at using Amazon EC2 to host a DotNetNuke application.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/VrLDkEjhI2I" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/VrLDkEjhI2I/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/DotNetNuke-in-the-Cloud-Part-1-Introduction.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=7d099337-1338-4e21-a885-e7da18398495</guid>
      <pubDate>Mon, 05 Oct 2009 21:40:43 -0700</pubDate>
      <category>DotNetNuke</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=7d099337-1338-4e21-a885-e7da18398495</pingback:target>
      <slash:comments>9</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=7d099337-1338-4e21-a885-e7da18398495</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/DotNetNuke-in-the-Cloud-Part-1-Introduction.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=7d099337-1338-4e21-a885-e7da18398495</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=7d099337-1338-4e21-a885-e7da18398495</feedburner:origLink></item>
    <item>
      <title>Nurse Family History – Colonel Abraham Taylor (Born ~1702)</title>
      <description>&lt;p&gt;In a previous &lt;a href="http://www.charlesnurse.com/post/Nurse-Family-History-Robert-Nurse-of-Hanham-1821.aspx"&gt;article&lt;/a&gt; in this blog series I described the life of Robert Nurse.&amp;#160; He married Ann Jane Taylor at St. Michael, Two Mile Hill on 30&lt;sup&gt;th&lt;/sup&gt; May 1854, two months after his father Robert Nurse died. [1]&lt;/p&gt;  &lt;p&gt;Ann Jane Taylor, Robert Nurse’s wife, was a descendent of John Taylor, the Landscape Painter. John Taylor's father, Abraham Taylor was a prosperous Philadelphia merchant and friend of Benjamin Franklin, before the American Revolution.&amp;#160; He was my 6th great grandfather.&lt;/p&gt;  &lt;p&gt;It is through the Taylors that the Nurse family is linked to the Gordons of Philadelphia, Pennsylvania- a junior branch of the Scottish Gordon clan, and the Luther family of Kelvedon Hatch, Essex, an important family of that county.[2]&lt;/p&gt;  &lt;p&gt;Burke's Commoners states that Colonel Abraham Taylor “was the lineal descendent of George Taylor esq. of Derbyshire”. George Taylor was a magistrate for the county of Derbyshire and an East India merchant. However, no other information is given concerning the ancestry of Colonel Taylor.&lt;/p&gt;  &lt;p&gt;Abraham was born in 1702 or 1703 in England, and immigrated to Philadelphia, Pennsylvania from Bristol, entering into partnership in 1724 with John White as “Merchant-Adventurer&amp;quot; in the North Atlantic trade.&lt;a name="_Ref327977741"&gt;&lt;/a&gt;[3]&lt;/p&gt;  &lt;p&gt;The business was very profitable but in 1741, White, wishing to return to England sold his interest to Taylor for £7000 sterling.[4]&lt;/p&gt;  &lt;p&gt;After John White had returned to England and established himself first at Bristol and afterwards, when he retired, at Croydon, Surrey, Abram maintained communications with his erstwhile partner and friend. In these letters there are a couple of references to the Swifts, who were the in-laws of John White. [5] In 1737 or 1738 John Swift had sent his children to Philadelphia and had then returned leaving them in the care of their maternal uncle, John White. When John White returned to England he left his nephews and nieces in the care of his partner and friend.&lt;/p&gt;  &lt;p&gt;Abram Taylor moved freely in the colony's high society, aided no doubt by his wealth, but also by his marriage in 1733 to Philadelphia Gordon, daughter of Major General Patrick Gordon [6], Deputy Governor and effective head of the Province of Pennsylvania from 1726 until his death in 1736.&lt;/p&gt;  &lt;p&gt;Burke, [7] states that Philadelphia Gordon was the only surviving child of Governor Patrick Gordon, but Keith [5] mentions that in 1726, when Patrick Gordon arrived to take up the governorship, he brought “five of at least six children then living” with him to Philadelphia. I have a copy of Governor Gordon’s Will and Administration, in which 6 Gordons are mentioned by name, Captain Charles Gordon, Archibald Gordon, Elizabeth Gordon, Henrietta Gordon, the wife of Robert Charles, Agatha Harriet Gordon and Philadelphia Gordon, wife of Abraham Taylor. It is not expressly stated that they are all children although both Robert Charles and Abraham Taylor are referred to as “my son”.&lt;/p&gt;  &lt;p&gt;During his life, Abraham Taylor was to play a considerable role in the life of the colony and in particular the city of Philadelphia. At the time of the dissolution of his partnership with John White he was a member of the City Corporation, and on December 29, 1741, qualified as a member of the Governor’s Council, although he apparently looked forward to an early departure from the colony, complaining that its climate was ill suited to his constitution, and the place afforded “little of what is either entertaining or amusing”.&lt;/p&gt;  &lt;p&gt;In the latter half of 1744, the position of collector of the Customs became vacant by the death of Mr. Alexander and having a deputation from Grosvenor Bedford Esq. (the titular Collector of Customs) he assumed the duties, “rather than a friend should suffer by the office being depreciated and undervalued since the commencement of the French War.” He held the position for most of the next 15 years [8].&lt;/p&gt;  &lt;p&gt;In 1745 he was elected Mayor of Philadelphia, although he declined to serve his term, and was subsequently fined. He was one of the most active Councillors when, under Palmer’s presidency, the Council acted as Governor of the Province.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 1 – The Family of Abraham and Philadelphia Taylor&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/NurseFamilyHistoryColonelAbrahamTaylor/0B865CA2/AbrahamPhiladelphiaTaylor.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="AbrahamPhiladelphiaTaylor" border="0" alt="AbrahamPhiladelphiaTaylor" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/NurseFamilyHistoryColonelAbrahamTaylor/6A92E9FA/AbrahamPhiladelphiaTaylor_thumb.png" width="548" height="216" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Through these activities he formed a strong and lasting relationship with Benjamin Franklin. He was made colonel of the regiment of Associates for Defence that Franklin formed during the latter part of 1747 for the protection of Philadelphia during the Seven Years War,[9] he was a member of the subscription Library that Franklin founded with others in 1731[10] and he was one of the original trustees of the Academy, now the University of Pennsylvania, which was established by Franklin and some friends in 1750-1751.[11]&lt;/p&gt;  &lt;p&gt;Abraham and Philadelphia Taylor had at least three children, one son and two daughters, as their baptisms are documented in the baptismal records of Christ Church, Philadelphia.[12]&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="300"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="298"&gt;         &lt;h6&gt;Figure 2 – Christ Church Philadelphia&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="298"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/NurseFamilyHistoryColonelAbrahamTaylor/30A3A70E/ChristChurchPhiladelphia.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="ChristChurchPhiladelphia" border="0" alt="ChristChurchPhiladelphia" src="http://www.charlesnurse.com/image.axd?picture=WindowsLiveWriter/NurseFamilyHistoryColonelAbrahamTaylor/07B89205/ChristChurchPhiladelphia_thumb.png" width="179" height="244" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Both daughters died during childhood, Isabella before her first birthday and Jane at the age of four, their burials also being recorded in the records of Christ Church. However, their son John survived to become quite a well-known Landscape Painter.&lt;a name="Marks"&gt;&lt;/a&gt;[13]&lt;/p&gt;  &lt;p&gt;In the early 1750’s Abraham Taylor was in dispute with the Proprietaries (the descendents of William Penn, the founder of Pennsylvania) over some land, which he had obtained, when he had dissolved his partnership with John White.[14]&lt;/p&gt;  &lt;p&gt;White had purchased 2147 acres from the Crispin family. William Crispin had been one of the original Commissioners appointed by William Penn to represent him when the province of Pennsylvania was founded, and upon his death Penn gave 3000 acres to his seven children. In 1733, a warrant to White authorized him to locate his land where he found a desirable place.&lt;/p&gt;  &lt;p&gt;White had surveys made and patents were issued to him for 300 acres adjoining Richard Penn’s Manor. Later, for some unexplained reason, the Proprietaries granted the 300-acre tract to Peter Klop, Conrad Sharp and Henry Sellars. White was on good terms with Thomas Penn and made an amicable arrangement with him that White should have 300 acres of as good land in some other place.&lt;/p&gt;  &lt;p&gt;When White and Taylor dissolved their partnership in 1741, the patent for this land fell to Abraham Taylor, as did a further 478 acres that White had purchased from the Crispin family. Taylor requested that the 300 acres as well as the 478 acres be located on a strip of land cut off from the manor of Andolhea, giving as his reason, that Conrad Weiser and Surveyor-General Parsons had assured him that he could get a good price for it. Thomas Penn refused to allow him to have more than the original 300 acres at that location, and Abraham Taylor refused to take any of it if he could not have it all there. This controversy went on for a number of years.&lt;/p&gt;  &lt;p&gt;Taylor went to London in 1750, with the intent of selling his right to the land. While there he presented an elaborate argument to show that the southern boundary of Pennsylvania should not be south of Latitude 40º, and that Virginia and Maryland had a right to all the land below this line. He threatened to give this information to the buyer.&lt;/p&gt;  &lt;p&gt;The Proprietaries declared this a dishonest attempt to force them to accede to Abraham’s wishes and wrote to Lieutenant-Governor Hamilton, ordering him to strike Taylor’s name from the list of the Council and to be deprived of all powers in the provincial government.&lt;/p&gt;  &lt;p&gt;The Proprietaries had also discovered that Taylor had signed an agreement with Lord Baltimore to the effect that if the information to be furnished by Taylor was sufficient to establish Maryland’s territorial claims, he was to receive one-seventh of all the land thus recovered from Pennsylvania or equivalent compensation. Although the Proprietaries’ letter was to be forwarded to the City Corporation, Taylor continued as one of its members from his return to Philadelphia until his final departure from the Province.&lt;/p&gt;  &lt;p&gt;On July 1st 1762, Abraham Taylor was guest of honour at a dinner arranged by more than a hundred of the most prominent residents of Philadelphia.[15] Soon afterward he returned &amp;quot;home&amp;quot; to England, like many others who had prospered in the North Atlantic trade. By this time, he was quite a wealthy man, and he settled down in Bath to live out his remaining years as the gentleman of means, he had become. The family occupied a townhouse in the Circus, which at that time was still under construction.&lt;/p&gt;  &lt;p&gt;In 1765, the long drawn out controversy over Taylor’s 778 acres was finally settled. That year Penn agreed that Taylor should have the entire 778 acres where he had first requested it, but now Taylor refused to accept it and demanded money with interest. Two years more went by and the Proprietary, weary of the struggle finally capitulated and agreed to pay Taylor the sum of £788 4sh., for the 778 acres, and the long dispute was over.&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Within 10 years of the family's return to England Abraham Taylor was dead.[16] His estate with the exception of a small annuity for his wife, passed to his son.&lt;a name="_Ref327974611"&gt;&lt;/a&gt;[17][18] Although, he had suffered some financial setbacks after his return to England, his estates were still considerable. &lt;/p&gt;  &lt;p&gt;Thus, his son John Taylor was a man of sufficient substance that he was able to continue his life as the amateur gentlemen artist, without any financial worries.&lt;/p&gt;  &lt;hr width="95%" /&gt;  &lt;h2&gt;Bibliography and Notes&lt;/h2&gt;  &lt;p&gt;&lt;a href="#_ftnref1_4089" name="_ftn1_4089"&gt;[1]&lt;/a&gt; I have a copy of the Marriage Certificate for Robert and Ann. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref1_4089" name="_ftn1_4089"&gt;[2]&lt;/a&gt; I will go into more detail on the Luther, Taylor and Gordon history in future blog articles.&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref1" name="_edn1"&gt;[3]&lt;/a&gt; &lt;i&gt;The Provincial Councillors of Pennsylvania&lt;/i&gt;,&lt;i&gt; 1733-1776&lt;/i&gt;, Charles P. Keith, Philadelphia, 1863, p219. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref1_6001" name="_ftn1_6001"&gt;[4]&lt;/a&gt; In a deed, dated at Philadelphia the 27th day of July, 1741, John White of the City of Philadelphia Merchant of the first and Abram Taylor of the said City Merchant of the second part agreed “WHEREAS, a copartnership and Joint-trade was entered into by and between the said parties to these presents in the year of our Lord 1724 as Merchant Adventurers, which they, the said parties, have ever since until the date hereof carried on by the name and title of White and Taylor, ..... And the said John White being minded shortly to remove out of the said Province into the part of Great Britain,” &amp;amp;c., &amp;amp;. John White for a consideration of £7000 stirling conveyed to Abram Taylor all his rights &amp;amp;c. to all lands goods &amp;amp;c. purchased with funds arising from his said copartnership.     &lt;br /&gt;Recorder of Deeds, Philadelphia, “Book G 2” page 463.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;i&gt;The Swift Family of Philadelphia&lt;/i&gt;, Thomas Willing Balch, Pennsylvania Magazine of History, XXX, (1906), 129 &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref2_6001" name="_ftn2_6001"&gt;[5]&lt;/a&gt; Extracts from letters of Abram Taylor to John White &lt;/p&gt;  &lt;p&gt;Oct 20, 1741 to John White at Bristol: “Everything here is just as it used to be at this season of the year and the generality appear much the same as when you left us. But to one who has parted with an acquaintance, with whom he has had the strictest Intimacy, and the most sincere Friendship for so great a number of years, things appear with a different face. Pray remember us all in the kindest manner to Jack Swift.” &lt;/p&gt;  &lt;p&gt;Oct 30, 1741 to John White at Bristol: “Thank God we are at present, well, which I know will give you pleasure to hear, as I assure you, it would afford the greatest to me to have the same account from you and that your voyage has been agreeable to you.” &lt;/p&gt;  &lt;p&gt;Aug 11, 1744 to John White, in London: Dear Sir. My last was by Peter Reeve, wherein I inclosed you a bill of Lading for Pistoles and 8/8 to the value of about four hundred pounds, but to my great mortification I hear he is since taken by the French. This is not so great a loss but it might be bourne, had not a much greater immediately succeeded; two days after that bad news, the Tartar, a Privateer, a fine new ship in which I was interested 3/20ths overset in Our Bay, and is irrecoverably lost, together with eighty odd men who were all drowned, and upwards of a thousand pounds of mine along with her. &lt;/p&gt;  &lt;p&gt;Mr Allen has just buried a fine child, which is a loss that sits very heavy upon him, and has prevented my knowing his thought about the proposal of selling your Land to him. &lt;/p&gt;  &lt;p&gt;I have spoke to Mr. Peters about the Land in Right of Samuel Lee, and will take care to do what is necessary in it, of which I will write in my next, for at this time, I am too much mortified to say any thing more, except that I am Messrs Swifts and Dear Sir, Your most affectionate humble servant, Abram Taylor . &lt;/p&gt;  &lt;p&gt;Pennsylvania Magazine of History and Biography, XXVII, (1903), p125 &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref4" name="_edn4"&gt;[6]&lt;/a&gt; &lt;i&gt;Chronicles of Pennsylvania&lt;/i&gt;, vol II, Charles P. Keith, Philadelphia, 1917, p686. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref4" name="_edn4"&gt;[7]&lt;/a&gt; Burke's Commoners of England and Wales, Vol 4., p7.. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref5" name="_edn5"&gt;[8]&lt;/a&gt; Pennsylvania Magazine of History and Biography, XXV, (1901), p576. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref6" name="_edn6"&gt;[9]&lt;/a&gt; &lt;i&gt;The Pennsylvania Men of the American Regiment&lt;/i&gt;, William A. Foote, Pennsylvania Magazine of History and Biography, LXXXVII, (1963), p35. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref7" name="_edn7"&gt;[10]&lt;/a&gt; &lt;i&gt;John Dickinson, Historical Revolutionary&lt;/i&gt;, H. Trevor Colbourn, Pennsylvania Magazine of History and Biography, LXXXIII, (1959), p278. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref8" name="_edn8"&gt;[11]&lt;/a&gt; &lt;i&gt;The Papers of Benjamin Franklin&lt;/i&gt;,&amp;quot; Leonard W. Larabee, ed. III, pp. 422ff.; V, pp. 8ff., 437, 513; VI, pp. 29ff., 71ff. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref9" name="_edn9"&gt;[12]&lt;/a&gt; &amp;quot;&lt;i&gt;Records of Christ Church, Philadelphia, Baptisms, 1709-1760&lt;/i&gt;,&amp;quot; Charles R. Hildeburn, Pennsylvania Magazine of History and Biography, XVII, (1893), p357. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref10" name="_edn10"&gt;[13]&lt;/a&gt; &lt;i&gt;An Eighteenth-Century American Landscape Painter Rediscovered&lt;/i&gt;: John Taylor of Bath, A. S. Marks, The American Art Journal, Nov 1978, pp. 81ff. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref11" name="_edn11"&gt;[14]&lt;/a&gt; &lt;i&gt;Richard Penn’s Manor of Andolhea&lt;/i&gt;, George Wheeler, Pennsylvania Magazine of History and Biography, LVII, (1934), p209. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref3_6001" name="_ftn3_6001"&gt;[15]&lt;/a&gt; In an except from the Pennsylvania Gazette “An elegant Entertainment was prepared in the State House by a number of the principal Gentlemen of this City to bid adieu and to take their final farewell of Abraham Taylor Esq. late one of the Council; an Alderman of the City, and Deputy Collector of Customs in this Port, now going to reside in England. Upwards of One Hundred Gentlemen attended.” &lt;sup&gt;2&lt;/sup&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref12" name="_edn12"&gt;[16]&lt;/a&gt; Obituary in &lt;i&gt;The Bath Chronicle&lt;/i&gt;, February 27, 1772. &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref13" name="_edn13"&gt;[17]&lt;/a&gt; The Will of Abraham Taylor, dated 10 Mar 1772; Consistory Court of Canterbury Wills, Public Record Office. (see Appendix A on Page 64) &lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref14" name="_edn14"&gt;[18]&lt;/a&gt; Pennsylvania Magazine of History and Biography, XXXI, (1907), pp. 480ff.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/ky3mTe150fk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/ky3mTe150fk/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/Nurse-Family-History-Abraham-Taylor-1702.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=a726bdb3-06a6-48d4-b183-20d30abcef4b</guid>
      <pubDate>Sat, 01 Aug 2009 20:46:16 -0700</pubDate>
      <category>Genealogy</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=a726bdb3-06a6-48d4-b183-20d30abcef4b</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=a726bdb3-06a6-48d4-b183-20d30abcef4b</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/Nurse-Family-History-Abraham-Taylor-1702.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=a726bdb3-06a6-48d4-b183-20d30abcef4b</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=a726bdb3-06a6-48d4-b183-20d30abcef4b</feedburner:origLink></item>
    <item>
      <title>DotNetNuke Community Edition in the New Web Application Gallery</title>
      <description>&lt;p&gt;Today (March 18th, 2009) during the keynote at MIX 09, Scott Guthrie announced the release of version 2 of the Web Platform Installer (WPI) and the release of the new &lt;a href="http://www.microsoft.com/web"&gt;Web Application Gallery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Bill Staples, the Program Manager responsible for the Web Application Gallery described it as an “App Store for the Web”.&amp;#160; I am pleased to say that DotNetNuke Community Edition is part of this initiative and that Bill Staples used DotNetNuke as his demonstration install during the keynote.&lt;/p&gt;  &lt;p&gt;If you want to download and try DotNetNuke Community Edition you can install it from the Web Application Gallery by clicking the image below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/web/gallery/install.aspx?appsxml=www.microsoft.com%2fweb%2fwebpi%2f2.0%2fWebApplicationList.xml&amp;amp;appid=106"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="wpiBadgeGreen_3" border="0" alt="wpiBadgeGreen_3" src="http://www.charlesnurse.com/image.axd?picture=wpiBadgeGreen_3.png" width="180" height="55" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;The Installation Experience&lt;/h2&gt;  &lt;p&gt;When you click on the install link, you will get a popup (in Firefox 3) that confirms which program you want to use to run the installer.&amp;#160; In my case I already have the Web Platform Installer on my machine.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_1.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebAppGallery_1" border="0" alt="WebAppGallery_1" src="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_1_thumb.png" width="335" height="358" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The Installer will launch and you will get the following screen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebAppGallery_2" border="0" alt="WebAppGallery_2" src="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_2_thumb.png" width="704" height="520" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking on Install will download the application (in the case of DotNetNuke it will download from Codeplex) and display the following screen, where you can provide an “Application Name” – the default is dotnetnuke.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_3.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebAppGallery_3" border="0" alt="WebAppGallery_3" src="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_3_thumb.png" width="702" height="516" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The second page allows the user to configure the database.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_4.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebAppGallery_4" border="0" alt="WebAppGallery_4" src="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_4_thumb.png" width="697" height="805" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Clicking continue will set up IIS and SQL Server.&amp;#160; You will then see the final screen, which lets you know that the install was successful.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_5.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebAppGallery_5" border="0" alt="WebAppGallery_5" src="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_5_thumb.png" width="689" height="477" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finally clicking the link will automatically launch the DotNetNuke Install Wizard to complete the installation of your DotNetNuke Application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_6.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WebAppGallery_6" border="0" alt="WebAppGallery_6" src="http://www.charlesnurse.com/image.axd?picture=WebAppGallery_6_thumb.png" width="704" height="455" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Scott Hanselman has &lt;a href="http://www.hanselman.com/blog/MicrosoftWebPlatformWebApplicationGalleryWebPlatformInstallerAndDasBlog.aspx"&gt;blogged&lt;/a&gt; about the new installer, using Das Blog as the example.&amp;#160; He describes some of the technical details behind the installer.&amp;#160; In a future article I will describe the set up of the DotNetNuke package, which I created for this initiative.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/Xrabkhjeuj4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/Xrabkhjeuj4/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/DotNetNuke-Community-Edition-in-the-New-Web-Application-Gallery.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=fcb63b95-d478-4c87-84fa-ed7499b56a98</guid>
      <pubDate>Wed, 18 Mar 2009 10:38:51 -0700</pubDate>
      <category>DotNetNuke</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=fcb63b95-d478-4c87-84fa-ed7499b56a98</pingback:target>
      <slash:comments>9</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=fcb63b95-d478-4c87-84fa-ed7499b56a98</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/DotNetNuke-Community-Edition-in-the-New-Web-Application-Gallery.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=fcb63b95-d478-4c87-84fa-ed7499b56a98</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=fcb63b95-d478-4c87-84fa-ed7499b56a98</feedburner:origLink></item>
    <item>
      <title>The New Extension Installer Manifest – Part 6, The Script Component</title>
      <description>&lt;p&gt;In DotNetNuke v 4.6 a new installer system was introduced to handle the new Authentication Systems.&amp;#160; In DotNetNuke 5.0 we have extended the use of the Installer to all extensions, including Modules, Language Packs and Skins.&amp;#160; &lt;/p&gt;  &lt;p&gt;In previous blogs in this series I &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Manifest-Part1.aspx"&gt;introduced&lt;/a&gt; the new Extension Installer Manifest, and the &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Manifest-Part2.aspx"&gt;3 components&lt;/a&gt; that most developers would be fairly familiar with – Module, Assembly, File, as they are similar to the legacy module manifest, and I began to detail the individual component manifests by describing the &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-3-The-Cleanup-Component.aspx"&gt;Cleanup Component&lt;/a&gt; and the &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-4-The-Assembly-Component.aspx"&gt;Assembly Component&lt;/a&gt; and &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-5-The-File-Component.aspx"&gt;File Component&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In this article I will dive deeper into the Script Component (see Listing 1).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;h6&gt;Listing 1 - The Script Component manifest fragment from the BroadcastPollingCachingProvider&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;div class="csharpcode"&gt;           &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;component&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Script&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;scripts&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;basePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Providers/CachingProviders/BroadcastPollingCachingProvider&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;basePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Install&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &amp;lt;path&amp;gt;Install&amp;lt;/path&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;      &amp;lt;name&amp;gt;Install.SqlDataProvider&amp;lt;/name&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;      &amp;lt;version&amp;gt;05.00.00&amp;lt;/version&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &amp;lt;script type=&lt;span class="str"&gt;&amp;quot;UnInstall&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;      &amp;lt;path&amp;gt;UnInstall&amp;lt;/path&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;      &amp;lt;name&amp;gt;UnInstall.SqlDataProvider&amp;lt;/name&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;      &amp;lt;version&amp;gt;05.00.00&amp;lt;/version&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;scripts&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;component&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;The Script component is another Installer that inherits from the base File Component.&amp;#160; The &amp;lt;basePath&amp;gt; element identifies the root location for the Script.&amp;#160; It uses the &amp;lt;scripts&amp;gt; and &amp;lt;script&amp;gt; elements in place of the base class &amp;lt;files&amp;gt; and &amp;lt;file&amp;gt; element.&lt;/p&gt;

&lt;p&gt;Note that there a few enhancements (compared with the legacy Module Installer) in how scripts are handled.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Each script has a “type” attribute, which identifies whether the Script should be used in Install/Upgrade mode or is used 'in “UnInstall” mode&lt;/li&gt;

  &lt;li&gt;Each script has a required version element which identifies which version the script corresponds to.&amp;#160; This means that you no longer have to use the convention of naming the script with the version “xx.xx.xx.SqlDataProvider”.&amp;#160; ou can of course still use the legacy naming convention, but you are not required to.&lt;/li&gt;

  &lt;li&gt;The installer does support the “Install.SqlDataProvider” special script which is run first when installing an Extension.&lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/su2_UQGoaaU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/su2_UQGoaaU/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-6-The-Script-Component.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=df813b12-c747-4458-b8f0-9b98a03cb76f</guid>
      <pubDate>Fri, 27 Feb 2009 10:18:56 -0700</pubDate>
      <category>DotNetNuke</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=df813b12-c747-4458-b8f0-9b98a03cb76f</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=df813b12-c747-4458-b8f0-9b98a03cb76f</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-6-The-Script-Component.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=df813b12-c747-4458-b8f0-9b98a03cb76f</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=df813b12-c747-4458-b8f0-9b98a03cb76f</feedburner:origLink></item>
    <item>
      <title>Kudos to Dell</title>
      <description>&lt;p&gt;Last week my Dell XPS M1330 laptop died. &lt;/p&gt;  &lt;p&gt;After searching the internet I discovered that the problem was a faulty NVidea graphics card, which was quite a well-known problem.&amp;#160; &lt;/p&gt;  &lt;p&gt;On Thursday, I called Dell’s Canadian XPS Customer Support line and the representative immediately recognised the problem and arranged to have a box shipped to me so I could pack it up and send it to their Canadian Service Centre in Newmarket, Ontario.&lt;/p&gt;  &lt;p&gt;The box arrived Friday morning, and I packed the laptop into it and dropped it off at the local Purolator office in Langley.&lt;/p&gt;  &lt;p&gt;Yesterday, I was surprised when a Purolator delivery man knocked on my door with my laptop, and its running great now!!&lt;/p&gt;  &lt;p&gt;So Kudos to Dell, who expedited this repair taking 4 business days to ship a box 3 times across the country as well as repairing my computer.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/6oLbxD_dmk0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/6oLbxD_dmk0/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/Kudos-to-Dell.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=ba71a1f1-9b88-45d0-ad47-bb8eb713f178</guid>
      <pubDate>Thu, 26 Feb 2009 10:02:27 -0700</pubDate>
      <category>Personal</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=ba71a1f1-9b88-45d0-ad47-bb8eb713f178</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=ba71a1f1-9b88-45d0-ad47-bb8eb713f178</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/Kudos-to-Dell.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=ba71a1f1-9b88-45d0-ad47-bb8eb713f178</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=ba71a1f1-9b88-45d0-ad47-bb8eb713f178</feedburner:origLink></item>
    <item>
      <title>The New Extension Installer Manifest – Part 5, The File Component</title>
      <description>&lt;p&gt;In DotNetNuke v 4.6 a new installer system was introduced to handle the new Authentication Systems.&amp;#160; In DotNetNuke 5.0 we have extended the use of the Installer to all extensions, including Modules, Language Packs and Skins.&amp;#160; &lt;/p&gt;  &lt;p&gt;In previous blogs in this series I &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Manifest-Part1.aspx"&gt;introduced&lt;/a&gt; the new Extension Installer Manifest, and the &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Manifest-Part2.aspx"&gt;3 components&lt;/a&gt; that most developers would be fairly familiar with – Module, Assembly, File, as they are similar to the legacy module manifest, and I began to detail the individual component manifests by describing the &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-3-The-Cleanup-Component.aspx"&gt;Cleanup Component&lt;/a&gt; and the &lt;a href="http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-4-The-Assembly-Component.aspx"&gt;Assembly Component&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In this article I will dive deeper into the File Component (see Listing 1).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;h6&gt;Listing 1 - The File Component manifest fragment from the FileBasedCachingProvider&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;div class="csharpcode"&gt;           &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;component&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;File&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;files&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;basePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Providers\CachingProviders\FileBasedCachingProvider&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;basePath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &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;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &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;license.txt&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;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &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;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &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;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &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;releaseNotes.txt&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;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &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;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;files&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;component&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Most of the components which handle files inherit from the base File Component.&amp;#160; The &amp;lt;basePath&amp;gt; element is used to identify a base (or root) path for all the files identified.&amp;#160; Each &amp;lt;file&amp;gt; element has a &amp;lt;name&amp;gt; and &amp;lt;path&amp;gt; which is combined with this base path to identify the file completely.&amp;#160; The &amp;lt;file&amp;gt; element also has a &amp;lt;sourceFileName&amp;gt; element.&amp;#160; This is used to identify the file’s location within the zip file, if different from the file location in the destination.&lt;/p&gt;

&lt;p&gt;The component installers that inherit from the File Installer essentially have the same general structure – they use different names for the &amp;lt;file&amp;gt; and &amp;lt;files&amp;gt; nodes, but in most respects are the same.&amp;#160; They use the base class’s logic to manage the file copying etc. implementing only the custom behaviour they need.&lt;/p&gt;

&lt;p&gt;In addition to &amp;lt;name&amp;gt; and &amp;lt;path&amp;gt;, there are two other elements that are defined in File component but have no effect in the base class.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt; &amp;lt;action&amp;gt; is used by the Assembly Installer to determine whether the assembly should be added or removed&lt;/li&gt;

  &lt;li&gt;&amp;lt;version&amp;gt; is used by both the Assembly Installer and the Script Installer&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Backup and Restore&lt;/h3&gt;

&lt;p&gt;As the new Installer supports a limited rollback model, the File Installer will backup existing files before copying a new copy during Upgrade.&amp;#160; If there is a failure in some other component, the backups will be copied back to their original location, so the old version of the file is still present.&amp;#160; &lt;/p&gt;

&lt;p&gt;If the installation/upgrade is successful, during the commit phase the backup copy is deleted and the new file is used.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/HD-LnXleoO0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/HD-LnXleoO0/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-5-The-File-Component.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=0cd739e4-0b0b-4036-b9ea-919af3e55b0a</guid>
      <pubDate>Wed, 25 Feb 2009 11:15:50 -0700</pubDate>
      <category>DotNetNuke</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=0cd739e4-0b0b-4036-b9ea-919af3e55b0a</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=0cd739e4-0b0b-4036-b9ea-919af3e55b0a</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-5-The-File-Component.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=0cd739e4-0b0b-4036-b9ea-919af3e55b0a</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=0cd739e4-0b0b-4036-b9ea-919af3e55b0a</feedburner:origLink></item>
    <item>
      <title>The New Extension Installer Manifest – Part 4, The Assembly Component</title>
      <description>&lt;p&gt;In DotNetNuke v 4.6 a new installer system was introduced to handle the new Authentication Systems.&amp;#160; In DotNetNuke 5.0 we have extended the use of the Installer to all extensions, including Modules, Language Packs and Skins.&amp;#160; &lt;/p&gt;  &lt;p&gt;In previous blogs in this series I &lt;a href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryId/1847/The-New-Extension-Installer-Manifest-Part-1-Introduction.aspx"&gt;introduced&lt;/a&gt; the new Extension Installer Manifest, and the &lt;a href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryId/1848/The-New-Extension-Installer-Manifest-Part-2-Component-Installers.aspx"&gt;3 components&lt;/a&gt; that most developers would be fairly familiar with – Module, Assembly, File, as they are similar to the legacy module manifest, and I began to detail the individual component manifests by describing the &lt;a href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryId/1970/The-New-Extension-Installer-Manifest-Part-3-The-Cleanup-Component.aspx"&gt;Cleanup Component&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In this article I will dive deeper into the Assembly Component (see Listing 1).&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;h3&gt;Listing 1 - The Assembly Component manifest fragment from the FileBasedCachingProvider&lt;/h3&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;div class="csharpcode"&gt;           &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;component&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Assembly&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assembly&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;bin\Providers&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &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;DotNetNuke.Caching.FileBasedCachingProvider.dll&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;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &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;05.00.01&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;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;assembly&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;assemblies&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;component&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Most of the components which handle files inherit from the base File Component, and so the Assembly Component has a &amp;lt;path&amp;gt; element and a &amp;lt;file&amp;gt; element.&amp;#160; The element name for the collection is &amp;lt;assemblies&amp;gt; rather than &amp;lt;files&amp;gt; and the element name for a single assembly is &amp;lt;assembly&amp;gt; rather than &amp;lt;file&amp;gt;,&amp;#160; but in code the actual copying of the file is handled by the base FileInstaller.&lt;/p&gt;

&lt;p&gt;While the &amp;lt;version&amp;gt; element is defined for the File Component it is not really used for standard files.&amp;#160; However the version element is important for assemblies.&lt;/p&gt;

&lt;h3&gt;Registering Assemblies&lt;/h3&gt;

&lt;p&gt;One of the problems with earlier versions of DotNetNuke is in handling assembly versioning.&amp;#160; Each module, when installed just extracts its assemblies and copies them to the /bin folder, regardless of whether an existing version of the assembly is already in use.&amp;#160; &lt;/p&gt;

&lt;p&gt;This makes life difficult, if module developers use 3rd party libraries of any kind – either their own shared code or controls from commercial vendors.&amp;#160; For example, if Module A uses Assembly A version 1 (Assembly A1) and Module B uses Assembly A version 2 (Assembly A2), then if Module A is installed after Module B it could break Module B as the older version (A1) is installed over the version Module B expects (A2).&lt;/p&gt;

&lt;p&gt;Conversely, on uninstall, Module A will remove the associated assembly, which will again break Module B.&lt;/p&gt;

&lt;p&gt;This situation is solved in the new Installer, by using the &amp;lt;version&amp;gt; element and by using assembly referencing.&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top"&gt;
        &lt;h3&gt;Listing 2 – The InstallFile method of the AssemblyInstaller&lt;/h3&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; InstallFile(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; file &lt;span class="kwrd"&gt;As&lt;/span&gt; InstallFile) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; bSuccess &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; file.Action = &lt;span class="str"&gt;&amp;quot;UnRegister&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        DeleteFile(file)&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="rem"&gt;'Attempt to register assembly this will return False if the assembly exists&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;'and true if it does not or is older&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; returnCode &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = DataProvider.Instance.RegisterAssembly(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.Package.PackageID, &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                                                         file.Name, file.Version.ToString(3))&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; returnCode&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Case&lt;/span&gt; 0&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                &lt;span class="rem"&gt;'Assembly Does Not Exist&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                Log.AddInfo(Util.ASSEMBLY_Added + &lt;span class="str"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + file.FullName)&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Case&lt;/span&gt; 1&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                &lt;span class="rem"&gt;'Older version of Assembly Exists&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                Log.AddInfo(Util.ASSEMBLY_Updated + &lt;span class="str"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + file.FullName)&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Case&lt;/span&gt; 2, 3&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                &lt;span class="rem"&gt;'Assembly already Registered&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                Log.AddInfo(Util.ASSEMBLY_Registered + &lt;span class="str"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + file.FullName)&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="rem"&gt;'If assembly not registered, is newer (or is the same version and we are in repair mode)&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; returnCode &amp;lt; 2 &lt;span class="kwrd"&gt;OrElse&lt;/span&gt; (returnCode = 2 &lt;span class="kwrd"&gt;AndAlso&lt;/span&gt; file.InstallerInfo.RepairInstall) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="rem"&gt;'Call base class version to copy file to \bin&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            bSuccess = &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.InstallFile(file)&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Return&lt;/span&gt; bSuccess&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;The AssemblyInstaller overrides the InstallFile method of the base FileComponent (it also overrides the DeleteFile method – see later), and before copying the file into the /bin folder, it registers the assembly in the database (see Listing 2).&amp;#160; The RegisterAssembly method checks if the assembly is already registered by another extension and returns one of 4 return Codes.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;0 – Assembly does not exist &lt;/li&gt;

  &lt;li&gt;1 – An older version of the assembly exists &lt;/li&gt;

  &lt;li&gt;2 – The same version of the assembly exists &lt;/li&gt;

  &lt;li&gt;3 – A newer version of the assembly exists &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the return code is 0 or 1 then the file is copied (as the assembly does not exist or is older than the current version) by calling the base FileInstaller class’s InstallFile method.&amp;#160; If the return code is 2 the assembly is only copied if we are repairing the install, and if the return code is 3 the assembly is not copied as it could potentially break another extension that is already installed.&lt;/p&gt;

&lt;p&gt;The RegisterAssemby method adds an entry into the Assemblies table, recording the PackageID of the Extension which registered the assembly.&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2" width="600"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="600"&gt;
        &lt;h3&gt;Figure 1 – The Assemblies Table&lt;/h3&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top" width="600"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Assemblies_Table" border="0" alt="Assemblies_Table" src="http://www.charlesnurse.com/image.axd?picture=Assemblies_Table.png" width="541" height="449" /&gt; &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;h3&gt;&amp;#160;&lt;/h3&gt;

&lt;h3&gt;UnRegistering Assemblies&lt;/h3&gt;

&lt;p&gt;On uninstall the reverse process happens.&amp;#160; As mentioned above, the AssemblyInstaller also overrides the base FileInstaller’s DeleteFile method.&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top"&gt;
        &lt;h3&gt;Listing 3 – The DeleteFile method of the AssemblyInstaller&lt;/h3&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td valign="top"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; DeleteFile(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; file &lt;span class="kwrd"&gt;As&lt;/span&gt; InstallFile)&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="rem"&gt;'Attempt to unregister assembly this will return False if the &lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="rem"&gt;'assembly is used by another package and cannot be delete and&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="rem"&gt;'true if it is not being used and can be deleted&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; DataProvider.Instance.UnRegisterAssembly(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.Package.PackageID, file.Name) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        Log.AddInfo(Util.ASSEMBLY_UnRegistered + &lt;span class="str"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + file.FullName)&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="rem"&gt;'Call base class version to deleteFile file from \bin&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.DeleteFile(file)&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        Log.AddInfo(Util.ASSEMBLY_InUse + &lt;span class="str"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + file.FullName)&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;In the DeleteFile method (see Listing 3), the UnRegisterAssembly method is called.&amp;#160; This method removes the record from the assemblies table and returns a boolean value:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;true – the registration was the only registration for this assembly and the assembly can be safely deleted &lt;/li&gt;

  &lt;li&gt;false – there are other extensions which still require the assembly and the assembly should not be deleted &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the result of this is that, by using assembly counting, we can improve the situation where shared assemblies are being used.&amp;#160; The only remaining case which could break Extensions is if a shared assembly does not retain binary compatibility in newer versions.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/dz54cc5M3xE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/dz54cc5M3xE/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-4-Assembly-Component.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=ef440612-1210-4fa9-96d6-c635365998e1</guid>
      <pubDate>Wed, 11 Feb 2009 09:14:37 -0700</pubDate>
      <category>DotNetNuke</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=ef440612-1210-4fa9-96d6-c635365998e1</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=ef440612-1210-4fa9-96d6-c635365998e1</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/The-New-Extension-Installer-Manifest-Part-4-Assembly-Component.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=ef440612-1210-4fa9-96d6-c635365998e1</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=ef440612-1210-4fa9-96d6-c635365998e1</feedburner:origLink></item>
    <item>
      <title>Nurse Family History – Samuel Nurse of Hanham (Born 1809)</title>
      <description>&lt;p&gt;In the previous &lt;a href="http://www.charlesnurse.com/post/Nurse-Family-History-Robert-Nurse-of-Hanham-1821.aspx"&gt;article&lt;/a&gt; in this blog series I described the life of Robert Nurse (my great-great-grandfather).&amp;#160; Robert was the youngest child and his older brother Samuel, was also my great-great-grandfather, as Robert’s son Robert Francis Nurse married Samuel’s daughter Sarah Elizabeth Nurse.&lt;/p&gt;  &lt;p&gt;Samuel married Dinah Willis on Christmas Day 1848.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="700"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="326"&gt;         &lt;h6&gt;Figure 1 – Samuel Nurse (c 1860)&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="15"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="357"&gt;         &lt;h6&gt;Figure 2 – Dinah Nurse&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="325"&gt;&lt;a href="http://www.charlesnurse.com/image.axd?picture=SamuelNc1860.jpg" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Samuel N c1860" border="0" alt="Samuel N c1860" src="http://www.charlesnurse.com/image.axd?picture=SamuelNc1860_thumb.jpg" width="312" height="484" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="15"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="357"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Dinah Nurse c 1870" border="0" alt="Dinah Nurse c 1870" src="http://www.charlesnurse.com/image.axd?picture=DinahNursec1870.jpg" width="345" height="484" /&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Dinah was the eldest of six children (5 daughters and one son) of Robert Willis and Dinah Leonard.[1],[2]&lt;/p&gt;  &lt;p&gt;Willis [3] is quite a popular name in Hanham, most of the Willises being labourers or quarrymen. [5] Robert however, was quite well off, being classified, as a Yeoman in both the 1851 and 1861 [5], [6], [7] censuses and his will,[8] where he leaves most of his estate to his daughter Dinah Willis, Samuel Nurse’s wife.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="400"&gt;         &lt;h6&gt;Figure 3 – The Family of Samuel and Dinah Nurse&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="400"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SamuelDinahNurse" border="0" alt="SamuelDinahNurse" src="http://www.charlesnurse.com/image.axd?picture=SamuelDinahNurse.png" width="513" height="331" /&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;While both Samuel and his brother Robert had inherited the family malting business, it was Samuel who operated the business. Samuel and Dinah had three children a boy Robert Willis and two daughters Sarah Elizabeth and Frances Willis.&lt;/p&gt;  &lt;hr width="95%" /&gt;  &lt;h2&gt;Bibliography and Notes&lt;/h2&gt;  &lt;p&gt;&lt;a href="#_ednref1" name="_edn1"&gt;[1]&lt;/a&gt; Personal Notes of William Richmond Nurse, 1882-1937.&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref2" name="_edn2"&gt;[2]&lt;/a&gt; Parish Register of St. Nicholas Church, City of Bristol, 1754-1812. Microfiched by the Bristol Record Office, Bristol.&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ftnref1_9075" name="_ftn1_9075"&gt;[3]&lt;/a&gt; Due to the number of Willis families in the Hanham/Bitton area it has proven quite difficult to trace the Willis line back very far. Robert Willis and Dinah Leonard were married 24 Jun 1810 at St. Nicholas Church in the city of Bristol.&lt;/p&gt;  &lt;p&gt;Robert, born 28 Feb 1777, was the one of eleven children (6 boys and 5 girls) of Samuel Willis and Sarah Rawbone, who were married on 1 May 1774 at St. Mary, Bitton. [4]&lt;/p&gt;  &lt;p&gt;Samuel Willis was the son of Thomas Willis and Elizabeth Hicks and Sarah Rawbone was the daughter of John and Jane Rawbone (and the sister of Betty Rawbone who married John Couch and was the mother of Salley Couch).&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref1" name="_edn1"&gt;[4]&lt;/a&gt; Parish Register for the Parish of St. Mary, Bitton, including the chapelries of Hanham and Oldland, 1571 - 1934. Microfiched by the Bristol Record Office, Bristol.&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref1" name="_edn1"&gt;[5]&lt;/a&gt; 1851 National Census. Microfiche copy held at the Bristol Reference Library.&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref1" name="_edn1"&gt;[6]&lt;/a&gt; 1841 National Census. Microfiche copy held at the Bristol Reference Library.&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref1" name="_edn1"&gt;[7]&lt;/a&gt; 1861 National Census. Microfiche copy held at the Bristol Reference Library.&lt;/p&gt;  &lt;p&gt;&lt;a href="#_ednref3" name="_edn3"&gt;[8]&lt;/a&gt; The Will of Robert Willis, dated 19 Jun 1863; Bristol Wills, vol. 26, Bristol Record Office.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/OrkZvTAK5AE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/OrkZvTAK5AE/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/Nurse-Family-History-Samuel-Nurse-of-Hanham-Born-1809.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=db403767-8f2c-478c-b380-b12d60d14d52</guid>
      <pubDate>Tue, 10 Feb 2009 07:20:42 -0700</pubDate>
      <category>Genealogy</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=db403767-8f2c-478c-b380-b12d60d14d52</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=db403767-8f2c-478c-b380-b12d60d14d52</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/Nurse-Family-History-Samuel-Nurse-of-Hanham-Born-1809.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=db403767-8f2c-478c-b380-b12d60d14d52</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=db403767-8f2c-478c-b380-b12d60d14d52</feedburner:origLink></item>
    <item>
      <title>Back Again</title>
      <description>&lt;p&gt;I was checking this blog yesterday, and I realized that I haven’t posted a single blog in 2009.&lt;/p&gt;  &lt;p&gt;Well, that’s not good.&amp;#160; &lt;/p&gt;  &lt;p&gt;The last few weeks I have been busy fixing bugs from the recently released DotNetNuke 5.0, and preparing for some of the enhancements we hope to introduce in the next major release.&amp;#160; We have three new developers and we will need to introduce some more formal practices.&amp;#160; This will be good for me personally and for the project.&lt;/p&gt;  &lt;p&gt;My initial plan, when I started this blog was to blog daily.&amp;#160; I hope to get back into a routine of frequently posting here, but with a more achievable goal (3-4 times weekly).&lt;/p&gt;  &lt;p&gt;So please check back here frequently, or subscribe through the subscribe link, and hopefully you will find my musings of interest.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThoughtsFromTheWetCoast/~4/J_ShjIbVvkI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/ThoughtsFromTheWetCoast/~3/J_ShjIbVvkI/post.aspx</link>
      <author>charles.nurse.nospam@nospam.dotnetnuke.com (cnurse)</author>
      <comments>http://www.charlesnurse.com/post/Back-Again.aspx#comment</comments>
      <guid isPermaLink="false">http://www.charlesnurse.com/post.aspx?id=fce46062-ac1d-4d62-96d5-28b45b4b3d11</guid>
      <pubDate>Mon, 09 Feb 2009 09:12:15 -0700</pubDate>
      <category>Random Thoughts</category>
      <dc:publisher>cnurse</dc:publisher>
      <pingback:server>http://www.charlesnurse.com/pingback.axd</pingback:server>
      <pingback:target>http://www.charlesnurse.com/post.aspx?id=fce46062-ac1d-4d62-96d5-28b45b4b3d11</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.charlesnurse.com/trackback.axd?id=fce46062-ac1d-4d62-96d5-28b45b4b3d11</trackback:ping>
      <wfw:comment>http://www.charlesnurse.com/post/Back-Again.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.charlesnurse.com/syndication.axd?post=fce46062-ac1d-4d62-96d5-28b45b4b3d11</wfw:commentRss>
    <feedburner:origLink>http://www.charlesnurse.com/post.aspx?id=fce46062-ac1d-4d62-96d5-28b45b4b3d11</feedburner:origLink></item>
  </channel>
</rss>
