Learn More





DNN Community Blog

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.

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

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. 

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.


Comment Form

Only registered users may post comments.


2sic Daniel Mettler (124)
Aderson Oliveira (15)
Alec Whittington (11)
Alex Shirley (10)
Andrew Nurse (30)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (21)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (203)
Chris Paterra (55)
Clinton Patterson (28)
Cuong Dang (21)
Daniel Bartholomew (2)
Dave Buckner (2)
David Poindexter (3)
David Rodriguez (2)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (74)
Geoff Barlow (6)
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 (269)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matthias Schlomann (15)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Mike Horton (19)
Mitchel Sellers (28)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Peter Donker (52)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott S (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)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (2)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (37)
Will Strohl (163)
William Severance (5)
Try Evoq
For Free
Start Free Trial
a Demo
See Evoq Live
Need More Information?