VMware App Volumes Self Service Utility

VMware App Volumes Self Service Utility

Last week we VMware held it’s Tech Summit for the SE and PSO organizations.   As part of the event there was a Hackathon held where employees could develop a “hack” for existing VMware technologies.   I participated and decided to develop a Self Service for App Volumes.   This application won second place in the Hackathon, and with 17 pretty amazing teams participating, I was very excited and decided to share the application.

App Volumes is great and has a lot of flexibility, but it is primarily a “push” technology.   You assign AppStacks to a user, group, ou or computer.  This is somewhat static and when a user wants a new application they have to put a request in so an App Volumes admin who can then go into the App Volume manager and assign the AppStack.

With this utility, the process is “pull” where the user can see available AppStacks, select and attach them on demand.   AppStacks are filtered automatically, and the user only sees those AppStacks which apply to the Operating System and Architecture they are running.   The AppStacks are attached as Machine Assignments and are immediately available.

The user can also remove AppStacks on demand and any current or pending Assignments are visible through an Advanced View.   There are also switches that can be used with a solution such as VMware UEM.   The user can also right-click an AppStack to see what applications are installed in the AppStack prior to attaching it.

How It Works

The application is written in VB.NET 2013.  When first launching the application, if no SQL connection has been established it will prompt the user to enter the address and name of the App Volumes database.   The application runs under the security context of the user launching the application, so that user must have at least read access to the database.

When the user clicks the “Refresh AppStacks” button, the application connects to the App Volumes database and filters AppStacks by OS and Architecture and provides the user a list.   It also queries the database for an assignments for the current user or computer and will display those along with any currently attached AppStacks.

When a user selects one or more AppStacks to attach, the application first checks to see if there are any user assigned AppStacks attached.  In AppVolumes, you cannot have both user assigned and computer assigned stacks attached at the same time.

This application will automatically remap any user assigned AppStacks as computer assigned so additional AppStacks can be attached to the current system.   It will even remap a writable volumes if one exists.   It attaches and detaches AppStacks using the svservice.exe file which is installed in every AppVolumes agent installation.  The database is accessed read-only and any attach and detach actions are handled locally.


  • App Volumes Agent installed  and registered on the client
  • .NET Framework 4.0
  • Users must have read-only access to the App Volumes SQL Database


  1. Download Manage_AppStacks.exe from the link below and place on a system running an App Volumes Agent.   If you try to run this application on a system without an App Volumes agent, you will get the message below and the app will exit.

    Screen Shot 2015-10-09 at 12.54.45 PM

  2. Make sure the user that will use this application have at least read-only access to the SQL database for App Volumes.   You can accomplish this by creating a SQL login for an AD group, and granting that login access to the App Volumes SQL database.   I would recommend only adding that login to the db_datareader role.   This will only grant that login read-only access to the AppVolumes SQL database.

    Screen Shot 2015-10-09 at 12.57.59 PM

    Also, make sure the SQL Server Browser Service is running on the SQL Server.

  3. Start the application by opening “Manage_AppStacks.exe”
    Note – If running on a system with UAC, you may have to set this .exe to run as administrator.  

    Screen Shot 2015-10-09 at 1.04.11 PM

    Screen Shot 2015-10-09 at 2.22.25 PM

  4. The first time you launch the application you will get a message that no SQL Server is configured and you will be prompted for the SQL server name and Database name.  Enter the name and any instances (ex: servername\instancename).   If you need to specify a custom port for SQL, you can do that by adding a comma and port after the server name (ex.  servername,port).  These settings are stored in the registry under HKCU so once you put in a setting it will persist for that user.  Settings can also be pre-populated with a solution such as VMware UEM.

    Screen Shot 2015-10-09 at 11.47.21 AM
    Screen Shot 2015-10-09 at 11.47.40 AM
    Screen Shot 2015-10-09 at 1.08.40 PM|

  5. Once SQL has been configured, you can populate AppStacks.  Click the “Refresh AppStacks” button.   This will connect to the SQL database, and provide a list back of the AppStacks which can be attached to the system you are running on.   You will also see any current attached AppStacks.

    Screen Shot 2015-10-09 at 1.14.39 PM

  6. You can also browse each AppStack to see what applications are installed inside of it, but right-clicking the AppStack and selecting “Show Installed Applications”.

    Screen Shot 2015-10-09 at 1.20.02 PM
    Screen Shot 2015-10-09 at 1.22.46 PM

  7. If you want to attach one or more AppStacks, simply select the AppStacks and choose Attach Selected AppStacks.  You will receive a confirmation message showing the AppStacks you have selected.   If there are no user assigned AppStacks currently attached to the system, the AppStacks will immediately attach and the applications will be available immediately.

    Screen Shot 2015-10-09 at 1.28.17 PM

    If there are user attached AppStacks you will see the message below with an additional confirmation message:

    Screen Shot 2015-10-09 at 11.36.35 AM

    If you click yes any user assigned AppStacks will be re-attached as machine attached AppStacks.   This allows the user to add additional AppStacks to the machine since both user and machine attached AppStacks cannot be mapped at the same time.

    Note: Unless removed, there could be two assignments for an AppStack that is maped this way (Machine and User).  In the Advanced section of this article I will discuss a /logoff switch that can be called through logoff script or UEM to automatically un-map any machine based assignments at logoff.

  8. AppStacks that are attached through the program can be dynamically removed by selecting any attached AppStacks and selecting “Detach Selected AppStacks”.   The selected AppStacks will be immediately detached and unassigned.

    Screen Shot 2015-10-09 at 2.01.42 PM

  9. To exit the application, you need to select File | Exit  or choose Exit from the system tray context menu.

    Screen Shot 2015-10-09 at 2.25.04 PM

Advanced Features:

  • Minimize to System Tray – The either minimized or the “X” close button is clicked from the application, it will be minimized to the system tray.   There is a right-click context menu available from the tray icon that can be used to maximize the application or exit.
    Screen Shot 2015-10-09 at 2.10.46 PM
  • Show Advanced Features –

    Screen Shot 2015-10-09 at 2.18.13 PM

    Screen Shot 2015-10-09 at 2.18.22 PM

  • /logon Switch –  This switch can be called from a logon script or UEM to automatically remap any user attached stacks as machine attached.

    Screen Shot 2015-10-09 at 2.27.41 PM

  • /logoff Switch – This switch can be called from a logoff script or UEM to automatically un map any machine attached stacks attached during the user session.

    Screen Shot 2015-10-09 at 2.27.32 PM

  • RDSH –  This utility can also be used with RDSH servers (VMware or Citrix) that have the App Volumes agent installed.   The utility will only show those AppStacks that apply to the RDSH host.   AppStacks can be browsed by right-clicking to see what they contain.   I publish this utility as a hosted application and manage the delivery of AppStacks to my RDSH hosts that way.

    Screen Shot 2015-10-09 at 2.48.24 PM


Hopefully this utility will be helpful.  I will continue to update it – so keep checking this blog for updates.   I will be rewriting this utility to use the App Volumes API, but since there is no RBAC for App Volumes yet, anyone who was going to use the application would need to be an App Volumes administrator.   The first release with the API will allow the user to select if they want to use SQL or the API to read data.

Please let me know your feedback either as comments on this article, or be reaching out to me on twitter at @chrisdhalstead .   A demo of the utility and the download are located below.  Enjoy!

Demo of the App Volumes Self Service Utility

Check out the following video to see a demo of the Self Service Utility:

Download the App Volumes Self Service Utility

Click the below link to download and test this utility.   I appreciate feedback and suggestions!

Download App Volumes Self Service Utility


This entry was posted in App Volumes and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s