Umbraco is a free CMS that is built on top of the Microsoft .NET platform. If you are new to Umbraco then getting it installed on your local development machine is straightforward. Umbraco provides several different methods to download Umbraco.
In today's guide, I'm going to cover the different approaches for you. Download Umbraco via Nuget I'm assuming most people reading this guide are C# developers and are comfortable using Visual Studio and NuGet. If you fall into this category then downloading Umbraco is your easiest option.
I've written a comprehensive guide about the installation process here, Installing Umbraco 7 In Visual Studio Via Nuget. For a quick re-cap, create a normal MVC project, in Nuget search for Umbraco and follow the instructions in the guide.
Download Umbraco via the Microsoft Web Platform Installer or WebMatrix
This approach is the recommended approach by Umbraco and if you are not very familiar with NuGet then this is your best option. The Microsoft Web platform installer takes a lot of the complexity of trying to install software on your development PC away from you. The web installer will do all the steps required to get you up and running with Umbraco. It will download Umbraco, install the Umbraco database and configure IIS for you. To get started, simply go to this tutorial, How To Install Umbraco 7 In Less Than 5 Minutes.
Download Umbraco and Install It Manually
The last option to install Umbraco is to do the job manually yourself. If you need to install or upgrade a very early version of Umbraco (less than 4.7). As Umbraco on version 7.3 of writing this then I doubt that anyone new to Umbraco would need to do this. I would say if you are new to .NET and setting up websites in general, you may get some benefit of running through this process once, but as Nuget and the Microsoft Web Installer does such a good job of installing Umbraco for you, that after doing it once, there really is no point in wasting time on things that can be automated. If you do want to go down this route, then you can read, How To Install Umbraco 7 Manually.
In today's guide, I've covered the three main ways to get started. If you want to download Umbraco and install it on your computer the process couldn't be easier. All you need to do is decide if you want to install Umbraco via Nuget, The WebMatix or install it manually and read one of my free guides. Personally, if you can use Nuget I recommend starting there.
I've just started a new contract and one of the client's sites uses an old 6.1.6 version of Umbraco. They were having deployment issues sync'ing content between server so I thought I'd add uSync. Being someone who has only really used Umbraco 7+, I struggled for a good hour to get uSync working (mainly due to my stupidity), so I thought I'd write a quick guide in case anyone has the same problem.
I tried installing uSync via Nuget but it didn't work, so here goes: First, head over to the uSync page here.
Scroll down to the bottom of the page and you should see the packages download section, in here find the version you want. In my case, this was 'uSync-1.6-for-Umbraco-6.1.x.zip'
Now open your Umbraco back-end and head to the developers section.
Click 'Packages' -> 'Install local package'. Tick the T&C's box, select the Zip file from your PC (you do not need to un-zip it) and hit load package.
You should see an error, detailing the package has .NET assemblies, click the 'Accept License' checkbox and click 'Install Package'. Now, if you refresh the page in the 'developer' section, you should see a little 'uSync' tab, click on it and you should now have all the power of uSYnc at your hands. To test everything worked as expected, hit the 'Export' button.
Within the webroot, you should now see a 'uSync' folder. In here you should see a lot of XML files that contain all your data. Using the import/export you can now move your data types between servers without having to manually re-add them in.
In today's guide, I'm going to walk through the process of upgrading Umbraco from version 6.2 to 7.5. The aim of this post is to try and explain the issues you might encounter when upgrading and, hopefully, shed some light on some of the architectural choices available to you that can help make upgrades as painless as possible, moving forwards. Unlike some other CMS systems (like Sitecore) upgrading Umbraco is usually pretty painless if you follow the right steps.
Adding new functionality is always going to be more appealing to a business than spending time on an upgrade that can introduce a lot of risk and uncertainty. In 90% of the upgrades I've worked on, the catalyst for an upgrade is usually something is not working as expected and this was no different:
- The site was so old it was built using a Visual Studio website for the project type (not web application)> The site did work, but it meant the developers weren't able to take advantage of future upgrades via Nuget, or able to use transforms for the continuous integration process.
- The site was struggling to invalidate the cache correctly when configured in a load-balanced environment, With the release of 7.3 improvements were made to the way Umbraco works in a clustered environment (more information can be found here) so my recommendation was to spend a day upgrading the site to make life easier moving forward.
Converting The Website To Web Application
This step was the one that I was quietly dreading, but I had the site up and running in less than an hour. In this step, all I did was upgrade my website to a web application with Umbraco installed by Nuget. Doing this was pretty simple, I created a new web application called 'Website.Web' and via Nuget I installed the same version of Umbraco the site uses. Next, I copied the webroot of the existing 6.2 websites on top of the web application version. In Visual Studio I then excluded the 'bin' folder, 'install' folder and'obj' folder: I built the solution and loaded the website in a browser and everything worked as expected. I was fortunate that none of the website's custom code complained at all, everything just worked. The next step was to get as much of the site assemblies to be referenced from Nuget instead of through a file in the 'bin' folder. To do this I went through the sites 'bin' folder and removed any assembly that I could add using Nuget, for each assembly, I deleted the file from the 'bin' folder, added it via Nuget, re-built the site and ran it to make sure it worked. This next step isn't something you have to do to upgrade your website, but it did make upgrading the site super easy... getting transforms working. One of the aims of the project was to have a robust continuous integration process. The way the site had been originally set-up meant that testing things like the live version involved manual changes. When the 'live' version was deployed, the web.config would get overridden using a custom tool. This solution was bespoke to this company so I won't go into too much detail as it's really not important for anyone else trying to upgrade. The important part is that moving forward, each environment would be configured by its own transform files. When you try and upgrade Umbraco via Nuget, the installer will attempt to override the web.config and several of the files in the 'config' folder. By taking advantage of transforms, you can try and offload as much of your custom settings into custom config files that won't be affected by the upgrade installer. These transform files won't be overridden by the upgrade and if you have your transforms configured correctly, you can completely override your web.config with the latest stock version and your website will still work afterward. This step, in essence, makes upgrading really simple. Instead of having a lot of custom bespoke changes in the config files that need to be merged using a diff tool, like Beyond Compare, you just build the project with Visual Studio and SlowCheeta and the correct settings are copied on top.
Upgrading to version 7
After I had the site building and running from a web application, the next step was to upgrade Umbraco via NuGet: Before I tried to load the site, I followed the advice from Umbraco HQ, you also need to delete these files:
- Delete /bin/Our.Umbraco/uGoLive.47x.dll
- Delete /bin/Our.Umbraco/uGoLive.checks.dll
- Delete /bin/Our.Umbraco/uGoLive.dll
- Delete /Config/xsltExtensions.config
As I mentioned in my transform section above, as I had all my custom Umbraco settings like connection strings, app setting etc.. injected via transforms and not within the web.config itself, I could override my existing web.config and 'config' folder files with the stock 7.5 versions build the solution and the site worked as expected. Using this approach I did have a few issues with binding redirects. As I used this approach to make sure the site was using 7.5 config files, I download 7.5 from here. I copied the below files everything from the blank 7.5 zip files on top of my project
- All file in the /Config folder
Before you try to load the website, I should point out that I did bump into a few issues here. First, if you have Umbraco packages installed on your website installed through Umbraco, like uSync, I found it a lot easier to uninstall those packages before you upgrade and re-install them afterward. The first time I tried to upgrade the website without doing this, uSync, in particular, crashed the upgrade process. After rolling back the website, I uninstalled uSync and Contour (which only had one basic form) before attempting to upgrade again. With async uninstalled, the installer ran through in a few minutes. This made the process a lot easier. After I upgraded successfully I re-installed my packages and everything worked as expected. When I tried first tried to load the site, I saw this error:
Server Error in '/' Application.
Could not load file or assembly 'MySql.Data' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.FileLoadException: Could not load file or assembly 'MySql.Data' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Looking at the logs in 'App_data' -> 'Logs', I could also see this expcetion:
System.IO.FileLoadException: Could not load file or assembly 'MySql.Data, Version=126.96.36.199, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
The issue was with the site getting confused about which version of 'MySql.Data' it should be using. The site was using 188.8.131.52 but the binding redirects were incorrectly configured. To get around this, instead of trying to manually update the web.config, I simply re-installed the MySql.Data package in the Nuget console window:
Update-Package –reinstall mysql.data
Doing this fixed the issue and meant the upgrade will load.
After adding in my username and password and click 'Next', the installer should upgrade the database for you. If everything goes successfully, 7.5 should load correctly.
Upgrading Umbraco is pretty painless and I managed to get the Site up and running in less than 2 hours. Enjoy!
The majority of websites on the planet will require some form of contact us, or an inquiry form. Unlike other CMS platforms, out of the box, Umbraco doesn't come with any form of content editor driven forms module. Umbraco does, however, have a package themselves to include this functionality. In today's post, I'm going to review and go over how this package works with Umbraco 6.
Umbraco Forms Vs Contour
One of the first confusing things people new to Umbraco have mentioned is the difference between Umbraco Forms and Contour. Umbraco Forms and Contour is the same thing. If you buy a license for one it will work on the other one. Contour was the original Umbraco Forms. Umbraco Forms was developed to replace Contour and has been designed to work with Umbraco 7.2 onwards. From my understanding, the reason for this change in name is the code base is very different between these two, so, a new name was given to it. One thing to note, if you are running an older version of Umbraco and try to install Forms, your site will blow up, so it's important you install the correct version for your version.
As this post is a review for Umbraco 6, then I'll be using Contour. Installing Contour definitely comes with a few surprises along the way. Unfortunately, from my experience, there were a lot of bugs with the installation and un-installation path that I'll cover in more detail below
Purchasing & Registering
Purchasing a product from Umbraco was simple. I went to the Contour purchase page, here entered in my client's details. After purchasing the license I got an email from Umbraco, asking me to log into Umbraco.com to register the Contour license.
After you log-in you should see your Contour license. Click 'Configure/Add' domain.
From here you will need to add in your website's domain and any test domains you might need to use.
After filling in your website's domain details, from the license page you should now be able to download your license.
Installing Contour is similar to how you would install any Umbraco package.
In the Umbraco back-end, 'Developer' section, in the 'Packages' entry, either use the 'Umbraco package Repository' and search for 'Contour', or manually install it using the files here, Contour.
Sadly, this is the stage where I started encountering installation issues with Contour. After installing Contour I tried to build my solution. The solution had originally been set-up as a website. If your website has also been set-up as a Visual Studio web site (not web application) you will probably run into this known issue with Contour, your Visual Studio build fails with these three errors:
This has been a known issue for several years and writing still exists. If you use Reflector to look in the Umbraco.Forms.Core' assembly then you will see the code-behinds don't exist. My workaround was to delete editWorkflow.aspx and ExportFormEntries.aspx. The other issue is an AntiForgeryToken token.
In ContourForm, remove the string in the AntiForgeryToken so it looks like this:
For a commercial product, I think this should have been fixed and not something that has been outstanding for years, so personally I was a little disappointed.
After having to hack Contour to get it installed, I was looking forward to getting to grips with it. To access contour you should see a 'Contour' icon at the bottom of your Umbraco instance:
Before you can use Contour you will need to register it. You should be able to do this from the Contour Dashboard:
Unfortunately, this is where I ran into more issues. When I typed my Umbraco details into the Register section, nothing happened. When I tried reloading the page it hadn't automatically registered anything. I gave up with the automatic registration and manually installed my 'umbracoForms.lic'. To do this you will need to log into Umbraco.com here, download the license file and then put it into your 'Bin' folder of your website. If you look at the screenshot of the dashboard above you will also see an error at the bottom of the page:
Apparently, this is a bug and forms dashboard is only used in version 7 so you can ignore it. Again, from a commercial product, I would really expect to see a lot more polish.
After installing Contour I realized I hadn't installed the latest version, so I tried to uninstall it. When I uninstalled Contour my whole website blew-up with a YSOD with this exception: 'Could not load file or assembly 'Umbraco.Forms.CodeFirst' or one of its dependencies. The system cannot find the file specified.'
The reason for this issue is because the installer sometimes doesn't remove everything correctly. To resolve this problem, look in your bin folder and you should see 'Umbraco.Forms.Core.dll' still in the bin. There will also be two references in your web.config:
Using The Product
Installing Contour was a lot more complicated than it needed to be. Once it was installed, however, it did do everything the client required. Setting up new forms, customizing them and getting an email to send out on form submission was very easy. As this post is getting quite long I've written the step-by-step guide about how to create a new form in this post, How To Create Your First Form With Umbraco Forms / Contour
Umbraco as an open-source free product is really good. For $99 Contour provides a lot of functionality that you couldn't develop in-house for a fraction of that price. Contour also gets updated from time to time. I think my expectations from any commercial product is that it should be simple to install, manage and it should work out the box as expected. I would have been a lot more impressed if it was a bit more polished. From my experiences installing it on Umbraco 6, it seemed very clunky. I had to manually change three files myself in order to get it working. For a commercial product with a license, you would expect it would just work The plug-in did meet the client's approval which made them happy but from a developer's point, it has been one of the buggiest things I've worked with for a while.