Packaging DNN extensions

18
Packaging DNN Modules Brian Dukes, Engage Software

description

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.

Transcript of Packaging DNN extensions

Page 1: Packaging DNN extensions

Packaging DNN Modules

Brian Dukes, Engage Software

Page 2: Packaging DNN extensions
Page 3: Packaging DNN extensions

Brian DukesBrian Dukes

Engage Software since 2006Engage Software since 2006Chief Software Architect in charge of Module DevelopmentChief Software Architect in charge of Module DevelopmentMicrosoft Certified Professional DeveloperMicrosoft Certified Professional Developer

Page 4: Packaging DNN extensions

AgendaAgenda

Brief History & Context Brief History & Context PitfallsPitfallsTemplates & Automation Templates & Automation Great toolsGreat tools

Page 5: Packaging DNN extensions

HistoryHistory

DNN 3 & 4DNN 3 & 4  - Modules come in .zip files with 3.0 manifest - Modules come in .zip files with 3.0 manifest   - 3.0 manifest is very convention-based - 3.0 manifest is very convention-based   - Skins & containers come in .zip files without manifest- Skins & containers come in .zip files without manifestDNN 5DNN 5  - Extensions come in .zip files with 5.0 manifest- Extensions come in .zip files with 5.0 manifest  - 5.0 manifest is extremely declarative - 5.0 manifest is extremely declarative   - Old packages can still be installed- Old packages can still be installed  - New system has concept of Package above an Extension- New system has concept of Package above an Extension

Page 6: Packaging DNN extensions

Types of Installation ComponentsTypes of Installation Components

Dashboard ControlDashboard ControlWidgetWidgetCore/Extension LanguageCore/Extension LanguageProviderProviderAuthentication SystemAuthentication SystemSkin ObjectSkin ObjectModuleModuleSkinSkinContainer Container

ConfigConfigScriptScriptFileFileAssemblyAssemblyResourceFileResourceFileCleanupCleanupCustomCustom

Page 7: Packaging DNN extensions

Pitfall - Packages with Same NamePitfall - Packages with Same Name

Install successfulInstall successfulUninstall - unsuccessfulUninstall - unsuccessfulUpgrade - unsuccessfulUpgrade - unsuccessfulRepair - unsuccessfulRepair - unsuccessful

Page 8: Packaging DNN extensions

Pitfalls - IUpgradeablePitfalls - IUpgradeable

<desktopModule><desktopModule>  <supportedFeatures><supportedFeatures>    <supportedFeature Type="Searchable" /> <supportedFeature Type="Searchable" />   </supportedFeatures></supportedFeatures>  ......</desktopModule></desktopModule><eventMessage>  <eventMessage>  <processorType>DotNetNuke.Entities.Modules.EventMessageProcessor, <processorType>DotNetNuke.Entities.Modules.EventMessageProcessor, DotNetNuke</processorType>DotNetNuke</processorType>  <processorCommand>UpgradeModule</processorCommand>  <processorCommand>UpgradeModule</processorCommand>  <attributes>  <attributes>      <businessControllerClass>...</businessControllerClass><businessControllerClass>...</businessControllerClass>   <desktopModuleID>[DESKTOPMODULEID]</desktopModuleID>   <desktopModuleID>[DESKTOPMODULEID]</desktopModuleID>   <upgradeVersionsList>01.00.00</upgradeVersionsList>   <upgradeVersionsList>01.00.00</upgradeVersionsList>  </attributes>  </attributes>  </eventMessage></eventMessage></component></component>

Page 9: Packaging DNN extensions

Pitfalls - Missing filesPitfalls - Missing files

Resource File Component (for content files)Resource File Component (for content files)

<component type="ResourceFile"><component type="ResourceFile"> <resourceFiles> <resourceFiles>  <basePath>DesktopModules/ModuleName</basePath>  <basePath>DesktopModules/ModuleName</basePath>  <resourceFile>  <resourceFile>   <name>Resources.zip</name>   <name>Resources.zip</name>  </resourceFile>  </resourceFile> </resourceFiles>  </resourceFiles> </component></component>

Page 10: Packaging DNN extensions

Pitfalls - Assembly PathsPitfalls - Assembly Paths

<component type="Assembly"><component type="Assembly"> <assemblies> <assemblies>  <!--basePath>bin</basePath-->  <!--basePath>bin</basePath-->  <assembly>  <assembly>   <name>Company.Module.dll</name>   <name>Company.Module.dll</name>      <sourceFileName>Company.Module.dll</sourceFileName<sourceFileName>Company.Module.dll</sourceFileName      <version>1.0.0</version><version>1.0.0</version>  </assembly>  </assembly> </assemblies> </assemblies></component></component>

Page 11: Packaging DNN extensions

Pitfalls - Assembly VersionsPitfalls - Assembly Versions

Install DNN 4 module in DNN 5 siteInstall DNN 4 module in DNN 5 siteAssembly Version = Package Version Assembly Version = Package Version

Page 12: Packaging DNN extensions

TemplatesTemplates

Code EndeavorsCode Endeavors  - http://codeendeavortemplate.codeplex.com- http://codeendeavortemplate.codeplex.com  - MSBuild Community Tasks - MSBuild Community Tasks ChristocChristoc  - http://christoctemplate.codeplex.com- http://christoctemplate.codeplex.com  - NAnt- NAnt

Page 13: Packaging DNN extensions

Powerful Tools - ConfigPowerful Tools - Config

<component type="Config"><component type="Config"> <config> <config>  <configFile>web.config</configFile>  <configFile>web.config</configFile>  <install>  <install>   <configuration>   <configuration>    <nodes>    <nodes>     <node path="/configuration/system.web/httpHandlers"      <node path="/configuration/system.web/httpHandlers" action="update" key="path" collision="overwrite">action="update" key="path" collision="overwrite">      <add verb="*" path="Telerik.Web.UI.WebResource.axd"       <add verb="*" path="Telerik.Web.UI.WebResource.axd" validate="false" type="Telerik.Web.UI.WebResource, Telerik.Web.UI" />validate="false" type="Telerik.Web.UI.WebResource, Telerik.Web.UI" />     </node>     </node>    </nodes>    </nodes>   </configuration>   </configuration>  </install>  </install>  <uninstall>  <uninstall>   <configuration>   <configuration>    <nodes />    <nodes />   </configuration>   </configuration>  </uninstall>  </uninstall> </config> </config></component></component>

Page 14: Packaging DNN extensions

Powerful Tools - CleanupPowerful Tools - Cleanup

<component type="Cleanup" version="05.01.03"><component type="Cleanup" version="05.01.03"> <files> <files>  <file>  <file>   <path>bin</path>   <path>bin</path>   <name>DotNetNuke.Caching.FileBasedCachingProvider.dll</name>   <name>DotNetNuke.Caching.FileBasedCachingProvider.dll</name>  </file>  </file> </files> </files></component></component><component type="Cleanup" version="05.01.02" fileName <component type="Cleanup" version="05.01.02" fileName ="05.01.02.txt" />="05.01.02.txt" />

05.01.02.txt05.01.02.txt'remove App_code files 'remove App_code files App_Code\HTML\HtmlTextInfo.vbApp_Code\HTML\HtmlTextInfo.vbApp_Code\HTML\App_Code\HTML\

'remove code behind files'remove code behind filesDesktopModules\HTML\EditHtml.ascx.vbDesktopModules\HTML\EditHtml.ascx.vb

Page 15: Packaging DNN extensions

Powerful Tools - DependenciesPowerful Tools - Dependencies

  - CoreVersion - CoreVersion   - Package - Package   - Type- Type  - Permission- Permission    - WebPermission (external web services)- WebPermission (external web services)    - ReflectionPermission- ReflectionPermission    - AspNetHostingPermission- AspNetHostingPermission

<dependencies><dependencies> <dependency type="CoreVersion">05.04.00</dependency> <dependency type="CoreVersion">05.04.00</dependency></dependencies></dependencies>

Page 16: Packaging DNN extensions

Powerful Tools - Assembly VersionsPowerful Tools - Assembly Versions

<component type="Assembly"><component type="Assembly"> <assemblies> <assemblies>  <assembly>  <assembly>   <path>bin</path>   <path>bin</path>   <name>DotNetNuke.SqlDataProvider.dll</name>   <name>DotNetNuke.SqlDataProvider.dll</name>   <version>05.00.00</version>   <version>05.00.00</version>  </assembly>  </assembly>  <assembly>  <assembly>   <path>bin</path>   <path>bin</path>   <name>Microsoft.ApplicationBlocks.Data.dll</name>   <name>Microsoft.ApplicationBlocks.Data.dll</name>   <version>02.00.00</version>   <version>02.00.00</version>  </assembly>  </assembly> </assemblies> </assemblies></component></component>

Page 17: Packaging DNN extensions

TipsTips

  - .dnn5 extension introduced in DNN 5.2 - .dnn5 extension introduced in DNN 5.2   - HTML in release notes/license- HTML in release notes/license

Page 18: Packaging DNN extensions

Questions?Questions?

Commit to DotNetNuke's Stack Exchange: http://bit.ly/dnn-seCommit to DotNetNuke's Stack Exchange: http://bit.ly/dnn-se