<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://life.billknaus.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">BKdotNET - Bill Knaus&amp;#39;s Dev Blog</title><subtitle type="html">Better solutions through smarter code.</subtitle><id>http://life.billknaus.com/blogs/dotnetnuke/atom.aspx</id><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/default.aspx" /><link rel="self" type="application/atom+xml" href="http://life.billknaus.com/blogs/dotnetnuke/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2006-01-26T22:17:00Z</updated><entry><title>Blog Re-birth</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2009/01/07/blog-re-birth.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2009/01/07/blog-re-birth.aspx</id><published>2009-01-07T18:06:00Z</published><updated>2009-01-07T18:06:00Z</updated><content type="html">&lt;p&gt;My blog has gotten... stale.&amp;nbsp; Since my last post, I did a lot of good stuff at JPMorgan Chase programming wise... then moved on to Stanley Associates up in Dumfries for a year which showed promise at first, and then... not-so-much... and now I have my four mile commute back at a young defense contractor called &lt;a class="" title="ACGS" href="http://www.acgsworld.com/" target="_blank"&gt;ACGS&lt;/a&gt;, headquartered here in Fredericksburg.&amp;nbsp; There are a lot of refreshing new challenges here... challenges I look forward to blogging about from a technical perspective.&amp;nbsp; Most of the challenges center around working with GIS, creating/modifying GIS-driven apps, and working with video in a new and innovative way.&amp;nbsp; My hope&amp;nbsp;is that this isn&amp;#39;t the last post you&amp;#39;ll see from me on my geek blog for the next two years, and that this particular blog will start to really take off.&lt;/p&gt;
&lt;p&gt;More soon.&lt;/p&gt;&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=966" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author></entry><entry><title>Separate your documentation to maintain system autonomy</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/09/08/Separate-your-documentation-to-maintain-system-autonomy.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/09/08/Separate-your-documentation-to-maintain-system-autonomy.aspx</id><published>2006-09-08T21:04:05Z</published><updated>2006-09-08T21:04:05Z</updated><content type="html">Want to really know when everything went horribly wrong and you ended up tightly coupling something that was supposed to be modular or service oriented? Take a look at your documentation. More and more as I have been digging through our team's archives, I've started to discover some of the reasons why we time-and-again are exerting additional effort to de-couple something, or end up throwing something out and starting over, or not being able to leverage something that, while being built, was billed...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/09/08/Separate-your-documentation-to-maintain-system-autonomy.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=418" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author></entry><entry><title>Communication is essential</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/30/Communication-is-essential.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/30/Communication-is-essential.aspx</id><published>2006-08-30T20:28:12Z</published><updated>2006-08-30T20:28:12Z</updated><content type="html">We are human beings. What makes us the intelligent creatures of the earth is our ability to not just communicate, but to communicate complex thoughts and ideas. It comes naturally to us to want to communicate and we learn to communicate at a very young age. So why is it that some of the biggest problems we as people have in this world is driven by poor communication? We're in the information age of e-mail, blackberries, and text messaging, but we're still crappy communicators. When you're in an environment...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/30/Communication-is-essential.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=403" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author></entry><entry><title>Performance Monitoring ASP.NET apps - the art of the insane</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/21/Performance-Monitoring-ASP.NET-apps-_2D00_-the-art-of-the-insane.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/21/Performance-Monitoring-ASP.NET-apps-_2D00_-the-art-of-the-insane.aspx</id><published>2006-08-22T03:57:47Z</published><updated>2006-08-22T03:57:47Z</updated><content type="html">So Microsoft professes that all these fabulous counters in .NET that are available to the Performance Monitor tool provide a good level of insight... well bah! bah! I say. Consider a multi-tier environment with multiple approaches to remoting (.NET Remoting and Web Services). Now - consider multiple front-ends, multiple - nigh - dozens of services - and one or two databases. Try to get monitors on that beastie. Takes a while just to set them all up... Then I try using the performance monitor ActiveX...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/21/Performance-Monitoring-ASP.NET-apps-_2D00_-the-art-of-the-insane.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=394" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term=".NET Framework 1.1" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/.NET+Framework+1.1/default.aspx" /></entry><entry><title>The FBI's Virtual Case File Failure</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/18/The-FBI_2700_s-Virtual-Case-File-Failure.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/18/The-FBI_2700_s-Virtual-Case-File-Failure.aspx</id><published>2006-08-18T15:15:36Z</published><updated>2006-08-18T15:15:36Z</updated><content type="html">Visiting the WashingtonPost.com today, I came across an article titled "The FBI's Upgrade That Wasn't". Working in Washington a couple years ago, and working in government at the time (not the FBI), I had certainly heard about the "Virtual Case File" project. It was an intriguing project to hear about even just in general terms. It would truly be what we all imagine or in some cases see played out in movies and on tv - an FBI computer system that could be use to pull up files on an agent's PC. What...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/18/The-FBI_2700_s-Virtual-Case-File-Failure.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=378" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author></entry><entry><title>Unlocking the Master Page mystery within CommunityServer</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/16/Unlocking-the-Master-Page-mystery-within-CommunityServer.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/16/Unlocking-the-Master-Page-mystery-within-CommunityServer.aspx</id><published>2006-08-16T06:25:46Z</published><updated>2006-08-16T06:25:46Z</updated><content type="html">I'm spending some time learning how CommunityServer implements master pages. Since they want to be backwards compatible with ASP.NET 1.1, they haven't adopted the ASP.NET 2.0 Master Pages. Instead, they've taken on a piece of community work from "MetaBuilders" that they call "MasterPages" . MetaBuilder's MasterPages is a small single assembly that simulates an approach similar to that of ASP.NET 2.0. The design is rather elegant... simple, yet with a keen mastery of ASP.NET and object-oriented techniques...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/16/Unlocking-the-Master-Page-mystery-within-CommunityServer.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=377" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="ASP.NET 2.0" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/ASP.NET+2.0/default.aspx" /><category term="CommunityServer" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/CommunityServer/default.aspx" /></entry><entry><title>Windows Live Writer (beta) - A cool bloggin' tool</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/15/Windows-Live-Writer-_2800_beta_2900_-_2D00_-A-cool-bloggin_2700_-tool.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/15/Windows-Live-Writer-_2800_beta_2900_-_2D00_-A-cool-bloggin_2700_-tool.aspx</id><published>2006-08-15T14:33:00Z</published><updated>2006-08-15T14:33:00Z</updated><content type="html">One of the reasons why I find it difficult to spend the time to write a blog entry is the eventual &amp;quot;timeout&amp;quot; while I&amp;#39;m typing the thing up. I&amp;#39;ve had it happen before... entering the blog on the web form and spend 45 minutes writing something cool and &amp;quot;blammo!&amp;quot; it&amp;#39;s gone. I hadn&amp;#39;t been too keen on any of these blog post tools - mostly because they tended to not work with CommunityServer (the software I use to run my blog). Microsoft released in the past few days...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/08/15/Windows-Live-Writer-_2800_beta_2900_-_2D00_-A-cool-bloggin_2700_-tool.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=376" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="CommunityServer" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/CommunityServer/default.aspx" /></entry><entry><title>Day 4 configuring Microsoft's Customer Care Framework 2005</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/21/CCF-Day-4.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/21/CCF-Day-4.aspx</id><published>2006-06-20T23:49:00Z</published><updated>2006-06-20T23:49:00Z</updated><content type="html">My Customer Care Framework pilot setup experience continues... today's problems - the trials and tribulations of authorization and authentication with Internet Information Server 6... ...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/21/CCF-Day-4.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=354" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="Customer Care Framework 2005" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/Customer+Care+Framework+2005/default.aspx" /></entry><entry><title>Day 3 configuring Microsoft's Customer Care Framework</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/19/CCF-Day-3.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/19/CCF-Day-3.aspx</id><published>2006-06-19T18:33:00Z</published><updated>2006-06-19T18:33:00Z</updated><content type="html">Its Day 3 of my experience installing Microsoft's Customer Care Framework 2005 demo or pilot installation, and it is a lengthy task to take on from scratch......(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/19/CCF-Day-3.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=352" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="Customer Care Framework 2005" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/Customer+Care+Framework+2005/default.aspx" /></entry><entry><title>Some useful Virtual Server setup and optimization tips</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/15/351.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/15/351.aspx</id><published>2006-06-15T21:26:00Z</published><updated>2006-06-15T21:26:00Z</updated><content type="html">I saw a WebCast today from TechEd in Boston given by Martin Granell. At the end of the web cast we received the URL to his blog to eventually get code from the session. Visiting Martin's blog uncovered more than just some cool info on Grandmothers and Missile Defense Systems... it uncovered some really cool tips for setting up virtual server and optimizing it for best performance. I'm looking forward to putting these to good use here in the next few days, and will let you know how successful I am...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/06/15/351.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=351" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="Development Environment" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/Development+Environment/default.aspx" /></entry><entry><title>Microsoft does it again - ObjectDataSource - useful to a point - or is it?</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/02/20/234.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/02/20/234.aspx</id><published>2006-02-20T15:16:00Z</published><updated>2006-02-20T15:16:00Z</updated><content type="html">Has Microsoft stiffed experienced developers with the ObjectDataSource server control in ASP.NET 2.0?  Or is the ObjectDataSource server control simply the "starter kit" - only without the source code?...(&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/02/20/234.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=234" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="ASP.NET 2.0 Dev" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/ASP.NET+2.0+Dev/default.aspx" /></entry><entry><title>Gotchas with the Copy Database wizard in SQL 2005</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/27/232.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/27/232.aspx</id><published>2006-01-27T15:19:00Z</published><updated>2006-01-27T15:19:00Z</updated><content type="html">&lt;P&gt;Yesterday I needed to copy a database from my local machine to one of our development servers... both the server and my local pc are running SQL Server 2005 Dev.&lt;/P&gt;
&lt;P&gt;My first thought was to simply detach my database from my local, copy to the server, and then reattach on the server.&amp;nbsp; As I right-clicked on the database, the last menu item caught my eye... "Copy Database..."&amp;nbsp; I decided to see what this would do for me and "click" I began what started out to be a pretty cool journey...&lt;/P&gt;
&lt;P&gt;The Copy Database wizard allows you to do the copy by the "detatch and attach" method (which I was willing to do by hand) or using the SQL Management Object method, which I wanted to avoid... (I wasn't in the mood).&lt;/P&gt;
&lt;P&gt;So I go through the wizard just fine - some of the things I had to do to actually make it work....&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;These were both relatively "virgin" installs of SQL Server 05 Dev.&amp;nbsp; So the first obstacle I ran into was Microsoft's new security initiative: Install with minimal risk exposure.&amp;nbsp; In other words - I had to turn on Named Pipes and TCP/IP - on both servers. 
&lt;LI&gt;The account that the SQL Agent service was running under on my destination server had to be running under an account that had access to a file share to the database file on the source server.&amp;nbsp; Now-&amp;nbsp; this isn't just the proxy account you can configure in SQL Server... this is the actual account the service runs as.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Now - at this point - everything transferred over beautifully - it even created the server login for my database... at least I had thought.&lt;/P&gt;
&lt;P&gt;So the next thing&amp;nbsp;I encountered were reports that no one was able to log in to the database at its new location.&amp;nbsp; During the copy process, it might create the login, it might maintain the integrity of your database... but it doesn't link the server login to the database user.&amp;nbsp; In fact - it made it quite impossible because now my database user is configured "WITHOUT LOGIN" and I can't change it.&amp;nbsp; I unwire some of the dependencies that would allow me to drop the user - drop it - and recreate it for my login.&lt;/P&gt;
&lt;P&gt;But my problems don't end there - people still are not able to use the account - final resort - I reset the password.&amp;nbsp; voila.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Now - for this last part - is that all I had to do was change the password?&amp;nbsp; Did I have to go through dropping the account?&amp;nbsp; I don't know.&amp;nbsp; But doing all of&amp;nbsp;this worked.&amp;nbsp; If you have a different experience - I'd be interested in hearing about it.&lt;/P&gt;&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=232" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="ASP.NET 2.0 Dev" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/ASP.NET+2.0+Dev/default.aspx" /></entry><entry><title>DotNetNuke ClientAPI and Microsoft's Atlas</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/27/231.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/27/231.aspx</id><published>2006-01-27T06:13:00Z</published><updated>2006-01-27T06:13:00Z</updated><content type="html">&lt;P&gt;Jon Henning, the lead for the &lt;A href="http://www.dotnetnuke.com/Default.aspx?tabid=851"&gt;DNN Core Team ClientAPI team &lt;/A&gt;and creator of the SOLPARTMENU featured in DNN, provided some thoughts on the future of the DotNetNuke ClientAPI and Microsoft's Atlas in his blog.&amp;nbsp; &lt;A href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20060119AtlasNK/manifest.xml"&gt;Having seen a recent video&lt;/A&gt; from &lt;A href="http://msdn.microsoft.com/"&gt;MSDN&lt;/A&gt; on Atlas, due out sometime this year, there's a lot of potential for creating a richer user experience on top of DNN as this year unfolds.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryID/49/Default.aspx"&gt;Here are his thoughts.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20060119AtlasNK/manifest.xml"&gt;Here is the video/demo on Atlas on MSDN.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://atlas.asp.net/"&gt;And finally - the Atlas web site.&lt;/A&gt;&lt;/P&gt;&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=231" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author></entry><entry><title>DotNetNuke's IUpgradeable interface for module controllers...</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/27/230.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/27/230.aspx</id><published>2006-01-27T05:45:00Z</published><updated>2006-01-27T05:45:00Z</updated><content type="html">&lt;P&gt;&lt;STRONG&gt;I was going through the &lt;A href="http://forums.asp.net/90/ShowForum.aspx"&gt;ASP.NET Forums for DotNetNuke&lt;/A&gt; and came across this post from "Sponge_Bob".&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;EM&gt;Is there anyway that I could run my own custom code on installation of my own PA's. I have a Module the need to be able to check and see if a certain Dll file is installed on the server before installing. Also I need the install to be able to check the version of the Dll file on the server an make certain the it is of the required version. Finally if the Dll not of the required version I want to point the person installing the PA to the place where to get the latest version of the install.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;I have the option here to use Code (Preferred) or Sql to accomplish this task as I can make it so the required Dll I need to check for has its version entered into the database as it will be originally installed as a skin object.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;It would be really sweet if Dnn could check the version of a Dll file before overwriting it with a dll file from a PA to make certain the it is not installing a Dll File of a lesser version. I am more that willing to write the code to accomplish this if the core team is willing to implement it.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;STRONG&gt;So - I took a few minutes to help "Sponge_Bob" out.&amp;nbsp; Here's my response...&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;I have to answer a&amp;nbsp;question from Sponge_Bob.&amp;nbsp; Dig yer username.&lt;/P&gt;
&lt;P&gt;DotNetNuke provides an interface called IUpgradeable.&amp;nbsp; The interface is implemented on your controller class for you module, similar to the way IPortable and ISearchable are implemented.&amp;nbsp; There's very little written about this interface, however.&amp;nbsp; The interface contract contains one method definition - &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; UpgradeModule(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; Version &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000 size=3&gt;So digging a little deeper...&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The&amp;nbsp;the lastest version of the Private Assembly Installer (V3)&amp;nbsp;will check to see if your BusinessController class supports the IUpgradeable interface.&amp;nbsp; If it does support it, it will iterate through an ArrayList of versions and call your UpgradeModule implementation for each version.&lt;/P&gt;
&lt;P&gt;So - similar to the way DNN does version control - you can handle each incremental upgrade... a nice litte switch / case statement on the version string sent in to your method.&lt;/P&gt;
&lt;P&gt;Now if a needed DLL is not there - you could always throw an error... OR - use your string return to add an error to the module install... (that would be the kindler, gentler approach).&amp;nbsp; Use HTML within&amp;nbsp;the string&amp;nbsp;to color the text&amp;nbsp;red so it stands out.&amp;nbsp; Well - you should always return a string at least letting the user know that each upgrade was successful.&amp;nbsp; Any string you return will be added to the module install / parsing results.&lt;/P&gt;
&lt;P&gt;Seeing that this is done during install of your module or module upgrade - I wouldn't recommend putting any code in here to check for latest version or anything like that.&amp;nbsp; However, what I would recommend is creating a separate edit control for "Check for New Version" which can do that.&amp;nbsp; Unless it is mission critical to push latest versions (i.e. OS Security Patches, Virus Software) I personally prefer choosing an option like that.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=230" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="DNN Framework" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/DNN+Framework/default.aspx" /><category term="DNN Forum Answers" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/DNN+Forum+Answers/default.aspx" /><category term="DNN Module Dev" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/DNN+Module+Dev/default.aspx" /></entry><entry><title>Considerations for Creating a Custom DotNetNuke Install</title><link rel="alternate" type="text/html" href="http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/26/227.aspx" /><id>http://life.billknaus.com/blogs/dotnetnuke/archive/2006/01/26/227.aspx</id><published>2006-01-27T03:17:00Z</published><updated>2006-01-27T03:17:00Z</updated><content type="html">&lt;P&gt;I've just finished an article on how to customize the DotNetNuke installation package.&amp;nbsp; I spent a few hours today digging around the DNN framework looking at how DNN does installs, how portal and host templates work, and how to specify which modules need to be installed... as well as how to not install some of the basic dnn modules.&amp;nbsp; The more I dig around inside the framework, the more impressed I become with DNN (which says a lot since I've been impressed with DNN for quite some time).&amp;nbsp; A lot of times when looking through other people's code, specifically some of the open source stuff out there, you get to a point and say - "ah - they're going to regret that they did that".&amp;nbsp; I've been saying a lot of the opposite - "yeah - that makes sense" or "jeez, thats how I would have done it."&lt;/P&gt;
&lt;P&gt;In this case, I was setting up a shared DNN development environment and realized that I hadn't "sanitized" my DNN 4 install yet... I ended up on a journey that has me dreaming about host templates, a common module set for all of our install points, and... and... our own portal that shows up after install with our own skin.&amp;nbsp; Nice.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/articles/Create_Custom_DotNetNuke_Install.aspx"&gt;Take a read.&lt;/A&gt;&amp;nbsp; It looks pretty lengthy - but i try to make it an easy read.&amp;nbsp; If anything - especially for those developers visiting from work - you can get an idea of the capabilities this framework provides... and the power beneath your fingertips.&lt;/P&gt;
&lt;P&gt;&lt;a href="http://life.billknaus.com/blogs/dotnetnuke/articles/Create_Custom_DotNetNuke_Install.aspx"&gt;&amp;gt;&amp;gt; Article &amp;lt;&amp;lt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://life.billknaus.com/aggbug.aspx?PostID=227" width="1" height="1"&gt;</content><author><name>BillKnaus</name><uri>http://life.billknaus.com/members/BillKnaus.aspx</uri></author><category term="DNN Framework" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/DNN+Framework/default.aspx" /><category term="DNN Module Dev" scheme="http://life.billknaus.com/blogs/dotnetnuke/archive/tags/DNN+Module+Dev/default.aspx" /></entry></feed>