If that Module Upgrade Wizard is open source and the code is provided I'm sure it could be updated pretty easily to do both conversions.....either way.
Here is a guide written by Mohsin and myself that we made to list the steps for converting WAP to WSP. You might be able to use this to develop something? I do think that's a good idea although I develop everything for my own website so I wouldn't need it particularly:
Step by Step conversion of DNN3/DNN4 WAP modules into DNN4 WSP modules for DNN 4.X
(Using the “TeamPlayerBank” module as an example)
- Create a folder called “DesktopModules” anywhere on your computer. In this folder, put your DNN3/DNN4 module source code (each with its own individual file name)….so in our case C:/DesktopModules/TeamPlayerBank
- Run the “Module Upgrade Wizard”
- For the DNN3 input box browse to the DesktopModules folder created in Step 1 (this works even if it’s a DNN4 WAP folder so don’t worry about it being labeled as “Version 3” in the Wizard)
- For the DNN4 input box browse to the root of your local DNN4 install that you use for your coding environment
- Select “Next”
- Check the Module(s) you want to port over to DNN4 WSP format
- Click “Finish” and the browser will create the new WSP folders on your DNN4 local install and make several changes to the file structure (some info on what the wizard actually does can be found at the DotNetNuke website)
- Rename ViewTeamPlayerBank.ascx to TeamPlayerBank.ascx
- Rename EditTeamPlayerBank.ascx to TeamPlayerBankEdit.ascx
- In the TeamPlayerBank.vb/Settings.vb/TeamPlayerBankEdit.vb files comment out all “'Protected WithEvents” from #Region"Web Form Designer Generated Code" or “Controls”
- In the Dataprovider.vb file change the line “objProvider = CType(Framework.Reflection.CreateObject("data", "Ryno.DNN.Modules.TeamPlayerBank.Data", "Ryno.DNN.Modules.TeamPlayerBank"), DataProvider)” to “objProvider = CType(Framework.Reflection.CreateObject("data", "Ryno.DNN.Modules.TeamPlayerBank.Data", ""), DataProvider)”
- Use an existing WSP .DNN file and do a Text Search/Replace to reflect the “TeamPlayerBank” instead of the other module name or type up a new .dnn from scratch as is included in the “.DNN file” attachment (see below)
- In the TeamPlayerBankController.vb and TeamPlayerBank.ascx.vb do a Text Search/Replace changing “Services.Search.SearchItemInfoCollection” to “DotNetNuke.Services.Search.SearchItemInfoCollection”
- Make sure the “Constructors” stub in the TeamPlayerBankInfo.vb is not missing the trailing apostrophe which happens some of the time.
- Compile in Visual Studio and fix any errors that might result for more complicated modules.
- Run the existing SQL script to create the database/Stored Procedures
- Import the Manifest (.dnn file) in the Module Definitions page (will be listed as long as there is a .dnn file in the DesktopModules/TeamPlayerBank folder
“.DNN FILE” ATTACHMENT
<dotnetnukeversion="3.0"type="Module">
<folders>
<folder>
<name>TeamPlayerBank</name>
<friendlyname>TeamPlayerBank</friendlyname>
<foldername>TeamPlayerBank</foldername>
<modulename>TeamPlayerBank</modulename>
<description>A TeamPlayerBank module</description>
<version>01.00.00</version>
<businesscontrollerclass>Ryno.DNN.Modules.TeamPlayerBank.TPPBankController</businesscontrollerclass>
<modules>
<module>
<friendlyname>TeamPlayerBank</friendlyname>
<cachetime>60</cachetime>
<controls>
<control>
<src>DesktopModules/TeamPlayerBank/TeamPlayerBank.ascx</src>
<type>View</type>
<helpurl></helpurl>
</control>
<control>
<key>Edit</key>
<title>Edit Content</title>
<src>DesktopModules/TeamPlayerBank/TeamPlayerBankEdit.ascx</src>
<type>Edit</type>
<helpurl></helpurl>
</control>
<control>
<key>Settings</key>
<title>TeamPlayerBank Settings</title>
<src>DesktopModules/TeamPlayerBank/Settings.ascx</src>
<type>Edit</type>
<helpurl></helpurl>
</control>
</controls>
</module>
</modules>
<files>
<file>
<name>TeamPlayerBank.ascx</name>
</file>
<file>
<name>TeamPlayerBank.ascx.vb</name>
</file>
<file>
<name>TeamPlayerBankEdit.ascx</name>
</file>
<file>
<name>TeamPlayerBankEdit.ascx.vb</name>
</file>
<file>
<name>Settings.ascx</name>
</file>
<file>
<name>Settings.ascx.vb</name>
</file>
<file>
<path>App_LocalResources</path>
<name>ViewTeamPlayerBank.ascx.resx</name>
</file>
<file>
<path>App_LocalResources</path>
<name>EditTeamPlayerBank.ascx.resx</name>
</file>
<file>
<path>App_LocalResources</path>
<name>Settings.ascx.resx</name>
</file>
<file>
<path>[app_code]</path>
<name>DataProvider.vb</name>
</file>
<file>
<path>[app_code]</path>
<name>TeamPlayerBankController.vb</name>
</file>
<file>
<path>[app_code]</path>
<name>TeamPlayerBankInfo.vb</name>
</file>
<file>
<path>[app_code]</path>
<name>SqlDataProvider.vb</name>
</file>
<file>
<name>01.00.00.SqlDataProvider</name>
</file>
<file>
<name>Uninstall.SqlDataProvider</name>
</file>
</files>
</folder>
</folders>
</dotnetnuke>