VM Snapshots

Take periodic snapshots of a virtual machine.

- Overview -

VM Snapshots is a small Windows application which allows users to take periodic snapshots of an Oracle VirtualBox virtual machine. Just specify the number of snapshots required and the time period to leave inbetween snapshots and leave VM Snapshots to manage taking snapshots of a virtual machine of your choice. VM Snapshots allows users to create a number of snapshots of a virtual machine so that the virtual machine can be reverted and inspected at incremental points. This is particularly useful for repeating events in a long-running process.


- Download -

Current Release

The current release of VM Snapshots is 1.0.0.

System Requirements

VM Snapshots is available for both 32-bit and 64-bit versions of Windows 7 or later. All dependencies are included in the product installer, although in order to actually take snapshots a version of VBoxManage should reside on the target machine.

Installer

The installer is provided both as a Microsoft Installer (MSI) and as a zipped archive containing the Microsoft Installer (ZIP). There is both a 32-bit and a 64-bit version available.

Documentation

VM Snapshots documentation is available as a Microsoft Compiled HTML (CHM) help compiltion and as a zipped archive containing the Microsoft Compiled HTML (ZIP).

- Release History -

1.0.0

Initial release of VM Snapshots.

- Development Details -

Motivation

In my profession as a simulation consultant, I often find myself in a situation where I need to know in detail exactly what happed at a specific point during a simulation model. I develop and manage large, complex simulation models which take many hours to run and, due to the nature of simulation, cannot be rewound. Running simulation models on virtual machines gives me the opportunity to go back to specific points of a simulation model run, and see the machine in its exact state at that point, and even run forward from that point a second time. Virtual machines and the ability to take snapshots of those virtual machines are therefore extremely useful to me.

For a long time, I have taken periodic snapshots of virtual machines simply using a batch script. This was fine, but it meant that every time that I wanted to do this, I had to search around for my batch script, open it up in a text editor to change the number of snapshots and period between snapshots, then save it and run it - not the most elegant of solutions. Eventually I decided that it wouldn't take too much effort to put something together that could accept some simple parameters and run the script for me, that's when I got started with VM Snapshots.

Initially I was just going to put together a quick .NET project, after all, all I needed to do was drag and drop a few text boxes onto a form and fire off a batch script, simple. However, I'd been wanting to have a go at developing an application with a web user interface for a while, and I'd recently been reading about the UI engine Sciter so I decided that this would be the perfect project to try something new.

Using a UI engine such as Sciter was an appealing option for me, because I don't like to develop applications which are dependent on other software - I don't like to be told that I need to install other products just to get the one I want to work, but at the same time I wasn't keen on learning Windows API and painting windows for myself just to make my application independent. With Sciter, I could simply include a single DLL for the UI engine in my installation and that's it. In addition, I could do all the UI development in HTML and CSS which gives me much more flexibility than the standard .NET controls and results in a UI that feels like a modern web page. This was great, I had my initial idea for some useful functionality and I had this new (to me) UI engine to learn about.

Now that I'd decided that I was going to put some effort into making the UI look presentable, I realised that I couldn't simply execute my batch script once I'd retrieved the snapshot parameters - after all, what is the point of making the UI look nice if I simply execute a batch script at the end resulting in an ugly console window being opened up. But no matter, this just meant that I could use this as an opportunity to either use pipes to communicate to Oracle's VBoxManage, or learn some VirtualBox API.

So I had an idea about what I was going to create and how I was going to do it, but I thought that it would be useful to be able to deploy it afterwards. I'd had some experience building WiX installers in the past, but had never really spent much time learning about the flexibility that WiX offers. This would therefore be my final goal of the project, to create a custom WiX installer and make the product deployable.

Choices

Reasoning behind choices made during development of VM Snapshots.

User Interface

I had three main ideas about how I could create the UI :

  1. .NET

    Pros

    • Easy - controls can be added and moved by dragging an dropping.
    • Quick - there are a large list of pre-defined controls available.

    Cons

    • Dependencies - end user must have a valid version of .NET installed.
    • Managed code - I'm stuck in my ways and prefer proper c++.
  2. Windows API

    Pros

    • No dependencies - I could deploy my application with no dependencies.
    • Customisable - I could draw whatever I wanted if I was prepared to spend enough time doing it.

    Cons

    • Difficult - from quick glances at the documentation I get the feeling that there is lots to learn.
    • Time consuming - drawing everything manually seemed as though it would take me forever.
  3. Sciter

    Pros

    • Deployable dependency - I could deploy my application with a single Sciter DLL.
    • Customisable - I understand HTML and CSS, they offer lots of flexibility for UI design.
    • Web style - I could style my application like a modern web page - everybody can use those.

    Cons

    • Knowledge - I had not used Sciter before so I wasn't sure what to expect.

Given my options, the .NET route was most certainly the safest and easiest available, but who wants that ? I ruled out the Windows API option almost immediately because it just seemed to me as though I would be creating a lot of unnecessary work for myself, and learning how to paint windows didn't seem as if it would be particularly useful for me in anything else that I do. Having created .NET applications in the past, I knew that this would be relatively straightforward, but I really do not like to create applications which require the end user to install something else just ot get it to work.

I had been interested in creating an application with a web based UI for some time, and the deployability of Sciter was really appealing to me. It therefore didn't take me long to decide that this was the way in which I was going to proceed.

Interaction with VBoxManage

This site uses cookies; by continuing to browse this site you are agreeing to use of cookies.

This message will not be shown the next time you visit.