Tracking solution version numbers

I recently had a long discussion with a colleague regarding package versions when deploying SharePoint features. After some investigation, it seems that the SharePoint object model does not contain a version number for solution, only a time of last update.

But... if you use the CodePlex SharePoint Installer it registers a version number using the configuration property SolutionVersion.

   1: <?xml version="1.0" encoding="utf-8" ?>


   2: <configuration>


   3:     <appSettings>


   4:         <add key="BannerImage" value="Default"/>


   5:         <add key="LogoImage" value="None"/>


   6:         <add key="SolutionId" value="19D82049-1892-4d16-8E2B-FAF2327EDB99"/>


   7:         <add key="SolutionFile" value="Sample.wsp"/>


   8:         <add key="SolutionTitle" value="Sample"/>


   9:         <add key="SolutionVersion" value="1.1.0.0"/>


  10:     <add key="Require" value="MOSS" />


  11:         <add key="UpgradeDescription" value="Upgrades {SolutionTitle} on all frontend web servers in the SharePoint farm."/>


  12:         <add key="RequireDeploymentToCentralAdminWebApplication" value="true"/>


  13:         <add key="RequireDeploymentToAllContentWebApplications" value="false"/>


  14:     </appSettings>


  15: </configuration>




I then decided to extend the SharePoint Central Administration site screen "Solution Management" to show the version number.



First, add a server-side C# function within the file "Solutions.aspx" located within the folder C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\TEMPLATE\ADMIN.





   1: <script runat="server">


   2:  


   3: public string GetVersion(string solution)


   4: {


   5:     try


   6:     {


   7:         Microsoft.SharePoint.Administration.SPFarm farm = Microsoft.SharePoint.Administration.SPFarm.Local;


   8:         string key = "Solution_" + farm.Solutions[solution].Id.ToString() + "_Version";


   9:         return farm.Properties[key].ToString();


  10:     }


  11:     catch (System.NullReferenceException)


  12:     {


  13:         return string.Empty;


  14:     }


  15:     catch (Exception ex)


  16:     {


  17:         return ex.ToString();


  18:     }


  19: }


  20:  


  21: </script>




Next, extend the SPGridView with a template column as:





   1: <asp:TemplateField


   2:     HeaderText="Version">


   3:     <ItemTemplate>


   4:     <%#
   5:     GetVersion(Eval("ItemName").ToString()) 
6:     %>


   7:     </ItemTemplate>    


   8: </asp:TemplateField>




You will now have a version column containing the solution version numbers added by the CodePlex SharePoint Solution Installer.



solutions

0 comments: