Get data from another application's persistentDataPath

Is there a way to do this? I intend to release a free version of my game as well as a paid for one. As I understand it, each version will need it’s own Bundle Identifier, and therefore cannot share the same persistent data path.

When the paid for version is first run, I want to see if the user has any data from the free version and migrate this if so.

I thought I might be able to do something like this:

if (firstRun) {
  string companyDataDirectory = Directory.GetParent(Application.persistentDataPath).FullName;
  string freeVersionDirectory = Path.Combine(companyDataDirectory, "GameNameFree");
  if (Directory.Exists(freeVersionDirectory)) {
    // get user data from free version directory
  }
}

This wouldn’t work though, as each platform stores data in a different place. I suppose I might be able to do this using custom code for each platform, but hopefully there’s a better way?

Windows 7 persistentDataPath: C:/Users/Username/AppData/LocalLow/CompanyName/GameName

Android persistentDataPath: /Data/Data/com.companyname.gamename/Files

You have do do platform specific code, as each platform has it’s own security constraints (mobile platforms tend to sandbox applications so they can’t see each other’s data).

(cf my own question about iOS: Storing data in the iOS keychain - Unity Answers)