Skip to content
This repository was archived by the owner on Dec 9, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
5d35ac6
Complete rewrite using channels
diamond3500 Nov 10, 2022
877edc1
Fixed roblox launching only in the Beta App
diamond3500 Nov 16, 2022
f62c140
Fix building
diamond3500 Nov 16, 2022
e1202ab
Bugfixes
diamond3500 Nov 16, 2022
8f25e9c
Update README.md
diamond3500 Nov 16, 2022
a43a14e
Update README.md
diamond3500 Nov 16, 2022
99b84ce
Create codeql.yml
diamond3500 Nov 26, 2022
fbc7ed7
Delete codeql.yml
diamond3500 Nov 26, 2022
1660e6f
Create securitycodescan.yml
diamond3500 Nov 26, 2022
497c128
Update securitycodescan.yml
diamond3500 Nov 26, 2022
2fef4f2
Delete .github/workflows directory
diamond3500 Nov 26, 2022
5c2cc95
Update LICENSE
diamond3500 Dec 1, 2022
268a4f7
Added version checking and version shown
diamond3500 Dec 2, 2022
ad6cd04
Forgot version naming
diamond3500 Dec 2, 2022
4ecf1e0
Merge pull request #1 from diamond3500/test
diamond3500 Dec 2, 2022
ef7c695
Update dependancies and add a null check to the version checker
baconhair5894489 Dec 7, 2022
836d923
fix bug where it would use the player mod manager for roblox studio .…
diamond3500 Mar 16, 2023
04b83b7
fix bug where the player mod manager replaced studio mod manager for …
diamond3500 Mar 16, 2023
d27142e
Merge pull request #2 from diamond3500/main
diamond3500 Mar 16, 2023
8433ff1
Implemented a better way to download packages
diamond3500 Oct 30, 2023
0b88806
Merge branch 'test' of https://github.com/diamond3500/Roblox-Player-M…
diamond3500 Oct 30, 2023
3a0baee
Version naming
diamond3500 Oct 30, 2023
b9f2b89
Build executabke
diamond3500 Oct 30, 2023
985f2be
added a buncha stuff (mainly FFlag fixes and options)
diamond3500 Feb 22, 2024
9e7cd66
Fix the whole thing breaking because roblox renamed their bootstrapper
diamond3500 Jul 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
MIT License

Copyright (c) 2022-present diamond3500

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

------------------------------------------------------------------------------------------
MIT License

Copyright (c) 2021-present Malte0621

Permission is hereby granted, free of charge, to any person obtaining a copy
Expand Down
70 changes: 61 additions & 9 deletions ProjectSrc/App.config
Original file line number Diff line number Diff line change
@@ -1,11 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="RobloxPlayerModManager.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="RobloxPlayerModManager.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Resources.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Dataflow" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Drawing.Common" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.Principal.Windows" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
27 changes: 21 additions & 6 deletions ProjectSrc/Bootstrapper/FileManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
using System.Runtime.Serialization;
using System.Threading.Tasks;

using RobloxDeployHistory;

namespace RobloxPlayerModManager
{
[Serializable]
Expand All @@ -14,7 +16,7 @@ internal class FileManifest : Dictionary<string, string>

protected FileManifest(SerializationInfo info, StreamingContext context)
: base(info, context) { }

private FileManifest(string data, bool remapExtraContent = false)
{
using (var reader = new StringReader(data))
Expand All @@ -41,16 +43,31 @@ private FileManifest(string data, bool remapExtraContent = false)
else if (remapExtraContent && path.StartsWith("ExtraContent", Program.StringFormat))
path = path.Replace("ExtraContent", "content");

// ~~ AWFUL TEMPORARY HACK. ~~
//
// This is necessary because SourceSansPro gets incorrectly listed in the root directory,
// but also MUST be extracted to both 'PlayerFonts/' and 'content/fonts/', so I need to
// make sure it unambiguously extracts to the correct locations.

if (path.EndsWith(".ttf") && !path.Contains("\\"))
path = "PlayerFonts\\" + path;

if (remapExtraContent && ContainsKey(path))
continue;

Add(path, signature);
}
}

RawData = data;
}

public static async Task<FileManifest> Get(string branch, string versionGuid, bool remapExtraContent = false)
public static async Task<FileManifest> Get(ClientVersionInfo info, bool remapExtraContent = false)
{
string fileManifestUrl = $"https://s3.amazonaws.com/setup.{branch}.com/{versionGuid}-rbxManifest.txt";
Channel channel = info.Channel;
string versionGuid = info.VersionGuid;

string fileManifestUrl = $"{channel.BaseUrl}/{versionGuid}-rbxManifest.txt";
string fileManifestData;

using (WebClient http = new WebClient())
Expand All @@ -61,7 +78,5 @@ public static async Task<FileManifest> Get(string branch, string versionGuid, bo

return new FileManifest(fileManifestData, remapExtraContent);
}


}
}
26 changes: 23 additions & 3 deletions ProjectSrc/Bootstrapper/PackageManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
using System.Net;
using System.Threading.Tasks;

using RobloxDeployHistory;

namespace RobloxPlayerModManager
{
internal class PackageManifest : List<Package>
Expand Down Expand Up @@ -64,19 +66,37 @@ private PackageManifest(string data)
Add(package);
}
}

RawData = data;
}

public static async Task<PackageManifest> Get(string branch, string versionGuid)
public static async Task<PackageManifest> Get(ClientVersionInfo info)
{
string pkgManifestUrl = $"https://s3.amazonaws.com/setup.{branch}.com/{versionGuid}-rbxPkgManifest.txt";
Channel channel = info.Channel;
string versionGuid = info.VersionGuid;

string pkgManifestUrl = $"{channel.BaseUrl}/{versionGuid}-rbxPkgManifest.txt";
string pkgManifestData;

using (WebClient http = new WebClient())
{
var getData = http.DownloadStringTaskAsync(pkgManifestUrl);
pkgManifestData = await getData.ConfigureAwait(false);
int pkgManifestIndex = pkgManifestData.IndexOf("RobloxPlayerLauncher.exe");
int pkgManifestIndexNew = pkgManifestData.IndexOf("RobloxPlayerInstaller.exe");
if (pkgManifestIndex != pkgManifestIndex + 3)
{
//TODO: Maybe make this better in the future.
try
{
pkgManifestData = pkgManifestData.Remove(pkgManifestIndex);
}
catch (ArgumentOutOfRangeException)
{
pkgManifestData = pkgManifestData.Remove(pkgManifestIndexNew);
}
}

}

return new PackageManifest(pkgManifestData);
Expand Down
Loading