There have been some great posts flying around talking about the RunVirtual feature in App-V 5.0 over the last few weeks and months, both from some of the guys here at Microsoft and our MVPs. So I thought I’d break it down in true VirtualVibes fashion as an end-to-end step by step!
RunVirtual is a way to detect a local native process and use it as a trigger to launch it within the virtual environment of an App-V package. A great candidate for IE plugins for local IE, Office Plugins for local Office or other such scenarios. The cool thing about the feature as that your user just does what they normally do and it’s much more seamless than sequencing shortcuts in App-V 4.6.
Take this scenario, we have sequenced Adobe Reader and Adobe Flash Player and delivered them to our client.
Internet Explorer is of course locally installed which means we hit a few little niggles when it comes to the integration our two Adobe products:
When I go a flash website, IE cannot find the virtual instance of flash player that I have delivered and as it isn’t locally installed either, the webpage fails to load.
Not only that but when we open a PDF from IE, the full Adobe Reader application opens it in a separate window, again IE can’t embed the PDF in the open IE session because it is unable to interact with the virtualised environment for the Adobe Reader package!
Enter RunVirtual
You will find the registry key here: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual
To get a virtual application to pull in the local process all we have to do is create a new key for the process we want to target, in this case iexplore.exe:
Now all we have to do is edit the (Default) REG_SZ value with the package GUID and version GUID (separated by an underscore) of the App-V package we need our local process to see.
Let’s target Adobe Reader and get the GUID with the following command:
One thing you will notice above is the package is published globally to the machine, this is a requirement for RunVirtual to work. More on how to achieve that here.
Now all we have to do is paste into the value these GUIDS in the format of <PakageGUID>_<VersionGUID> which means 1d30b891-53d6-476b-bd4a-9533ae06d903_f7d2c119-5abf-4b0c-b64e-fc85e7eff571
That’s it! Next time we launch Internet Explorer (iexplore.exe) and navigate to a .PDF we find the embedded Adobe Reader addin component is loaded into the IE window.
So that’s cool, but what about flash player? Well another small limitation of this feature is that we can’t list multiple applications. However to work around this we can put the applications into a connection group. This will mean when Adobe Reader is launched the other members of the connection group will also be launched, in this scenario you must consider the application that is most important to you and ensure it is a member of a connection group that contains the other applications you are interested in launching because the registry still only specifies the single application, this might not always be ideal.
Flash Player is now in a connection group with Adobe Reader, this means we don’t need to change any of the registry settings. Next time we launch Internet Explorer, we will launch Adobe Reader and because it is in a connection group with Flash Player that will also launch with it.
As you see now our Flash website will load successfully and it’s all thanks to the humble new feature in App-V 5.0 called RunVirtual!
***UPDATE*** With shell extension support introduced with App-V 5.0 SP2, the RunVirtual feature is not needed for instances such as above, read about it all here.
***UPDATE*** RunVirtual now supports user targeting with 5.0 SP3, read all about it here.
19 thoughts on “RunVirtual End to End”
Great post Thamim but I think you need to emphasize more, that in this situation you have to start Adobe Reader first to get Flash and other plugins to work in the connection group. Adobe Reader is initiating the connection group and that is the reason why you can't start flash from new IE window. This means you really have to consider which plugin is the most important to you – in my case Java was chosen. I really hope this feature will be expanded in a hotfix or service pack, cause I can see several situations where I want iexplore.exe to look into the virtual bubble.
Hi Thomas, you are totally correct, I have added a extra line to emphasise this. We are seeing really positive feedback to RunVirtual however the two limitations at this point are the need to globally publish and the inability to list applications under the process key in registry.
Hi Guys, Are you able to launch applications or executables on the network drive using RunVirtual. I have a scenario where dependencies for a network app are sequenced however, the shortcut points to the network share \\Server\Share\test.exe /appve (GUIDS) Does run virtual work explicitly with locally installed apps..? I tried launching from a batch file and mapped drive to no avail
Not sure what you mean? Can you explain in more detail what you are trying to achieve?
Hi Thamim, Nice post, good to know lot of nice things in App-v 5.0. But I do have a small doubt in this. Say I have did this for FlashPlayer 10, and I able to open IE and access flash contents from the virtual package. But I do have some flash player files which can play only with 11.0 version and I have installed that version locally. will it automatically redirect IE to launch the flash content in 11.0 from the locally installed package. Or hence we have configured IE for virtual flash player 10.0 it will fail, If so how can we handle this situation. Thanks.
Hi, IE will still launch alongwith FlashPlayer 10. There is nothing in RunVirtual to detect the newer version locally rather IE will launch with what it can see. This would have to be managed with the deployment.
I have my main application installed locally and then created App-V package for the Add-on.
Here I would like to know the consequences and the outcome of the behaviour for the below scenario
1) Installed my main application locally (not Appve’d)
2) Installed App-V packaged Add-on (I am using RunVirtual key to launch the virtualized add-on from the locally installed application)
If suppose I am installing the same add-on locally again (Not-appve’d). What would be the behaviour???
Hi Raj,
The resultant behaviour would largely depend on how the add-on presents itself and how it is loaded by the parent application. The most probable behaviour would be that the parent application would launch inside the virtual environment, load the virtualised add-on and not see the local instances of file/reg for the locally installed add-on.
Hi! Thanks for a good article!
But I have a question… What I need to do if I want to run local application inside virtual application?
For excemple, I have Adobe Acrobat Pro (it’s virtual application), and I need to create .pdf file that will consist from two .docx files. Microsoft Office Word is local application.
Hi Victoria,
You can use the technique as explained above?
Hi,
What happens when 2 different packages need to use the Run virtual key for the same application?
Briefing:
Lets assume package AppV1 puts a runvirtual key in the location [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual\excel.exe]
@=”aaabbbccc_dddeeefff”
Now one more application puts a key i nthe same location for excel.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\RunVirtual\excel.exe]
@=”hhiijj_kkllmm”
In this case, virtual key of the firts AppV package is lost.
Please guide me how to handle this situation.
Thanks for your help.
Hello Thamim
I also have the same doubt as Anup has mentioned above hence could you please suggest the required workaround.
I have 2 different virtualized packages which has their own excel add-ins and upon launching excel I want both of them to be published to the user.
Using Run virtual key how we can achieve that ? I want something by just adding registry as above instead of connection group.
Thanks.
Comments are closed.