• Share
  • Email
  • Embed
  • Like
  • Private Content
Packaging DNN extensions
 

Packaging DNN extensions

on

  • 4,108 views

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 ...

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.

Statistics

Views

Total Views
4,108
Views on SlideShare
4,108
Embed Views
0

Actions

Likes
0
Downloads
18
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • DNN Simple - Responsive DotNetNuke theme

    DNN Simple is a Clean and Classic Style DotNetNuke template designed for mobiles, tablets and desktops. It is fully responsive template, has Eight color variations in style, more then 20 Module positions and Mobile optimized slideshow & Menu.

    http://themeforest.net/item/dnn-simple-responsive-dotnetnuke-theme/5065623?ref=dasinfomedia
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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.
  • Left side: extensions Right side: other types of installer components
  • Packages with the same name (e.g. maybe related Skin & Container packages) will install correctly, but then you can't update or repair them.
  • DNN 5 doesn'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).
  • 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't work, however, for files that the installer needs to reference (i.e. SQL scripts, assemblies, cleanup files, license files, etc)
  • The files in the assembly component are implicitly rooted to the bin directory (so you don'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)
  • 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's version is higher than the actual version of that assembly, you'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)
  • You can use these to get started with automated packaging
  • 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't break their site upon uninstall.
  • 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.
  • 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.
  • If you put correct version numbers for your assemblies, DNN will manage making sure that the latest version of a shared component is used.
  • 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.
  • If you're interested in an excellent platform for DNN Q&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.

Packaging DNN extensions Packaging DNN extensions Presentation Transcript

    • 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_CodeHTMLHtmlTextInfo.vb App_CodeHTML 'remove code behind files DesktopModulesHTMLEditHtml.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