Sequencing Apple iTunes 11 with App-V 5


Two recent releases presents an opportunity to revisit the state of virtualizing Apple iTunes. iTunes 11 looks great, but is it just lipstick on a pig? Under the hood, it doesn’t appear to differ that much from previous versions, but lets see whether a combination of Apple’s latest and greatest along with App-V 5 offers a better virtualisation experience.

iTunes 10 with App-V 4.6

Previously delivering iTunes 10 with App-V 4.6, resulted in some loss of functionality and some minor annoyances with benign error messages. A lack of the Jumpt List under Windows 7 changed the user experience. App-V 5 now fixes this.

iTunes Components

To virtualize iTunes, you’ll need to extract the installer – simply run the installer and find the extracted MSI files in a folder under %TEMP%. This results in several files:

  • SetupAdmin.exe – the setup wrapper application. This can be discarded
  • AppleSoftwareUpdate.msi – Software Update is used to download and Apple software and updates
  • AppleApplicationSupport.msi – all Apple applications on Windows require this as a dependency
  • AppleMobileDeviceSupport.msi – required for Apple mobile device support (iPhone, iPad etc.). This installer includes the drivers for Apple’s devices
  • Bonjour.msi – iTunes uses Bonjour to find shared music libraries, to find AirPort Express devices for streaming music to, and to find Apple TVs
  • iTunes.msi – the iTunes installer itself

It is important that Apple Software Update is not included in the App-V package – allowing the applications in the package to update will at best fail and at worst, most likely bloat the package if it were allowed to run after deployment. Before copying the iTunes setup files into your sequencing VM, delete AppleSoftwareUpdate.msi and SetupAdmin.exe. This will prevent the iTunes installer from automatically installing Software Update during sequencing.

Prepare the Sequencing VM

Before starting the Sequencer, the following steps must be completed:

  1. Install Apple Application Support– this is required because the Apple Mobile Device service will not start without it.
  2. Install Apple Mobile Device Support – this is required to be installed outside of the package because it contains the mobile device drivers and related services

These same steps will need to be followed on the App-V client computer that will run iTunes. Fortunately Apple Application Support and the Mobile Device Support come as Windows Installer files, so they will be easy to deploy.

It is possible to include Apple Application Support in the iTunes package. This will allow you to run iTunes without any pre-requisites on client PCs; however both of the above components must be installed on client PCs if you want to connect mobile devices to iTunes.

User Profile

iTunes has the potential to store a massive amount of data in the user’s profile:

09AppData

It is highly recommended to exclude %APPDATA% in the iTunes package to avoid this data being virtualized at runtime.

Sequencer Template

There are a number of locations that should be excluded from the package during sequencing, including %APPDATA%. I have included these in a Package Template for iTunes that you can download from here:

App-V 5 Sequencer Template for iTunes 11 App-V 5 Sequencer Template for iTunes 11

Installing iTunes

Sequencing is as simple as capturing the installation of the following files and configuring iTunes the way we want:

  • Bonjour.msi
  • iTunes.msi
  • Optionally – AppleApplicationSupport.msi

The installation and configuration of the above can be scripted, which would be a good approach for repeatability.

Sequencing iTunes

To sequence iTunes, follow the basic outline here:

1. Start the Sequencer and load the Sequencer Template provided here

2. Create a new Virtual Application Package and choose Create Package (default)

3. Choose Standard Application (default)

4. Select the installer – select either a script to automate the iTunes install command or C:\Windows\System32\cmd.exe to manually run each MSI file

5. Add a Virtual Application Package Name (e.g. Apple iTunes 11). Use a Primary Virtual Application Directory of C:\iTunes11

6. Install both Bonjour and iTunes and optionally Apple Application Support. Use the following command lines to control the installation options including target folders:

MSIEXEC /I Bonjour.msi INSTALLDIR=C:\iTunes11\Bonjour /QB-
MSIEXEC /I iTunes.msi INSTALLDIR=C:\iTunes11\iTunes SCHEDULE_ASUW=0 REGSRCH_DESKTOP_SHORTCUTS=0

When installing iTunes, be sure to install to C:\iTunes11\iTunes and remove the following options during install:

  • Add iTunes shortcut to my desktop
  • Automatically update iTunes and other Apple software
  • Open iTunes after the installer exits
Note: do not launch iTunes during sequencing.

7. Finish the install and continue to the Configure Software step. There is no need to launch any applications at this point

8. Review the installation report. This will list a couple of issues which I’ll discuss later.

9. Continue and customize the package (do not stop at this point).

10. There is no need to configure streaming at this point, so skip the optimisation step.

11. If you are capturing iTunes on Windows 7 x86, allow the package to run on any operating system.

12. At the Create Package step, continue on to modify the package rather than stop now.

13. Add a description to the package and check each tab in the Sequencer to ensure the package looks OK. Under Virtual Services, two services should be listed – Bonjour Service and iPod Service.

14. Edit the Shortcuts and remove the About Bonjour and About iTunes shortcuts.

Virtualization Issues

The Sequencer will highlight a a couple of issues:

  • DCOM subsystem detected
  • Unsupported driver detected

DCOM

iTunes includes some DCOM components – the report shows:

The sequencer detected a DCOM subsystem. Application components that use DCOM will not work with App-V. The DCOM subsystems detected are as follows:

IpodService (LocalService)

iTunesAdmin (AccessPermission)

With the Apple Mobile Device Support, syncing with a virtualized iTunes should still work. The iTunesAdmin component appears to be related restricting access to Parental controls in Preferences. Clicking the lock will result the following error:

Driver

iTunes installs the GEARAspiWDM driver, which results in the following report:

The sequencer detected an unsupported driver. Kernel and user-mode drivers are not supported in the App-V virtual environment.

The unsupported drivers detected are as follows: SYSTEM\CurrentControlSet\services\GEARAspiWDM

This is related to writing CD/DVDs – once iTunes is virtualized, that feature will be unavailable.

Deploying iTunes

Deploying the iTunes package will require the deployment of Apple Application Support and Apple Mobile Device Support to the client computers first. Apple Application Support can be included in the package; however it is required to be installed if the Mobile Device Support is also deployed.

Without Apple Application Support the following will be the result of launching iTunes:

NoAppleAppSupport

Last, but not least, for media sharing to work, firewall exceptions will be required for the following processes:

  • iTunes.exe
  • mDNSResponder.exe

The path to each process will be dependent on your package.

Finally

Running iTunes on the client for the first time will result in a prompt to the user to set iTunes as the default audio player. With App-V 5 this is now supported and should work just like an installed application.

iTunesFirstRun

View the gallery below for a screenshot walkthrough of sequencing iTunes 11:

Print Friendly
  • vw

    “With App-V 5 this is no supported and will work just like an installed application.”
    “Now” supported or “not” supported? I ask because I’m having issues with file type associations not “taking” in App-V 5.

    • http://stealthpuppy.com Aaron Parker

      Now supported – I’ve fixed the text.

  • Trond Eirik Haavarstein

    Thanks for this great post Aaron, there’s very little info online on AppV5. What’s Best Practices for Primary Virtual App Dir? Someones says %programfiles% but you seem to prefer root. In terms of packages for XA65/PVS, would you select optimize for the package?

    • http://stealthpuppy.com Aaron Parker

      I don’t think there is a best practice yet. In this example, I’ve used C:iTunes11 to make things simple during sequencing.

      I’m not sure on streaming and PVS yet – it depends on how large the package is and whether you’re happy with streaming in the background or would prefer the full package to be streamed before the user can launch the application.

  • Jon Abbott

    To get GEAR working, create two transform files with Orca. In the first, set Level to 9999 on “GEAR” in the Feature table, use this transform to sequence iTunes. The second, set Level on “iTunes”, “CoreFP” and “ATL” in the Feature table to 9999 and use this transform to deploy the iTunes MSI to machine along with the AppleMobileDeviceSupport MSI as pre-reqs.

    You’ll also need QuickTime as a pre-req, which can be sequenced using the following transform: In the InstallExecuteSequence table, drop all rows that start “QuickTime”, in the Property table, set “SCHEDULE_ASUW” to 0 and drop the “caPackage” table completely. This transform will prevent the QuickTime MSI from trying to run the EXE that chain installs AppleApplicationSupport.