Theory Of Operations
AppV_Manage primarily uses the App-V Client Powershell interface, both to acquire information and to take actions. It also pulls information from the packages located in the configured server share, and possibly from the Windows Registry directly.
Collection and Collation of Information
AppV_Manage uses a number of background threads to collect the information that it needs. Except when noted below, the information collection is not based on an automatic timer to reduce the impact of the tool. Typically, the tool reads everything at startup, and re-reads information when you use the tool to make a change. There are also refresh buttons available on some tabs to manually request a refresh.
Two non-configurable timers are used to automatically refresh certain information:
- a 30 second timer is used to refresh the information on the Event Viewer tab. Only changes in the three primary logs for the App-V client are read each interval.
- a 10 second timer is used to refresh the information on the Debug Packages tab for currently virtualized applications.
Information is gathered automatically from the following sources:
- Configured Server Share: All AppV and Dynamic Configuration files are enumerated, possibly limited by a folder search depth configurable parameter. Each AppV file is opened and the internal AppX_Manifest is parsed.
- Existing Client Packages: The App-V Client is queried to obtain information about all App-V packages currently at the client.
- Existing Client Connection Groups: The App-V Client is queried to obtain information about all Connection Groups currently at the client.
- Existing Client Configuration: The App-V Client is queried for the current client configuration parameters, including GPO settings.
- The event records for the three primary App-V Client event logs are read.
- Certain Client registry settings may also be read.
This information is completely read when the tool is launched, or when the Refresh button is clicked on the Publishing tab. Appropriate of this information are re-read as actions are taken in the tool. Appropriate subsets are also read when the Refresh button on tabs other th an the Publishing tab.
On demand, additional information may be acquired from the following sources:
- The App-V Client Debug event logs may be read
- File and Registry information associated with "application related data" may be read.
This information is collated for presentation in the interfaces.
User Context and Administrative Rights
The App-V Client PowerShell interface was designed to try to protect a standard user from making changes that can affect other users. On a system with UAC enabled, you can use the tool in one of the following ways:
- Log in as a local or domain administrator. If UAC is enabled, launching the tool will give you a one-time prompt for elevation. After that, all operations may be done (until you close the tool). This makes for quick testing, but does not cover all end-user cases. Especially with packages that have scripts, require elevation themselves, or if you use roaming profiles or another user environment management solution, testing as a non administrator is recommended.
- Log in as a standard user, then launch the tool without using RunAsAdministrator. This also allows you to perform all operations (other than enable/disable debug logs or configuration of the tool itself). Those operations that require elevation will prompt you for it each time it is needed. This makes for slightly less quick testing, but covers the end-user cases.
- Log in as a standard user, then launch the tool with RunAsAdministrator. After entering your credentials once, you can perform any action. The downside of this is that you are running as a different user, so publishing to the user (rather than globally) doesn't give your logged in user the app integrations to the desktop.
The tool displays the mode ("Std User Mode" or "Administrator Mode") on the title bar in case you forget.
So what needs elevation that will prompt you?
- Adding and Removing Packages
- Publishing and Unpublishing packages using the -Global option
- Adding and Removing Connection Groups
- Editing Connection Groups (which adds a new version)
- Enable/Disable Connection Group using the -Global option
- Changing Client Configuration
And the cases where elevation is needed but it won't prompt you:
- Enable/Disable debug event logs
- Configuring the options of the tool