Products

Solutions

Resources

Partners

Community

About

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.


A Silverlight Upgrade Advisor

image

ADefHelpDesk does not really need an "Upgrade Advisor" but I made one anyway as a proof of concept for the DotNetNuke Core Project. There are thousands of users who do have difficulty upgrading DotNetNuke. My theory is that it should be possible to make a module that users could install before they do an upgrade that would identify potential upgrade problems.

Windows 7 does this when you do an upgrade and it really helps.  I decided to use Silverlight because Silverlight allows you to perform long running processes without timing out.

The Module

image

When you first open the module it will identify you and present a button that will call the ADefHelpDesk.com web service to determine if you are running the latest version of the ADefHelpDesk Upgrade Advisor. Silverlight cannot call a web service that is from a different domain than it was launched from, so it actually calls a web service in the ADefHelpDesk Upgrade Advisor module and it calls the web service on ADefHelpDesk.com.

image

If you are running the current version, a button to continue is presented. Otherwise, you would be instructed to download the latest version of the ADefHelpDesk Upgrade Advisor module.

image

Next, you are presented with a button that will determine what version of ADefHelpDesk you are running. This button will call a web service in the ADefHelpDesk Upgrade Advisor module that uses the following method to determine the current version of ADefHelpDesk that is installed:

if (Authendication.IsUserValid())
{
    DesktopModuleInfo objModule = 
        DotNetNuke.Common.Globals.GetDesktopModuleByName("ADefHelpDesk");
    if (objModule != null)
    {
        response = objModule.Version;
    }
}
return response;

image

The module will only allow you to continue if ADefHelpDesk is installed.

image

Next, the module uses the version number of the currently installed ADefHelpDesk, to call the web service on ADefHelpDesk.com, to get the issues that have been documented that exist when upgrading between the current version and the latest version of ADefHelpDesk.

image

In this example there is only one issue. The ADefHelpDesk.com web service instructs the ADefHelpDesk Upgrade Advisor module to check for the existence of the CurrentPage column on the LastSearch table.

When checking for the existence of classes you can't directly instantiate them because the Upgrade module would not install in the DotNetNuke site if the class it was checking for did not exist. Therefore you would use code such as this that attempts to dynamically load the class it is looking for:

if (Authendication.IsUserValid())
{
    var TheClass = BuildManager.GetType(
        "ADefWebserver.Modules.ADefHelpDesk.ADefHelpDeskDALDataContext", 
        true, 
        true);
    var TheTable = TheClass.Module.GetTypes().Where(
        x => x.Name == "ADefHelpDesk_LastSearch");
    var TheField = TheTable.FirstOrDefault().GetProperties().Where(
        y => y.Name.Contains("CurrentPage"));
    if (TheField.FirstOrDefault() != null)
    {
        response = true;
    }
}
return response;

image

The module will display the results of all tests.

A Proof Of Concept

This module is just a proof of concept but it can be used as a starting point for your own Upgrade Advisor module if you need one. All the source code is available at this link.

You can try out the Upgrade Advisor module live on http://ADefhelpDesk.com  (you have to log in and then click on the Upgrade Advisor tab). You can also download the DotNetNuke module and install it on your own site. you can get the module here:

  • Requires ASP.net 3.5 SP1 or higher on the server
  • If using DotNetNuke 4, You must download, install, place on a page in your DotNetNuke website, and run LinqPrep first. You can obtain it here: http://www.adefwebserver.com/DotNetNukeHELP/Misc/LinqPrep/
  • Note: in IIS you will also need to set the MIME Type: Setting .xap MIME Type for Silverlight 2.0

     

    Download: ADefHelpDeskUpgradeAdvisor_01.00.00_Install.zip

     

     

  • Comments

    There are currently no comments, be the first to post one.

    Comment Form

    Only registered users may post comments.

    NewsArchives


    Aderson Oliveira (22)
    Alec Whittington (11)
    Alessandra Daniels (3)
    Alex Shirley (10)
    Andrew Hoefling (3)
    Andrew Nurse (30)
    Andy Tryba (1)
    Anthony Glenwright (5)
    Antonio Chagoury (28)
    Ash Prasad (37)
    Ben Schmidt (1)
    Benjamin Hermann (25)
    Benoit Sarton (9)
    Beth Firebaugh (12)
    Bill Walker (36)
    Bob Kruger (5)
    Bogdan Litescu (1)
    Brian Dukes (2)
    Brice Snow (1)
    Bruce Chapman (20)
    Bryan Andrews (1)
    cathal connolly (55)
    Charles Nurse (163)
    Chris Hammond (213)
    Chris Paterra (55)
    Clint Patterson (108)
    Cuong Dang (21)
    Daniel Bartholomew (2)
    Daniel Mettler (181)
    Daniel Valadas (48)
    Dave Buckner (2)
    David Poindexter (12)
    David Rodriguez (3)
    Dennis Shiao (1)
    Doug Howell (11)
    Erik van Ballegoij (30)
    Ernst Peter Tamminga (80)
    Francisco Perez Andres (17)
    Geoff Barlow (12)
    George Alatrash (12)
    Gifford Watkins (3)
    Gilles Le Pigocher (3)
    Ian Robinson (7)
    Israel Martinez (17)
    Jan Blomquist (2)
    Jan Jonas (3)
    Jaspreet Bhatia (1)
    Jenni Merrifield (6)
    Joe Brinkman (274)
    John Mitchell (1)
    Jon Henning (14)
    Jonathan Sheely (4)
    Jordan Coopersmith (1)
    Joseph Craig (2)
    Kan Ma (1)
    Keivan Beigi (3)
    Kelly Ford (4)
    Ken Grierson (10)
    Kevin Schreiner (6)
    Leigh Pointer (31)
    Lorraine Young (60)
    Malik Khan (1)
    Matt Rutledge (2)
    Matthias Schlomann (16)
    Mauricio Márquez (5)
    Michael Doxsey (7)
    Michael Tobisch (3)
    Michael Washington (202)
    Miguel Gatmaytan (3)
    Mike Horton (19)
    Mitchel Sellers (40)
    Nathan Rover (3)
    Navin V Nagiah (14)
    Néstor Sánchez (31)
    Nik Kalyani (14)
    Oliver Hine (1)
    Patricio F. Salinas (1)
    Patrick Ryan (1)
    Peter Donker (54)
    Philip Beadle (135)
    Philipp Becker (4)
    Richard Dumas (22)
    Robert J Collins (5)
    Roger Selwyn (8)
    Ruben Lopez (1)
    Ryan Martinez (1)
    Sacha Trauwaen (1)
    Salar Golestanian (4)
    Sanjay Mehrotra (9)
    Scott McCulloch (1)
    Scott Schlesier (11)
    Scott Wilkinson (3)
    Scott Willhite (97)
    Sebastian Leupold (80)
    Shaun Walker (237)
    Shawn Mehaffie (17)
    Stefan Cullmann (12)
    Stefan Kamphuis (12)
    Steve Fabian (31)
    Steven Fisher (1)
    Tony Henrich (3)
    Torsten Weggen (3)
    Tycho de Waard (4)
    Vicenç Masanas (27)
    Vincent Nguyen (3)
    Vitaly Kozadayev (6)
    Will Morgenweck (40)
    Will Strohl (180)
    William Severance (5)
    What is Liquid Content?
    Find Out
    What is Liquid Content?
    Find Out
    What is Liquid Content?
    Find Out