private Locator() { //the steam install folder steam_folder = new Lazy <string>(delegate { var key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); key = key.OpenSubKey(@"SOFTWARE\Valve\Steam"); var folder = key.GetValue("InstallPath") as string; return(folder); }, isThreadSafe: true); //a list of file paths of steam app folders steamapps_list = new Lazy <IReadOnlyList <string> >(delegate { var list = new List <string>(); var defaultApps = Path.Combine(SteamFolder, "SteamApps"); list.Add(defaultApps); var desr = VdfDeserializer.FromFile(Path.Combine(defaultApps, "libraryfolders.vdf")); var tbl = desr.Deserialize() as VdfTable; int i = 1; while (tbl.ContainsName(i.ToString())) { var p = (tbl[i.ToString()] as VdfString).Content; list.Add(Path.Combine(p, "SteamApps")); i++; } return(list.AsReadOnly()); }, isThreadSafe: true); users = new Lazy <IReadOnlyList <SteamUser> >(() => new List <SteamUser>(GetUserList()).AsReadOnly(), isThreadSafe: true); }
public void ParseAndCastWithList() { FileStream sharedConfig = File.OpenRead("cast-test.vdf"); VdfDeserializer parser = new VdfDeserializer(); VdfWithList result = parser.Deserialize <VdfWithList>(sharedConfig); Assert.Equal("Strategy", result.Steam.Apps["434460"].Tags[1]); }
public void ParseAndCastCustomDictionary() { string sharedConfig = File.ReadAllText("cast-test.vdf"); VdfDeserializer parser = new VdfDeserializer(); CustomVdfExcerpt result = parser.Deserialize <CustomVdfExcerpt>(sharedConfig); Assert.NotNull(result.Steam.Apps["434460"]); }
public void ParseAndCastSimple() { FileStream sharedConfig = File.OpenRead("cast-test-basic.vdf"); VdfDeserializer parser = new VdfDeserializer(); SteamBasic result = parser.Deserialize <SteamBasic>(sharedConfig); Assert.Equal("2586173360812765888", result.SurveyDateVersion); Assert.True(result.DesktopShortcutCheck); }
public static SteamCmdAppWorkshop ReadSteamCmdAppWorkshopFile(string file) { if (string.IsNullOrWhiteSpace(file) || !File.Exists(file)) { return(null); } var vdfSerializer = VdfDeserializer.FromFile(file); var vdf = vdfSerializer.Deserialize(); return(SteamCmdWorkshopDetailsResult.Deserialize(vdf)); }
public void ParseAndCastString() { string sharedConfig = File.ReadAllText("cast-test.vdf"); VdfDeserializer parser = new VdfDeserializer(); VdfFileTestExceprt result = parser.Deserialize <VdfFileTestExceprt>(sharedConfig); Assert.Equal("2586173360812765888", result.Steam.SurveyDateVersion); Assert.True(result.Steam.DesktopShortcutCheck); Assert.Equal("Strategy", result.Steam.Apps["434460"].Tags["1"]); }
private IEnumerable <SteamUser> GetUserList() { var cfgdir = Path.Combine(SteamFolder, "config"); var ulist = VdfDeserializer.FromFile(Path.Combine(cfgdir, "loginusers.vdf")).Deserialize() as VdfTable; foreach (var item in ulist) { var uid = item.Name; var uname = ((VdfString)((VdfTable)item)["PersonaName"]).Content; yield return(new SteamUser(uname, ulong.Parse(uid))); } }
public void ParseSharedConfig() { FileStream sharedConfig = File.OpenRead("sharedconfig.vdf"); VdfDeserializer parser = new VdfDeserializer(); dynamic result = parser.Deserialize(sharedConfig); Assert.Equal(result.UserRoamingConfigStore.Software.Valve.Steam.SurveyDate, "2017-07-03"); var apps = result.UserRoamingConfigStore.Software.Valve.Steam.Apps as IDictionary <string, dynamic>; var tags = apps["251570"].tags as IDictionary <string, dynamic>; Assert.Equal(tags["0"], "Survival & Horror"); }
private void textBox_SteamPath_TextChanged(object sender, EventArgs e) { if (File.Exists(textBox_SteamPath.Text + @"\steam.exe")) { FileStream sharedConfig = File.OpenRead(textBox_SteamPath.Text + @"\config\loginusers.vdf"); VdfDeserializer parser = new VdfDeserializer(); dynamic result = parser.Deserialize(sharedConfig); var users = result.users as IDictionary <string, dynamic>; foreach (var user in users) { steamid64_user_list.Add(user.Key); var u = user.Value as IDictionary <string, dynamic>; steam_user_list.Add(u["AccountName"]); PersonaName.Add(u["PersonaName"]); } flush_steam_user(); } }
public void Serialize_List() { FileStream sharedConfig = File.OpenRead("cast-test.vdf"); VdfDeserializer parser = new VdfDeserializer(); VdfWithList obj = parser.Deserialize <VdfWithList>(sharedConfig); VdfSerializer serializer = new VdfSerializer(); string result = serializer.Serialize(obj); File.WriteAllText(@"F:\result.txt", result); parser = new VdfDeserializer(); VdfWithList fullLoopDeserialized = parser.Deserialize <VdfWithList>(result); Assert.Equal("Strategy", fullLoopDeserialized.Steam.Apps["434460"].Tags[1]); }
public void Serialize() { FileStream sharedConfig = File.OpenRead("cast-test.vdf"); VdfDeserializer parser = new VdfDeserializer(); VdfFileTestExceprt obj = parser.Deserialize <VdfFileTestExceprt>(sharedConfig); VdfSerializer serializer = new VdfSerializer(); string result = serializer.Serialize(obj); File.WriteAllText(@"F:\result.txt", result); parser = new VdfDeserializer(); VdfFileTestExceprt fullLoopDeserialized = parser.Deserialize <VdfFileTestExceprt>(result); Assert.Equal("2586173360812765888", fullLoopDeserialized.Steam.SurveyDateVersion); Assert.True(fullLoopDeserialized.Steam.DesktopShortcutCheck); Assert.Equal("Strategy", fullLoopDeserialized.Steam.Apps["434460"].Tags["1"]); }
/// <summary> /// Loads paths to all user steam libraries. /// </summary> private void LoadLibraries() { Libraries.Clear(); Libraries.Add(new Library(this, RootPath)); var librariesPath = Path.Combine(RootPath, "steamapps", "libraryfolders.vdf"); if (!File.Exists(librariesPath)) { return; } var folders = (VdfTable)VdfDeserializer.FromFile(librariesPath).Deserialize(); var index = 1; while (folders.TryGetValue(index.ToString(), out var value)) { Libraries.Add(new Library(this, ((VdfString)value).Content)); index++; } }
private string GetInstallPath(string gameid) { if (gamePaths.TryGetValue(gameid, out var v)) { return(v); } foreach (var apps in steamapps_list.Value) { if (File.Exists(Path.Combine(apps, $"appmanifest_{gameid}.acf"))) { var desr = VdfDeserializer.FromFile(Path.Combine(apps, $"appmanifest_{gameid}.acf")); var tbl = desr.Deserialize() as VdfTable; var dirName = (tbl["installdir"] as VdfString).Content; var p = Path.Combine(apps, "common", dirName); gamePaths.Add(gameid, p); return(p); } } return(null); }
public List<String> GetLibraries() { VdfDeserializer parser = new VdfDeserializer(@"C:\Program Files (x86)\Steam\steamapps\libraryfolders.vdf"); var foldersValue = parser.Deserialize(); return new List<string>(); }
public Game(string pathToManifest, string resourcesPath) { manifest = (VdfTable)VdfDeserializer.FromFile(pathToManifest).Deserialize(); this.resourcesPath = resourcesPath; }
public static void install() { Console.WriteLine("install"); //detect SteamInstallPath String SteamInstallPath = RegistryHandler.Globalread(RegistryHandler.Steam64bitRegistry, RegistryHandler.SteamInstallPathValueName).ToString(); if (!string.IsNullOrEmpty(SteamInstallPath)) { Console.WriteLine("install2"); if (!File.Exists(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + "eurotrucks2.exe") && !File.Exists(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + "eurotrucks2.exe")) { Console.WriteLine("install3"); //if ETS2 is not found in normal Steam lib folder String SteamLibraryConfigPath = SteamInstallPath + SteamLibraryConfigFile; if (File.Exists(SteamLibraryConfigPath)) { Console.WriteLine("install4"); string testFile = File.ReadAllText(SteamLibraryConfigPath); VdfDeserializer deserializer = new VdfDeserializer(); dynamic result = deserializer.Deserialize(testFile); IDictionary <string, object> result_dictionary = result.LibraryFolders; List <string> SteamLibraries = new List <string>(); for (int i = 1; i < 5; i++) { if (result_dictionary.ContainsKey(i.ToString())) { SteamLibraries.Add(result_dictionary[i.ToString()].ToString()); } } foreach (String Steampath in SteamLibraries) { if (File.Exists(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + "eurotrucks2.exe") && File.Exists(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + "eurotrucks2.exe")) { Console.WriteLine("install5"); //create plugins folder if necessary and copy dll if (!Directory.Exists(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + "plugins")) { Directory.CreateDirectory(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + "plugins"); } if (File.Exists(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + @"plugins\scs-telemetry.dll")) { File.Delete(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + @"plugins\scs-telemetry.dll"); } File.Copy(@"Resources/scs-telemetry.dll", Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + @"plugins\scs-telemetry.dll"); if (!Directory.Exists(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + "plugins")) { Directory.CreateDirectory(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + "plugins"); } if (File.Exists(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + @"plugins\scs-telemetry.dll")) { File.Delete(Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + @"plugins\scs-telemetry.dll"); } File.Copy(@"Resources/scs-telemetry.dll", Steampath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + @"plugins\scs-telemetry.dll"); RegistryHandler.write("ETS2Path", Steampath + @"\steamapps\common\Euro Truck Simulator 2\", "Telemetry"); RegistryHandler.write("Version", Config.TelemetryVersion, "Telemetry"); Console.WriteLine("reg geschrieben"); } } } else { ETS2PathDialog pathwindow = new ETS2PathDialog(); pathwindow.Show(); } } else { Console.WriteLine("install6"); //ETS2 found in normal Steam folder //create plugins folder if necessary and copy dll if (!Directory.Exists(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + "plugins")) { Directory.CreateDirectory(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + "plugins"); } if (File.Exists(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + @"plugins\scs-telemetry.dll")) { File.Delete(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + @"plugins\scs-telemetry.dll"); } File.Copy(@"Resources/scs-telemetry.dll", SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder64 + @"plugins\scs-telemetry.dll"); if (!Directory.Exists(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + "plugins")) { Directory.CreateDirectory(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + "plugins"); } if (File.Exists(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + @"plugins\scs-telemetry.dll")) { File.Delete(SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + @"plugins\scs-telemetry.dll"); } File.Copy(@"Resources/scs-telemetry.dll", SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\bin\" + ETS2Folder86 + @"plugins\scs-telemetry.dll"); RegistryHandler.write("ETS2Path", SteamInstallPath + @"\steamapps\common\Euro Truck Simulator 2\", "Telemetry"); RegistryHandler.write("Version", Config.TelemetryVersion, "Telemetry"); } } else { ETS2PathDialog pathwindow = new ETS2PathDialog(); pathwindow.Show(); } }