Saturday, August 14, 2010

Configuring iTunes to reference apps from a shared folder

9/25/10: With the latest release of iTunes it doesn't work any more anyway, you no longer get the prompt to find all your missing apps at once. So never was safe, and now doesn't work at all. Retained for historical purposes, plus it has some interesting links and a FairPlay discussion.
Oops. Don't do this, it causes iTunes to put every app on every phone synchronized with the share. Evidently iTunes writes metadata into the app file! I wonder if it's an extended attribute on OS X. A terrible design!

Sharing DRMd (FairPlay) material, such as videos and iPhone Apps, in a family is fraught. It's technically complex, and it's commercially complex. Rights holders, for example, probably want a BrainLock implant for every customer, so only one person can ever hear an iTunes song.

Given the commercial issues, Apple's FairPlay licensing is surprisingly generous. Wikipedia has the best (only?) summary, though since they're describing music it's obviously dated (Apple store music is rarely DRMd now) ...

  • The track may be copied to any number of iPod portable music players (including the iPhone).[2] (However, each iPod/iPhone can only have tracks from a maximum of five different iTunes accounts)
  • The track may be played on up to five (originally three) authorized computers simultaneously.[2]
  • A particular playlist within iTunes containing a FairPlay-encrypted track can be copied to a CD only up to seven times (originally ten times) before the playlist must be changed.[3]
Fraser Spiers' iPad educational project shows how this works for apps. He configured five authorized computers and one master iTunes account, so all the apps could be distributed to a large number of iPads. (I assume Fraser compensated the App developers somehow as this is a bit outside the usual scope of distribution.)

FairPlay may be generous, but iTunes really expects a single user. Even if every user on a computer shares a single iTunes account (ex: Dad's account), each has its own content collection. With iTunes 9 Apple enabled a sort of sharing, but it requires physically copying files.  Even in the days of TB drivers this can be wasteful.

When it comes to Mobile Applications (.app) this is particularly annoying. Each user's apps get updated separately for example [1]. So if Emily and I share the 1.5GB we each have a copy, and each copy is updated separately.

On the other hand, if you have every device sync to a single iTunes, users can't sync to their individual iCal or Address Book and content ratings and Smart Playlists become a bit of a struggle (ex: "last played" rules assume only one listener!). So in the old days many of us geeks gave each iPhone user in the family their own account. We used tricks like iTunes music 'include by reference' feature and its amazingly versatile drag-and-drop media behavior to sort of work around these limitations.

Now that most of sync to Google Apps via Active Sync rather than directly to our desktop accounts it really makes most sense to sync every device to one account (screw ratings). I'm doing that for the kids, but Emily still has her own account. Thanks to the 'include by reference and media drag and drop' technique we do ok with media, but Mobile Apps don't support include by reference. You have to copy them. So I've been using Apple's Family Sharing for apps only; it monitors additions to the master iTunes Library and copies the apps to her iTunes Library.

This had an annoying side-effect that all of our App updates had to be done twice, but when I bought the 1.5GB NAVIGON turn-by-turn GPS app things got really annoying. For geeks of my generation, 1.5GB is a lot of storage to waste (including backup of course).

I tried various tricks to get her iTunes to reference Mobile Apps stored on a Public Share on the computer that holds both our accounts. I tried Aliases and a I tried Symbolic Links to both apps and to the Mobile Application folder. Nothing worked ... until ... by chance ... I stumbled on what did work.

This is what I do now.

First I install apps to her account normally. Since we have Family Sharing setup anything I add to my account will be added to her account.

Then I did something like this (To be honest, I need to play with this a bit more, but if you're a geek this is all the hints you need. My apps are stored in a shared folder for which she has read/write privileges. If you're not a geek you shouldn't be reading this.):
  1. In her account, move her .app files OUT of her iTunes Music:Mobile Applications folder.
  2. Start iTunes for her, and right click on any of her App icons in the App view. I choose 'Get Info'. The App gets an exclamation mark next to it and ITunes asks if I want to locate the file. (Maybe I double clicked on the exclamation point?)
  3. Choose Show In Finder (or ?). iTunes asked me where the file was. I navigated to the file in the shared folder on MY account and it accepted it. iTunes then asked me if I wanted to use the same path to update all other missing apps
That did it. Emily's iTunes now includes my Apps by reference instead of copying them. I only do one set of updates, and appears only once. Please note I'm not getting any extra privileges from doing this, I'm just saving disk space and update time.

All I need to do is periodically clean up her Library, update mine, and repeat this trick.

See also
[1] Now that some App updates are iOS 4 specific, this ability to choose when to update may be a feature, but not I'm really getting complicated.

No comments: