I was looking around for some details on the xml node available for an installable DNN module labeled compatibleversions. I was able to find a forum post in our private team forums where Shaun talks about this (from back in November) and I figured I would share with the community. This node can be placed in the .dnn manifest file, used by the DotNetNuke module installer, and can set the minimum required DotNetNuke core version a module requires.
For example, the next major forum release requires DotNetNuke core 4.4.0 or greater. In order to handle the potential support issues which would arise from users trying to install in DotNetNuke 4.3.5, for example, this node allows me to specify in the .dnn manifest file the lowest compatible core DotNetNuke version my module requires.
To use this in my module, I structured my .dnn manifest file as such:
<?xml version="1.0" encoding="utf-8" ?>
<dotnetnuke version="3.0" type="Module">
<description>The core forum module for DotNetNuke.</description>
As you can see above, I have higlighted the area that we are discussing here (I also didn't post the remainding section of the example .dnn manifest file). This node uses a regular expression to set the minimum DotNetNuke core version. You can test for a proper match at http://www.regextester.com/. The above example requires DotNetNuke 4.4.0 or greater. (Remember that DotNetNuke uses the xx.xx.xx format)
I believe this support has existed since DotNetNuke 3.3.6/4.3.6. (If not these, I know the x.x.7 series has this capability in there) If you add this node and someone tries to install in a verion prior to those, the check will not be done but the module install will fail because the schema for the manifest file in those versions had no idea what compatibleversions was. If someone tried to install the example forum in a DotNetNuke core 4.3.7, a message would be displayed about the core version being incompatible. If the version is compatible, however, the install process will complete as before.
Just a note, if you wanted to support a module on both 3.x and 4.x you can do something like:
This means that 03.03.00 - 09.03.99 will pass and 02.02.02, 03.01.00 would fail.
Hope this comes in handy!