DNN Blog

Aug 28

Posted by: Charles Nurse
8/28/2008  RssIcon

This blog is cross-posted from my personal blog.

In DotNetNuke v 4.6 a new installer system was introduced to handle the new Authentication Systems.  In DotNetNuke 5.0 we have extended the use of the Installer to all extensions, including Modules, Language Packs and Skins.  In previous blogs in this series I introduced the new Extension Installer Manifest, and the 3 components that most developers would be fairly familiar with – Module, Assembly, File, as they are similar to the legacy module manifest.

In this article I will begin to dive deeper into some of the other components, by looking at the Cleanup Component.

For quite a few versions, the core DotNetNuke installer has used the concept of a cleanup file which lists the files and folders that are no longer being used.  This cleanup file is a simple text file eg. 04.09.00.txt is the cleanup file to cleanup files that are no longer used in version 4.9 of the core (see Listing 1).

Listing 1 - The Cleanup file for version 4.9.0 of the DotNetNuke core

' Remove uninstalled module packages that have new versions in distribution. 
Install\Module\Forum_03.20.09_Install.resources 
Install\Module\HTML_04.06.01_Install.zip

More recently, the same concept was introduced into the legacy Module Installer.  Again the convention was used that the cleanup file would be named “version".txt (eg 02.00.00.txt).  This convention required Module developers to include a SqlDataProvider file for each version, regardless of whether there were any changes, as the only way that the legacy installer was aware of a "new" version was whether there was a script file to process.

In the new Extension Installer manifest operations must be explicitly declared, and so there is a Cleanup Component Installer (see Listing 2).

Listing 2 - The Cleanup Component manifest fragment from the BroadcastPollingCachingProvider

   1:  <component type="Cleanup" version="05.00.00">
   2:      <files>
   3:          <file>
   4:              <path>bin</path>
   5:              <name>DotNetNuke.Caching.BroadcastPollingCachingProvider.dll</name>
   6:          </file>
   7:      </files>
   8:  </component>

Those of you who have read the previous blog post will notice that this component's schema is very similar to the schema for the File component.  (Actually many of the other component manifest schema are similar to the File component and this is demonstrated by the fact that these Component Installer classes sub-class the FileInstaller component).

If you have a lot of files to remove the new Cleanup Component provides an alternative method similar to the legacy method.  If the fileName attribute is specified the Cleanup component uses an external file.

Listing 3 - The Cleanup Components alternate style

   1:  <component type="Cleanup" version="05.00.00" fileName="05.00.00.txt" />

While you can use a cleanup file in the same way as the legacy installer, there is still one difference.  Unlike the legacy installer which uses a file naming convention and requires you to have a script file with the same version number, the Cleanup Component requires you to explicitly reference the file, the name can be anything you want, and there is no requirement for a script file with the same version number.

Tags:
Categories:
Location: Blogs Parent Separator Charles Nurse

2 comment(s) so far...


Re: The New Extension Installer Manifest – Part 3, The Cleanup Component

Charles,

Are there plans on adding a notify module on uninstall? In some special cases this would be very helpful. Maybe a extra interface could be implemented in the assembly?

By DBuckner on   8/29/2008
Gravatar

Re: The New Extension Installer Manifest – Part 3, The Cleanup Component

What happened to The New Extension Installer Manifest #2? I cannot find it.

By Robert Collins on   7/13/2010
Attend A Webinar
Free Demo Site
Download DotNetNuke Professional Edition Trial
Have Someone Contact Me
Have Someone Contact Me

Like Us on Facebook Join our Network on LinkedIn Follow DNN Corporate on Twitter Follow DNN on Twitter

Advertisers

Sponsors

DotNetNuke Corporation

DotNetNuke Corp. is the steward of the DotNetNuke open source project, the most widely adopted Web Content Management Platform for building web sites and web applications on Microsoft. Organizations use DotNetNuke to quickly develop and deploy interactive and dynamic web sites, intranets, extranets and web applications. The DotNetNuke platform is available in a free Community and subscription-based Professional and Enterprise Editions with an Elite Support option. DotNetNuke Corp. also operates the DotNetNuke Store where users purchase third party apps for the platform.