SlideShare a Scribd company logo
Packaging DNN Modules Brian Dukes, Engage Software
 
Brian Dukes Engage Software since 2006 Chief Software Architect in charge of Module Development Microsoft Certified Professional Developer
Agenda Brief History & Context  Pitfalls Templates & Automation  Great tools
History DNN 3 & 4   - Modules come in .zip files with 3.0 manifest    - 3.0 manifest is very convention-based    - Skins & containers come in .zip files without manifest DNN 5   - Extensions come in .zip files with 5.0 manifest   - 5.0 manifest is extremely declarative    - Old packages can still be installed   - New system has concept of Package above an Extension
Types of Installation Components Dashboard Control Widget Core/Extension Language Provider Authentication System Skin Object Module Skin Container  Config Script File Assembly ResourceFile Cleanup Custom
Pitfall - Packages with Same Name Install successful Uninstall - unsuccessful Upgrade - unsuccessful Repair - unsuccessful
Pitfalls - IUpgradeable <desktopModule>   <supportedFeatures>    <supportedFeature Type=&quot;Searchable&quot; />    </supportedFeatures>   ... </desktopModule> <eventMessage>  <processorType>DotNetNuke.Entities.Modules.EventMessageProcessor, DotNetNuke</processorType>   <processorCommand>UpgradeModule</processorCommand>   <attributes>     <businessControllerClass>...</businessControllerClass>    <desktopModuleID>[DESKTOPMODULEID]</desktopModuleID>    <upgradeVersionsList>01.00.00</upgradeVersionsList>   </attributes>   </eventMessage> </component>
Pitfalls - Missing files Resource File Component (for content files) <component type=&quot;ResourceFile&quot;>  <resourceFiles>   <basePath>DesktopModules/ModuleName</basePath>   <resourceFile>    <name>Resources.zip</name>   </resourceFile>  </resourceFiles>  </component>
Pitfalls - Assembly Paths <component type=&quot;Assembly&quot;>  <assemblies>   <!--basePath>bin</basePath-->   <assembly>    <name>Company.Module.dll</name>     <sourceFileName>Company.Module.dll</sourceFileName     <version>1.0.0</version>   </assembly>  </assemblies> </component>
Pitfalls - Assembly Versions Install DNN 4 module in DNN 5 site Assembly Version = Package Version
Templates Code Endeavors   - http://codeendeavortemplate.codeplex.com   - MSBuild Community Tasks  Christoc   - http://christoctemplate.codeplex.com   - NAnt
Powerful Tools - Config <component type=&quot;Config&quot;>  <config>   <configFile>web.config</configFile>   <install>    <configuration>     <nodes>      <node path=&quot;/configuration/system.web/httpHandlers&quot; action=&quot;update&quot; key=&quot;path&quot; collision=&quot;overwrite&quot;>       <add verb=&quot;*&quot; path=&quot;Telerik.Web.UI.WebResource.axd&quot; validate=&quot;false&quot; type=&quot;Telerik.Web.UI.WebResource, Telerik.Web.UI&quot; />      </node>     </nodes>    </configuration>   </install>   <uninstall>    <configuration>     <nodes />    </configuration>   </uninstall>  </config> </component>
Powerful Tools - Cleanup <component type=&quot;Cleanup&quot; version=&quot;05.01.03&quot;>  <files>   <file>    <path>bin</path>    <name>DotNetNuke.Caching.FileBasedCachingProvider.dll</name>   </file>  </files> </component> <component type=&quot;Cleanup&quot; version=&quot;05.01.02&quot; fileName =&quot;05.01.02.txt&quot; /> 05.01.02.txt 'remove App_code files  App_Code\HTML\HtmlTextInfo.vb App_Code\HTML\ 'remove code behind files DesktopModules\HTML\EditHtml.ascx.vb
Powerful Tools - Dependencies   - CoreVersion    - Package    - Type   - Permission    - WebPermission (external web services)    - ReflectionPermission    - AspNetHostingPermission <dependencies>  <dependency type=&quot;CoreVersion&quot;>05.04.00</dependency> </dependencies>
Powerful Tools - Assembly Versions <component type=&quot;Assembly&quot;>  <assemblies>   <assembly>    <path>bin</path>    <name>DotNetNuke.SqlDataProvider.dll</name>    <version>05.00.00</version>   </assembly>   <assembly>    <path>bin</path>    <name>Microsoft.ApplicationBlocks.Data.dll</name>    <version>02.00.00</version>   </assembly>  </assemblies> </component>
Tips   - .dnn5 extension introduced in DNN 5.2    - HTML in release notes/license
Questions? Commit to DotNetNuke's Stack Exchange: http://bit.ly/dnn-se

More Related Content

ODP
Considerations with Writing JavaScript in your DotNetNuke site
Engage Software
 
PDF
Magento 2 Design Patterns
Max Pronko
 
PDF
Magento 2 - An Intro to a Modern PHP-Based System - Northeast PHP 2015
Joshua Warren
 
PDF
How To Install Magento 2 (updated for the latest version)
Magestore
 
PPT
Joomla 3 JLayout's - Joomladay Netherlands 2014 #jd14nl
Philip Locke
 
PDF
Fundamentals of Extending Magento 2 - php[world] 2015
David Alger
 
PDF
Webdriver.io
LinkMe Srl
 
PDF
Magento 2 Development
Duke Dao
 
Considerations with Writing JavaScript in your DotNetNuke site
Engage Software
 
Magento 2 Design Patterns
Max Pronko
 
Magento 2 - An Intro to a Modern PHP-Based System - Northeast PHP 2015
Joshua Warren
 
How To Install Magento 2 (updated for the latest version)
Magestore
 
Joomla 3 JLayout's - Joomladay Netherlands 2014 #jd14nl
Philip Locke
 
Fundamentals of Extending Magento 2 - php[world] 2015
David Alger
 
Webdriver.io
LinkMe Srl
 
Magento 2 Development
Duke Dao
 

What's hot (20)

PDF
Magento with Composer
AOE
 
PDF
Oleh Kobchenko - Configure Magento 2 to get maximum performance
Meet Magento Italy
 
PDF
Magento 2 Modules are Easy!
Ben Marks
 
PPTX
Imagine recap-devhub
Magento Dev
 
PDF
Magento 2 - An Intro to a Modern PHP-Based System - ZendCon 2015
Joshua Warren
 
PPTX
Sergii Shymko: Magento 2: Composer for Extensions Distribution
Meet Magento Italy
 
PPTX
Magento 2 Theme Trainning for Beginners | Magenest
Magenest
 
PPT
WP plugin - Lazar Dačić
Stevan Pivnički
 
PDF
How to create theme in Magento 2 - Part 2
Magestore
 
PPTX
Madison PHP - Getting Started with Magento 2
Mathew Beane
 
PPTX
Cordova iOS Native Plugin Development
Josue Bustos
 
ODP
Problemen oplossen in Joomla - Joomladagen 2014
Peter Martin
 
PDF
Magento 2 Development for PHP Developers
Joshua Warren
 
PPTX
Using disqus & facebook comment in wordpress themes
codebangla
 
PDF
Tech talk live custom content viewers in alfresco share
Alfresco Software
 
PPTX
WordPress Theme & Plugin i18n & L10n
codebangla
 
PPTX
“Micro Frontends”- You Keep Using That Word, I Don’t Think It Means What You ...
Shem Magnezi
 
PDF
Modern Web Application Development Workflow - EclipseCon US 2014
Stéphane Bégaudeau
 
PPTX
Micro frontends
Kleyson Prado
 
PDF
How I Learned to Stop Worrying and Love Composer - php[world] 2015
Joshua Warren
 
Magento with Composer
AOE
 
Oleh Kobchenko - Configure Magento 2 to get maximum performance
Meet Magento Italy
 
Magento 2 Modules are Easy!
Ben Marks
 
Imagine recap-devhub
Magento Dev
 
Magento 2 - An Intro to a Modern PHP-Based System - ZendCon 2015
Joshua Warren
 
Sergii Shymko: Magento 2: Composer for Extensions Distribution
Meet Magento Italy
 
Magento 2 Theme Trainning for Beginners | Magenest
Magenest
 
WP plugin - Lazar Dačić
Stevan Pivnički
 
How to create theme in Magento 2 - Part 2
Magestore
 
Madison PHP - Getting Started with Magento 2
Mathew Beane
 
Cordova iOS Native Plugin Development
Josue Bustos
 
Problemen oplossen in Joomla - Joomladagen 2014
Peter Martin
 
Magento 2 Development for PHP Developers
Joshua Warren
 
Using disqus & facebook comment in wordpress themes
codebangla
 
Tech talk live custom content viewers in alfresco share
Alfresco Software
 
WordPress Theme & Plugin i18n & L10n
codebangla
 
“Micro Frontends”- You Keep Using That Word, I Don’t Think It Means What You ...
Shem Magnezi
 
Modern Web Application Development Workflow - EclipseCon US 2014
Stéphane Bégaudeau
 
Micro frontends
Kleyson Prado
 
How I Learned to Stop Worrying and Love Composer - php[world] 2015
Joshua Warren
 
Ad

Similar to Packaging DNN extensions (20)

PPTX
Leveraging Continuous Integration For Fun And Profit!
Jess Chadwick
 
PPT
Maven 2.0 - Improve your build patterns
elliando dias
 
PPT
Maven 2.0 - Project management and comprehension tool
elliando dias
 
ODP
Maven
Fabio Bonfante
 
PPTX
NuGet Nuggets
Clark Sell
 
ODP
Website releases made easy with the PEAR installer - Barcelona 2008
Helgi Þormar Þorbjörnsson
 
PDF
Slides Aquarium Paris 2008
julien.ponge
 
PPT
Debugging and Error handling
Suite Solutions
 
PPT
C:\Users\User\Desktop\Eclipse Infocenter
Suite Solutions
 
ODP
Website releases made easy with the PEAR installer, OSCON 2009
Helgi Þormar Þorbjörnsson
 
PPTX
Apache Maven - eXo VN office presentation
Arnaud Héritier
 
PPT
]project-open[ Package Manager
Klaus Hofeditz
 
PPTX
Develop At The Speed Of Thought
Roy Ganor
 
ODP
Sonar - the ring to rule them all
Sebastian Marek
 
PDF
Magento2 Basics for Frontend Development
Kapil Dev Singh
 
PPTX
Getting started with CFEngine - Webinar
CFEngine
 
PPTX
Getting Started With CFEngine - Updated Version
CFEngine
 
ODP
Sh404sef, Urls, Seo And More
Yannick Gaultier
 
PDF
Мы ведь тоже люди. Еретическая лекция про юзабилити инструментов разработчика
Nikita Prokopov
 
PPT
Introduction To Eclipse RCP
whbath
 
Leveraging Continuous Integration For Fun And Profit!
Jess Chadwick
 
Maven 2.0 - Improve your build patterns
elliando dias
 
Maven 2.0 - Project management and comprehension tool
elliando dias
 
NuGet Nuggets
Clark Sell
 
Website releases made easy with the PEAR installer - Barcelona 2008
Helgi Þormar Þorbjörnsson
 
Slides Aquarium Paris 2008
julien.ponge
 
Debugging and Error handling
Suite Solutions
 
C:\Users\User\Desktop\Eclipse Infocenter
Suite Solutions
 
Website releases made easy with the PEAR installer, OSCON 2009
Helgi Þormar Þorbjörnsson
 
Apache Maven - eXo VN office presentation
Arnaud Héritier
 
]project-open[ Package Manager
Klaus Hofeditz
 
Develop At The Speed Of Thought
Roy Ganor
 
Sonar - the ring to rule them all
Sebastian Marek
 
Magento2 Basics for Frontend Development
Kapil Dev Singh
 
Getting started with CFEngine - Webinar
CFEngine
 
Getting Started With CFEngine - Updated Version
CFEngine
 
Sh404sef, Urls, Seo And More
Yannick Gaultier
 
Мы ведь тоже люди. Еретическая лекция про юзабилити инструментов разработчика
Nikita Prokopov
 
Introduction To Eclipse RCP
whbath
 
Ad

More from Engage Software (13)

PDF
The Importance of UX in Association Website Design
Engage Software
 
PDF
Millennial Engagement Strategies for Associations
Engage Software
 
PPT
DNNcon 2016: Are There Security Flaws in Your DNN Modules?
Engage Software
 
PPT
Analytics In, Analytics Out: Using Google Analytics to Guide and Grade Web Pr...
Engage Software
 
PPTX
Enterprise Social Networking
Engage Software
 
PPTX
Creating URL Providers for your Custom Extensions
Engage Software
 
PPTX
Responsive Views with Knockout
Engage Software
 
PPT
JavaScript: The Language
Engage Software
 
PDF
Building A Membership Provider For DotNetNuke 4.X.X
Engage Software
 
PPT
Building DotNetNuke Modules
Engage Software
 
PDF
DotNetNuke In An Hour
Engage Software
 
PDF
The Right Way To Install Upgrade Dnn
Engage Software
 
PDF
What’s New In DotNetNuke 5 (Cambrian)
Engage Software
 
The Importance of UX in Association Website Design
Engage Software
 
Millennial Engagement Strategies for Associations
Engage Software
 
DNNcon 2016: Are There Security Flaws in Your DNN Modules?
Engage Software
 
Analytics In, Analytics Out: Using Google Analytics to Guide and Grade Web Pr...
Engage Software
 
Enterprise Social Networking
Engage Software
 
Creating URL Providers for your Custom Extensions
Engage Software
 
Responsive Views with Knockout
Engage Software
 
JavaScript: The Language
Engage Software
 
Building A Membership Provider For DotNetNuke 4.X.X
Engage Software
 
Building DotNetNuke Modules
Engage Software
 
DotNetNuke In An Hour
Engage Software
 
The Right Way To Install Upgrade Dnn
Engage Software
 
What’s New In DotNetNuke 5 (Cambrian)
Engage Software
 

Recently uploaded (20)

PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
Architecture of the Future (09152021)
EdwardMeyman
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Beyond Automation: The Role of IoT Sensor Integration in Next-Gen Industries
Rejig Digital
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Doc9.....................................
SofiaCollazos
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Architecture of the Future (09152021)
EdwardMeyman
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Beyond Automation: The Role of IoT Sensor Integration in Next-Gen Industries
Rejig Digital
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 

Packaging DNN extensions

  • 1. Packaging DNN Modules Brian Dukes, Engage Software
  • 2.  
  • 3. Brian Dukes Engage Software since 2006 Chief Software Architect in charge of Module Development Microsoft Certified Professional Developer
  • 4. Agenda Brief History & Context Pitfalls Templates & Automation Great tools
  • 5. History DNN 3 & 4   - Modules come in .zip files with 3.0 manifest   - 3.0 manifest is very convention-based   - Skins & containers come in .zip files without manifest DNN 5   - Extensions come in .zip files with 5.0 manifest   - 5.0 manifest is extremely declarative   - Old packages can still be installed   - New system has concept of Package above an Extension
  • 6. Types of Installation Components Dashboard Control Widget Core/Extension Language Provider Authentication System Skin Object Module Skin Container Config Script File Assembly ResourceFile Cleanup Custom
  • 7. Pitfall - Packages with Same Name Install successful Uninstall - unsuccessful Upgrade - unsuccessful Repair - unsuccessful
  • 8. Pitfalls - IUpgradeable <desktopModule>   <supportedFeatures>   <supportedFeature Type=&quot;Searchable&quot; />   </supportedFeatures>   ... </desktopModule> <eventMessage>  <processorType>DotNetNuke.Entities.Modules.EventMessageProcessor, DotNetNuke</processorType>   <processorCommand>UpgradeModule</processorCommand>   <attributes>    <businessControllerClass>...</businessControllerClass>    <desktopModuleID>[DESKTOPMODULEID]</desktopModuleID>    <upgradeVersionsList>01.00.00</upgradeVersionsList>   </attributes>   </eventMessage> </component>
  • 9. Pitfalls - Missing files Resource File Component (for content files) <component type=&quot;ResourceFile&quot;>  <resourceFiles>   <basePath>DesktopModules/ModuleName</basePath>   <resourceFile>    <name>Resources.zip</name>   </resourceFile>  </resourceFiles>  </component>
  • 10. Pitfalls - Assembly Paths <component type=&quot;Assembly&quot;>  <assemblies>   <!--basePath>bin</basePath-->   <assembly>    <name>Company.Module.dll</name>    <sourceFileName>Company.Module.dll</sourceFileName    <version>1.0.0</version>   </assembly>  </assemblies> </component>
  • 11. Pitfalls - Assembly Versions Install DNN 4 module in DNN 5 site Assembly Version = Package Version
  • 12. Templates Code Endeavors   - http://codeendeavortemplate.codeplex.com   - MSBuild Community Tasks Christoc   - http://christoctemplate.codeplex.com   - NAnt
  • 13. Powerful Tools - Config <component type=&quot;Config&quot;>  <config>   <configFile>web.config</configFile>   <install>    <configuration>     <nodes>      <node path=&quot;/configuration/system.web/httpHandlers&quot; action=&quot;update&quot; key=&quot;path&quot; collision=&quot;overwrite&quot;>       <add verb=&quot;*&quot; path=&quot;Telerik.Web.UI.WebResource.axd&quot; validate=&quot;false&quot; type=&quot;Telerik.Web.UI.WebResource, Telerik.Web.UI&quot; />      </node>     </nodes>    </configuration>   </install>   <uninstall>    <configuration>     <nodes />    </configuration>   </uninstall>  </config> </component>
  • 14. Powerful Tools - Cleanup <component type=&quot;Cleanup&quot; version=&quot;05.01.03&quot;>  <files>   <file>    <path>bin</path>    <name>DotNetNuke.Caching.FileBasedCachingProvider.dll</name>   </file>  </files> </component> <component type=&quot;Cleanup&quot; version=&quot;05.01.02&quot; fileName =&quot;05.01.02.txt&quot; /> 05.01.02.txt 'remove App_code files App_Code\HTML\HtmlTextInfo.vb App_Code\HTML\ 'remove code behind files DesktopModules\HTML\EditHtml.ascx.vb
  • 15. Powerful Tools - Dependencies   - CoreVersion   - Package   - Type   - Permission   - WebPermission (external web services)   - ReflectionPermission   - AspNetHostingPermission <dependencies>  <dependency type=&quot;CoreVersion&quot;>05.04.00</dependency> </dependencies>
  • 16. Powerful Tools - Assembly Versions <component type=&quot;Assembly&quot;>  <assemblies>   <assembly>    <path>bin</path>    <name>DotNetNuke.SqlDataProvider.dll</name>    <version>05.00.00</version>   </assembly>   <assembly>    <path>bin</path>    <name>Microsoft.ApplicationBlocks.Data.dll</name>    <version>02.00.00</version>   </assembly>  </assemblies> </component>
  • 17. Tips   - .dnn5 extension introduced in DNN 5.2   - HTML in release notes/license
  • 18. Questions? Commit to DotNetNuke's Stack Exchange: http://bit.ly/dnn-se

Editor's Notes

  • #2: Extension packaging is a powerful tool that extension creators have at their disposal to create a rich, consistent, safe experience for their users. Learn how you can take advantage of all of the tools that DNN provides for the installation experience, and how to avoid some of the more common pitfalls when creating installable extensions for DotNetNuke.
  • #7: Left side: extensions Right side: other types of installer components
  • #8: Packages with the same name (e.g. maybe related Skin &amp; Container packages) will install correctly, but then you can&apos;t update or repair them.
  • #9: DNN 5 doesn&apos;t automatically check your Business Controller Class for its supported features, as it did in DNN 4. You can specify Searchable and Portable in the supportedFeatures element in the manifest, but you have to specify that eventMessage section to get IUpgradeable to work (and it only runs for the versions in the updateVersionsList node).
  • #10: In order to not have to specify every file in your manifest, you can use the ResoureFile component to reference a .zip of those files, instead. This doesn&apos;t work, however, for files that the installer needs to reference (i.e. SQL scripts, assemblies, cleanup files, license files, etc)
  • #11: The files in the assembly component are implicitly rooted to the bin directory (so you don&apos;t need to specify that in a basePath or path element). You can use the sourceFileName element to tell the installer the path to that assembly in your package (i.e. just tell it the name of the assembly if the assembly is in the root of your package)
  • #12: If you install a DNN 4 module in a DNN 5 site, all of its assemblies will be marked with the version of the module. If the module&apos;s version is higher than the actual version of that assembly, you&apos;ll have trouble overwriting the older assembly once your package is using the DNN 5 manifest (or if you have a different module that uses a DNN 5 manifest with that same assembly)
  • #13: You can use these to get started with automated packaging
  • #14: Looking in the Install folder of a DNN site before it has been installed will give you a great number of examples of packages, as well as examples in the Install/Config folder of the types of config changes you can make. . The Config component lets you update an XML file (usually web.config), removing the need to tell your customers to muck around in there. Remember to also include an uninstall script, as necessary, so you don&apos;t break their site upon uninstall.
  • #15: You can use a cleanup component to delete old files, either through the manifest or an external file. The external file specifies one file per line, using ticks for comments.
  • #16: You can specify that your package is dependent on a specific version of DNN (or higher), or another package, type, or that it requires a certain permission.
  • #17: If you put correct version numbers for your assemblies, DNN will manage making sure that the latest version of a shared component is used.
  • #18: You can use the .dnn5 file extension to create a package that both DNN 4 and DNN 5 can process (DNN 5 uses the .dnn5 manifest, DNN 4 uses the .dnn manifest). You can provide HTML in the release notes, license, and other fields that show in the install wizard, to provide a richer experience to your customers.
  • #19: If you&apos;re interested in an excellent platform for DNN Q&amp;A, consider committing to being a part of the DotNetNuke Stack Exchange proposal. I honestly believe it will revolutionize how we help each other and get helped when developing, integrating, and maintaining DNN sites.