/// <summary> /// Call this as the VERY FIRST THING in FinishedLaunching /// </summary> public void Track() { var needsSync = false; // load history #if SILVERLIGHT var noValues = (!AppSettings.Contains(xamVersionsKey) || !AppSettings.Contains(xamBuildsKey)); #else var noValues = (!AppSettings.Values.ContainsKey(xamVersionsKey) || !AppSettings.Values.ContainsKey(xamBuildsKey)); #endif if (noValues) { isFirstLaunchEver = true; versionTrail = new Dictionary <string, List <string> > { { xamVersionsKey, new List <string>() }, { xamBuildsKey, new List <string>() } }; } else { #if SILVERLIGHT var oldVersionList = AppSettings[xamVersionsKey] as List <string>; var oldBuildList = AppSettings[xamBuildsKey] as List <string>; #else var oldVersionList = AppSettings.Values[xamVersionsKey] as List <string>; var oldBuildList = AppSettings.Values[xamBuildsKey] as List <string>; #endif versionTrail = new Dictionary <string, List <string> > { { xamVersionsKey, oldVersionList }, { xamBuildsKey, oldBuildList } }; isFirstLaunchEver = false; needsSync = true; } //check if this version was previously launched if (versionTrail[xamVersionsKey].Contains(CurrentVersion)) { isFirstLaunchForVersion = false; } else { isFirstLaunchForVersion = true; versionTrail[xamVersionsKey].Add(CurrentVersion); needsSync = true; } //check if this build was previously launched if (versionTrail[xamBuildsKey].Contains(CurrentBuild)) { isFirstLaunchForBuild = false; } else { isFirstLaunchForBuild = true; versionTrail[xamBuildsKey].Add(CurrentBuild); needsSync = true; } //store the new version stuff if (needsSync) { lock (locker) { #if SILVERLIGHT if (!AppSettings.Contains(xamVersionsKey)) { AppSettings.Add(xamVersionsKey, versionTrail[xamVersionsKey]); } else { AppSettings[xamVersionsKey] = versionTrail[xamVersionsKey]; } if (!AppSettings.Contains(xamBuildsKey)) { AppSettings.Add(xamBuildsKey, versionTrail[xamBuildsKey]); } else { AppSettings[xamBuildsKey] = versionTrail[xamBuildsKey]; } AppSettings.Save(); #else if (!AppSettings.Values.ContainsKey(xamVersionsKey)) { AppSettings.CreateContainer(xamVersionsKey, ApplicationDataCreateDisposition.Always); } if (AppSettings.Values.ContainsKey(xamBuildsKey)) { AppSettings.CreateContainer(xamBuildsKey, ApplicationDataCreateDisposition.Always); } AppSettings.Values[xamVersionsKey] = versionTrail[xamVersionsKey]; AppSettings.Values[xamBuildsKey] = versionTrail[xamBuildsKey]; #endif } } }