A year ago, when we released the 2015 Smackdown, I was asked for my opinion on who I thought was the winner, so I posted a blow by blow of the different application virtualization products featured in the feature matrix section of our document.
Just a few months ago the Application Virtualization Smackdown 2016 white paper was released. Once more I had the honor of working with the great Jurjen van Leeuwen and Ruben Spruijt. Thanks to both of them for their efforts and continuing to give to our great community.
While there have been some feature changes to those products by the time the 2016 edition came out, I think it makes sense to cover a broader range this year with the growing popularity of application layering, containers and more.
The format I have selected for this post is a review of each product in each category included in the 2016 edition. The categories will include Application Virtualization, Containers, Application Layering and Other.
- Microsoft App-V
- Numecent CloudPaging
- Symantec Workspace Virtualization
- Windows Containers
I have been a fan of Cameyo for several years now and have posted about their products a few times in the past. The product remains mostly unchanged since last years white paper but there have been some UI changes and improvements along the way.
Cameyo as a product has evolved enormously over the previous couple of years. It started as an application virtualization product that allows you to create a single portable application – similar to ThinApp in that way. They then flipped the script and became the first to not just offer a portable application solution but also a hosted application option that runs your apps embedded within the browser. This uses HTML 5 so unlike some published application solutions, no client is required.
I hope they partner with a vendor of an app refactoring tool or develop one themselves. I feel this has huge untapped potential.
To my knowledge they are still the only vendor offering this that also offers an app for your smartphone. I hope they partner with a vendor of an app refactoring tool or develop one themselves. I feel this has huge untapped potential.
Enterprise is being catered for in a large way by competing products. The regular home user, developers and small businesses are somewhat ignored. Cameyo has been free for up to 50 users since their creation and supports integration with Dropbox. For those without an enterprise agreement with Microsoft or VMware who want the benefits of application virtualization, Cameyo is an attractive option and I feel that catering for companies of this size could prove lucrative.
Cameyo boasts integration with Dropbox and ASG Cloud Cockpit. ASG Cloud Cockpit gives them a partner in the enterprise space. Dropbox is very popular for home users but not too popular in the enterprise.
The Cameyo application library currently features a wide variety of popular apps but these are retail apps and not really enterprise focused. Right now, there’s no way to generate an MSI using the Cameyo packaging tool.
There is a nifty automated online packaging tool but it’s a little limited, it still works for some of your apps, which is cool and shows potential.
To me, they are not a player right now in the enterprise but I urge everybody to try it out! Want to run your apps from a USB key, from Dropbox and even run some of your favorite Windows apps from your iPad or Mac? Try Cameyo. No need to install a client. No need to worry about licensing for home use. Sign up and try it for yourself.
For somebody completely new to application virtualization, it doesn’t get any easier than ThinApp. You perform a simple setup capture and the resulted output is mainly text files. The main project file that allows you to change settings such as project name, application dependencies etc. is a Project.ini file – a simple text file. You open it up in a text editor, make your change and recompile the app. SIMPLE!
Want to modify the registry? Open the registry text file, make your change and re-compile. Want to change the level of isolation on a certain directory? Open the attribute text file, make the change and re-compile etc. etc. It’s so, so SIMPLE.
This also comes at a price, though. Packaging tools such as Numecent’s Studio, Microsoft’s App-V Sequencer and Turbo.net’s TurboStudio provide a nice GUI to set many advanced settings that may be confusing to figure out in ThinApp, or worse yet, not available as features in ThinApp at all.
Unfortunately, it’s my opinion that VMware have somewhat dropped the ball with ThinApp. Back in 2007 or so, it had some great potential. It looked like an interesting alternative to App-V.
At some point a few years later, it just seemed like VMware lost interest with it and stopped actively developing. Between version 4.7.1 to 5.0, there was a gap of a few years, which sucked for us customers because it meant any bug that popped up was not readily fixed. Fortunately, they have had a couple of releases in 2015, so perhaps they will keep developing it further. I hope so!
Although, the text files make it simple to get started. It’s primitive nature can also be frustrating at times. Making a small cosmetic change to an application results in needing to recompile the entire app. If it is a large app that could be very time consuming, which is annoying.
I also personally experienced problems virtualizing Office Add-ins on top of a locally installed office. Linking multiple large dependencies together also was not without issue. At the time it seemed like the primary application would begin to load at some point, the other apps would decide, ‘ah we’ve waited long enough’ and just start to load themselves. One of the other apps would load quicker than the primary and throw an error because the first app could not be seen. Your mileage may vary when trying to virtualize Office depending on the version you use and what OS it’s required for. I must be honest, I have not used ThinApp in any meaningful way in over three years so these issues may now have been addressed.
VMware hold a large stake in the enterprise as their products are quite popular. Thanks to this, ThinApp has a pretty large user base. ThinApp’s saving grace in my eyes right now is the fact that VMware made some smart acquisitions over the last few years buying CloudVolumes and Immidio. I have been eagerly anticipating good full integration of these products into a single pane. This could give VMware a VDI stack that is out of this world with products including: vSAN, ESXi, vCenter, Horizon, Mirage, Immidio, App Volumes etc.
What does that mean for ThinApp? Well, if you use App Volumes together with ThinApp, all of a sudden you’ve got App Volumes making up for some of ThinApp’s shortcomings and ThinApp making up for some of App Volumes shortcomings. In summation, you have a solid application packaging and deployment solution. For more on App Volumes continue reading.
ThinApp is now on version 5.2, but you can also read my blog posts on previous versions.
As an early appvirt technology Softricity Softgrid (App-V before it was owned by Microsoft) was a real head turner and won a lot of fans, it was my first exposure to application virtualization so I have a soft spot for App-V. With that said App-V is not the be all and end all, if I’m honest. When working with App-V, I long for the simplicity of CloudPaging’s packaging.
App-V 5.0 was a tricky transition at first. Many of us relied on trickery using the OSD files and App-V 5.0 changed all of that. The deployment config files offer some nice flexibility and features but also don’t make up for some of the abilities lost with the removal of OSD files. Sequencing with 5.1 is easier than with 4.6 for the simple fact that there’s less input required. Microsoft standardized the sequencing quite a bit which was a good thing and a bad thing. For example, they standardized on enforcing security descriptors, which was optional in 4.6 – an option most people select to not enforce! App-V 5.x was just not fit for purpose until the release of Hotfix 4 and now with each new update it has got better and better. If you’re new to App-V and want some pointers, check out my guide to App-V Sequencing.
App-V is quite rigid with it’s isolation. In my opinion, it provides the least amount of control over the isolation of your apps. App-V 5.x introduced App-V sub-systems which have helped increase application compatibility, but to truly provide a simple solution that everybody will want to use, they need to provide the ability to optionally reduce the level of isolation. In my opinion, the key to the success of App-V and indeed all appvirt products is the ability to package all applications, not just the majority.
Realistically, App-V is the real winner in the enterprise. Is it a deserved position? I actually do believe so. They have constantly developed the product. As it’s become more widely used they’ve grown their support structure. They have a great and active online community, which no other vendor can boast. Much of this is defacto as Microsoft is Enterprise IT, but they have done a very good job of improving the product and increasing it’s adoption. If they continue this, I can see no reason why their dominance won’t continue.
With that said, at the bottom of this post I’m going to give my overall winner and it will not be based on popularity or the fact that I’m an MVP…I love being an MVP, CTA and vExpert but I’d like to think I can still remain impartial. I have so many App-V posts, for some more info check those out first.
Symantec Workspace Streaming\Virtualization
I have only worked on one project using SWS but I have heard of several companies using it. Something which is interesting about SWS is the fact applications run in a low level on the system meaning there’s a higher chance of application compatibility for certain drivers. At the same time the isolation is less isolated than in other products, which also results in higher compatibility BUT it’s not at the same level of Numecent CloudPaging. You will not be able to package all of your apps and deploy them. Of course, this is not just true for SWS, it’s true for all application virtualization products with the exception of CloudPaging.
Symantec released version 7.6 which allows you to use streaming without a heavy streaming server setup e.g. Database, multiple services etc. It gives you the ability to put your application ‘layers’ on a file share, publish to your users and allow them to stream from the share without an expensive backend. App-V 4.6 had a similar streaming option but Microsoft got rid of it with App-V 5.0.
There is also Symantec Workspace Virtualization which uses the same application layers (not the same as application layers used in Unidesk, App Volumes, FlexApp and AppDisks) only rather than publishing applications to stream to users Desktops. You can set this up on your Servers and allow the administrator to manually manage the applications e.g. Add an application, remove an application, change the isolation settings for that app etc. Kind of a niche feature but a unique feature all the same.
While I hit far less issues than I did with ThinApp. SWS is far from App-V currently. The development has been really slow.
They also don’t have the rich feature set of smaller vendors like Numecent, Turbo.net and Cameyo. I don’t know how many new customers they win just based on them wanting to use SWS but I bet their foot in the door is through other Symantec products and license agreements, which continue to be very popular.
NOTE: At the time of publishing Symantec Workspace Virtualization is now End Of Life.
Numecent CloudPaging provides a really solid application streaming experience. You can setup a central server for publishing applications to a web portal to allow streaming of the applications over HTTP. The streaming performance is very good over the LAN but part of their big draw is the performance over the WAN. They have a proprietary streaming logic that they call CloudPaging which does a nice job of optimizing streaming.
That’s pretty nice but by far and away the most powerful aspect of CloudPaging is it’s isolation settings. Some competing products have multiple levels of isolation to choose from but they still provide some level of isolation even in the least isolated mode. With CloudPaging you can select to stream the application and run it without isolation. This is huge! It means about 99% of all applications can be packaged and deployed using CloudPaging. No other product I review here can achieve this.
Even without setting an application to run completely without isolation, the product can handle certain gotcha’s like drivers when running isolated. No product is perfect and to me some of the short comings of CloudPaging include the fact, at least natively you need to publish applications in the Web Portal and thus it gives you that Software as a Service structure but not real Enterprise push deployment capability. The improvements in the last two years have been very noticeable. Numecent are becoming much more open and the management interface has improved significantly.
The fact isolation can be turned off on a per app basis gives Numecent a HUGE advantage but they are currently let down by the rigid deployment model in their native tools. With their many changes in recent years, I bet they’ll soon offer more deployment options for enterprise customers.
Just from a packaging perspective can you imagine if packaging of all of your application came down to just running a setup capture? Less scripting, less MSI packaging, less time and money spent on the whole damn thing! Software as a Service and launched on demand as you can see in the demo video obviously does have some uses and could be attractive in a cloud platform, but currently it doesn’t cover all bases. With a little more effort put into the product to make it a little more Enterprise focused, it could be a no brainer.
Docker has had a meteoric rise in popularity. Starting as a product used by developers for containerizing applications to streamline their dev testing\QA. They could containerize an application and hand it over for testing to somebody without any need for an installation, a dedicated virtual machine or any worry of breaking something on their system.
You will see today that Docker are also trying to sell everybody on use in a production environment. While that’s the natural progression, I’m not sure we’re at that point quite yet. The fact Microsoft have developed their own container product and still publicly embrace Docker so much as part of their Azure platform speaks volumes about the impact that Docker continues to have.
Docker is also being used in IoT world which I find fascinating! Personally, I use Docker to test out some changes for my website in a WordPress container. It’s super simple to do and is a great asset to have.
In the context of this article, I must write about Docker in comparison with the other products. All of the other products in this article allow you to virtualize your desktop applications. While Docker allows you to virtualize some desktop applications, it’s still a Linux based product and as such those applications have limited appeal for your typical enterprise desktop user.
What it’s really great for is containerizing server applications such as WordPress, Apache, nGinx etc. You can leverage images created by others for your own containers e.g. pull a publicly available image of mysql as a container and branch off your own container with your own data. I posted a pretty comprehensive ‘Getting Started’ guide over on my site if you’d like to learn more about Docker or containers in general.
I didn’t change this much from last year. Not because not much has changed but because I worked with Turbo.net for a few months this year and wanted to remain as impartial as possible.
So far in this post, I covered products which provide the ability to produce portable single executables which can be put on a USB key, CD\DVD, run from a fileshare or deployed to a desktop directly etc. With ThinApp you can generate an MSI and deploy the executable compete with shortcuts and file type associations. With Cameyo, you cannot. Well, with Turbo.net you can also generate the portable EXE’s and generate an MSI to deploy in the enterprise….but wait, there’s more. Unlike ThinApp, you can also host your application on a ‘streaming server’ (Turbo Server) and stream the application on demand, similar to App-V, SWS and CloudPaging. Turbo.net also falls under the application virtualization category for these reasons but is also firmly in the container category as you can also host your applications on a repository on Turbo.net and stream applications from their hub.
All of the application virtualization products discussed in this article allow you to package and deploy client side applications, desktop applications. What about server apps? You can also ‘virtualize’ these applications with Turbo.net.
Application containers are becoming very popular in the Industry now. They open virtual application to a wider audience than ever before. Docker is mainly being used by developers. They put their application in a container and provide that container for testing. No need to host a Virtual Machine, install the application and point a user to that for testing. Expensive, heavy and time consuming. A container is essentially a light weight VM, many containers can be run side by side together on the same machine. With ThinApp and some of the other products but NOT all, you can select to fully isolate your applications. Meaning you enforce the behavior, that if your application cannot find a file, registry or anything it needs within it’s isolated virtual bubble, it will not look to the local system (like how App-V does)…that’s all well and good but not particularly useful for desktop applications, in my opinion. Users tend to want to save things to their local desktop, documents etc. So visibility to these is essential.
On top of the ability to fully isolate the applications. Turbo.net provide the ability to isolate the network stack. Meaning TCP, UDP, named object calls can be set to stay within the isolated space. What does this mean? It means your server applications that require things like IIS or SQL Server can be packaged up with Turbo.net and run side by side on a single box with no worries of conflict. Image this, running 20+ completely unique instances of SQL on a single box with no need to strategize around ports, instance names, shares etc. You can even just take your containers and drop them onto another server with ease, if you need to decommission a server…or even run from your desktop! Imagine being able to run many sites on a single box without needing to worry about unique virtual site directories and ports for each. No chance of conflicts, means less to worry about. For a a very outdated Demo, check out below (I will update it soon, this has completely changed but it might give you an idea of what Turbo.net containers are all about. The UI has changed a lot but the concept is the same):
That’s not all though…what about their packaging tool? It just so happens to be one of the best packaging tools of any of the app virt products. It’s very feature rich. With their templates, you can install something likeIE8 on a machine, run the packaging tool (Studio) with the IE8 template and rather than having to do a snapshot capture, the tool will suck up your locally installed IE8 and all your settings into a package! Very cool! They have many of the heavy hitters accounted for, that’s very unique.
They have some runtimes pre-packaged which you can simply leverage and merge into a package that requires them. Unique again and very cool! I could go on but there’s so many advanced settings and cool features that it would take too long. Anybody currently packaging or with just an interest should reach out to the guys at Turbo.net to take a look.
Something I did not mention with ThinApp and SWS is the fact you can package and deploy Internet Explorer with those products. You can do that with Turbo.net too. With ThinApp and Turbo.net you can set up redirection too. Basically that means if you have a web app that requires IE8, deploy a single .EXE of IE 8 and set a policy listing the sites that requires it. When your user goes to IE 11 and attempts to navigate to the listed site. They’ll be re-directed to the isolated IE8 browser. Pretty cool. At a previous employer, we were also looking at isolating Java and Flash with the isolated browser and re-directing any sites that required those. Pretty cool because you’re dealing with the security threats head on by simply removing Java and Flash from your local systems entirely. Turbo.net can now redirect from Chrome and Edge too! No other product can do that.
Docker provides similar functionality around server apps and containerization but it’s a Linux based technology. Microsoft have released their container technology with Server 2016 BUT that’s tied to the Server 2016 Kernel. Turbo containers can be run on any Windows OS. The containers are Windows based. They also have what I believe is the best platform for their containers.
If I blogged about anything useful with an app or code, I could create a container and embed it my article. If I develop applications and want to provide users with a trial, I could create a container with a time limit and embed it on my site, just like above. I really didn’t see the wide appeal of containers to begin with but the presentation provided by Turbo.net has given me more food for thought around their potential.
When I worked with them, we worked on integrating containers with XenApp 6.5 and 7.x. The really cool thing about this is you could subscribe your servers to whatever applications on the hub you wanted and these would autoupdate on any schedule you prefer. If say a regularly updated app like Chrome gets a new release. It would get updated on the Turbo.net hub that night and updated on your servers on your schedule. Eirik at xenappblog has a great post about integrating them in his PVS image.
Turbo.net provides the widest variety in terms of packaging options and deployment options. They cater for the widest audience e.g. developers, home users, ISV’s, enterprise etc. Their packaging tool is the best of all of the products mentioned in this blog post. My buddy Ruben Sprujit presented his Workspace of 2020 at BriForum in 2014 and spoke about Microsoft’s need to get a single click and run container, similar to on OS X. Do I think this is that solution? I don’t know. But I can say it’s a technology that excites me and many others. Cameyo and Turbo.net are the most open for you to try out for yourself. I encourage you all to search them out and sign up for yourselves. No harm in trying.
The great Mike Nelson has presented quite a bit on the topic of Containers. He had a great session diving it into Nano Server and Windows Containers. Nano Server is a lightweight Windows Server, even lighter than server core. What’s pretty cool is that you can run Docker and Windows containers on this Nano Server. Of course you can also run Windows Containers on the core and GUI edition too.
As of this posting, there is no Microsoft hosted container hub. In fact, some Microsoft products actually feature on the Docker hub! A big part of the container ethos is a central hub to download images from. An open and collaborative space that gives containers an edge over traditional application virtualization.
At Ignite 2015 in Chicago, Microsoft announced Project Centennial. A very ambitious effort to standardize the application architecture for Windows apps. For more about this, check out my buddy, Tim Mangan‘s (The godfather of App-V) great article on the subject.
This leverages the Windows Container feature. You begin with a base image, you can then install your legacy windows application on top of this image, seal it and run as a container. The idea of this is that developers can take their current Win32 applications and make them available on the Windows Store. It remains to be seen how this may be leveraged going forward for general use.
Between Containers on Server 2016, Project Centennial and App-V, Microsoft now has a container base, an AppX application model and App-V 5.x that gel nicely together. Could a Universal application finally become a reality? I’ve written more about Project Centennial on my blog.
I got really excited when VMware purchased CloudVolumes. As a fan of Unidesk, I was waiting for application layering to become more main stream.
As stated in the ThinApp section, I believe App Volumes compliments ThinApp nicely. You can isolate your applications with ThinApp and then standardize on delivery using application layers. These layers are virtual hard disks. With App Volumes you can deploy these virtual hard disks to both virtual desktops and physical desktops.
A reason you may want to use a product like ThinApp with App Volumes is because this layering technology does not isolate the application. It does remove the need for application packaging and streamlines application deployment but just using layering can lead to the old problem of application conflicts.
Remember how I had said VMware would have an awesome VDI stack once they developed a single pane of glass? Well, that was somewhat attempted with ThinApp 3.0 but in my opinion it wasn’t a very successful first attempt. Version 2.10 was much, much more stable. Proof of this is the fact 2.11 just got released. I hope they continue to build upon 2.10 and work toward a truly unified VDI solution.
While 2.10 was pretty stable, I did have quite a few issues with application compatibility. I also had problems when hot syncing layers to my desktops (real time deployment). For the greatest success, I deployed on a schedule and rebooted. 2.11 will likely be an improvement on all fronts.
I feel that App Disks was a reaction to VMware acquiring CloudVolumes. It certainly felt like it was rushed in the first iteration.
While App Volumes for now can be used as a standalone product to deploy to various different platforms e.g. physical desktops, virtual desktops running in vCenter, Hyper-V etc. Citrix App Disks are a feature within XenApp and XenDesktop.
Maybe for this reason it does integrate very nicely. The fact Citrix have had their management stack in place and pretty stable for years now, introducing AppDisks into Studio offered a seamless integration.
App Disks will continue to improve and I look forward to that as somebody who is working primarily with Citrix products right now. Citrix integrated App-V directly into Studio with 7.x, with published hosted applications and now layers. They give customers many weapons in their arsenal. AppDNA can also assist those new to layering an appvirt to get the most of them.
Liquidware Labs FlexApp is pretty different with it’s native integration into their ProfileUnity product. ProfileUnity is a user environment management product. By combining the two you get the simplicity of application management using layers with the power of running scripts based on certain trigger events e.g. application launch, log on, log off, shutdown, network disconnect etc. Obviously, you can also manage the entire user profile but a UEM is much more than that. You can manage the entire end user experience so the ability to deploy layers with such a tool makes a lot of sense.
FlexApp can also be used standalone. Like App Volumes you can also deploy to both virtual and physical desktops.
I think Citrix would have been better advised to purchase or partner with LWL and integrate ProfileUnity and FlexApp into their stack rather than trying to rush App Disks.
My experience with FlexApp was a richer one than with App Volumes. The app compat rate was good and I really enjoyed the power and flexibility of using ProfileUnity together with FlexApp.
Unidesk is not just one of my favorite application layering products, it’s one of my overall favorite tech products!
FlexApp and App Volumes can be used standalone for deploying application layers to various different platforms. Unidesk 3.x was very much an all or nothing offering. You don’t just create and deploy application layers with it, you can also provision a layer used for storing your user’s data and you deploy your operating system, core applications and latest updates as a single layer.
When all put together you had the ability to manage every aspect of the virtual desktop. However, the user layer is simple and works great for a persistent desktop but not so much for non-persistent. So using something like AppSense, RES ONE, Immidio or ProfileUnity would come in handy here.
That’s 3.x, Unidesk have also released 4.x which simplifies setup as it’s provided as a virtual appliance. It also provides integration with XenApp and PVS. Using elastic layering and session containers you can deliver application layers on a per user basis. When a user launches a session, they only have visibility to their assigned layers. With 4.x there’s also integration with Microsoft Azure.
I was surprised that VMware didn’t buy Unidesk. It seemed like a no brainer as for years Unidesk only supported vCenter. It turns out that has worked out great for us techies as Unidesk continue to increase the number of platforms they support.
I have had the greatest success app compat wise with Unidesk over any other layering product and you can also read all my articles about Unidesk.
NOTE: At the time of publishing Citrix has announced it is acquiring Unidesk.
Cloudhouse was a difficult product to place in this article. It really could fit in the application virtualization category or containers. You can deliver your applications as portable apps similar to Cameyo, Turbo.net and ThinApp. You could also upload the applications to a central portal, similar to using the Docker or Turbo Hub.
Cloudhouse offers a lot of power in scripting capabilities. Much like with the App-V configuration files. Speaking of App-V, with Cloudhouse you can actually take your App-V application and containerize them with Cloudhouse to deploy as a single portable app. A niche product for sure but cool none the less.
The real power of Cloudhouse and what makes it unique is the redirection engine feature. You can use this to redirect a local folder or file to a virtual location. Very useful when you have an application that is poorly developed and needs a file in the root of C or in the install directory. You can even redirect a URL or port e.g. if an application will only work on a port that is already used in your environment you can present the port to the application and just redirect to an available port.
Being able to redirect for those poorly designed applications and being able to identify and include dependencies on legacy system files makes this a great option for those with particularly tricky applications and those held up with their OS migrations. Read more about Cloudhouse.
FSLogix is by far the easiest way to manage the applications in your environment. For small sized organizations, you could put all of your apps on a single gold image and then use FSLogix to create rules to hide applications from users who you deem are not entitled to them.
You can also manage multiple versions of an application, such as Java. You create a Java rule to redirect to a certain version as required. This is much simpler than using the Java Deployment Rulekit.
More recently FSLogix got into the container space themselves but it’s a little different than the likes of Docker, Windows containers and Turbo.net. These containers are profile containers and are really a virtual disk similar to those used for layering products like App Volumes, Unidesk etc. Rather than storing an entire application, these layers store the user profile. The disk attaches and follows the user. They branched this off into a solution for managing Office 365 data and settings and it’s really the only way to properly manage this today.
FSLogix are the kings of simplicity. Everything they do is as the name suggest the most logical approach. It’s by no means perfect for every situation but I believe with their Office 365 product, a lot more doors will open for them and we’ll see more and more FSLogix in enterprise – and I ain’t complaining! For more about FSLogix, check out my articles.
Conclusion – The Winner
I can’t pick just one winner, I want to give my dream team.
If I could pick what products I use day to day for packaging and deploying applications it would be a mix. I would package and deploy the majority of my applications using CloudPaging, this is because I believe it’s much more dynamic than delivering all applications as layers.
I would containerize my browsers with Turbo.net and also leverage Turbo.net for any of my frequently updated applications and also for any applications relevant to my organization that are hosted on their hub.
Finally, I would use Unidesk for delivering those particularly nasty applications and in some cases, I’d use it for deploying some of my containers and CloudPaging applications as suitable. If I could have Cloudhouse and FSLogix in my back pocket for certain applications and departments in my organization, that would be swell.
2 thoughts on “Application Virtualization Smackdown 2016 (The Winners)”
Comments are closed.