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.