Update: VMware App Volumes 4, version 2103
With 2103 this feature is back! So it was fun to hack the database but better to upgrade to 2103 and get this feature back supported!
Allow package delivery to any operating system – A new global option, similar to the operating system check box in App Volumes 2.x, is added under Advanced Settings which disables the check to ensure that the same operating system is used to package and deliver applications. While App Volumes Manager enforces operating systems to be similar for optimum application compatibility, many applications can work across similar Windows 10 and server versions if the architecture of the operating system is the same and the application supports being transported.
First of all! This is unsupported! Doing this you will risk breaking stuff if done wrong and I will not be accountable for that! Use at own risk! GSS will hunt you down and slap you in the face if you use this in production. You have been warned!
App Volumes 2.x had the option to set an App Stack created on like Windows 10 also compatible with another OS. With App Volumes 4 this is not possible anymore… When packaged on Windows 10 you cannot mount this App on a 2016 RDSH server. While this has it’s reasons it kinda bummed me out. This means you have to do the App Stack dance per OS you want to support.
While this was possible in 2.x it was not recommended. There are no guarantees it works and was nice to have.
It’s all in the database
With App Volumes, all information is stored in a SQL Database. It did not take much time to find out that operating_system_id holds the value of the OS it was packaged on. So I created a Server 2016 VM and created an App Stack with VLC. In the database, this App Stack got operating_system_id 14 where Windows 10 has id 2. I was able to mount this on a 2016 server but not on a Windows 10 VDI. So I started changing the id from 14 to 2 and tried mounting it on a Windows 10 VDI. Took a few tries to find out that there are 3 tables that need changing and voila! The on the Server 2016 created VLC App Stack now mounts on a Windows 10 VDI!
The App stack with id 2.
The same App Stack with id 14.
The operating_system_id can be found in the 3 tables below:
dbo.snapvol_operating_systems
dbo.app_package_operating_systems
dbo.snapvol_app_bundle_operating_systems
List of OS and ID
I have tested a few options and found out all id’s.
OS | operating_system_id |
Server 2016/2019 | 14 |
Server 2008 | 13 |
Server 2008 R2 | 11 |
Server 2012 | 10 |
Server 2012 R2 | 9 |
Windows 7 (x64) | 8 |
Windows 7 (x86) | 7 |
Windows 8 (x64) | 6 |
Windows 8 (x86) | 5 |
Windows 8.1 (x64) | 4 |
Windows 8.1 (x86) | 3 |
Windows 10 (x64) | 2 |
Windows 10 (x86) | 1 |
Now what?
Haven’t found the “all OS” switch if it exists. But I found a way to link a 4.x App Stack to multiple OS versions!.
To get this working you will need to manually insert some stuff in the 3 tables I talked about before saying that the same App Stack also holds id 2 and 14. This is how it worked in the 2.x days!
Here I told the App Stack for VLC (snapvol_app 9) that it works for Windows 10 (2) and Server 2016 (14)
Also, this makes it’s possible to clone the App Stack VMDK and change the id to allow it on another OS. Safes the time of doing the stack dance for multiple OS but still, NOT SUPPORTED 🙂