News Feeds
The Microsoft Server Application Virtualization team blog
We cover news, support and everything else related to virtualizing server apps with Server App-V.

  • Introducing the Server App-V Remote Application Packager

    Traditionally, packaging an application for deployment through Server App-V has involved installing your application while the Sequencer monitors its progress and packages the results.  Today, we are introducing the Server App-V Remote Application Packager which allows you to package an already installed application following the basic workflow below.

    1. Install the Server App-V Sequencer and Remote Application Packager on your sequencing server
    2. Launch the Server App-V Sequencer and select a custom installation workflow
    3. Launch the Remote Application Packager, when the Sequencer is ready for you to run an installer
    4. Provide the machine name with the natively installed applications
    5. Select the applications you want to package and click start
    6. The Sequencer copies over your application and produces a Server App-V package

    That easy and your natively installed applications can now enjoy the benefits of easy and flexible deployment using Server App-V and VMM Service Templates.

    Applicability

    The traditional sequencing process may not always be an option in your environment. For example, you may not have the application’s installer or the application’s installation and configuration requirements. Virtualizing an application provides numerous deployment advantages and the tool is a great facility to achieve this especially if any of the following scenarios apply:

    1. You need to deploy an application to a newer version of Windows Server
      • Note: Using this tool does not guarantee that your application will work with a newer version of Windows Server
    2. You need to migrate an application from physical server a to a virtual machine
    3. You want to leverage VMM Service Templates to deploy a select number of application workloads

    Enter the Server App-V Remote Application Packager.

    How It Works

    Determining Candidate Applications

    The first phase the tool performs is determining the applications that are candidates for packaging. Most applications make entries in the registry that allow the tool to generate a list of the applications installed on the remote machine. After that, the following criteria are applied:

    1. Is the application’s installer MSI based?
    2. Is it present on the Sequencing machine?
    3. Is it installed machine wide and not for a specific user?

    If the criteria are satisfied, the application is presented as a candidate application for packaging.

    Packaging Selected Applications

    The remote application packager uses a variety of techniques to gather information from the remote machine.  Most of the information is gathered using built-in remote management capabilities such as WMI, remote registry, remote SCM and administrative shares. The exception is IIS content which relies on the web deployment tool (the tool needs to be installed on both machines).

    There are 3 steps performed:

    1. Create an application model – determine the application’s components (files, IIS sites, registry entries etc.)
    2. Optimize the application model – perform additional logic to ensure that everything related to the application is included in the model and can allow us to move the components in an efficient manner
    3. Copy the application to the sequencing machine – get the components from machine A to B via copy
    Note: Your Sequencing OS must match the remote machine OS.

    Supported Scenarios

    • Server App-V Sequencer SP1 (build 4.9.37.2003)
    • MSI based installers
    • The following Windows components:
      • Windows services
      • Registry
      • File systems
      • IIS
      • Environment variables

    The tool is available here. We hope you try it and let us know if you have any questions or issues.

    Derrick Isoka - Program Manager, Server Application Virtualization



  • KB: A .NET application crashes after installing the Microsoft Server Application Virtualization client

    imageHere’s a quick KB article on an issue you may run into where a .NET application crashes after installing the Microsoft Server Application Virtualization client. This is a pretty easy fix and you can read about it here:

    2791762 - A .NET application crashes after installing the Microsoft Server Application Virtualization client (http://support.microsoft.com/kb/2791762)

    J.C. Hornbeck | Knowledge Engineer | Management and Security Division

    Get the latest System Center news on Facebook and Twitter:

    clip_image001 clip_image002

    System Center All Up: http://blogs.technet.com/b/systemcenter/
    System Center – Configuration Manager Support Team blog: http://blogs.technet.com/configurationmgr/
    System Center – Data Protection Manager Team blog: http://blogs.technet.com/dpm/
    System Center – Orchestrator Support Team blog: http://blogs.technet.com/b/orchestrator/
    System Center – Operations Manager Team blog: http://blogs.technet.com/momteam/
    System Center – Service Manager Team blog: http://blogs.technet.com/b/servicemanager
    System Center – Virtual Machine Manager Team blog: http://blogs.technet.com/scvmm

    Windows Intune: http://blogs.technet.com/b/windowsintune/
    WSUS Support Team blog: http://blogs.technet.com/sus/
    The AD RMS blog: http://blogs.technet.com/b/rmssupp/

    App-V Team blog: http://blogs.technet.com/appv/
    MED-V Team blog: http://blogs.technet.com/medv/
    Server App-V Team blog: http://blogs.technet.com/b/serverappv

    The Forefront Endpoint Protection blog : http://blogs.technet.com/b/clientsecurity/
    The Forefront Identity Manager blog : http://blogs.msdn.com/b/ms-identity-support/
    The Forefront TMG blog: http://blogs.technet.com/b/isablog/
    The Forefront UAG blog: http://blogs.technet.com/b/edgeaccessblog/



  • System Center 2012 Service Pack 1 Beta Now Available for Download

    downloadThe Beta of System Center 2012 Service Pack 1 (“SP1”) enables System Center customers to jointly evaluate System Center 2012 with Windows Server 2012 and Windows 8. The Beta is for evaluation purposes only and not to be used in production as described in the EULAs associated with the product. No license keys are required to do this evaluation. The Beta includes updates and enhancements to the following System Center 2012 components:

    • Virtual Machine Manager
      • Improved Support for Network Virtualization
      • Extend the VMM console with Add-ins
      • Support for Windows Standards-Based Storage Management Service, thin provisioning of logical units and discovery of SAS storage
      • Ability to convert VHD to VHDX, use VHDX as base Operating System image
    • Configuration Manager
      • Deployment and management of Windows 8 and Windows Server 2012
      • Distribution point for Windows Azure to help reduce infrastructure costs
      • Automation of administrative tasks through PowerShell support
      • Management of Mac OS X clients and Linux and UNIX servers
      • Real-time administrative actions for Endpoint Protection related tasks
    • Data Protection Manager
      • Improved backup performance of Hyper-V over CSV 2.0
      • Protection for Hyper-V over remote SMB share
      • Protection for Windows Server 2012 de-duplicated volumes
      • Uninterrupted protection for VM live migration
    • App Controller
      • Service Provider Foundation API to create and operate Virtual Machines
      • Support for Azure VM; migrate VHDs from VMM to Windows Azure, manage from on-premise System Center
    • Operations Manager
      • Support for IIS 8
      • Monitoring of WCF, MVC and .NET NT services
      • Azure SDK support
    • Orchestrator
      • Support for Integration Packs, including 3rd party
      • Manage VMM self-service User Roles
      • Manage multiple VMM ‘stamps’ (scale units), aggregate results from multiple stamps
      • Integration with App Controller to consume Hosted clouds
    • Service Manager
      • Apply price sheets to VMM clouds
      • Create chargeback reports
      • Pivot by cost center, VMM clouds, Pricesheets
    • Server App-V
      • Support for applications that create scheduled tasks during packaging
      • Create virtual application packages from applications installed remotely on native server

    For all the details and a download link please see the following: http://www.microsoft.com/en-us/download/details.aspx?id=34607

    J.C. Hornbeck | Knowledge Engineer | Management and Security Division

    Get the latest System Center news on Facebook and Twitter:

    clip_image001 clip_image002

    App-V Team blog: http://blogs.technet.com/appv/
    ConfigMgr Support Team blog: http://blogs.technet.com/configurationmgr/
    DPM Team blog: http://blogs.technet.com/dpm/
    MED-V Team blog: http://blogs.technet.com/medv/
    Orchestrator Support Team blog: http://blogs.technet.com/b/orchestrator/
    Operations Manager Team blog: http://blogs.technet.com/momteam/
    SCVMM Team blog: http://blogs.technet.com/scvmm
    Server App-V Team blog: http://blogs.technet.com/b/serverappv
    Service Manager Team blog: http://blogs.technet.com/b/servicemanager
    System Center Essentials Team blog: http://blogs.technet.com/b/systemcenteressentials
    WSUS Support Team blog: http://blogs.technet.com/sus/

    The Forefront Server Protection blog: http://blogs.technet.com/b/fss/
    The Forefront Endpoint Security blog : http://blogs.technet.com/b/clientsecurity/
    The Forefront Identity Manager blog : http://blogs.msdn.com/b/ms-identity- support/
    The Forefront TMG blog: http://blogs.technet.com/b/isablog/
    The Forefront UAG blog: http://blogs.technet.com/b/edgeaccessblog/



  • Troubleshooting Server Application Virtualization 1.0

    In this post, I’m going to walk through most of Server Application Virtualization (SAV) with the intention of calling out all the different resources and techniques you can use to troubleshoot problems. I’ll go through installing the sequencer, doing a simple sequencing, installing the agent, and deploying a package and talk about what you can do in each of those phases. I won’t dive deeply into any particular technique but instead will try to give you an overview of all the options available.

    I’m doing all of this on Windows 2008 R2 Server virtual machines with SAV v1 (4.7.27.1491) from the SystemCenter 2012 release. I’ll use WS_FTP from Ipswitch as a sample app. For details on how to sequence and deploy it, see our recipe at http://blogs.technet.com/b/serverappv/archive/2012/05/09/server-app-v-recipe-ws-ftp-server.aspx.

    Installing the Sequencer

    The Sequencer installer is actually a chainer (an executable that orchestrates the install process) wrapped around a few MSI files. To get the most verbose logs from the MSI installers, you can turn on MSI logging by setting the registry value Logging to ‘voicewarmup’ under HKLM\Software\Policies\Microsoft\Windows\Installer before you install. For more details on that technique, see http://support.microsoft.com/kb/314852.

    I set this registry value and ran the Sequencer installer with no command line parameters, just clicking through and taking all the default options. I didn’t run into any errors, but if I had, I would have first looked at the chainer’s log, since this summarizes overall setup progress. This is a file called SavSetupChainerLog.txt in your temp directory. (Easy ways to find the temp directory are to open an Explorer window and type ‘%temp%’ in the address bar, or open a command prompt and type ‘cd %temp%’.)

    When the chainer runs, it installs an MSI with the SAV Sequencer components, pre-requisite MSIs, and the desktop App-V Sequencer (because the SAV Sequencer is built on top of the desktop App-V one). In this example, the 2005 VC redistributable was the only pre-requisite that needed to be installed. Since the installation was pretty straightforward, the log was, also. Here’s the whole thing:

    6/15/2012 11:43:41:753 Setup will perform an Install on the product.

    6/15/2012 11:43:55:721 Performing install of product Packages\SavSequencer.msi with command-line INSTALLDIR="C:\Program Files (x86)\Server Application Virtualization Sequencer" REBOOT="ReallySuppress" ARPSYSTEMCOMPONENT="1"

    6/15/2012 11:44:4:110 Performing install of product Packages\vcredist2005sp1_x86.exe with command-line Packages\vcredist2005sp1_x86.exe /Q

    6/15/2012 11:44:18:218 Performing install of product Packages\Setup.msi with command-line INSTALLDIR="C:\Program Files (x86)\Server Application Virtualization Sequencer" REBOOT="ReallySuppress" ARPSYSTEMCOMPONENT="1"

    You can see the command lines passed to each phase of installation, which can help you figure out what might have gone wrong if anything did. Also, if the MSIs return any errors, they’ll show up here so you can tell which phase of the install failed. In the event of a failure, the next step is to look at the MSI logs. The link about verbose MSI logging above has more details on how these files are named, but in short they are the files in the temp directory that start with MSI and end with .txt. They tend to have a lot of information and as a result can be hard to interpret. A good technique is to search for the first instance of the word ‘error’ to get to the approximate area of the log file where you might learn something about what went wrong.

    Sequencing the Application

    I started the Sequencer, chose Create a New Virtual Application Package, and got to the Prepare Computer page. This page automates some of our best practices and troubleshooting tips.

    clip_image002

    It’s a great idea to pay attention to warnings and errors you see here. In my example, both System Center Configuration Manager (“SMS Agent Host”) and an antivirus program were running, and either of those could kick off tasks during sequencing that would invalidate the package I produce. Double-clicking on each warning provides a pop-up dialog with more info on what is wrong and how to fix it.

    I continued through the Sequencer, specifying the WSFTP installer and a name for the package, to the point where the Sequencer started the installer for me. If I saw any errors up to this point, my best option would have been to look in the Sequencer’s log file, sft-seq-log.txt in the Logs folder under the Sequencer install path. By default on a US English machine that’s C:\Program Files (x86)\Server Application Virtualization Sequencer\Logs. This is a simple text file with the date, time, and a couple other pieces of information in square brackets at the start of each line. For example, here’s a section of the log file where virtualization subsystems are being loaded. Note the warnings about IIS and WebDeploy not being installed—I had to go back and fix these before I could sequence WSFTP).

    ...

    [06/15/2012 14:46:04 VRB ] The 'Performance Counters' subsystem factory was loaded from module 'c:\Program Files (x86)\Server Application Virtualization Sequencer\sav_perf32.dll'.

    [06/15/2012 14:46:05 WRN ] The Virtual IIS Subsystem could not be loaded because the IIS WMI Provider is not installed. IIS applications cannot be sequenced (error 4960113B-8004100E).

    Corrective actions:

    Enable the IIS role.

    Enable the IIS Management Scripts and Tools role service (on IIS 7).

    Restart the Server Application Virtualization Sequencer.

    [06/15/2012 14:46:07 WRN ] The Virtual IIS Subsystem could not be loaded because the Web Deployment Tool is not installed. IIS applications cannot be sequenced.

    Corrective actions:

    Install Web Deploy.

    Restart the Server Application Virtualization Sequencer.

    [06/15/2012 14:46:07 VRB ] The 'SSRS' subsystem factory was loaded from module 'c:\Program Files (x86)\Server Application Virtualization Sequencer\sav_ssrs32.dll'.

    [06/15/2012 14:46:07 VRB ] The 'Windows Roles and Features' subsystem factory was loaded from module 'c:\Program Files (x86)\Server Application Virtualization Sequencer\sav_roles32.dll'.

    ...

    Once you’ve reached the point where your app’s installer is running, you’re in the same situation you would be in if you were trying to install without SAV. Any techniques you’d use to debug a failed installation of a native application, like looking at MSI log files, are equally valid for debugging failures here.

    After I finished with the installer, I went back to the Sequencer and checked the I am finished installing check box, then clicked Next. After the Sequencer collected system changes and generated a package, I got to the package report page:

    clip_image004

    This is another useful page to look through to proactively find problems with the package you’ve created. For example, I double-clicked Files excluded from package and saw all the files that were modified during packaging time but not included in the package (because of heuristics we use to try to exclude things like temp files from your packages). The Sequencer also saves all of the information on this screen into a file called report.xml that ends up on disk with the rest of the package you create. If you notice a package failure at deployment time, it can be useful to go back and look at this report.xml file to see if you missed anything that would point you at a solution.

    After I finished and saved the package, the package artifacts like the SFT file were available on disk for examination. Sometimes looking at these artifacts helps to diagnose other potential problems. A tool like Application Virtualization Explorer is valuable here. AVE allows you to open up the SFT file and see what files and registry settings ended up as part of the package. AVE was originally for desktop App-V packages but works just as well with Server App-V packages, except that the virtual services tab is not functional.

    Package Upgrade Notes

    If you’re doing a package upgrade in the Sequencer, there are a couple of extra things to consider.

    First, if your package had deployment configuration, we have to apply it during upgrade on the Sequencer. If your deployment configuration file has errors in it (like missing credentials for services), you’ll see a failure. We put information about deployment configuration failures during package upgrade in the Application Event Log, not in sft-seq-log.txt, so you will have to open up the Event Viewer to see this set of errors.

    Second, a common source of errors on package upgrade is extension point conflicts. As part of setting up the package to be upgraded, we have to deploy it to the machine, which includes registering all of its extension points. If there are any conflicts, e.g. a COM object that’s part of your package but is also present on the native system, this registration fails. You should be able to find more details about these failures in the Sequencer log, sft-seq-log.txt. You can also use AVE to look at the application’s manifest (the appv_manifext.xml file in the root of the package) to see what COM objects, services, WMI providers, etc. we register on the local system.

    Installing the Agent

    The SAV Agent setup is structured much like the Sequencer setup, with a chainer that orchestrates several MSI installations. The agent chainer log is also called SavSetupChainerLog.txt and will also show up in the temp directory. You can enable verbose MSI logging with the same ‘voicewarmup’ registry value and see the MSI logs in the temp directory.

    For the purposes of this blog post, I am going to use the SAV PowerShell cmdlets rather than managing the SAV Agent through System Center Virtual Machine Manager (VMM), so I installed those separately. The same error codes and messages that I talk about PowerShell returning below are also surfaced through VMM when you use it. The cmdlet installer uses the same chainer and the logs end up in the same place (the temp directory).

    Deploying the Package

    Before I started deployment, I took a look at the package. This can help you get your target machine set up correctly, or can help you debug issues after you see them. The manifest (called <package name>_manifext.xml) includes, among other things, the list of Windows Roles & Features that were enabled on the Sequencing station. Here you can see a bit of that section of my manifest:

    clip_image006

    Note that if any roles and features were enabled on the Sequencer, you need to enable them on the machine you deploy the package to.

    If you use AVE to get into the SFT file (as described in the sequencing section above), there’s a second manifest in the root of the package, called appv_manifest.xml. Near the top of this manifest, you can find a list of applications that were installed on the sequencing machine, like this:

    clip_image008

    This can help you figure out things like what version of .NET you had on the Sequencing station, since the Agent you deploy to should be configured the same way.

    For the actual deployment, I used the Add-ServerAppVPackage PowerShell cmdlet. I deliberately typed one of the paths wrong to get an example error message:

    clip_image010

    The first lines of that include an error code (0FD02560-00000002 in this case), whether it’s a general Windows error code or an App-V-specific error code (Windows, here), and the text associated with that error (“The system cannot find the file specified”). For Windows error codes, the last eight digits are the hexadecimal representation of a standard Windows system error codes. For App-V errors, you can often find help by searching online for the last 10 digits (60-00000002 in this example). In general, answers about desktop App-V error codes will also apply to Server App-V.

    To get more information about what was wrong, I looked in the Application Event Log. I opened up Event Viewer, navigated to the Application log under Windows Logs, and looked for errors from the source App-V Services. Here’s what I see:

    clip_image012

    The text of the message in the screenshot is:

    AddPackage could not find or open the Manifest file ‘C:\packages\WSFTPmanifest.xml’ due to error 0FD02520-00000002: The system cannot find the file specified.

    I left out the underscore in the middle of the manifest file name, hence this error. In most cases, you’ll see more than one message from SAV in the event viewer so be sure to check through all the ones around the error you saw—sometimes you’ll be able to put together a more detailed picture of the problem by assembling pieces of data that we logged separately.

    If you want to crank up the verbosity of the logs we generate, you can do that in the registry. Under HKLM\Software\Wow6432Node\Microsoft\SoftGrid\4.5\Client\Configuration, there are values called LogMinSeverity and SystemEventLogLevel. You can set them independently from 1 (least logging) to 5 (most). SystemEventLogLevel controls how much gets written to the event log we looked at here. LogMinSeverity controls how much gets dumped to a corresponding text file log on disk. LogFileName under the same key shows you the path to the log file on disk. You do need to reboot (or at least restart all of the App-V services) to apply log level changes.

    The event logs are useful for errors from Server App-V, but you may also see errors directly from your sequenced application. We’ve tried to make the process of debugging application-specific errors as close as possible to the native experience. For example, if a service isn’t starting, you can open the Windows Services console (services.msc) and try to start it there, look at its properties from there, etc. You can use tools like dcomcnfg or wbemtest to interact with COM objects or WMI providers that don’t seem to behave correctly. If you need to launch a tool or process inside a virtual environment, so it has full access to the application’s registry etc., you can do this by appending /RunInVE:<package name> to any command line anywhere on the system. For example, to get regedit running inside the virtual environment for my WSFTP package, I ran “regedit.exe /RunInVE:WSFTP”.

    If you run into a situation where a deployment fails and you can’t find the answer in a log message, you may want to examine the state of the system to see if you can find any clues. This can be difficult, since Server App-V rolls back any changes it makes as part of package deployment if the deployment fails. You can prevent this rollback by setting the DWORD value DisableSavUndo to 1 under HKEY_LOCAL_MACHINE\Software\Microsoft\SoftGrid\4.5\Client. After this is set, if you deploy a package and deployment fails, the Server App-V agent will leave the system in whatever partially-installed state it ends up in when the failure occurs.

    The ultimate troubleshooting tool for misbehaving virtual applications is Process Monitor. This tool lets you see almost every resource request an application makes, so you can look for errors or compare transcripts of virtual and native instances of an application. Depending on your platform, you may need to add the /HookRegistry flag to catch virtual registry transactions (see ProcMon’s documentation for more details). For many more details about using Process Monitor, see http://blogs.technet.com/b/appv/archive/2008/01/24/process-monitor-hands-on-labs-and-examples.aspx.

    Conclusion

    I hope this post provides a good reference for the set of techniques and logs that can help you troubleshoot Server App-V problems. If you have follow-up questions or ideas of your own, please feel free to post here.

    Eric Jewart

    Principal Development Lead, Microsoft Server Application Virtualization



  • Server App-V Recipe: Microsoft SQL Server 2008 R2 SP1 Reporting Services

    Hi all,

    Two things:

    New Recipe

    I am announcing the posting of yet another Server App-V recipe.  This time it's for SQL Server 2008 R2 Reporting Services.  The recipe shows you how to package a report server instance and easy deploy it as a scale out node to an existing SSRS deployment.  You can find the recipe here:

    http://social.technet.microsoft.com/Forums/en-US/serverappvirtualization/thread/cc12ba52-e3cc-4d48-8a1b-f9d795bf814f

    New Recipe Site

    Second, we've started posting our recipes to a forum-base site.  While this blog site had its benefits, the forum site has two distinct advantages. First, it allows users to contribute their own recipes to help out the rest of the community.  Second, it lets the community vote on the recipes so we can determine which ones are the most helpful.

    Find the new recipe site here: http://social.technet.microsoft.com/Forums/en-US/serverappvirtualization/threads

     

    Let us know if you have any questions or issues with Server App-V, or if there are any blog topics you'd like to see articles written on. 

     

    All the best,

    Chris