Desktop Application deployment options

Most of the time the deployment is more of a business decision and not only technological. Here are some deployment options you can choose based on the that:

  • Windows Store 
    • It takes care of publishing and updates for you.
    • limitations: Windows 8.x +, sandbox environment
  • ClickOnce
    • Microsoft’s solution to deploying your WPF app (but not UWP).
    • takes care of packaging your App, Installing it and Updating it.
  • Squirrel
    • Another Installer and Update framework, like ClickOnce
  • Chocolatey
    • distribute your app and easily publish updates. It requires the user to install Chocolatey on his PC and then use the command line to install and update your app
  • The custom solution:
    • use an Installer and develop the update mechanism yourself. Its job is to package the application into an installation program.
      • InstallShield – It’s very feature rich and always up to date with the latest technologies. It is very used with Windows applications. It can create MSI, EXE, and UWP app packages installers. It has its own scripting language to write custom jobs.
      • Inno Setup is a popular free installer and works by by creating a text file (.iss) file which contains your installer’s settings and scripts. It has good documentation and a good-sized community. It produces only EXE files though, not MSI. On an update, InnoSetup will uninstall the previous version and install the new one.
      • Wix is another popular free installer. It has a steeper learning curve than InstallShield and Inno Setup, but it can produce MSI files which can be a big advantage.
    • publish your product version install files to a known network location, and the Desktop Application will endlessly query that location for new updates.

Desktop Application UI Frameworks

Some reasons for developing a desktop application:

  • The application doesn’t have to be connected to the internet
  • You can interact better with the user’s PC. Web applications run in a sandbox environment and block almost all interactions.
  • Desktop apps have better performance than web apps
  • Running serious algorithms on the client side is possible but much harder with a web application.
  • Utilizing Threads is much easier and more effective in a desktop application.
  • Sometimes you don’t care if the application will be Web or Desktop, but your team is more experienced with Desktop technologies

There are a lot of UI Frameworks for desktop application:

UWP – Universal Windows Platform – Microsoft’s newest Desktop Application technology. It’s XAML based, like WPF, and you can write in C#, VB.Net, and C++ but most applications are written in C#. It works only on Windows 10 and the deployment is through Microsoft Store. The application works in a Sandbox Environment so it is limited in the interaction with the PC. Difficult learning curve.

WPF – A popular mature (available from 2006) XAML based Microsoft technology. You can write in C# or VB.NET. It is very powerful in terms of Styling and Binding capabilities that are fitted for big applications. It can run on any Windows OS. Relatively steep learning curve.

WinForms – An older Microsoft technology, very popular before WPF. Unlike WPF and UWP, WinForms relies on Visual Studio Designer’s drag and drop interface making it very productive. It can run on any Windows OS. Easy to learn.

Electron – A framework that allows developing Desktop apps with Web technologies (HTML/CSS/JavaScript). The magic behind Electron is that it uses Node.Js and Chromium to create a Web View in a desktop window. Interacting with the PC is much less capable than in other technologies.

JavaFX and Swing – Java UI frameworks from Oracle. Both are cross-platform and written in JavaJavaFX is newer and encouraged by Oracle as a replacement for Swing.

Qt – A cross-platform, C++ based UI framework. You can write the UI objects in code or use QML, which is a declarative language somewhat similar to JSON.