In my previous article, I covered the Microsoft Installer (MSI), which is a traditional installation technology; and a technology that requires that the entire installer be downloaded/cached, and which then proceeds to write to the file system and registry in one go. As far as legacy installers go, MSI technology offers many advantages, but none quite compare to the power of Application Virtualization (App-V). With App-V, it is possible to download a small seed installer, and the technology will stream down the rest of the installation, while actually allowing the user to start using the application.
Microsoft acquired the App-V technology from Softricity in 2006, and it was known as SoftGrid at the time. The technology was quite ingenious: It leveraged a virtual layer and both file system and registry redirections, to present an application container to the system as if it were fully installed like a normal application. The big difference, however, was that the application never actually added files to the file system, or registry keys to the registry, and as such, could uninstalled cleanly. Applications are turned into App-V packages via the App-V sequencer, and are typically presented to clients in enterprise environments via the App-V streamer.
While the technology behind App-V provides a compelling solution for the packaging and delivery of software, it also powers many other Windows features that people now take for granted. Have you ever heard of the VirtualStore, or stumbled across the VirtualStore folder in a user profile? That is a solution Microsoft created alongside the User Account Control (UAC) for Windows Vista, and seeks to redirect application calls to the local machine registry or program files folders, to an isolated folder within each user’s profile… which is all based on their new virtualisation technology.
So what does the VirtualStore do? In the past, application developers could safely assume that everyone was logged onto a computer with administrative rights, and would typically store application configurations alongside the executable file, and write to system-wide registry keys. With the change in the direction of enterprise security, where users were required to run as standard users instead of administrators, came a great deal of application compatibility issues caused by access denials to privileged locations.
When Microsoft introduced the UAC in Windows Vista, the application compatibility situation was made significantly worse, as even administrators were effectively running as standard users until they elevated. With the VirtualStore, any time an application attempts to write to a privileged location, and wasn’t designed to offer the possibility of elevating – very common for older applications – Microsoft would present a read-only copy of the location contents to the system, and redirect any attempted write operations to a copy of the contents that was placed in the user’s VirtualStore folder. The next time an application tried to access the privileged locations, for read or write, Microsoft simply redirected those calls to the user’s folder, and the application continued as normal.
Okay, but why is the VirtualStore important in describing App-V? It’s all about how deep-rooted the virtualisation technology is within Windows. Windows has supported virtualisation technologies natively for some time now, and all of these are baked in and freely available. In Windows 10, on top of having the VirtualStore helping to isolate and make your applications compatible, you also have solutions such as: Hyper-V to run virtual machines; Windows Subsystem for Linux (WSL) which enables you to run your favourite Linux distribution’s Bash and GNU utilities within Windows itself; as well as a full App-V client, just waiting to stream in and help you isolate and make-compatible your favourite applications. In fact, starting with some flavours of Office 2010, Microsoft has been using App-V technology to deliver your desktop Office applications; well, the ProPlus versions anyway (not the MSI versions).
App-V is an incredible powerful solution for Windows users, administrators, and developers. Using the technology, applications can be installed in fully isolated environments, made compatible even if no longer being developed, streamed to clients to improve availability and installation times, and do all this while not contributing to the legacy bit-rot and registry-bloat issues of more than a decade ago.