Home > Uncategorized > App-V 5.0: Launching Native/Local Processes Within the Virtual Environment

App-V 5.0: Launching Native/Local Processes Within the Virtual Environment


Update 12/6/2014: With the release of App-V 5.0 SP3, there is an additional option now available. You can now use the RunVirtual registry for user-targeted applications. You might prefer this to the /appvve switch. Please read more about it here: http://technet.microsoft.com/en-us/library/dn858700.aspx#BKMK_runvirtual_reg_key

Back in 4.x, we pretty much had one of two ways to launch an application inside the virtual environment or “bubble” as it is often called. One way was through the use of a pre-launch script. This was cumbersome in that you had to either modify the cached OSD or even worse, modify the original OSD file and re-deploy/refresh. Since I always used this for troubleshooting purposes, I found it easier to modify the cached copy of the OSD file. Starting in version 4.5, we also had a way of launching an alternative native executable inside the virtual environment by simply adding parameters to the SFTTRAY.EXE command:

C:Program Files (x86)Microsoft Application Virtualization Clientsfttray.exe" /exe cmd.exe /launch "DefaultApp MFC Application 1.0.0.1

App-V 5 offers us even more flexibility in this regard. To start off, do not use the scripting elements in the dynamic configuration XML. It is completely unnecessary and a waste of time. APP-V 5 offers many ways of getting inside "the bubble."

Powershell

You can use the Start-AppVVirtualProcess cmdlet such as the following example to retrieve the package name and start a local process within the specified package's virtual environment:

$AppVName = Get-AppvClientPackage *name*

Start-AppvVirtualProcess -AppvClientObject $AppVName cmd.exe

This way allows you to do something similar to the previous variant of SFTTRAY in which you can initialize an App-V virtual environment substituting a local command as the process running within that virtual process.

 

The Command Line Hook Switch “/appvpid”

This allows you to apply the /appvpid switch to any command which will allow the command to run within the virtual process of the virtual process you selected by its PID (Process ID) as in the example below:

cmd.exe /appvpid:8108

The Command Line Hook Switch “/appvve”

Where the /appvpid switch requires the virtual process to already be running, this switch allows you to start a local command and allow it to run within the virtual environment of an App-V package and will initialize it. The syntax is as follows:

cmd.exe /appvve:<PACKAGEGUID_VERSION_GUID>

The syntax is a but cumbersome as it requires both the package GUID and the version GUID:

cmd.exe /appvve:bcfdbe1b-8bff-4502-b4e2-5a773e82d86c_2ef3aaf9-9864-44a3-85dd-bf99a6b4d8f2

Run Virtual

If you are working within RDS environments, and have a package that is published globally, you can also take advantage of the “Run Virtual” feature. You basically add process executable names as subkeys of the following key:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftAppVClientRunVirtual

For example, if I have a locally installed application called MyApp.exe and I would like this application to run within the virtual environment, I would create a subkey called MyApp.exe (perhaps a helper application like Adobe Acrobat that may need to be called from a virtualized web application.) I would then put in as the default entry a REG_SZ value that contains the package GUID and the version GUID separated by an underscore (i.e. <GUID>_<GUID> or such as in the figure below:


 
Each native process that needs to run locally will require its own subkey beneath the Run Virtual key. As long as there is one version of the EXE on the system, placing the packageversion GUID combination in the default key value will suffice. If there is more than one version of the EXE installed on the machine, you will need to create a new REG_SZ value beneath the subkey and specify the value name by using the full path to the EXE.

Flexibility

The above options give you much flexibility in how you merge native processes with virtual environments. With App-V 5, these not only add interoperability options, but they enhance our troubleshooting toolkits.  There will not be any reason to go into dynamic configuration XML in order to do this.

PS: Yes, I know I have not been blogging enough on APP-V 5. I promise to change that. I do have customers to tend to, you know!😉

Update 12/6/2014: With the release of App-V 5.0 SP3, there is an additional option now available. You can now use the RunVirtual registry for user-targeted applications. You might prefer this to the /appvve switch. Please read more about it here: http://technet.microsoft.com/en-us/library/dn858700.aspx#BKMK_runvirtual_reg_key

 

  1. madvirtualizer
    November 30, -0001 at 12:00 am

    Ah yes, an excellent example of using dynamic configuration to control OS extension points (FTA's)

  2. Anonymous
    November 30, -0001 at 12:00 am

    Thanks, I think it would be a nice addition to the methods of starting local applications within virtual environments.
    Right now I have found an alternative solution for my 'problem'. You can use dynamic configuration XML files to overwrite local file type associations. By using userconfig.xml within an App-V 5 package to assign a file type association to a local installed application, you can assign file type associations to local installed applications. AppV will start the specified local application within the Virtual Environment of the App-V package.
    The following UserConfig.Xml section assigns the .XLSX file type to Excel, but starts it within the virtual environment of the App-V package that it belongs to.
    <Extension Category="AppV.FileTypeAssociation">
              <FileTypeAssociation>
                <FileExtension>
                  <Name>.xlsx</Name>
                  <ProgId>ExcelLocal</ProgId>
                  <ShellNew />
                </FileExtension>
                <ProgId>
                  <Name>ExcelLocal</Name>
                  <Description>Excel 2010</Description>
                  <DefaultIcon>C:Program Files (x86)Microsoft OfficeOffice14Excel.exe</DefaultIcon>
                  <ShellCommands>
                    <DefaultCommand>open</DefaultCommand>
                    <ShellCommand>
                      <ApplicationId>Excel</ApplicationId>
                      <Name>open</Name>
                      <CommandLine>"C:Program Files (x86)Microsoft OfficeOffice14Excel.exe"</CommandLine>
                      <DdeExec />
                    </ShellCommand>
                  </ShellCommands>
                </ProgId>
              </FileTypeAssociation>

  3. Steve TH - MSFT
    November 30, -0001 at 12:00 am

    Well a few quick questions: 1) Assuming Office is local, will all users hitting this RDS box need these add-ins? 2) If so, are there any restrictions as to which add-ins can be used by certain users?

  4. madvirtualizer
    November 30, -0001 at 12:00 am

    Thanks for the feedback. As RunVirtual is new and designed for machine-targeted RDS/Citrix farms that adds flexibility, we are always looking for ideas for improving and expanding these new features. I will be sure to forward this along from the field.

  5. Guido Manders
    July 5, 2013 at 10:47 am

    Interesting article, I was aware of the first three options to start a native application within a virtual environment, the 'RunVirtual' option is very interesting. However it is unfortunate that it is only possible to use these keys in HKLM and not in HKCU. We have several business units on the same XenApp farm and they all use different Office add-ins. If it were possible to add RunVirtual in HKCU, it would be possible to start Office applications within a different virtual environment without too much of a hassle, now I have to use custom PowerShell scripts for each business unit.

  6. Vic O
    October 11, 2013 at 4:27 pm

    Can thios feature be used to launch exes on a network share.. say client server apps

  7. Steve TH - MSFT
    October 23, 2013 at 4:05 am

    Yes, using the /appvve switch but you will have to specify the shortcut using an UNC path.

  8. Roger the Young
    December 3, 2013 at 12:43 pm

    Hi,
    We use this to provide some users in our citrix environment with a specific plugin in Excel. However, when they start excel with the /appvve switch, they can't use the send mail functionality any more. Is there an explanation for this or better yet, a solution?🙂
    Kind regards,
    Rogier de Jong

  9. Steve TH - MSFT
    December 3, 2013 at 9:41 pm

    @Roger – Is Excel virtualized as well? This may be a known issue?

  10. Angel_PRU
    December 6, 2013 at 12:48 pm

    Steve, I noticed your post on Oct 22 that you could use EXE /appve:PKGGUID_PKGVGUID to launch a process off a network share but you have to use UNC.  Doesn't work for me, generates a 18005 error in the Virtual Applications APP-V log.  Have you confirmed this works?  BTW, tried it on SP1, SP2 Beta, and SP2 clients, all failed with the error listed below.  I am assuming it has something to do with the APP-V client process running under the SYSTEM context and not being able to gain access to the share.  I confirmed this by granting the client machine's computer AD object read access to the share, once I do that it works.
    The virtual application 'Servernamesharenameexe.exe' could not be started because the App-V Subsystem 'Virtual Shell' could not be initialized. {error: 0x8DC02225-0x5}

  11. Steve TH - MSFT
    December 6, 2013 at 6:38 pm

    @Angel_PRU – The share will still be accessed by the AppvClient process under the SYSTEM context and not impersonating the user account. I should probably point that out more specifically.
    1. Format must be UNC servershareapp.exe /appvve:<PACKAGEGUID_VERSION_GUID>
    2.The Top Level Share and NTFS directory – has to have the Computer system account set to at least read – ServerTopLevelsubdir  you need to set permission on the top-level not just on sub-directory on the NTFS permission side of things. Again this is due to the non-impersonation.

  12. Angel_PRU
    December 6, 2013 at 8:11 pm

    Steve, I appreciate the clarification.
    But that requirement would prevent, IMO, most mid/large size companies from using a feature they had available to them in 4.x.
    Our security team would not approve granting a computer object (especially with free seating) access to business owned shares.  And in a pooled VDI environment, this approach would be unmanageable.
    Thank you for your help.

  13. Steve TH - MSFT
    December 9, 2013 at 3:25 am

    I understand your concern and we've received much feedback on all of the variants of what I refer to as "the impersonation issue." I will keep you all posted if there is any changes or developments.

  14. Anonymous
    December 28, 2013 at 10:05 pm

    Pingback from How to Prepare for a Migration to App-V 5.0 – Dynamics AX Sustained Engineering – Microsoft Dynamics AX – Microsoft Dynamics Community

  15. Anonymous
    December 29, 2013 at 3:26 pm

    This is the first post in a series of posts around migration of App-V from 4.x to 5.0. Introduction Since

  16. Sikeru
    January 22, 2014 at 7:19 am

    Thank you very much!
    But i don’t clear knowledge in Run Virtual section. please help to make it clear more.
    in case, i have 2 off add-in. what must i do?

  17. Sikeru
    January 22, 2014 at 7:19 am

    Thank you very much!
    But i don’t clear knowledge in Run Virtual section. please help to make it clear more.
    in case, i have 2 off add-in. what must i do?

  18. Ari
    April 7, 2014 at 12:35 pm

    Hi Steve – just posted this on a Citrix forum (http://discussions.citrix.com/topic/348733-publishing-app-v-50-app-with-appvve-switch/), in response to another Citrix/App-V user’s suggestion re: the RunVirtual key:The RunVirtual key is only good for locally-installed apps that you want to run inside a single virtual environment all the time. For instance, let’s say you have have a vanilla version of IE10 installed across your RDS/Citrix servers. You have some users who run just that Plain-Jane version (for instance, to access the company intranet), but also users who run it with App-V app #1 which has some ActiveX controls, App-V app #2 which has a custom JRE, and so on. I might have dozens of different browser-based apps, all of which have specific (and different) add-on requirements and all of which call the natively-installed browser. In that scenario, I don’t think that the RunVirtual key helps me at all.Am I correct here, or have I misread the purpose and usage of the RunVirtual key?

  19. Anonymous
    April 27, 2015 at 5:04 am

    Throughout the past 15 years, from its origins in Softricity, one of App-V’s primary use cases

  20. Anonymous
    April 27, 2015 at 5:17 am

    Throughout the past 15 years, from its origins in Softricity, one of App-V’s primary use cases

  21. Anonymous
    June 30, 2015 at 10:12 pm

    ~ John Behneman | Senior Support Escalation Engineer Hello everyone, John Behneman here again. I’d like

  22. Anonymous
    June 30, 2015 at 10:13 pm

    ~ John Behneman | Senior Support Escalation Engineer Hello everyone, John Behneman here again. I’d like

  23. Suraj Malusare
    April 6, 2016 at 7:31 am

    I have 2 or more than that excel add-in package ( without shortcuts ) which I have virtualized and I want after launching of Excel shortcut on client both packages add-in should display then how I can achieve that ? Note that Office is not virtualized
    here. Also I don’t want both excel should be part of single connection group.

    I tried with Run virtual subkey but it accepts only one default key resulting into only one add-in display.
    Can someone please help me ? It would be really appreciated.

  24. Steve TH - MSFT
    April 20, 2016 at 2:27 am

    How about creating an empty package with the local office applications as shortcuts and virtual applications – then joining them into the connection group? You could also just sequence the application on a machine that has Office installed using the Add-in
    workflow. Then ensure that the local Excel is added as a virtual application in the package.

  1. No trackbacks yet.

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 )

Google+ photo

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

Connecting to %s

%d bloggers like this: