While working on the page not found manager one of the final steps is to package up the project and release it as an umbraco package and nuget package. Sometimes your package will need to update existing files (adding a app setting to the web.config,…)

Something that is extremely useful when working with nuget is that you can include xdt files that will transform config files.

And for the umbraco package you can use package actions to perform those actions but that can quickly end up in having to use different actions and even having to write custom ones since the functionality of individual package actions is pretty specific. (for example take a look at the ones for Optimus)

Why not make it possible to also use xdt files…

So now instead of having to write or use different package actions to update config/xml files you can use this single config transform package action.

For example this is how you could add an additional provider to the config/embeddedmedia.config

1 < Action runat ="install" undo ="false" alias ="PNFM.TransformConfig" file ="~/config/embeddedmedia.config" xdtfile ="~/app_plugins/temp/embeddedmedia.xdt" ></ Action >

And the xdt file contents will looks like

1 <? xml version="1.0" ?> 2 < embed xmlns:xdt ="http://schemas.microsoft.com/XML-Document-Transform" > 3 4 < provider name ="Instagram" type ="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco" xdt:Transform ="Insert" > 5 < urlShemeRegex > <! [CDATA[instagram\.com/]] > </ urlShemeRegex > 6 < apiEndpoint > <! [CDATA[http://api.instagram.com/oembed]] > </ apiEndpoint > 7 < requestParams type ="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco" ></ requestParams > 8 </ provider > 9 10 11 </ embed >

If you aren’t familiar with xdt check out this link.

Currently the package action is part of the page not found manager project but I’ll also release this as a standalone package making it possible to include it in your own projects.