Challenges of Upgrading a Virtual Appliance
  A virtual appliance contains a target application, and the running environment necessary for running that application. Users run an appliance using a virtualization engine, freeing them from the need to make sure that the target application has access to all its dependencies. However, creating and managing a virtual appliance, versus a stand-alone application, requires special considerations. Upgrading a software system is a common requirement, and is more complicated when dealing with an appliance. This is because both the target application and the running environment must be upgraded, and there are often dependencies between these two components. In this paper we briefly discuss some important points to consider when upgrading an appliance. We then present a list of items that can help developers prevent problems during an upgrade effort. 
Kamran Karimi
cs.SE