Пример #1
0
        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);
        }
Пример #2
0
        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]);
        }
Пример #3
0
        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"]);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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));
        }
Пример #6
0
        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"]);
        }
Пример #7
0
        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)));
            }
        }
Пример #8
0
        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");
        }
Пример #9
0
 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();
     }
 }
Пример #10
0
        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]);
        }
Пример #11
0
        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"]);
        }
Пример #12
0
        /// <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++;
            }
        }
Пример #13
0
        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);
        }
Пример #14
0
 public List<String> GetLibraries()
 {
     VdfDeserializer parser = new VdfDeserializer(@"C:\Program Files (x86)\Steam\steamapps\libraryfolders.vdf");
     var foldersValue = parser.Deserialize();
     return new List<string>();
 }
Пример #15
0
 public Game(string pathToManifest, string resourcesPath)
 {
     manifest           = (VdfTable)VdfDeserializer.FromFile(pathToManifest).Deserialize();
     this.resourcesPath = resourcesPath;
 }
Пример #16
0
        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();
            }
        }