Compare commits
130 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e07e9a09fa | ||
|
|
49deba5771 | ||
|
|
56947d0648 | ||
|
|
f2c285c141 | ||
|
|
b4b2a42db5 | ||
|
|
3195116fdf | ||
|
|
5df51cfcba | ||
|
|
a6525bf885 | ||
|
|
516618bd5a | ||
|
|
098c0a07a3 | ||
|
|
74fcf91572 | ||
|
|
1fb77054d1 | ||
|
|
c53db4bfc3 | ||
|
|
19909a82cb | ||
|
|
46196d128b | ||
|
|
f32bd15d98 | ||
|
|
ce4cd9ad46 | ||
|
|
d91c41b19c | ||
|
|
b38b8d1771 | ||
|
|
51941f2b73 | ||
|
|
5907e48018 | ||
|
|
8d4d2c9711 | ||
|
|
2c513ac7a8 | ||
|
|
9a17dd70c1 | ||
|
|
72d2db3fcc | ||
|
|
05cff37dd5 | ||
|
|
094d996249 | ||
|
|
c079f87fc6 | ||
|
|
288da1736e | ||
|
|
1160c24ad2 | ||
|
|
b2c8dd7d10 | ||
|
|
59674fe781 | ||
|
|
4b3b9b0558 | ||
|
|
866f8821a5 | ||
|
|
2b4ec9af38 | ||
|
|
6527a7ce31 | ||
|
|
aa9babfb18 | ||
|
|
6e9b8a19f5 | ||
|
|
62515ef59c | ||
|
|
1d3830e0b2 | ||
|
|
b62307310c | ||
|
|
6b2841cd0c | ||
|
|
a5b0e60acc | ||
|
|
c084cf9bfb | ||
|
|
005918aec0 | ||
|
|
5eaf7d5498 | ||
|
|
b3ca9bcd66 | ||
|
|
9aed677d3a | ||
|
|
1b66beb957 | ||
|
|
0e092df064 | ||
|
|
d80dc1c465 | ||
|
|
eed21ff56f | ||
|
|
1471b6bb0b | ||
|
|
f85d43d701 | ||
|
|
73f0a840e9 | ||
|
|
a09e469491 | ||
|
|
1db593c634 | ||
|
|
eb88d746c1 | ||
|
|
f7b5c94136 | ||
|
|
58aa1be7c5 | ||
|
|
426d99e519 | ||
|
|
8dec5d906a | ||
|
|
ae02b5c135 | ||
|
|
fe94119627 | ||
|
|
ee13bd08cb | ||
|
|
6a464ad3e7 | ||
|
|
f0d2a42ee3 | ||
|
|
b18ce51e4c | ||
|
|
535b3826f8 | ||
|
|
f1a884e200 | ||
|
|
072e2246a8 | ||
|
|
2c3ecf654a | ||
|
|
8699136d6d | ||
|
|
35803b7014 | ||
|
|
af358f8f99 | ||
|
|
138183798c | ||
|
|
8b3066cf99 | ||
|
|
91e21f59af | ||
|
|
85144e339f | ||
|
|
dbd9b145ea | ||
|
|
287181622d | ||
|
|
7f76bba866 | ||
|
|
4b791fe86b | ||
|
|
e17a582ae7 | ||
|
|
a271088e9a | ||
|
|
712d686559 | ||
|
|
481dd1b3e2 | ||
|
|
bd435094b6 | ||
|
|
16fa08d952 | ||
|
|
aa89953bf5 | ||
|
|
06cba22ad8 | ||
|
|
5923ce5ebc | ||
|
|
01eac1aec6 | ||
|
|
46189dcd43 | ||
|
|
1d9f304735 | ||
|
|
362b74e6a5 | ||
|
|
ee68e3f01b | ||
|
|
09e2de0390 | ||
|
|
12c9972b24 | ||
|
|
df32f93095 | ||
|
|
70d95b353e | ||
|
|
13eba3b3a6 | ||
|
|
1afdc9e7e3 | ||
|
|
38a113b5fb | ||
|
|
25f478e265 | ||
|
|
6a25662566 | ||
|
|
55af990071 | ||
|
|
927a4bbaa4 | ||
|
|
a101c621ec | ||
|
|
e25338e817 | ||
|
|
ecb1751cf5 | ||
|
|
aa54047d44 | ||
|
|
e02f82ee31 | ||
|
|
e8ff31d8d9 | ||
|
|
072805dd8f | ||
|
|
5626e0f5bc | ||
|
|
9fee7dc787 | ||
|
|
f86d97a96f | ||
|
|
6b0e8efadc | ||
|
|
7dba65c2cc | ||
|
|
497c670a98 | ||
|
|
d77790c6fa | ||
|
|
2c8311a0ff | ||
|
|
7bf5a8eaec | ||
|
|
bdffbc0757 | ||
|
|
c085eaa0a3 | ||
|
|
5580e0b29e | ||
|
|
3b174c6b4b | ||
|
|
d5acdde3c4 | ||
|
|
a1afa2ddee |
125
ADB.cs
@@ -1,4 +1,5 @@
|
||||
using JR.Utils.GUI.Forms;
|
||||
using AndroidSideloader.Utilities;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
@@ -8,6 +9,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
internal class ADB
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
private static readonly Process adb = new Process();
|
||||
public static string adbFolderPath = Path.Combine(Path.GetPathRoot(Environment.SystemDirectory), "RSL", "platform-tools");
|
||||
public static string adbFilePath = Path.Combine(adbFolderPath, "adb.exe");
|
||||
@@ -18,9 +20,9 @@ namespace AndroidSideloader
|
||||
// Replacing "adb" from command if the user added it
|
||||
command = command.Replace("adb", "");
|
||||
|
||||
Properties.Settings.Default.ADBFolder = adbFolderPath;
|
||||
Properties.Settings.Default.ADBPath = adbFilePath;
|
||||
Properties.Settings.Default.Save();
|
||||
settings.ADBFolder = adbFolderPath;
|
||||
settings.ADBPath = adbFilePath;
|
||||
settings.Save();
|
||||
if (DeviceID.Length > 1)
|
||||
{
|
||||
command = $" -s {DeviceID} {command}";
|
||||
@@ -68,7 +70,7 @@ namespace AndroidSideloader
|
||||
}
|
||||
}
|
||||
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && !Properties.Settings.Default.adbdebugwarned)
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && !settings.AdbDebugWarned)
|
||||
{
|
||||
ADBDebugWarning();
|
||||
}
|
||||
@@ -137,7 +139,7 @@ namespace AndroidSideloader
|
||||
adb.WaitForExit();
|
||||
}
|
||||
}
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && settings.AdbDebugWarned)
|
||||
{
|
||||
ADBDebugWarning();
|
||||
}
|
||||
@@ -154,58 +156,76 @@ namespace AndroidSideloader
|
||||
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
|
||||
}
|
||||
|
||||
_ = Logger.Log($"Running command: {logcmd}");
|
||||
adb.StartInfo.FileName = $@"{Path.GetPathRoot(Environment.SystemDirectory)}\Windows\System32\cmd.exe";
|
||||
adb.StartInfo.Arguments = command;
|
||||
adb.StartInfo.RedirectStandardError = true;
|
||||
adb.StartInfo.RedirectStandardInput = true;
|
||||
adb.StartInfo.RedirectStandardOutput = true;
|
||||
adb.StartInfo.CreateNoWindow = true;
|
||||
adb.StartInfo.UseShellExecute = false;
|
||||
adb.StartInfo.WorkingDirectory = Path.GetDirectoryName(path);
|
||||
_ = adb.Start();
|
||||
adb.StandardInput.WriteLine(command);
|
||||
adb.StandardInput.Flush();
|
||||
adb.StandardInput.Close();
|
||||
|
||||
|
||||
string output = "";
|
||||
string error = "";
|
||||
Logger.Log($"Running command: {logcmd}");
|
||||
|
||||
try
|
||||
{
|
||||
output += adb.StandardOutput.ReadToEnd();
|
||||
error += adb.StandardError.ReadToEnd();
|
||||
}
|
||||
catch { }
|
||||
if (command.Contains("connect"))
|
||||
{
|
||||
bool graceful = adb.WaitForExit(3000);
|
||||
if (!graceful)
|
||||
using (var adb = new Process())
|
||||
{
|
||||
adb.Kill();
|
||||
adb.WaitForExit();
|
||||
adb.StartInfo.FileName = $@"{Path.GetPathRoot(Environment.SystemDirectory)}\Windows\System32\cmd.exe";
|
||||
adb.StartInfo.Arguments = command;
|
||||
adb.StartInfo.RedirectStandardError = true;
|
||||
adb.StartInfo.RedirectStandardInput = true;
|
||||
adb.StartInfo.RedirectStandardOutput = true;
|
||||
adb.StartInfo.CreateNoWindow = true;
|
||||
adb.StartInfo.UseShellExecute = false;
|
||||
adb.StartInfo.WorkingDirectory = Path.GetDirectoryName(path);
|
||||
|
||||
adb.Start();
|
||||
adb.StandardInput.WriteLine(command);
|
||||
adb.StandardInput.Flush();
|
||||
adb.StandardInput.Close();
|
||||
|
||||
string output = adb.StandardOutput.ReadToEnd();
|
||||
string error = adb.StandardError.ReadToEnd();
|
||||
|
||||
if (command.Contains("connect"))
|
||||
{
|
||||
bool graceful = adb.WaitForExit(3000);
|
||||
if (!graceful)
|
||||
{
|
||||
adb.Kill();
|
||||
adb.WaitForExit();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
adb.WaitForExit();
|
||||
}
|
||||
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && settings.AdbDebugWarned)
|
||||
{
|
||||
ADBDebugWarning();
|
||||
}
|
||||
|
||||
if (error.Contains("Asset path") && error.Contains("is neither a directory nor file"))
|
||||
{
|
||||
Logger.Log("Asset path error detected. The specified path might not exist or be accessible.", LogLevel.WARNING);
|
||||
// You might want to handle this specific error differently
|
||||
}
|
||||
|
||||
Logger.Log(output);
|
||||
Logger.Log(error, LogLevel.ERROR);
|
||||
|
||||
return new ProcessOutput(output, error);
|
||||
}
|
||||
}
|
||||
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
|
||||
catch (Exception ex)
|
||||
{
|
||||
ADBDebugWarning();
|
||||
Logger.Log($"Error in RunCommandToString: {ex.Message}", LogLevel.ERROR);
|
||||
return new ProcessOutput("", $"Exception occurred: {ex.Message}");
|
||||
}
|
||||
_ = Logger.Log(output);
|
||||
_ = Logger.Log(error, LogLevel.ERROR);
|
||||
return new ProcessOutput(output, error);
|
||||
}
|
||||
|
||||
public static void ADBDebugWarning()
|
||||
{
|
||||
Program.form.Invoke(() =>
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "On your headset, click on the Notifications Bell, and then select the USB Detected notification to enable Connections.", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
Properties.Settings.Default.adbdebugwarned = true;
|
||||
Properties.Settings.Default.Save();
|
||||
// settings.adbdebugwarned = true;
|
||||
settings.Save();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -246,7 +266,6 @@ namespace AndroidSideloader
|
||||
public static bool wirelessadbON;
|
||||
public static ProcessOutput Sideload(string path, string packagename = "")
|
||||
{
|
||||
|
||||
ProcessOutput ret = new ProcessOutput();
|
||||
ret += RunAdbCommandToString($"install -g \"{path}\"");
|
||||
string out2 = ret.Output + ret.Error;
|
||||
@@ -254,7 +273,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
_ = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
|
||||
_ = Logger.Log(out2);
|
||||
if (out2.Contains("offline") && !Properties.Settings.Default.nodevicemode)
|
||||
if (out2.Contains("offline") && !settings.NodeviceMode)
|
||||
{
|
||||
DialogResult dialogResult2 = FlexibleMessageBox.Show(Program.form, "Device is offline. Press Yes to reconnect, or if you don't wish to connect and just want to download the game (requires unchecking \"Delete games after install\" from settings menu) then press No.", "Device offline.", MessageBoxButtons.YesNoCancel);
|
||||
}
|
||||
@@ -262,11 +281,11 @@ namespace AndroidSideloader
|
||||
{
|
||||
ret.Error = string.Empty;
|
||||
ret.Output = string.Empty;
|
||||
if (!Properties.Settings.Default.AutoReinstall)
|
||||
if (!settings.AutoReinstall)
|
||||
{
|
||||
bool cancelClicked = false;
|
||||
|
||||
if (!Properties.Settings.Default.AutoReinstall)
|
||||
if (!settings.AutoReinstall)
|
||||
{
|
||||
Program.form.Invoke((MethodInvoker)(() =>
|
||||
{
|
||||
@@ -283,18 +302,22 @@ namespace AndroidSideloader
|
||||
Program.form.changeTitle("Performing reinstall, please wait...");
|
||||
_ = ADB.RunAdbCommandToString("kill-server");
|
||||
_ = ADB.RunAdbCommandToString("devices");
|
||||
_ = ADB.RunAdbCommandToString($"pull /sdcard/Android/data/{MainForm.CurrPCKG} \"{Environment.CurrentDirectory}\"");
|
||||
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{MainForm.CurrPCKG}\" \"{Environment.CurrentDirectory}\"");
|
||||
Program.form.changeTitle("Uninstalling game...");
|
||||
_ = Sideloader.UninstallGame(MainForm.CurrPCKG);
|
||||
Program.form.changeTitle("Reinstalling Game");
|
||||
ret += ADB.RunAdbCommandToString($"install -g \"{path}\"");
|
||||
_ = ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}\" /sdcard/Android/data/");
|
||||
if (Directory.Exists($"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}"))
|
||||
string directoryToDelete = Path.Combine(Environment.CurrentDirectory, MainForm.CurrPCKG);
|
||||
if (Directory.Exists(directoryToDelete))
|
||||
{
|
||||
Directory.Delete($"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}", true);
|
||||
if (directoryToDelete != Environment.CurrentDirectory)
|
||||
{
|
||||
Directory.Delete(directoryToDelete, true);
|
||||
}
|
||||
}
|
||||
|
||||
Program.form.changeTitle(" \n\n");
|
||||
Program.form.changeTitle(" \n\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -308,7 +331,7 @@ namespace AndroidSideloader
|
||||
string folder = Path.GetFileName(path);
|
||||
string lastFolder = Path.GetFileName(path);
|
||||
return folder.Contains(".")
|
||||
? RunAdbCommandToString($"shell rm -rf /sdcard/Android/obb/{lastFolder} && mkdir /sdcard/Android/obb/{lastFolder}") + RunAdbCommandToString($"push \"{path}\" \"/sdcard/Android/obb\"")
|
||||
? RunAdbCommandToString($"shell rm -rf \"/sdcard/Android/obb/{lastFolder}\" && mkdir \"/sdcard/Android/obb/{lastFolder}\"") + RunAdbCommandToString($"push \"{path}\" \"/sdcard/Android/obb\"")
|
||||
: new ProcessOutput("No OBB Folder found");
|
||||
}
|
||||
}
|
||||
|
||||
72
AddDefenderExceptions.ps1
Normal file
@@ -0,0 +1,72 @@
|
||||
# Run this script as Administrator
|
||||
# powershell -ExecutionPolicy Bypass -File "C:\RSL\Rookie\AddDefenderExceptions.ps1"
|
||||
|
||||
|
||||
################################################################
|
||||
## Auto Elevate to Admin if not running as admin
|
||||
################################################################
|
||||
|
||||
# Get the ID and security principal of the current user account
|
||||
$WindowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
$WindowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal ($WindowsID)
|
||||
|
||||
# Get the security principal for the Administrator role
|
||||
$AdminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator
|
||||
|
||||
# Check to see if we are currently running "as Administrator"
|
||||
if ($WindowsPrincipal.IsInRole($AdminRole)) {
|
||||
# We are running "as Administrator" - so change the title and background color to indicate this
|
||||
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + " (Elevated)"
|
||||
$Host.UI.RawUI.BackgroundColor = "DarkBlue"
|
||||
Clear-Host
|
||||
} else {
|
||||
# We are not running "as Administrator" - so relaunch as administrator
|
||||
# Create a new process object that starts PowerShell
|
||||
$NewProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";
|
||||
# Specify the current script path and name as a parameter
|
||||
$NewProcess.Arguments = $myInvocation.MyCommand.Definition;
|
||||
# Indicate that the process should be elevated
|
||||
$NewProcess.Verb = "runas";
|
||||
# Start the new process
|
||||
[System.Diagnostics.Process]::Start($NewProcess);
|
||||
# Exit from the current unelevated process
|
||||
exit
|
||||
}
|
||||
|
||||
write-host "Run this script from the directory root with which Rookie will be run"
|
||||
start-sleep -s 5
|
||||
|
||||
$paths = @(
|
||||
"$PSScriptRoot", # Replaces 'C:\RSL' with the script's root directory
|
||||
"$PSScriptRoot\rclone",
|
||||
"$PSScriptRoot\Sideloader Launcher.exe",
|
||||
"$PSScriptRoot\AndroidSideloader*.exe",
|
||||
"$PSScriptRoot\rclone\rclone.exe"
|
||||
)
|
||||
|
||||
foreach ($path in $paths) {
|
||||
try {
|
||||
Add-MpPreference -ExclusionPath $Path -ErrorAction Stop
|
||||
Write-Host "Successfully added exclusion for: $path" -ForegroundColor Green
|
||||
}
|
||||
catch {
|
||||
Write-Host "Failed to add exclusion for: $path " -ForegroundColor Red
|
||||
Write-Host "Error: $_" -ForegroundColor Red
|
||||
Start-Sleep -s 5
|
||||
Pause
|
||||
}
|
||||
}
|
||||
|
||||
# Verify the exclusions
|
||||
Write-Host "`nCurrent exclusions:" -ForegroundColor Cyan
|
||||
$defenderPreferences = Get-MpPreference
|
||||
$paths | ForEach-Object {
|
||||
if ($defenderPreferences.ExclusionPath -contains $_) {
|
||||
Write-Host "$_ is already excluded from Defender."
|
||||
} else {
|
||||
Write-Host "$_ is NOT excluded from Defender."
|
||||
}
|
||||
}
|
||||
Pause
|
||||
|
||||
Start-Sleep -s 5
|
||||
@@ -194,6 +194,8 @@
|
||||
</Compile>
|
||||
<Compile Include="FlexibleMessageBox.cs" />
|
||||
<Compile Include="RoundedRectangleF.cs" />
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="Sideloader\GetDependencies.cs" />
|
||||
<Compile Include="Splash.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -248,11 +250,13 @@
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SelectFolder.cs" />
|
||||
<Compile Include="Utilities\SettingsManager.cs" />
|
||||
<Compile Include="Utilities\StringUtilities.cs" />
|
||||
<Compile Include="Utilities\GeneralUtilities.cs" />
|
||||
<Compile Include="Utilities\UpdateGameData.cs" />
|
||||
<Compile Include="Utilities\UploadGame.cs" />
|
||||
<Compile Include="Utilities\Zip.cs" />
|
||||
<Compile Include="Utilities\Metrics.cs" />
|
||||
<EmbeddedResource Include="DonorsListView.resx">
|
||||
<DependentUpon>DonorsListView.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@@ -307,6 +311,12 @@
|
||||
<None Include="Rookie Offline.cmd">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="CleanupInstall.cmd">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="AddDefenderExceptions.ps1">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
<None Include="version" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -316,12 +326,13 @@
|
||||
<Content Include="changelog.txt" />
|
||||
<Content Include="icon.ico" />
|
||||
<Content Include="ChangelogHistory.txt" />
|
||||
<Content Include="Resources\pattern_cubes-1_1_1_0-0_0_1__000000_212121.png" />
|
||||
<Content Include="Resources\pattern_herringbone-2_1_3_0-0_90_1__000000_1c1c1c.png" />
|
||||
<Content Include="Resources\splash.jpg" />
|
||||
<None Include="Resources\battery11.png" />
|
||||
<Content Include="Resources\pattern_cubes.png" />
|
||||
<Content Include="Resources\pattern_herringbone.png" />
|
||||
<Content Include="Resources\splashimage.png" />
|
||||
<Content Include="Resources\splashimage_deps.png" />
|
||||
<Content Include="Resources\splashimage_offline.png" />
|
||||
<Content Include="Resources\splashimage_rclone.png" />
|
||||
<None Include="Resources\battery.png" />
|
||||
<None Include="Resources\battery1.png" />
|
||||
<None Include="Resources\ajax-loader.gif" />
|
||||
<None Include="Resources\SearchGlass.PNG" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -182,6 +182,15 @@
|
||||
<setting name="UUID" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="createPubMirrorFile" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="useDownloadedFiles" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="bandwidthLimit" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
</AndroidSideloader.Properties.Settings>
|
||||
<AndroidADB.Sideloader.Properties.Settings>
|
||||
<setting name="checkForUpdates" serializeAs="String">
|
||||
|
||||
@@ -1,4 +1,94 @@
|
||||
RSL 2.28
|
||||
RSL 2.33
|
||||
|
||||
- Feature: Allow users to cancel backups
|
||||
- QoL: Lower ADB Version
|
||||
- QoL: Revert Add saving the ColumnWidths, Window Sizes/Position
|
||||
|
||||
RSL 2.32
|
||||
|
||||
- Feature: Allow switching between Public and Private configs
|
||||
- Feature: Switch to Offline Mode when unable to connect
|
||||
- Feature: Save window position and column sizes
|
||||
- Fix: An issue that caused the VIP mirror to fail
|
||||
- Fix: Make video window flexible
|
||||
- Fix: Issue when saving Settings file
|
||||
- Fix: Change Label position to avoid overlapping Queue/Notes windows
|
||||
- Chore: Bump aapt/aapt2/adb to latest
|
||||
- Chore: Bump 7z to 24.09
|
||||
- Chore: Add AddDefenderExceptions.ps1
|
||||
|
||||
RSL 2.31.1
|
||||
|
||||
- Fix: Filtering when Adult Content is shown
|
||||
|
||||
RSL 2.31
|
||||
|
||||
- Feature: Preserve download.config during rclone update
|
||||
- Feature: Added toggle to hide Adult Content
|
||||
- Fix: Changed settings configuration to settings.json
|
||||
- Fix: Always create debuglog on first-launch
|
||||
- Fix: Fixed numeric sorting
|
||||
- Fix: Wrap ADB commands to prevent crash
|
||||
- Fix: Update CleanupInstall to use UserProfile instead of Username
|
||||
- Fix: Fix to OBB pushing when Dragging and Dropping
|
||||
- Fix: Do not show ShowPrcOutput messages when "Enable Message Boxes" is disabled
|
||||
- Fix: Add safeguard to prevent deletion of current directory
|
||||
- Fix: Case insensitive package matching
|
||||
- Chore: Add build batch
|
||||
- Chore: Bump rclone to 1.68.2 (from 1.67.0)
|
||||
|
||||
RSL 2.30
|
||||
|
||||
- Feature: Added Download Metrics
|
||||
-- Upon downloading a game, Rookie will attempt to log the download count with our server
|
||||
-- No additional data is collected except for the Package Name and VersionCode of the Game being downloaded
|
||||
- Feature: Added Downloads column to Gamelist
|
||||
-- Downloads counts are updated nightly
|
||||
- Feature: Added "Send Command" button to ADB Commands prompt (Enter still works)
|
||||
- Feature: Small changes to how the Upload Mirror works
|
||||
-- Rookie can now verify game uploads are successful
|
||||
- Feature: Add Cleanup Install script
|
||||
- Feature: Added additional Splashes to indicate loading status
|
||||
- Feature: Added setting to supress Re-Download prompt
|
||||
- Feature: Added "Disable Checking for New Apps" argument (for Testers sanity)
|
||||
- Feature: Added Bandwidth Limiter to Settings
|
||||
- Fix: Fixes for using Sponsored Mirrors
|
||||
-- Eliminated downloading of vrp.download.config from the wiki
|
||||
-- Fixed issue where Rookie would check for the mirror before it was loaded in
|
||||
- Fix: Add quotes around all ADB path commands
|
||||
- Fix: Public Mirror label not displaying
|
||||
- Fix: Allow spaces when setting username
|
||||
- Fix: Prevent Rookie from constantly prompting for the Public Config
|
||||
- Fix: Fixed issue where the Game List doesn't copy/export properly
|
||||
- Fix: Fixed issue where dropping an entire folder doesn't read the install.txt
|
||||
- Chore: Remove random mirror picker (no longer used)
|
||||
- Chore: Changed unable to connect message
|
||||
- Chore: Remove Offline Mode popup
|
||||
- Chore: Remove unused dependencies
|
||||
- Chore: Rename random assets
|
||||
- Chore: Bump rclone to 1.67.0 (from 1.66.0)
|
||||
|
||||
RSL 2.29
|
||||
|
||||
- Feature: Prompt to keep temporary files and allow resuming of downloads
|
||||
- Feature: Fixed progress bar jump-back
|
||||
- Feature: Added part tracking during download
|
||||
- Fix: Change UUID calculation. No longer uses system details (caused virus flags)
|
||||
- Fix: Added rclone fallback download
|
||||
- Fix: Additional connect/startup troubleshooting steps
|
||||
- Chore: Bump rclone to 1.66.0
|
||||
|
||||
RSL 2.29.1
|
||||
- Fix: Correct initilization sequence to prevent crashes
|
||||
- Chore: bump package dependencies
|
||||
- Chore: Fix initial GUI name
|
||||
|
||||
RSL 2.29.2
|
||||
- Fix: Fix for failed uploads using new rclone version
|
||||
- Fix: Changes to initilization order to prevent crashes and display splash
|
||||
|
||||
|
||||
RSL 2.28
|
||||
|
||||
- Feature: Added ADB-Backup Support. Now supports creation and restoration of .AB backups
|
||||
- Feature: Added OS-Updates toggle to ADB-Command window (Click to toggle on/off)
|
||||
|
||||
26
CleanupInstall.cmd
Normal file
@@ -0,0 +1,26 @@
|
||||
@echo off
|
||||
|
||||
echo Killing AndroidSideloader processes...
|
||||
taskkill /F /FI "IMAGENAME eq AndroidSideloader*" /T
|
||||
|
||||
echo Killing adb.exe processes...
|
||||
taskkill /F /FI "IMAGENAME eq adb.exe" /T
|
||||
|
||||
|
||||
set "folderPath=%userprofile%\AppData\Local\Rookie.WTF\"
|
||||
echo Deleting contents of %folderPath%...
|
||||
for /D %%i in ("%folderPath%\*") do (
|
||||
rd /s /q "%%i"
|
||||
)
|
||||
del /q "%folderPath%\*.*"
|
||||
|
||||
|
||||
set "folderPath=%userprofile%\AppData\Local\Rookie.AndroidSideloader\"
|
||||
echo Deleting contents of %folderPath%...
|
||||
for /D %%i in ("%folderPath%\*") do (
|
||||
rd /s /q "%%i"
|
||||
)
|
||||
del /q "%folderPath%\*.*"
|
||||
|
||||
echo Cleanup complete.
|
||||
pause
|
||||
@@ -2,90 +2,102 @@
|
||||
using System.Windows.Forms;
|
||||
|
||||
/// <summary>
|
||||
/// This class is an implementation of the 'IComparer' interface.
|
||||
/// A custom comparer for sorting ListView columns, implementing the 'IComparer' interface.
|
||||
/// </summary>
|
||||
public class ListViewColumnSorter : IComparer
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Case insensitive comparer object
|
||||
/// Case-insensitive comparer object used for comparing strings.
|
||||
/// </summary>
|
||||
private readonly CaseInsensitiveComparer ObjectCompare;
|
||||
|
||||
/// <summary>
|
||||
/// Class constructor. Initializes various elements
|
||||
/// Initializes a new instance of the ListViewColumnSorter class and sets default sorting parameters.
|
||||
/// </summary>
|
||||
public ListViewColumnSorter()
|
||||
{
|
||||
// Initialize the column to '0'
|
||||
// Default column index for sorting
|
||||
SortColumn = 0;
|
||||
|
||||
// Initialize the sort order to 'none'
|
||||
// Default sorting order
|
||||
Order = SortOrder.Ascending;
|
||||
|
||||
// Initialize the CaseInsensitiveComparer object
|
||||
// Initialize the case-insensitive comparer
|
||||
ObjectCompare = new CaseInsensitiveComparer();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison.
|
||||
/// Compares two ListViewItem objects based on the specified column index and sorting order.
|
||||
/// </summary>
|
||||
/// <param name="x">First object to be compared</param>
|
||||
/// <param name="y">Second object to be compared</param>
|
||||
/// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
|
||||
/// <param name="x">First ListViewItem object to compare.</param>
|
||||
/// <param name="y">Second ListViewItem object to compare.</param>
|
||||
/// <returns>
|
||||
/// A signed integer indicating the relative values of x and y:
|
||||
/// "0" if equal, a negative number if x is less than y, and a positive number if x is greater than y.
|
||||
/// </returns>
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
int compareResult;
|
||||
ListViewItem listviewX, listviewY;
|
||||
ListViewItem listviewX = (ListViewItem)x;
|
||||
ListViewItem listviewY = (ListViewItem)y;
|
||||
|
||||
// Cast the objects to be compared to ListViewItem objects
|
||||
listviewX = (ListViewItem)x;
|
||||
listviewY = (ListViewItem)y;
|
||||
if (SortColumn == 5)
|
||||
// Determine if the column requires numeric comparison
|
||||
if (SortColumn == 3 || SortColumn == 5) // Numeric columns: VersionCodeIndex, VersionNameIndex
|
||||
{
|
||||
try
|
||||
{
|
||||
int yNum = int.Parse(cleanNumber(listviewY.SubItems[SortColumn].Text));
|
||||
int xNum = int.Parse(cleanNumber(listviewX.SubItems[SortColumn].Text));
|
||||
return xNum == yNum ? 0 : xNum > yNum && Order == SortOrder.Ascending ? -1 : 1;
|
||||
// Parse and compare numeric values directly
|
||||
int xNum = ParseNumber(listviewX.SubItems[SortColumn].Text);
|
||||
int yNum = ParseNumber(listviewY.SubItems[SortColumn].Text);
|
||||
|
||||
// Compare numerically
|
||||
compareResult = xNum.CompareTo(yNum);
|
||||
}
|
||||
catch { }
|
||||
catch
|
||||
{
|
||||
// Fallback to string comparison if parsing fails
|
||||
compareResult = ObjectCompare.Compare(listviewX.SubItems[SortColumn].Text, listviewY.SubItems[SortColumn].Text);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Default to string comparison for non-numeric columns
|
||||
compareResult = ObjectCompare.Compare(listviewX.SubItems[SortColumn].Text, listviewY.SubItems[SortColumn].Text);
|
||||
}
|
||||
|
||||
// Compare the two items
|
||||
compareResult = ObjectCompare.Compare(listviewX.SubItems[SortColumn].Text, listviewY.SubItems[SortColumn].Text);
|
||||
|
||||
// Calculate correct return value based on object comparison
|
||||
// Determine the return value based on the specified sort order
|
||||
if (Order == SortOrder.Ascending)
|
||||
{
|
||||
// Ascending sort is selected, return normal result of compare operation
|
||||
return compareResult;
|
||||
}
|
||||
else if (Order == SortOrder.Descending)
|
||||
{
|
||||
// Descending sort is selected, return negative result of compare operation
|
||||
return -compareResult;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Return '0' to indicate they are equal
|
||||
return 0;
|
||||
return 0; // Indicate equality
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
|
||||
/// Parses a numeric value from a string for accurate numeric comparison.
|
||||
/// </summary>
|
||||
public int SortColumn { set; get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
|
||||
/// </summary>
|
||||
public SortOrder Order { set; get; }
|
||||
|
||||
private string cleanNumber(string number)
|
||||
/// <param name="text">The string representation of the number.</param>
|
||||
/// <returns>The parsed integer value; returns 0 if parsing fails.</returns>
|
||||
private int ParseNumber(string text)
|
||||
{
|
||||
return number.Substring(0);
|
||||
// Directly attempt to parse the string as an integer
|
||||
return int.TryParse(text, out int result) ? result : 0;
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Gets or sets the index of the column to be sorted (default is '0').
|
||||
/// </summary>
|
||||
public int SortColumn { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the order of sorting (Ascending or Descending).
|
||||
/// </summary>
|
||||
public SortOrder Order { get; set; }
|
||||
}
|
||||
|
||||
2
DonorsListView.Designer.cs
generated
@@ -111,7 +111,7 @@ namespace AndroidSideloader
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.panel1.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
|
||||
this.panel1.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes;
|
||||
this.panel1.Controls.Add(this.SkipButton);
|
||||
this.panel1.Controls.Add(this.DonateButton);
|
||||
this.panel1.Controls.Add(this.panel2);
|
||||
|
||||
217
MainForm.Designer.cs
generated
@@ -49,6 +49,7 @@ namespace AndroidSideloader
|
||||
this.VersionCodeIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.ReleaseAPKPathIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.VersionNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.DownloadsIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.searchTextBox = new System.Windows.Forms.TextBox();
|
||||
this.gamesQueueLabel = new System.Windows.Forms.Label();
|
||||
this.ProgressText = new System.Windows.Forms.Label();
|
||||
@@ -104,7 +105,6 @@ namespace AndroidSideloader
|
||||
this.speedLabel_Tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.etaLabel_Tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.progressDLbtnContainer = new System.Windows.Forms.Panel();
|
||||
this.downloadInstallGameButton = new AndroidSideloader.RoundButton();
|
||||
this.diskLabel = new System.Windows.Forms.Label();
|
||||
this.bottomContainer = new System.Windows.Forms.Panel();
|
||||
this.deviceDrop = new System.Windows.Forms.Button();
|
||||
@@ -124,7 +124,12 @@ namespace AndroidSideloader
|
||||
this.leftNavContainer = new System.Windows.Forms.Panel();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
|
||||
this.favoriteGame = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.favoriteButton = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.favoriteSwitcher = new AndroidSideloader.RoundButton();
|
||||
this.adbCmd_btnSend = new AndroidSideloader.RoundButton();
|
||||
this.adbCmd_btnToggleUpdates = new AndroidSideloader.RoundButton();
|
||||
this.downloadInstallGameButton = new AndroidSideloader.RoundButton();
|
||||
this.MountButton = new AndroidSideloader.RoundButton();
|
||||
this.btnNoDevice = new AndroidSideloader.RoundButton();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gamesPictureBox)).BeginInit();
|
||||
@@ -139,6 +144,7 @@ namespace AndroidSideloader
|
||||
this.leftNavContainer.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.webView21)).BeginInit();
|
||||
this.favoriteGame.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// m_combo
|
||||
@@ -164,7 +170,7 @@ namespace AndroidSideloader
|
||||
this.progressBar.Location = new System.Drawing.Point(2, 0);
|
||||
this.progressBar.MinimumSize = new System.Drawing.Size(200, 13);
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Size = new System.Drawing.Size(418, 13);
|
||||
this.progressBar.Size = new System.Drawing.Size(553, 13);
|
||||
this.progressBar.TabIndex = 7;
|
||||
//
|
||||
// speedLabel
|
||||
@@ -191,7 +197,7 @@ namespace AndroidSideloader
|
||||
this.etaLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.etaLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.etaLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.etaLabel.Location = new System.Drawing.Point(224, 14);
|
||||
this.etaLabel.Location = new System.Drawing.Point(359, 14);
|
||||
this.etaLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.etaLabel.Name = "etaLabel";
|
||||
this.etaLabel.Size = new System.Drawing.Size(196, 18);
|
||||
@@ -232,7 +238,7 @@ namespace AndroidSideloader
|
||||
this.gamesQueListBox.Location = new System.Drawing.Point(601, 493);
|
||||
this.gamesQueListBox.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.gamesQueListBox.Name = "gamesQueListBox";
|
||||
this.gamesQueListBox.Size = new System.Drawing.Size(421, 128);
|
||||
this.gamesQueListBox.Size = new System.Drawing.Size(556, 128);
|
||||
this.gamesQueListBox.TabIndex = 9;
|
||||
this.gamesQueListBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gamesQueListBox_MouseClick);
|
||||
this.gamesQueListBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
@@ -264,10 +270,10 @@ namespace AndroidSideloader
|
||||
this.remotesList.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.remotesList.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.remotesList.FormattingEnabled = true;
|
||||
this.remotesList.Location = new System.Drawing.Point(545, 40);
|
||||
this.remotesList.Location = new System.Drawing.Point(531, 40);
|
||||
this.remotesList.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.remotesList.Name = "remotesList";
|
||||
this.remotesList.Size = new System.Drawing.Size(53, 26);
|
||||
this.remotesList.Size = new System.Drawing.Size(67, 26);
|
||||
this.remotesList.TabIndex = 3;
|
||||
this.remotesList.SelectedIndexChanged += new System.EventHandler(this.remotesList_SelectedIndexChanged);
|
||||
//
|
||||
@@ -283,7 +289,8 @@ namespace AndroidSideloader
|
||||
this.PackageNameIndex,
|
||||
this.VersionCodeIndex,
|
||||
this.ReleaseAPKPathIndex,
|
||||
this.VersionNameIndex});
|
||||
this.VersionNameIndex,
|
||||
this.DownloadsIndex});
|
||||
this.gamesListView.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.gamesListView.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.gamesListView.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
@@ -292,7 +299,7 @@ namespace AndroidSideloader
|
||||
this.gamesListView.Location = new System.Drawing.Point(224, 98);
|
||||
this.gamesListView.Name = "gamesListView";
|
||||
this.gamesListView.ShowGroups = false;
|
||||
this.gamesListView.Size = new System.Drawing.Size(798, 350);
|
||||
this.gamesListView.Size = new System.Drawing.Size(933, 350);
|
||||
this.gamesListView.TabIndex = 6;
|
||||
this.gamesListView.UseCompatibleStateImageBehavior = false;
|
||||
this.gamesListView.View = System.Windows.Forms.View.Details;
|
||||
@@ -300,6 +307,7 @@ namespace AndroidSideloader
|
||||
this.gamesListView.SelectedIndexChanged += new System.EventHandler(this.gamesListView_SelectedIndexChanged);
|
||||
this.gamesListView.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.gamesListView.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
this.gamesListView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gamesListView_MouseClick);
|
||||
this.gamesListView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.gamesListView_MouseDoubleClick);
|
||||
//
|
||||
// GameNameIndex
|
||||
@@ -333,6 +341,12 @@ namespace AndroidSideloader
|
||||
this.VersionNameIndex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
|
||||
this.VersionNameIndex.Width = 66;
|
||||
//
|
||||
// DownloadsIndex
|
||||
//
|
||||
this.DownloadsIndex.Text = "Popularity";
|
||||
this.DownloadsIndex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
|
||||
this.DownloadsIndex.Width = 80;
|
||||
//
|
||||
// searchTextBox
|
||||
//
|
||||
this.searchTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
@@ -347,7 +361,7 @@ namespace AndroidSideloader
|
||||
this.searchTextBox.Location = new System.Drawing.Point(224, 70);
|
||||
this.searchTextBox.MinimumSize = new System.Drawing.Size(231, 26);
|
||||
this.searchTextBox.Name = "searchTextBox";
|
||||
this.searchTextBox.Size = new System.Drawing.Size(798, 24);
|
||||
this.searchTextBox.Size = new System.Drawing.Size(933, 26);
|
||||
this.searchTextBox.TabIndex = 5;
|
||||
this.searchTextBox.Text = "Search";
|
||||
this.searchTextBox.Click += new System.EventHandler(this.searchTextBox_Click);
|
||||
@@ -363,7 +377,7 @@ namespace AndroidSideloader
|
||||
this.gamesQueueLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.gamesQueueLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.gamesQueueLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.gamesQueueLabel.Location = new System.Drawing.Point(599, 603);
|
||||
this.gamesQueueLabel.Location = new System.Drawing.Point(971, 603);
|
||||
this.gamesQueueLabel.Name = "gamesQueueLabel";
|
||||
this.gamesQueueLabel.Size = new System.Drawing.Size(123, 18);
|
||||
this.gamesQueueLabel.TabIndex = 86;
|
||||
@@ -395,7 +409,7 @@ namespace AndroidSideloader
|
||||
this.notesRichTextBox.ReadOnly = true;
|
||||
this.notesRichTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
|
||||
this.notesRichTextBox.ShowSelectionMargin = true;
|
||||
this.notesRichTextBox.Size = new System.Drawing.Size(421, 81);
|
||||
this.notesRichTextBox.Size = new System.Drawing.Size(556, 81);
|
||||
this.notesRichTextBox.TabIndex = 10;
|
||||
this.notesRichTextBox.Text = "\n\n\n TIP: PRESS F1 TO SEE A LIST OF SHORTCUTS";
|
||||
//
|
||||
@@ -423,7 +437,7 @@ namespace AndroidSideloader
|
||||
this.lblNotes.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.lblNotes.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.lblNotes.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.lblNotes.Location = new System.Drawing.Point(597, 689);
|
||||
this.lblNotes.Location = new System.Drawing.Point(988, 689);
|
||||
this.lblNotes.Name = "lblNotes";
|
||||
this.lblNotes.Size = new System.Drawing.Size(106, 18);
|
||||
this.lblNotes.TabIndex = 86;
|
||||
@@ -433,9 +447,9 @@ namespace AndroidSideloader
|
||||
//
|
||||
this.adbCmd_background.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.adbCmd_background.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.adbCmd_background.Location = new System.Drawing.Point(467, 196);
|
||||
this.adbCmd_background.Location = new System.Drawing.Point(462, 196);
|
||||
this.adbCmd_background.Name = "adbCmd_background";
|
||||
this.adbCmd_background.Size = new System.Drawing.Size(271, 103);
|
||||
this.adbCmd_background.Size = new System.Drawing.Size(322, 103);
|
||||
this.adbCmd_background.TabIndex = 89;
|
||||
this.adbCmd_background.Visible = false;
|
||||
//
|
||||
@@ -480,9 +494,9 @@ namespace AndroidSideloader
|
||||
this.lblMirror.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.lblMirror.Location = new System.Drawing.Point(475, 44);
|
||||
this.lblMirror.Name = "lblMirror";
|
||||
this.lblMirror.Size = new System.Drawing.Size(65, 17);
|
||||
this.lblMirror.Size = new System.Drawing.Size(51, 17);
|
||||
this.lblMirror.TabIndex = 90;
|
||||
this.lblMirror.Text = "Mirror #";
|
||||
this.lblMirror.Text = "Mirror";
|
||||
this.lblMirror.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// adbCmd_CommandBox
|
||||
@@ -497,11 +511,11 @@ namespace AndroidSideloader
|
||||
this.adbCmd_CommandBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.adbCmd_CommandBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.adbCmd_CommandBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.adbCmd_CommandBox.Location = new System.Drawing.Point(479, 231);
|
||||
this.adbCmd_CommandBox.MaximumSize = new System.Drawing.Size(247, 24);
|
||||
this.adbCmd_CommandBox.MinimumSize = new System.Drawing.Size(247, 24);
|
||||
this.adbCmd_CommandBox.Location = new System.Drawing.Point(477, 231);
|
||||
this.adbCmd_CommandBox.MaximumSize = new System.Drawing.Size(290, 24);
|
||||
this.adbCmd_CommandBox.MinimumSize = new System.Drawing.Size(290, 24);
|
||||
this.adbCmd_CommandBox.Name = "adbCmd_CommandBox";
|
||||
this.adbCmd_CommandBox.Size = new System.Drawing.Size(247, 24);
|
||||
this.adbCmd_CommandBox.Size = new System.Drawing.Size(290, 24);
|
||||
this.adbCmd_CommandBox.TabIndex = 5;
|
||||
this.adbCmd_CommandBox.Visible = false;
|
||||
this.adbCmd_CommandBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
|
||||
@@ -517,7 +531,7 @@ namespace AndroidSideloader
|
||||
this.adbCmd_Label.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.adbCmd_Label.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.adbCmd_Label.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.adbCmd_Label.Location = new System.Drawing.Point(479, 205);
|
||||
this.adbCmd_Label.Location = new System.Drawing.Point(500, 205);
|
||||
this.adbCmd_Label.MaximumSize = new System.Drawing.Size(247, 20);
|
||||
this.adbCmd_Label.MinimumSize = new System.Drawing.Size(247, 20);
|
||||
this.adbCmd_Label.Name = "adbCmd_Label";
|
||||
@@ -973,37 +987,9 @@ namespace AndroidSideloader
|
||||
this.progressDLbtnContainer.Location = new System.Drawing.Point(224, 454);
|
||||
this.progressDLbtnContainer.MinimumSize = new System.Drawing.Size(600, 34);
|
||||
this.progressDLbtnContainer.Name = "progressDLbtnContainer";
|
||||
this.progressDLbtnContainer.Size = new System.Drawing.Size(798, 34);
|
||||
this.progressDLbtnContainer.Size = new System.Drawing.Size(933, 34);
|
||||
this.progressDLbtnContainer.TabIndex = 96;
|
||||
//
|
||||
// downloadInstallGameButton
|
||||
//
|
||||
this.downloadInstallGameButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.downloadInstallGameButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.downloadInstallGameButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.downloadInstallGameButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.downloadInstallGameButton.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.downloadInstallGameButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.downloadInstallGameButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.downloadInstallGameButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.downloadInstallGameButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.downloadInstallGameButton.Location = new System.Drawing.Point(434, 0);
|
||||
this.downloadInstallGameButton.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.downloadInstallGameButton.Name = "downloadInstallGameButton";
|
||||
this.downloadInstallGameButton.Radius = 5;
|
||||
this.downloadInstallGameButton.Size = new System.Drawing.Size(364, 34);
|
||||
this.downloadInstallGameButton.Stroke = true;
|
||||
this.downloadInstallGameButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.downloadInstallGameButton.TabIndex = 94;
|
||||
this.downloadInstallGameButton.Text = "Download and Install Game/Add To Queue ⮩ ";
|
||||
this.downloadInstallGameButton.Transparency = false;
|
||||
this.downloadInstallGameButton.Click += new System.EventHandler(this.downloadInstallGameButton_Click);
|
||||
this.downloadInstallGameButton.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.downloadInstallGameButton.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
//
|
||||
// diskLabel
|
||||
//
|
||||
this.diskLabel.AutoSize = true;
|
||||
@@ -1037,7 +1023,7 @@ namespace AndroidSideloader
|
||||
// deviceDrop
|
||||
//
|
||||
this.deviceDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
|
||||
this.deviceDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c;
|
||||
this.deviceDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone;
|
||||
this.deviceDrop.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.deviceDrop.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.deviceDrop.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -1074,7 +1060,7 @@ namespace AndroidSideloader
|
||||
// sideloadDrop
|
||||
//
|
||||
this.sideloadDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
|
||||
this.sideloadDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c;
|
||||
this.sideloadDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone;
|
||||
this.sideloadDrop.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.sideloadDrop.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.sideloadDrop.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -1111,7 +1097,7 @@ namespace AndroidSideloader
|
||||
// installedAppsMenu
|
||||
//
|
||||
this.installedAppsMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
|
||||
this.installedAppsMenu.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c;
|
||||
this.installedAppsMenu.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone;
|
||||
this.installedAppsMenu.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.installedAppsMenu.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.installedAppsMenu.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -1148,7 +1134,7 @@ namespace AndroidSideloader
|
||||
// backupDrop
|
||||
//
|
||||
this.backupDrop.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
|
||||
this.backupDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c;
|
||||
this.backupDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone;
|
||||
this.backupDrop.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.backupDrop.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.backupDrop.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -1186,7 +1172,7 @@ namespace AndroidSideloader
|
||||
// otherDrop
|
||||
//
|
||||
this.otherDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
|
||||
this.otherDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c;
|
||||
this.otherDrop.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_herringbone;
|
||||
this.otherDrop.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.otherDrop.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.otherDrop.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -1225,7 +1211,7 @@ namespace AndroidSideloader
|
||||
// batteryLevImg
|
||||
//
|
||||
this.batteryLevImg.BackColor = System.Drawing.Color.Transparent;
|
||||
this.batteryLevImg.BackgroundImage = global::AndroidSideloader.Properties.Resources.battery11;
|
||||
this.batteryLevImg.BackgroundImage = global::AndroidSideloader.Properties.Resources.battery;
|
||||
this.batteryLevImg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.batteryLevImg.Location = new System.Drawing.Point(166, 715);
|
||||
this.batteryLevImg.Margin = new System.Windows.Forms.Padding(2);
|
||||
@@ -1265,7 +1251,7 @@ namespace AndroidSideloader
|
||||
this.verLabel.BackColor = System.Drawing.Color.Transparent;
|
||||
this.verLabel.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold);
|
||||
this.verLabel.ForeColor = System.Drawing.SystemColors.Control;
|
||||
this.verLabel.Location = new System.Drawing.Point(966, 721);
|
||||
this.verLabel.Location = new System.Drawing.Point(1101, 721);
|
||||
this.verLabel.Name = "verLabel";
|
||||
this.verLabel.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
|
||||
this.verLabel.Size = new System.Drawing.Size(68, 20);
|
||||
@@ -1307,7 +1293,7 @@ namespace AndroidSideloader
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblUpToDate, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblUpdateAvailable, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblNeedsDonate, 0, 2);
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(796, 2);
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(931, 2);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.tableLayoutPanel1.RowCount = 3;
|
||||
@@ -1321,6 +1307,7 @@ namespace AndroidSideloader
|
||||
// webView21
|
||||
//
|
||||
this.webView21.AllowExternalDrop = true;
|
||||
this.webView21.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.webView21.CreationProperties = null;
|
||||
this.webView21.DefaultBackgroundColor = System.Drawing.Color.White;
|
||||
this.webView21.Location = new System.Drawing.Point(224, 493);
|
||||
@@ -1329,6 +1316,75 @@ namespace AndroidSideloader
|
||||
this.webView21.TabIndex = 98;
|
||||
this.webView21.ZoomFactor = 1D;
|
||||
//
|
||||
// favoriteGame
|
||||
//
|
||||
this.favoriteGame.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.favoriteButton});
|
||||
this.favoriteGame.Name = "favoriteGame";
|
||||
this.favoriteGame.Size = new System.Drawing.Size(117, 26);
|
||||
//
|
||||
// favoriteButton
|
||||
//
|
||||
this.favoriteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.favoriteButton.ForeColor = System.Drawing.Color.White;
|
||||
this.favoriteButton.Name = "favoriteButton";
|
||||
this.favoriteButton.Size = new System.Drawing.Size(116, 22);
|
||||
this.favoriteButton.Text = "Favorite";
|
||||
this.favoriteButton.Click += new System.EventHandler(this.favoriteButton_Click);
|
||||
//
|
||||
// favoriteSwitcher
|
||||
//
|
||||
this.favoriteSwitcher.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.favoriteSwitcher.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.favoriteSwitcher.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.favoriteSwitcher.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.favoriteSwitcher.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.favoriteSwitcher.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.favoriteSwitcher.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.favoriteSwitcher.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.favoriteSwitcher.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.favoriteSwitcher.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.favoriteSwitcher.Location = new System.Drawing.Point(786, 34);
|
||||
this.favoriteSwitcher.Name = "favoriteSwitcher";
|
||||
this.favoriteSwitcher.Radius = 5;
|
||||
this.favoriteSwitcher.Size = new System.Drawing.Size(168, 28);
|
||||
this.favoriteSwitcher.Stroke = true;
|
||||
this.favoriteSwitcher.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.favoriteSwitcher.TabIndex = 101;
|
||||
this.favoriteSwitcher.Text = "Games List";
|
||||
this.favoriteSwitcher.Transparency = false;
|
||||
this.favoriteSwitcher.Click += new System.EventHandler(this.favoriteSwitcher_Click);
|
||||
//
|
||||
// adbCmd_btnSend
|
||||
//
|
||||
this.adbCmd_btnSend.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.adbCmd_btnSend.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.adbCmd_btnSend.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.adbCmd_btnSend.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.adbCmd_btnSend.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.adbCmd_btnSend.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.adbCmd_btnSend.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.adbCmd_btnSend.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.adbCmd_btnSend.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.adbCmd_btnSend.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.adbCmd_btnSend.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.adbCmd_btnSend.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.adbCmd_btnSend.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.adbCmd_btnSend.Location = new System.Drawing.Point(478, 262);
|
||||
this.adbCmd_btnSend.Name = "adbCmd_btnSend";
|
||||
this.adbCmd_btnSend.Radius = 5;
|
||||
this.adbCmd_btnSend.Size = new System.Drawing.Size(126, 28);
|
||||
this.adbCmd_btnSend.Stroke = true;
|
||||
this.adbCmd_btnSend.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.adbCmd_btnSend.TabIndex = 100;
|
||||
this.adbCmd_btnSend.Text = "Send Command";
|
||||
this.adbCmd_btnSend.Transparency = false;
|
||||
this.adbCmd_btnSend.Visible = false;
|
||||
this.adbCmd_btnSend.Click += new System.EventHandler(this.adbCmd_btnSend_Click);
|
||||
//
|
||||
// adbCmd_btnToggleUpdates
|
||||
//
|
||||
this.adbCmd_btnToggleUpdates.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
@@ -1344,10 +1400,10 @@ namespace AndroidSideloader
|
||||
this.adbCmd_btnToggleUpdates.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.adbCmd_btnToggleUpdates.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.adbCmd_btnToggleUpdates.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.adbCmd_btnToggleUpdates.Location = new System.Drawing.Point(523, 262);
|
||||
this.adbCmd_btnToggleUpdates.Location = new System.Drawing.Point(627, 262);
|
||||
this.adbCmd_btnToggleUpdates.Name = "adbCmd_btnToggleUpdates";
|
||||
this.adbCmd_btnToggleUpdates.Radius = 5;
|
||||
this.adbCmd_btnToggleUpdates.Size = new System.Drawing.Size(153, 28);
|
||||
this.adbCmd_btnToggleUpdates.Size = new System.Drawing.Size(143, 28);
|
||||
this.adbCmd_btnToggleUpdates.Stroke = true;
|
||||
this.adbCmd_btnToggleUpdates.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.adbCmd_btnToggleUpdates.TabIndex = 99;
|
||||
@@ -1356,6 +1412,34 @@ namespace AndroidSideloader
|
||||
this.adbCmd_btnToggleUpdates.Visible = false;
|
||||
this.adbCmd_btnToggleUpdates.Click += new System.EventHandler(this.adbCmd_btnToggleUpdates_Click);
|
||||
//
|
||||
// downloadInstallGameButton
|
||||
//
|
||||
this.downloadInstallGameButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.downloadInstallGameButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
this.downloadInstallGameButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.downloadInstallGameButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.downloadInstallGameButton.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.downloadInstallGameButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.downloadInstallGameButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.downloadInstallGameButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.downloadInstallGameButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.downloadInstallGameButton.Location = new System.Drawing.Point(569, 0);
|
||||
this.downloadInstallGameButton.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.downloadInstallGameButton.Name = "downloadInstallGameButton";
|
||||
this.downloadInstallGameButton.Radius = 5;
|
||||
this.downloadInstallGameButton.Size = new System.Drawing.Size(364, 34);
|
||||
this.downloadInstallGameButton.Stroke = true;
|
||||
this.downloadInstallGameButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.downloadInstallGameButton.TabIndex = 94;
|
||||
this.downloadInstallGameButton.Text = "Download and Install Game/Add To Queue ⮩ ";
|
||||
this.downloadInstallGameButton.Transparency = false;
|
||||
this.downloadInstallGameButton.Click += new System.EventHandler(this.downloadInstallGameButton_Click);
|
||||
this.downloadInstallGameButton.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.downloadInstallGameButton.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
//
|
||||
// MountButton
|
||||
//
|
||||
this.MountButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
|
||||
@@ -1415,8 +1499,10 @@ namespace AndroidSideloader
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
|
||||
this.ClientSize = new System.Drawing.Size(1040, 747);
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes;
|
||||
this.ClientSize = new System.Drawing.Size(1175, 747);
|
||||
this.Controls.Add(this.favoriteSwitcher);
|
||||
this.Controls.Add(this.adbCmd_btnSend);
|
||||
this.Controls.Add(this.adbCmd_btnToggleUpdates);
|
||||
this.Controls.Add(this.ULLabel);
|
||||
this.Controls.Add(this.verLabel);
|
||||
@@ -1452,7 +1538,6 @@ namespace AndroidSideloader
|
||||
this.Text = "Rookie Sideloader";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
|
||||
this.Load += new System.EventHandler(this.Form1_Load);
|
||||
this.Shown += new System.EventHandler(this.Form1_Shown);
|
||||
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
this.DragLeave += new System.EventHandler(this.Form1_DragLeave);
|
||||
@@ -1472,6 +1557,7 @@ namespace AndroidSideloader
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.webView21)).EndInit();
|
||||
this.favoriteGame.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -1507,6 +1593,7 @@ namespace AndroidSideloader
|
||||
private System.Windows.Forms.ColumnHeader VersionCodeIndex;
|
||||
private System.Windows.Forms.ColumnHeader ReleaseAPKPathIndex;
|
||||
public System.Windows.Forms.ColumnHeader VersionNameIndex;
|
||||
public System.Windows.Forms.ColumnHeader DownloadsIndex;
|
||||
private RoundButton downloadInstallGameButton;
|
||||
private RoundButton MountButton;
|
||||
private ToolTip startsideloadbutton_Tooltip;
|
||||
@@ -1571,5 +1658,9 @@ namespace AndroidSideloader
|
||||
private Button btnRunAdbCmd;
|
||||
private RoundButton btnNoDevice;
|
||||
private RoundButton adbCmd_btnToggleUpdates;
|
||||
private RoundButton adbCmd_btnSend;
|
||||
private ContextMenuStrip favoriteGame;
|
||||
private ToolStripMenuItem favoriteButton;
|
||||
private RoundButton favoriteSwitcher;
|
||||
}
|
||||
}
|
||||
|
||||
1559
MainForm.cs
@@ -180,4 +180,10 @@
|
||||
<metadata name="listApkButton_Tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>955, 17</value>
|
||||
</metadata>
|
||||
<metadata name="favoriteGame.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>855, 95</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>161</value>
|
||||
</metadata>
|
||||
</root>
|
||||
2
NewApps.Designer.cs
generated
@@ -126,7 +126,7 @@ namespace AndroidSideloader
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes;
|
||||
this.ClientSize = new System.Drawing.Size(313, 248);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.NewAppsButton);
|
||||
|
||||
14
Program.cs
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using AndroidSideloader.Utilities;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Permissions;
|
||||
using System.Windows.Forms;
|
||||
@@ -7,6 +8,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
@@ -19,12 +21,6 @@ namespace AndroidSideloader
|
||||
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(CrashHandler);
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
if (AndroidSideloader.Properties.Settings.Default.UpdateSettings)
|
||||
{
|
||||
AndroidSideloader.Properties.Settings.Default.Upgrade();
|
||||
AndroidSideloader.Properties.Settings.Default.UpdateSettings = false;
|
||||
AndroidSideloader.Properties.Settings.Default.Save();
|
||||
}
|
||||
form = new MainForm();
|
||||
Application.Run(form);
|
||||
//form.Show();
|
||||
@@ -41,9 +37,9 @@ namespace AndroidSideloader
|
||||
string date_time = DateTime.Now.ToString("dddd, MMMM dd @ hh:mmtt (UTC)");
|
||||
File.WriteAllText(Sideloader.CrashLogPath, $"Date/Time of crash: {date_time}\nMessage: {e.Message}\nInner Message: {innerExceptionMessage}\nData: {e.Data}\nSource: {e.Source}\nTargetSite: {e.TargetSite}\nStack Trace: \n{e.StackTrace}\n\n\nDebuglog: \n\n\n");
|
||||
// If a debuglog exists we append it to the crashlog.
|
||||
if (File.Exists(Properties.Settings.Default.CurrentLogPath))
|
||||
if (File.Exists(settings.CurrentLogPath))
|
||||
{
|
||||
File.AppendAllText(Sideloader.CrashLogPath, File.ReadAllText($"{Properties.Settings.Default.CurrentLogPath}"));
|
||||
File.AppendAllText(Sideloader.CrashLogPath, File.ReadAllText($"{settings.CurrentLogPath}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
58
Properties/Resources.Designer.cs
generated
@@ -80,26 +80,6 @@ namespace AndroidSideloader.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap battery1 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("battery1", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap battery11 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("battery11", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
@@ -113,9 +93,9 @@ namespace AndroidSideloader.Properties {
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap pattern_cubes_1_1_1_0_0_0_1__000000_212121 {
|
||||
public static System.Drawing.Bitmap pattern_cubes {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("pattern_cubes-1_1_1_0-0_0_1__000000_212121", resourceCulture);
|
||||
object obj = ResourceManager.GetObject("pattern_cubes", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
@@ -123,9 +103,9 @@ namespace AndroidSideloader.Properties {
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c {
|
||||
public static System.Drawing.Bitmap pattern_herringbone {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c", resourceCulture);
|
||||
object obj = ResourceManager.GetObject("pattern_herringbone", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
@@ -149,5 +129,35 @@ namespace AndroidSideloader.Properties {
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap splashimage_deps {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("splashimage_deps", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap splashimage_offline {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("splashimage_offline", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap splashimage_rclone {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("splashimage_rclone", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,18 +121,6 @@
|
||||
<data name="battery" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\battery.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="battery1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\battery11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="pattern_herringbone_2_1_3_0_0_90_1__000000_1c1c1c" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\resources\pattern_herringbone-2_1_3_0-0_90_1__000000_1c1c1c.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="splashimage" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\splashimage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="battery11" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\battery1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ajax-loader" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ajax-loader.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -142,7 +130,22 @@
|
||||
<data name="Pattern" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Pattern.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="pattern_cubes-1_1_1_0-0_0_1__000000_212121" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\pattern_cubes-1_1_1_0-0_0_1__000000_212121.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="splashimage" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\splashimage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="splashimage_deps" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\splashimage_deps.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="splashimage_rclone" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\splashimage_rclone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="pattern_cubes" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\pattern_cubes.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="pattern_herringbone" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\pattern_herringbone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="splashimage_offline" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\splashimage_offline.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
1454
Properties/Settings.Designer.cs
generated
@@ -173,5 +173,14 @@
|
||||
<Setting Name="UUID" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="createPubMirrorFile" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="useDownloadedFiles" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="bandwidthLimit" Type="System.Single" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
174
QuestForm.Designer.cs
generated
@@ -48,15 +48,15 @@ namespace AndroidSideloader
|
||||
this.GlobalUsername = new System.Windows.Forms.TextBox();
|
||||
this.TextureResTextBox = new System.Windows.Forms.TextBox();
|
||||
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.button1 = new AndroidSideloader.RoundButton();
|
||||
this.btnApplyTempSettings = new AndroidSideloader.RoundButton();
|
||||
this.questVids = new AndroidSideloader.RoundButton();
|
||||
this.questPics = new AndroidSideloader.RoundButton();
|
||||
this.button3 = new AndroidSideloader.RoundButton();
|
||||
this.btnApplyUsername = new AndroidSideloader.RoundButton();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
//
|
||||
// label1
|
||||
//
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
@@ -67,9 +67,9 @@ namespace AndroidSideloader
|
||||
this.label1.TabIndex = 6;
|
||||
this.label1.Text = "Temporary Settings";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
//
|
||||
// label2
|
||||
//
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
@@ -81,9 +81,9 @@ namespace AndroidSideloader
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Reboot Quest to Reset";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
//
|
||||
// label11
|
||||
//
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label11.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
@@ -95,9 +95,9 @@ namespace AndroidSideloader
|
||||
this.label11.TabIndex = 6;
|
||||
this.label11.Text = "Transfer screenshots to Desktop";
|
||||
this.label11.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
//
|
||||
// label12
|
||||
//
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label12.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
@@ -109,9 +109,9 @@ namespace AndroidSideloader
|
||||
this.label12.TabIndex = 6;
|
||||
this.label12.Text = "Set Username";
|
||||
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
//
|
||||
// DeleteShots
|
||||
//
|
||||
//
|
||||
this.DeleteShots.AutoSize = true;
|
||||
this.DeleteShots.BackColor = System.Drawing.Color.Transparent;
|
||||
this.DeleteShots.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -127,35 +127,35 @@ namespace AndroidSideloader
|
||||
this.DeleteShots.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.DeleteShots.UseVisualStyleBackColor = false;
|
||||
this.DeleteShots.CheckedChanged += new System.EventHandler(this.DeleteShots_CheckedChanged);
|
||||
//
|
||||
//
|
||||
// splitter1
|
||||
//
|
||||
//
|
||||
this.splitter1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitter1.Name = "splitter1";
|
||||
this.splitter1.Size = new System.Drawing.Size(3, 486);
|
||||
this.splitter1.TabIndex = 14;
|
||||
this.splitter1.TabStop = false;
|
||||
//
|
||||
//
|
||||
// label10
|
||||
//
|
||||
//
|
||||
this.label10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.label10.Location = new System.Drawing.Point(-4, 261);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(394, 3);
|
||||
this.label10.TabIndex = 15;
|
||||
//
|
||||
//
|
||||
// label14
|
||||
//
|
||||
//
|
||||
this.label14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.label14.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.label14.Location = new System.Drawing.Point(-4, 80);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(394, 3);
|
||||
this.label14.TabIndex = 17;
|
||||
//
|
||||
//
|
||||
// label16
|
||||
//
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label16.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
@@ -167,9 +167,9 @@ namespace AndroidSideloader
|
||||
this.label16.TabIndex = 6;
|
||||
this.label16.Text = "Exports to: Desktop\\Quest Screenshots";
|
||||
this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
//
|
||||
// CPUComboBox
|
||||
//
|
||||
//
|
||||
this.CPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -188,9 +188,9 @@ namespace AndroidSideloader
|
||||
this.CPUComboBox.Size = new System.Drawing.Size(232, 26);
|
||||
this.CPUComboBox.TabIndex = 2;
|
||||
this.CPUComboBox.Text = "Select CPU level (0 for default)";
|
||||
//
|
||||
//
|
||||
// GPUComboBox
|
||||
//
|
||||
//
|
||||
this.GPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -209,9 +209,9 @@ namespace AndroidSideloader
|
||||
this.GPUComboBox.Size = new System.Drawing.Size(232, 26);
|
||||
this.GPUComboBox.TabIndex = 1;
|
||||
this.GPUComboBox.Text = "Select GPU level (0 for default)";
|
||||
//
|
||||
//
|
||||
// ResolutionLabel
|
||||
//
|
||||
//
|
||||
this.ResolutionLabel.AutoSize = true;
|
||||
this.ResolutionLabel.BackColor = System.Drawing.Color.Transparent;
|
||||
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -224,9 +224,9 @@ namespace AndroidSideloader
|
||||
this.ResolutionLabel.Size = new System.Drawing.Size(153, 18);
|
||||
this.ResolutionLabel.TabIndex = 3;
|
||||
this.ResolutionLabel.Text = "Resolution (0=default)";
|
||||
//
|
||||
//
|
||||
// GlobalUsername
|
||||
//
|
||||
//
|
||||
this.GlobalUsername.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
|
||||
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -238,9 +238,9 @@ namespace AndroidSideloader
|
||||
this.GlobalUsername.Size = new System.Drawing.Size(142, 24);
|
||||
this.GlobalUsername.TabIndex = 12;
|
||||
this.GlobalUsername.TextChanged += new System.EventHandler(this.GlobalUsername_TextChanged);
|
||||
//
|
||||
//
|
||||
// TextureResTextBox
|
||||
//
|
||||
//
|
||||
this.TextureResTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
|
||||
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -252,9 +252,9 @@ namespace AndroidSideloader
|
||||
this.TextureResTextBox.Size = new System.Drawing.Size(111, 24);
|
||||
this.TextureResTextBox.TabIndex = 3;
|
||||
this.TextureResTextBox.Text = "0";
|
||||
//
|
||||
//
|
||||
// RefreshRateComboBox
|
||||
//
|
||||
//
|
||||
this.RefreshRateComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -271,30 +271,30 @@ namespace AndroidSideloader
|
||||
this.RefreshRateComboBox.Size = new System.Drawing.Size(232, 26);
|
||||
this.RefreshRateComboBox.TabIndex = 0;
|
||||
this.RefreshRateComboBox.Text = "Select refresh rate";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.button1.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.button1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.button1.ForeColor = System.Drawing.Color.White;
|
||||
this.button1.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.button1.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.button1.Location = new System.Drawing.Point(185, 434);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Radius = 5;
|
||||
this.button1.Size = new System.Drawing.Size(85, 25);
|
||||
this.button1.Stroke = true;
|
||||
this.button1.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.button1.TabIndex = 19;
|
||||
this.button1.Text = "APPLY";
|
||||
this.button1.Transparency = false;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
//
|
||||
// btnApplyTempSettings
|
||||
//
|
||||
this.btnApplyTempSettings.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.btnApplyTempSettings.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.btnApplyTempSettings.BackColor = System.Drawing.Color.Transparent;
|
||||
this.btnApplyTempSettings.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnApplyTempSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.btnApplyTempSettings.ForeColor = System.Drawing.Color.White;
|
||||
this.btnApplyTempSettings.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnApplyTempSettings.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnApplyTempSettings.Location = new System.Drawing.Point(185, 434);
|
||||
this.btnApplyTempSettings.Name = "btnApplyTempSettings";
|
||||
this.btnApplyTempSettings.Radius = 5;
|
||||
this.btnApplyTempSettings.Size = new System.Drawing.Size(85, 25);
|
||||
this.btnApplyTempSettings.Stroke = true;
|
||||
this.btnApplyTempSettings.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.btnApplyTempSettings.TabIndex = 19;
|
||||
this.btnApplyTempSettings.Text = "APPLY";
|
||||
this.btnApplyTempSettings.Transparency = false;
|
||||
this.btnApplyTempSettings.Click += new System.EventHandler(this.btnApplyTempSettings_Click);
|
||||
//
|
||||
// questVids
|
||||
//
|
||||
//
|
||||
this.questVids.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.questVids.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.questVids.BackColor = System.Drawing.Color.Transparent;
|
||||
@@ -313,9 +313,9 @@ namespace AndroidSideloader
|
||||
this.questVids.Text = "RECORDINGS";
|
||||
this.questVids.Transparency = false;
|
||||
this.questVids.Click += new System.EventHandler(this.questVids_Click);
|
||||
//
|
||||
//
|
||||
// questPics
|
||||
//
|
||||
//
|
||||
this.questPics.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.questPics.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.questPics.BackColor = System.Drawing.Color.Transparent;
|
||||
@@ -334,30 +334,30 @@ namespace AndroidSideloader
|
||||
this.questPics.Text = "SCREENSHOTS";
|
||||
this.questPics.Transparency = false;
|
||||
this.questPics.Click += new System.EventHandler(this.questPics_Click);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.button3.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.button3.BackColor = System.Drawing.Color.Transparent;
|
||||
this.button3.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.button3.ForeColor = System.Drawing.Color.White;
|
||||
this.button3.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.button3.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.button3.Location = new System.Drawing.Point(194, 38);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Radius = 5;
|
||||
this.button3.Size = new System.Drawing.Size(81, 25);
|
||||
this.button3.Stroke = true;
|
||||
this.button3.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.button3.TabIndex = 27;
|
||||
this.button3.Text = "APPLY";
|
||||
this.button3.Transparency = false;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
//
|
||||
// btnApplyUsername
|
||||
//
|
||||
this.btnApplyUsername.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.btnApplyUsername.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.btnApplyUsername.BackColor = System.Drawing.Color.Transparent;
|
||||
this.btnApplyUsername.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnApplyUsername.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.btnApplyUsername.ForeColor = System.Drawing.Color.White;
|
||||
this.btnApplyUsername.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnApplyUsername.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnApplyUsername.Location = new System.Drawing.Point(194, 38);
|
||||
this.btnApplyUsername.Name = "btnApplyUsername";
|
||||
this.btnApplyUsername.Radius = 5;
|
||||
this.btnApplyUsername.Size = new System.Drawing.Size(81, 25);
|
||||
this.btnApplyUsername.Stroke = true;
|
||||
this.btnApplyUsername.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
|
||||
this.btnApplyUsername.TabIndex = 27;
|
||||
this.btnApplyUsername.Text = "APPLY";
|
||||
this.btnApplyUsername.Transparency = false;
|
||||
this.btnApplyUsername.Click += new System.EventHandler(this.btnApplyUsername_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
@@ -369,19 +369,19 @@ namespace AndroidSideloader
|
||||
this.label3.TabIndex = 28;
|
||||
this.label3.Text = "Exports to: Desktop\\Quest Recordings";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
//
|
||||
// QuestForm
|
||||
//
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes;
|
||||
this.ClientSize = new System.Drawing.Size(309, 486);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.btnApplyUsername);
|
||||
this.Controls.Add(this.questPics);
|
||||
this.Controls.Add(this.questVids);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.btnApplyTempSettings);
|
||||
this.Controls.Add(this.label14);
|
||||
this.Controls.Add(this.label10);
|
||||
this.Controls.Add(this.splitter1);
|
||||
@@ -430,10 +430,10 @@ namespace AndroidSideloader
|
||||
private Label label14;
|
||||
private Label label16;
|
||||
private TextBox GlobalUsername;
|
||||
private RoundButton button1;
|
||||
private RoundButton btnApplyTempSettings;
|
||||
private RoundButton questVids;
|
||||
private RoundButton questPics;
|
||||
private RoundButton button3;
|
||||
private RoundButton btnApplyUsername;
|
||||
private Label label3;
|
||||
}
|
||||
|
||||
|
||||
45
QuestForm.cs
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using AndroidSideloader.Utilities;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -6,6 +7,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
public partial class QuestForm : Form
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
public static int length = 0;
|
||||
public static string[] result;
|
||||
public bool settingsexist = false;
|
||||
@@ -16,7 +18,7 @@ namespace AndroidSideloader
|
||||
}
|
||||
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
private void btnApplyTempSettings_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool ChangesMade = false;
|
||||
|
||||
@@ -85,26 +87,26 @@ namespace AndroidSideloader
|
||||
{
|
||||
if (DeleteShots.Checked)
|
||||
{
|
||||
Properties.Settings.Default.delsh = true;
|
||||
Properties.Settings.Default.Save();
|
||||
settings.Delsh = true;
|
||||
settings.Save();
|
||||
}
|
||||
if (!DeleteShots.Checked)
|
||||
{
|
||||
Properties.Settings.Default.delsh = false;
|
||||
Properties.Settings.Default.Save();
|
||||
settings.Delsh = false;
|
||||
settings.Save();
|
||||
}
|
||||
}
|
||||
|
||||
private void QuestForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
DeleteShots.Checked = Properties.Settings.Default.delsh;
|
||||
GlobalUsername.Text = Properties.Settings.Default.GlobalUsername;
|
||||
DeleteShots.Checked = settings.Delsh;
|
||||
GlobalUsername.Text = settings.GlobalUsername;
|
||||
}
|
||||
|
||||
private void DeleteButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
_ = MessageBox.Show("Ok, Deleted your custom settings file.\nIf you would like to re-enable return here and apply settings again");
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\Config.Json");
|
||||
File.Delete($"{settings.MainDir}\\Config.Json");
|
||||
}
|
||||
private void questPics_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -153,19 +155,12 @@ namespace AndroidSideloader
|
||||
_ = MessageBox.Show("Transfer finished! Recordings can be found in a folder named Quest Recordings on your desktop!");
|
||||
Program.form.changeTitle("Done!");
|
||||
}
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (GlobalUsername.Text.Contains(" "))
|
||||
{
|
||||
_ = MessageBox.Show("Usernames with a space are not permitted.", "Detected a space in username!");
|
||||
}
|
||||
else
|
||||
{
|
||||
_ = ADB.RunAdbCommandToString($"shell settings put global username {GlobalUsername.Text}");
|
||||
_ = MessageBox.Show($"Username set as {GlobalUsername.Text}", "Success");
|
||||
}
|
||||
}
|
||||
|
||||
private void btnApplyUsername_Click(object sender, EventArgs e)
|
||||
{
|
||||
_ = ADB.RunAdbCommandToString($"shell settings put global username {GlobalUsername.Text}");
|
||||
_ = MessageBox.Show($"Username set as {GlobalUsername.Text}", "Success");
|
||||
}
|
||||
|
||||
private void Form_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
@@ -186,9 +181,9 @@ namespace AndroidSideloader
|
||||
|
||||
private void GlobalUsername_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
button3.Enabled = GlobalUsername.TextLength > 0;
|
||||
Properties.Settings.Default.GlobalUsername = GlobalUsername.Text;
|
||||
Properties.Settings.Default.Save();
|
||||
btnApplyUsername.Enabled = GlobalUsername.TextLength > 0;
|
||||
settings.GlobalUsername = GlobalUsername.Text;
|
||||
settings.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
37
RCLONE.cs
@@ -1,4 +1,5 @@
|
||||
using JR.Utils.GUI.Forms;
|
||||
using AndroidSideloader.Utilities;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
@@ -10,6 +11,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
internal class RCLONE
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
// Kill RCLONE Processes that were started from Rookie by looking for child processes.
|
||||
public static void killRclone()
|
||||
{
|
||||
@@ -75,6 +77,8 @@ namespace AndroidSideloader
|
||||
command += $" --config {downloadConfigPath}";
|
||||
}
|
||||
|
||||
command += $" --inplace";
|
||||
|
||||
// set rclonepw
|
||||
if (rclonepw.Length > 0)
|
||||
{
|
||||
@@ -82,9 +86,9 @@ namespace AndroidSideloader
|
||||
}
|
||||
|
||||
string logcmd = Utilities.StringUtilities.RemoveEverythingBeforeFirst(command, "rclone.exe");
|
||||
if (logcmd.Contains($"\"{Properties.Settings.Default.CurrentLogPath}\""))
|
||||
if (logcmd.Contains($"\"{settings.CurrentLogPath}\""))
|
||||
{
|
||||
logcmd = logcmd.Replace($"\"{Properties.Settings.Default.CurrentLogPath}\"", $"\"{Properties.Settings.Default.CurrentLogName}\"");
|
||||
logcmd = logcmd.Replace($"\"{settings.CurrentLogPath}\"", $"\"{settings.CurrentLogName}\"");
|
||||
}
|
||||
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
@@ -109,7 +113,6 @@ namespace AndroidSideloader
|
||||
rclone.StartInfo.UseShellExecute = false;
|
||||
_ = rclone.Start();
|
||||
rclone.StandardInput.WriteLine(command);
|
||||
rclone.StandardInput.Flush();
|
||||
rclone.StandardInput.Close();
|
||||
|
||||
string output = rclone.StandardOutput.ReadToEnd();
|
||||
@@ -120,7 +123,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
Program.form.Invoke(() =>
|
||||
{
|
||||
_ = FlexibleMessageBox.Show(Program.form, $"There isn't enough disk space to download this game.\r\nPlease ensure you have at least 200MB more the game size available in {Properties.Settings.Default.downloadDir} and try again.",
|
||||
_ = FlexibleMessageBox.Show(Program.form, $"There isn't enough disk space to download this game.\r\nPlease ensure you have at least 200MB more the game size available in {settings.DownloadDir} and try again.",
|
||||
"NOT ENOUGH SPACE",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
@@ -132,16 +135,19 @@ namespace AndroidSideloader
|
||||
if (error.Contains("400 Bad Request") || error.Contains("cannot fetch token") || error.Contains("authError") || error.Contains("quota") || error.Contains("exceeded") || error.Contains("directory not found") || error.Contains("Failed to"))
|
||||
{
|
||||
string oldRemote = MainForm.currentRemote;
|
||||
bool retSM = false;
|
||||
try
|
||||
{
|
||||
Program.form.SwitchMirrors();
|
||||
|
||||
retSM = Program.form.SwitchMirrors();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return new ProcessOutput("All mirrors are on quota or down...", "All mirrors are on quota or down...");
|
||||
}
|
||||
prcoutput = runRcloneCommand_DownloadConfig(originalCommand.Replace(oldRemote, MainForm.currentRemote));
|
||||
if (retSM)
|
||||
{
|
||||
prcoutput = runRcloneCommand_DownloadConfig(originalCommand.Replace(oldRemote, MainForm.currentRemote));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -177,9 +183,9 @@ namespace AndroidSideloader
|
||||
}
|
||||
|
||||
string logcmd = Utilities.StringUtilities.RemoveEverythingBeforeFirst(command, "rclone.exe");
|
||||
if (logcmd.Contains($"\"{Properties.Settings.Default.CurrentLogPath}\""))
|
||||
if (logcmd.Contains($"\"{settings.CurrentLogPath}\""))
|
||||
{
|
||||
logcmd = logcmd.Replace($"\"{Properties.Settings.Default.CurrentLogPath}\"", $"\"{Properties.Settings.Default.CurrentLogName}\"");
|
||||
logcmd = logcmd.Replace($"\"{settings.CurrentLogPath}\"", $"\"{settings.CurrentLogName}\"");
|
||||
}
|
||||
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
@@ -189,7 +195,7 @@ namespace AndroidSideloader
|
||||
|
||||
_ = Logger.Log($"Running Rclone command: {logcmd}");
|
||||
|
||||
command += " --checkers 0 --no-check-dest --retries 1";
|
||||
command += " --checkers 1 --retries 2 --inplace";
|
||||
|
||||
rclone.StartInfo.FileName = Path.Combine(Environment.CurrentDirectory, "rclone", "rclone.exe");
|
||||
rclone.StartInfo.Arguments = command;
|
||||
@@ -252,9 +258,9 @@ namespace AndroidSideloader
|
||||
rclone.StartInfo.StandardOutputEncoding = Encoding.UTF8;
|
||||
|
||||
string logcmd = Utilities.StringUtilities.RemoveEverythingBeforeFirst(command, "rclone.exe");
|
||||
if (logcmd.Contains($"\"{Properties.Settings.Default.CurrentLogPath}\""))
|
||||
if (logcmd.Contains($"\"{settings.CurrentLogPath}\""))
|
||||
{
|
||||
logcmd = logcmd.Replace($"\"{Properties.Settings.Default.CurrentLogPath}\"", $"\"{Properties.Settings.Default.CurrentLogName}\"");
|
||||
logcmd = logcmd.Replace($"\"{settings.CurrentLogPath}\"", $"\"{settings.CurrentLogName}\"");
|
||||
}
|
||||
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
@@ -262,11 +268,12 @@ namespace AndroidSideloader
|
||||
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
|
||||
}
|
||||
|
||||
command += $" --inplace";
|
||||
|
||||
_ = Logger.Log($"Running Rclone command: {logcmd}");
|
||||
|
||||
//set http source & args
|
||||
command += $" --http-url {MainForm.PublicConfigFile.BaseUri} {MainForm.PublicMirrorExtraArgs}";
|
||||
|
||||
rclone.StartInfo.FileName = Path.Combine(Environment.CurrentDirectory, "rclone", "rclone.exe");
|
||||
rclone.StartInfo.Arguments = command;
|
||||
rclone.StartInfo.RedirectStandardInput = true;
|
||||
@@ -293,7 +300,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
Program.form.Invoke(() =>
|
||||
{
|
||||
_ = FlexibleMessageBox.Show(Program.form, $"There isn't enough disk space to download this game.\r\nPlease ensure you have at least 2x the game size available in {Properties.Settings.Default.downloadDir} and try again.",
|
||||
_ = FlexibleMessageBox.Show(Program.form, $"There isn't enough disk space to download this game.\r\nPlease ensure you have at least 2x the game size available in {settings.DownloadDir} and try again.",
|
||||
"NOT ENOUGH SPACE",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
## Disclaimer
|
||||
This application might get flagged as malware by some antivirus software; however, both the Sideloader and the Sideloader Launcher are open source.
|
||||
|
||||
**Latest VirusTotal Scan (1/72):** [Check here](https://www.virustotal.com/gui/file/dc3ed59057d508646a06a978c44ae72d473fd678129483ab186202046cbc713f)
|
||||
To run properly, Rookie must be extracted to a non-Protected folder on your drive. We recommend running Rookie from C:\RSL\Rookie
|
||||
Do Not use folders such as- C:\Users; C:\Users\Desktop; C:\Program Files; OneDrive; Google Drive; etc...
|
||||
Rookie will cleanup its own folder. We are not responsible if you run Rookie from a folder containing other files as Rookie may delete them.
|
||||
|
||||
|
||||
## Support
|
||||
For any assistance or questions, please utilize our support channels available at [Live Chats](https://vrpirates.wiki/en/general_information/live-chats).
|
||||
@@ -24,7 +27,7 @@ This project is developed using C# with WinForms targeting the .NET Framework 4.
|
||||
6. Run the application.
|
||||
|
||||
## Contributing
|
||||
We welcome contributions from the community. If you would like to contribute, please fork the repository, make your changes, and submit a pull request.
|
||||
We welcome contributions from the community. If you would like to contribute, please fork the repository, branch from the newest beta branch from this repository, make your changes, and submit a pull request.
|
||||
|
||||
## License
|
||||
AndroidSideloader is distributed under the GPL license, meaning any forks of it must have their source code made public on the internet. See the [LICENSE](LICENSE) file for details.
|
||||
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
6801
Resources/nouns.txt
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 476 B After Width: | Height: | Size: 476 B |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
BIN
Resources/splashimage_deps.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
Resources/splashimage_offline.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
Resources/splashimage_rclone.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
28
Settings.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
namespace AndroidSideloader.Properties {
|
||||
|
||||
|
||||
// This class allows you to handle specific events on the settings class:
|
||||
// The SettingChanging event is raised before a setting's value is changed.
|
||||
// The PropertyChanged event is raised after a setting's value is changed.
|
||||
// The SettingsLoaded event is raised after the setting values are loaded.
|
||||
// The SettingsSaving event is raised before the setting values are saved.
|
||||
internal sealed partial class Settings {
|
||||
|
||||
public Settings() {
|
||||
// // To add event handlers for saving and changing settings, uncomment the lines below:
|
||||
//
|
||||
// this.SettingChanging += this.SettingChangingEventHandler;
|
||||
//
|
||||
// this.SettingsSaving += this.SettingsSavingEventHandler;
|
||||
//
|
||||
}
|
||||
|
||||
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
|
||||
// Add code to handle the SettingChangingEvent event here.
|
||||
}
|
||||
|
||||
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
|
||||
// Add code to handle the SettingsSaving event here.
|
||||
}
|
||||
}
|
||||
}
|
||||
125
SettingsForm.Designer.cs
generated
@@ -53,6 +53,11 @@ namespace AndroidSideloader
|
||||
this.virtualFilesystemCompatibilityCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.openBackupDirectory = new AndroidSideloader.RoundButton();
|
||||
this.openDownloadDirectory = new AndroidSideloader.RoundButton();
|
||||
this.chkUseDownloadedFiles = new System.Windows.Forms.CheckBox();
|
||||
this.bandwidthLabel = new System.Windows.Forms.Label();
|
||||
this.bandwidthLimitTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.hideAdultContentCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkForUpdatesCheckBox
|
||||
@@ -61,11 +66,11 @@ namespace AndroidSideloader
|
||||
this.checkForUpdatesCheckBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.checkForUpdatesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkForUpdatesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(12, 67);
|
||||
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(13, 11);
|
||||
this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
|
||||
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(148, 22);
|
||||
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(226, 22);
|
||||
this.checkForUpdatesCheckBox.TabIndex = 0;
|
||||
this.checkForUpdatesCheckBox.Text = "Check for updates";
|
||||
this.checkForUpdatesCheckBox.Text = "Check for Application Updates";
|
||||
this.checkForUpdatesCheckBox.UseVisualStyleBackColor = false;
|
||||
this.checkForUpdatesCheckBox.CheckedChanged += new System.EventHandler(this.checkForUpdatesCheckBox_CheckedChanged);
|
||||
//
|
||||
@@ -75,7 +80,7 @@ namespace AndroidSideloader
|
||||
this.enableMessageBoxesCheckBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.enableMessageBoxesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.enableMessageBoxesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(11, 123);
|
||||
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(13, 227);
|
||||
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
|
||||
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
|
||||
this.enableMessageBoxesCheckBox.TabIndex = 1;
|
||||
@@ -89,7 +94,7 @@ namespace AndroidSideloader
|
||||
this.deleteAfterInstallCheckBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.deleteAfterInstallCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.deleteAfterInstallCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(12, 40);
|
||||
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(13, 92);
|
||||
this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
|
||||
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
|
||||
this.deleteAfterInstallCheckBox.TabIndex = 3;
|
||||
@@ -103,7 +108,7 @@ namespace AndroidSideloader
|
||||
this.updateConfigCheckBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.updateConfigCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.updateConfigCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.updateConfigCheckBox.Location = new System.Drawing.Point(11, 95);
|
||||
this.updateConfigCheckBox.Location = new System.Drawing.Point(13, 38);
|
||||
this.updateConfigCheckBox.Name = "updateConfigCheckBox";
|
||||
this.updateConfigCheckBox.Size = new System.Drawing.Size(256, 22);
|
||||
this.updateConfigCheckBox.TabIndex = 6;
|
||||
@@ -117,7 +122,7 @@ namespace AndroidSideloader
|
||||
this.userJsonOnGameInstall.BackColor = System.Drawing.Color.Transparent;
|
||||
this.userJsonOnGameInstall.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.userJsonOnGameInstall.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.userJsonOnGameInstall.Location = new System.Drawing.Point(11, 151);
|
||||
this.userJsonOnGameInstall.Location = new System.Drawing.Point(13, 254);
|
||||
this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
|
||||
this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
|
||||
this.userJsonOnGameInstall.TabIndex = 9;
|
||||
@@ -140,7 +145,7 @@ namespace AndroidSideloader
|
||||
this.nodevicemodeBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.nodevicemodeBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.nodevicemodeBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.nodevicemodeBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.nodevicemodeBox.Location = new System.Drawing.Point(13, 65);
|
||||
this.nodevicemodeBox.Name = "nodevicemodeBox";
|
||||
this.nodevicemodeBox.Size = new System.Drawing.Size(226, 22);
|
||||
this.nodevicemodeBox.TabIndex = 9;
|
||||
@@ -154,7 +159,7 @@ namespace AndroidSideloader
|
||||
this.bmbfBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.bmbfBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.bmbfBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.bmbfBox.Location = new System.Drawing.Point(11, 179);
|
||||
this.bmbfBox.Location = new System.Drawing.Point(13, 281);
|
||||
this.bmbfBox.Name = "bmbfBox";
|
||||
this.bmbfBox.Size = new System.Drawing.Size(281, 22);
|
||||
this.bmbfBox.TabIndex = 9;
|
||||
@@ -168,7 +173,7 @@ namespace AndroidSideloader
|
||||
this.AutoReinstBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.AutoReinstBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.AutoReinstBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.AutoReinstBox.Location = new System.Drawing.Point(11, 207);
|
||||
this.AutoReinstBox.Location = new System.Drawing.Point(13, 200);
|
||||
this.AutoReinstBox.Name = "AutoReinstBox";
|
||||
this.AutoReinstBox.Size = new System.Drawing.Size(280, 22);
|
||||
this.AutoReinstBox.TabIndex = 9;
|
||||
@@ -183,7 +188,7 @@ namespace AndroidSideloader
|
||||
this.trailersOn.BackColor = System.Drawing.Color.Transparent;
|
||||
this.trailersOn.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.trailersOn.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.trailersOn.Location = new System.Drawing.Point(11, 235);
|
||||
this.trailersOn.Location = new System.Drawing.Point(13, 119);
|
||||
this.trailersOn.Name = "trailersOn";
|
||||
this.trailersOn.Size = new System.Drawing.Size(255, 22);
|
||||
this.trailersOn.TabIndex = 23;
|
||||
@@ -205,7 +210,7 @@ namespace AndroidSideloader
|
||||
this.chkSingleThread.BackColor = System.Drawing.Color.Transparent;
|
||||
this.chkSingleThread.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.chkSingleThread.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.chkSingleThread.Location = new System.Drawing.Point(11, 263);
|
||||
this.chkSingleThread.Location = new System.Drawing.Point(13, 146);
|
||||
this.chkSingleThread.Name = "chkSingleThread";
|
||||
this.chkSingleThread.Size = new System.Drawing.Size(186, 22);
|
||||
this.chkSingleThread.TabIndex = 25;
|
||||
@@ -223,7 +228,7 @@ namespace AndroidSideloader
|
||||
this.setBackupDirectory.ForeColor = System.Drawing.Color.White;
|
||||
this.setBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.setBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.setBackupDirectory.Location = new System.Drawing.Point(27, 542);
|
||||
this.setBackupDirectory.Location = new System.Drawing.Point(26, 628);
|
||||
this.setBackupDirectory.Name = "setBackupDirectory";
|
||||
this.setBackupDirectory.Radius = 5;
|
||||
this.setBackupDirectory.Size = new System.Drawing.Size(285, 31);
|
||||
@@ -244,7 +249,7 @@ namespace AndroidSideloader
|
||||
this.setDownloadDirectory.ForeColor = System.Drawing.Color.White;
|
||||
this.setDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.setDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.setDownloadDirectory.Location = new System.Drawing.Point(27, 505);
|
||||
this.setDownloadDirectory.Location = new System.Drawing.Point(26, 591);
|
||||
this.setDownloadDirectory.Name = "setDownloadDirectory";
|
||||
this.setDownloadDirectory.Radius = 5;
|
||||
this.setDownloadDirectory.Size = new System.Drawing.Size(285, 31);
|
||||
@@ -265,7 +270,7 @@ namespace AndroidSideloader
|
||||
this.btnOpenDebug.ForeColor = System.Drawing.Color.White;
|
||||
this.btnOpenDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnOpenDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnOpenDebug.Location = new System.Drawing.Point(26, 378);
|
||||
this.btnOpenDebug.Location = new System.Drawing.Point(25, 464);
|
||||
this.btnOpenDebug.Name = "btnOpenDebug";
|
||||
this.btnOpenDebug.Radius = 5;
|
||||
this.btnOpenDebug.Size = new System.Drawing.Size(285, 31);
|
||||
@@ -286,7 +291,7 @@ namespace AndroidSideloader
|
||||
this.btnResetDebug.ForeColor = System.Drawing.Color.White;
|
||||
this.btnResetDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnResetDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnResetDebug.Location = new System.Drawing.Point(26, 415);
|
||||
this.btnResetDebug.Location = new System.Drawing.Point(25, 501);
|
||||
this.btnResetDebug.Name = "btnResetDebug";
|
||||
this.btnResetDebug.Radius = 5;
|
||||
this.btnResetDebug.Size = new System.Drawing.Size(285, 31);
|
||||
@@ -307,7 +312,7 @@ namespace AndroidSideloader
|
||||
this.btnUploadDebug.ForeColor = System.Drawing.Color.White;
|
||||
this.btnUploadDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnUploadDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.btnUploadDebug.Location = new System.Drawing.Point(26, 452);
|
||||
this.btnUploadDebug.Location = new System.Drawing.Point(25, 538);
|
||||
this.btnUploadDebug.Name = "btnUploadDebug";
|
||||
this.btnUploadDebug.Radius = 5;
|
||||
this.btnUploadDebug.Size = new System.Drawing.Size(285, 31);
|
||||
@@ -328,7 +333,7 @@ namespace AndroidSideloader
|
||||
this.resetSettingsButton.ForeColor = System.Drawing.Color.White;
|
||||
this.resetSettingsButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.resetSettingsButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.resetSettingsButton.Location = new System.Drawing.Point(179, 325);
|
||||
this.resetSettingsButton.Location = new System.Drawing.Point(178, 411);
|
||||
this.resetSettingsButton.Name = "resetSettingsButton";
|
||||
this.resetSettingsButton.Radius = 5;
|
||||
this.resetSettingsButton.Size = new System.Drawing.Size(133, 31);
|
||||
@@ -352,7 +357,7 @@ namespace AndroidSideloader
|
||||
this.applyButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.applyButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.applyButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.applyButton.Location = new System.Drawing.Point(27, 325);
|
||||
this.applyButton.Location = new System.Drawing.Point(26, 411);
|
||||
this.applyButton.Name = "applyButton";
|
||||
this.applyButton.Radius = 5;
|
||||
this.applyButton.Size = new System.Drawing.Size(133, 31);
|
||||
@@ -369,7 +374,7 @@ namespace AndroidSideloader
|
||||
this.virtualFilesystemCompatibilityCheckbox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.virtualFilesystemCompatibilityCheckbox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.virtualFilesystemCompatibilityCheckbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.virtualFilesystemCompatibilityCheckbox.Location = new System.Drawing.Point(11, 291);
|
||||
this.virtualFilesystemCompatibilityCheckbox.Location = new System.Drawing.Point(13, 308);
|
||||
this.virtualFilesystemCompatibilityCheckbox.Name = "virtualFilesystemCompatibilityCheckbox";
|
||||
this.virtualFilesystemCompatibilityCheckbox.Size = new System.Drawing.Size(279, 22);
|
||||
this.virtualFilesystemCompatibilityCheckbox.TabIndex = 26;
|
||||
@@ -387,7 +392,7 @@ namespace AndroidSideloader
|
||||
this.openBackupDirectory.ForeColor = System.Drawing.Color.White;
|
||||
this.openBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.openBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.openBackupDirectory.Location = new System.Drawing.Point(27, 616);
|
||||
this.openBackupDirectory.Location = new System.Drawing.Point(26, 702);
|
||||
this.openBackupDirectory.Name = "openBackupDirectory";
|
||||
this.openBackupDirectory.Radius = 5;
|
||||
this.openBackupDirectory.Size = new System.Drawing.Size(285, 31);
|
||||
@@ -408,7 +413,7 @@ namespace AndroidSideloader
|
||||
this.openDownloadDirectory.ForeColor = System.Drawing.Color.White;
|
||||
this.openDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.openDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.openDownloadDirectory.Location = new System.Drawing.Point(27, 579);
|
||||
this.openDownloadDirectory.Location = new System.Drawing.Point(26, 665);
|
||||
this.openDownloadDirectory.Name = "openDownloadDirectory";
|
||||
this.openDownloadDirectory.Radius = 5;
|
||||
this.openDownloadDirectory.Size = new System.Drawing.Size(285, 31);
|
||||
@@ -419,13 +424,82 @@ namespace AndroidSideloader
|
||||
this.openDownloadDirectory.Transparency = false;
|
||||
this.openDownloadDirectory.Click += new System.EventHandler(this.openDownloadDirectory_Click);
|
||||
//
|
||||
// chkUseDownloadedFiles
|
||||
//
|
||||
this.chkUseDownloadedFiles.AutoSize = true;
|
||||
this.chkUseDownloadedFiles.BackColor = System.Drawing.Color.Transparent;
|
||||
this.chkUseDownloadedFiles.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.chkUseDownloadedFiles.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.chkUseDownloadedFiles.Location = new System.Drawing.Point(13, 173);
|
||||
this.chkUseDownloadedFiles.Name = "chkUseDownloadedFiles";
|
||||
this.chkUseDownloadedFiles.Size = new System.Drawing.Size(227, 22);
|
||||
this.chkUseDownloadedFiles.TabIndex = 29;
|
||||
this.chkUseDownloadedFiles.Text = "Don\'t Prompt to Re-Download";
|
||||
this.chkUseDownloadedFiles.UseVisualStyleBackColor = false;
|
||||
this.chkUseDownloadedFiles.CheckedChanged += new System.EventHandler(this.chkUseDownloadedFiles_CheckedChanged);
|
||||
//
|
||||
// bandwidthLabel
|
||||
//
|
||||
this.bandwidthLabel.AutoSize = true;
|
||||
this.bandwidthLabel.BackColor = System.Drawing.Color.Transparent;
|
||||
this.bandwidthLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.bandwidthLabel.Location = new System.Drawing.Point(8, 370);
|
||||
this.bandwidthLabel.Name = "bandwidthLabel";
|
||||
this.bandwidthLabel.Size = new System.Drawing.Size(115, 18);
|
||||
this.bandwidthLabel.TabIndex = 30;
|
||||
this.bandwidthLabel.Text = "Bandwidth Limit:";
|
||||
this.bandwidthLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// bandwidthLimitTextBox
|
||||
//
|
||||
this.bandwidthLimitTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
|
||||
this.bandwidthLimitTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.bandwidthLimitTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.bandwidthLimitTextBox.ForeColor = System.Drawing.Color.White;
|
||||
this.bandwidthLimitTextBox.Location = new System.Drawing.Point(129, 368);
|
||||
this.bandwidthLimitTextBox.Name = "bandwidthLimitTextBox";
|
||||
this.bandwidthLimitTextBox.Size = new System.Drawing.Size(46, 21);
|
||||
this.bandwidthLimitTextBox.TabIndex = 31;
|
||||
this.bandwidthLimitTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
this.bandwidthLimitTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.bandwidthLimitTextBox_KeyPress);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
|
||||
this.label1.Location = new System.Drawing.Point(181, 370);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(43, 18);
|
||||
this.label1.TabIndex = 32;
|
||||
this.label1.Text = "MB/s";
|
||||
//
|
||||
// hideAdultContentCheckBox
|
||||
//
|
||||
this.hideAdultContentCheckBox.AutoSize = true;
|
||||
this.hideAdultContentCheckBox.BackColor = System.Drawing.Color.Transparent;
|
||||
this.hideAdultContentCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.hideAdultContentCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.hideAdultContentCheckBox.Location = new System.Drawing.Point(13, 336);
|
||||
this.hideAdultContentCheckBox.Name = "hideAdultContentCheckBox";
|
||||
this.hideAdultContentCheckBox.Size = new System.Drawing.Size(149, 22);
|
||||
this.hideAdultContentCheckBox.TabIndex = 33;
|
||||
this.hideAdultContentCheckBox.Text = "Hide Adult Content";
|
||||
this.hideAdultContentCheckBox.UseVisualStyleBackColor = true;
|
||||
this.hideAdultContentCheckBox.CheckedChanged += new System.EventHandler(this.hideAdultContentCheckBox_CheckedChanged);
|
||||
//
|
||||
// SettingsForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
|
||||
this.ClientSize = new System.Drawing.Size(339, 665);
|
||||
this.ClientSize = new System.Drawing.Size(339, 746);
|
||||
this.Controls.Add(this.hideAdultContentCheckBox);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.bandwidthLimitTextBox);
|
||||
this.Controls.Add(this.bandwidthLabel);
|
||||
this.Controls.Add(this.chkUseDownloadedFiles);
|
||||
this.Controls.Add(this.openBackupDirectory);
|
||||
this.Controls.Add(this.openDownloadDirectory);
|
||||
this.Controls.Add(this.virtualFilesystemCompatibilityCheckbox);
|
||||
@@ -489,5 +563,10 @@ namespace AndroidSideloader
|
||||
private System.Windows.Forms.CheckBox virtualFilesystemCompatibilityCheckbox;
|
||||
private RoundButton openBackupDirectory;
|
||||
private RoundButton openDownloadDirectory;
|
||||
private System.Windows.Forms.CheckBox chkUseDownloadedFiles;
|
||||
private System.Windows.Forms.Label bandwidthLabel;
|
||||
private System.Windows.Forms.TextBox bandwidthLimitTextBox;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.CheckBox hideAdultContentCheckBox;
|
||||
}
|
||||
}
|
||||
|
||||
582
SettingsForm.cs
@@ -1,261 +1,321 @@
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
public partial class SettingsForm : Form
|
||||
{
|
||||
public SettingsForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void SettingsForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
CenterToParent();
|
||||
intSettings();
|
||||
intToolTips();
|
||||
}
|
||||
|
||||
//Init form objects with values from settings
|
||||
private void intSettings()
|
||||
{
|
||||
checkForUpdatesCheckBox.Checked = Properties.Settings.Default.checkForUpdates;
|
||||
enableMessageBoxesCheckBox.Checked = Properties.Settings.Default.enableMessageBoxes;
|
||||
deleteAfterInstallCheckBox.Checked = Properties.Settings.Default.deleteAllAfterInstall;
|
||||
updateConfigCheckBox.Checked = Properties.Settings.Default.autoUpdateConfig;
|
||||
userJsonOnGameInstall.Checked = Properties.Settings.Default.userJsonOnGameInstall;
|
||||
nodevicemodeBox.Checked = Properties.Settings.Default.nodevicemode;
|
||||
bmbfBox.Checked = Properties.Settings.Default.BMBFchecked;
|
||||
AutoReinstBox.Checked = Properties.Settings.Default.AutoReinstall;
|
||||
trailersOn.Checked = Properties.Settings.Default.TrailersOn;
|
||||
chkSingleThread.Checked = Properties.Settings.Default.singleThreadMode;
|
||||
virtualFilesystemCompatibilityCheckbox.Checked = Properties.Settings.Default.virtualFilesystemCompatibility;
|
||||
if (nodevicemodeBox.Checked)
|
||||
{
|
||||
deleteAfterInstallCheckBox.Checked = false;
|
||||
deleteAfterInstallCheckBox.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void intToolTips()
|
||||
{
|
||||
ToolTip checkForUpdatesToolTip = new ToolTip();
|
||||
checkForUpdatesToolTip.SetToolTip(checkForUpdatesCheckBox, "If this is checked, the software will check for available updates");
|
||||
ToolTip enableMessageBoxesToolTip = new ToolTip();
|
||||
enableMessageBoxesToolTip.SetToolTip(enableMessageBoxesCheckBox, "If this is checked, the software will display message boxes after every completed task");
|
||||
ToolTip deleteAfterInstallToolTip = new ToolTip();
|
||||
deleteAfterInstallToolTip.SetToolTip(deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server");
|
||||
}
|
||||
|
||||
public void btnUploadDebug_click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists($"{Properties.Settings.Default.CurrentLogPath}"))
|
||||
{
|
||||
string UUID = SideloaderUtilities.UUID();
|
||||
string debugLogPath = $"{Environment.CurrentDirectory}\\{UUID}.log";
|
||||
System.IO.File.Copy("debuglog.txt", debugLogPath);
|
||||
|
||||
Clipboard.SetText(UUID);
|
||||
|
||||
_ = RCLONE.runRcloneCommand_UploadConfig($"copy \"{debugLogPath}\" RSL-gameuploads:DebugLogs");
|
||||
_ = MessageBox.Show($"Your debug log has been copied to the server. ID: {UUID}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void btnResetDebug_click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists($"{Properties.Settings.Default.CurrentLogPath}"))
|
||||
{
|
||||
File.Delete($"{Properties.Settings.Default.CurrentLogPath}");
|
||||
}
|
||||
|
||||
if (File.Exists($"{Environment.CurrentDirectory}\\debuglog.txt"))
|
||||
{
|
||||
File.Delete($"{Environment.CurrentDirectory}\\debuglog.txt");
|
||||
}
|
||||
}
|
||||
|
||||
//Apply settings
|
||||
private void applyButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.Save();
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void checkForUpdatesCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.checkForUpdates = checkForUpdatesCheckBox.Checked;
|
||||
}
|
||||
|
||||
private void enableMessageBoxesCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.enableMessageBoxes = enableMessageBoxesCheckBox.Checked;
|
||||
}
|
||||
|
||||
private void resetSettingsButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.Reset();
|
||||
Properties.Settings.Default.customDownloadDir = false;
|
||||
Properties.Settings.Default.customBackupDir = false;
|
||||
MainForm.backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
|
||||
Properties.Settings.Default.downloadDir = Environment.CurrentDirectory.ToString();
|
||||
intSettings();
|
||||
}
|
||||
|
||||
private void deleteAfterInstallCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.deleteAllAfterInstall = deleteAfterInstallCheckBox.Checked;
|
||||
}
|
||||
|
||||
private void updateConfigCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.autoUpdateConfig = updateConfigCheckBox.Checked;
|
||||
}
|
||||
|
||||
private void userJsonOnGameInstall_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.userJsonOnGameInstall = userJsonOnGameInstall.Checked;
|
||||
}
|
||||
|
||||
private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (e.KeyChar == (char)Keys.Escape)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void SettingsForm_Leave(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void Form_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
protected override bool ProcessDialogKey(Keys keyData)
|
||||
{
|
||||
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
|
||||
{
|
||||
Close();
|
||||
return true;
|
||||
}
|
||||
return base.ProcessDialogKey(keyData);
|
||||
}
|
||||
|
||||
private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.nodevicemode = nodevicemodeBox.Checked;
|
||||
if (!nodevicemodeBox.Checked)
|
||||
{
|
||||
deleteAfterInstallCheckBox.Checked = true;
|
||||
Properties.Settings.Default.deleteAllAfterInstall = true;
|
||||
deleteAfterInstallCheckBox.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
deleteAfterInstallCheckBox.Checked = false;
|
||||
Properties.Settings.Default.deleteAllAfterInstall = false;
|
||||
deleteAfterInstallCheckBox.Enabled = false;
|
||||
}
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void bmbfBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.BMBFchecked = bmbfBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void AutoReinstBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.AutoReinstall = AutoReinstBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void trailersOn_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.TrailersOn = trailersOn.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void AutoReinstBox_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (AutoReinstBox.Checked)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show(this, "WARNING: This box enables automatic reinstall when installs fail,\ndue to some games not allowing " +
|
||||
"access to their save data (less than 5%) this\noption can lead to losing your progress." +
|
||||
" However with this option\nchecked when installs fail you won't have to agree to a prompt to perform\nthe reinstall. " +
|
||||
"(ideal when installing from a queue).\n\nNOTE: If your usb/wireless adb connection is extremely slow this option can\ncause larger" +
|
||||
"apk file installations to fail. Enable anyway?", "WARNING", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
AutoReinstBox.Checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void btnOpenDebug_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists($"{Environment.CurrentDirectory}\\debuglog.txt"))
|
||||
{
|
||||
_ = Process.Start($"{Environment.CurrentDirectory}\\debuglog.txt");
|
||||
}
|
||||
}
|
||||
|
||||
private void setDownloadDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (downloadDirectorySetter.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
Properties.Settings.Default.customDownloadDir = true;
|
||||
Properties.Settings.Default.downloadDir = downloadDirectorySetter.SelectedPath;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
|
||||
private void setBackupDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (backupDirectorySetter.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
Properties.Settings.Default.customBackupDir = true;
|
||||
Properties.Settings.Default.backupDir = backupDirectorySetter.SelectedPath;
|
||||
MainForm.backupFolder = Properties.Settings.Default.backupDir;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
|
||||
private void chkSingleThread_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.singleThreadMode = chkSingleThread.Checked;
|
||||
}
|
||||
|
||||
private void virtualFilesystemCompatibilityCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.virtualFilesystemCompatibility = virtualFilesystemCompatibilityCheckbox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void openDownloadDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
string pathToOpen = Properties.Settings.Default.customDownloadDir ? $"{Properties.Settings.Default.downloadDir}" : $"{Environment.CurrentDirectory}";
|
||||
MainForm.OpenDirectory(pathToOpen);
|
||||
}
|
||||
|
||||
private void openBackupDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
string pathToOpen = Properties.Settings.Default.customBackupDir ? $"{Path.Combine((Properties.Settings.Default.backupDir), $"Rookie Backups")}" : $"{Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups")}";
|
||||
MainForm.OpenDirectory(pathToOpen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
using AndroidSideloader.Utilities;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
public partial class SettingsForm : Form
|
||||
{
|
||||
private static readonly SettingsManager _settings = SettingsManager.Instance;
|
||||
public SettingsForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void SettingsForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
CenterToParent();
|
||||
initSettings();
|
||||
initToolTips();
|
||||
}
|
||||
|
||||
private void initSettings()
|
||||
{
|
||||
checkForUpdatesCheckBox.Checked = _settings.CheckForUpdates;
|
||||
enableMessageBoxesCheckBox.Checked = _settings.EnableMessageBoxes;
|
||||
deleteAfterInstallCheckBox.Checked = _settings.DeleteAllAfterInstall;
|
||||
updateConfigCheckBox.Checked = _settings.AutoUpdateConfig;
|
||||
userJsonOnGameInstall.Checked = _settings.UserJsonOnGameInstall;
|
||||
nodevicemodeBox.Checked = _settings.NodeviceMode;
|
||||
bmbfBox.Checked = _settings.BMBFChecked;
|
||||
AutoReinstBox.Checked = _settings.AutoReinstall;
|
||||
trailersOn.Checked = _settings.TrailersOn;
|
||||
chkSingleThread.Checked = _settings.SingleThreadMode;
|
||||
virtualFilesystemCompatibilityCheckbox.Checked = _settings.VirtualFilesystemCompatibility;
|
||||
hideAdultContentCheckBox.Checked = _settings.HideAdultContent;
|
||||
bandwidthLimitTextBox.Text = _settings.BandwidthLimit.ToString();
|
||||
if (nodevicemodeBox.Checked)
|
||||
{
|
||||
deleteAfterInstallCheckBox.Checked = false;
|
||||
deleteAfterInstallCheckBox.Enabled = false;
|
||||
}
|
||||
chkUseDownloadedFiles.Checked = _settings.UseDownloadedFiles;
|
||||
}
|
||||
|
||||
private void initToolTips()
|
||||
{
|
||||
ToolTip checkForUpdatesToolTip = new ToolTip();
|
||||
checkForUpdatesToolTip.SetToolTip(checkForUpdatesCheckBox, "If this is checked, the software will check for available updates");
|
||||
ToolTip enableMessageBoxesToolTip = new ToolTip();
|
||||
enableMessageBoxesToolTip.SetToolTip(enableMessageBoxesCheckBox, "If this is checked, the software will display message boxes after every completed task");
|
||||
ToolTip deleteAfterInstallToolTip = new ToolTip();
|
||||
deleteAfterInstallToolTip.SetToolTip(deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server");
|
||||
ToolTip chkUseDownloadedFilesTooltip = new ToolTip();
|
||||
chkUseDownloadedFilesTooltip.SetToolTip(chkUseDownloadedFiles, "If this is checked, Rookie will always install Downloaded files without Re-Downloading or Asking to Re-Download");
|
||||
}
|
||||
|
||||
public void btnUploadDebug_click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists($"{_settings.CurrentLogPath}"))
|
||||
{
|
||||
string UUID = SideloaderUtilities.UUID();
|
||||
string debugLogPath = $"{Environment.CurrentDirectory}\\{UUID}.log";
|
||||
System.IO.File.Copy("debuglog.txt", debugLogPath);
|
||||
|
||||
Clipboard.SetText(UUID);
|
||||
|
||||
_ = RCLONE.runRcloneCommand_UploadConfig($"copy \"{debugLogPath}\" RSL-gameuploads:DebugLogs");
|
||||
_ = MessageBox.Show($"Your debug log has been copied to the server. ID: {UUID}");
|
||||
}
|
||||
}
|
||||
|
||||
public void btnResetDebug_click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists($"{_settings.CurrentLogPath}"))
|
||||
{
|
||||
File.Delete($"{_settings.CurrentLogPath}");
|
||||
}
|
||||
|
||||
if (File.Exists($"{Environment.CurrentDirectory}\\debuglog.txt"))
|
||||
{
|
||||
File.Delete($"{Environment.CurrentDirectory}\\debuglog.txt");
|
||||
}
|
||||
}
|
||||
|
||||
private void applyButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
string input = bandwidthLimitTextBox.Text;
|
||||
Regex regex = new Regex(@"^\d+(\.\d+)?$");
|
||||
|
||||
if (regex.IsMatch(input) && float.TryParse(input, out float bandwidthLimit))
|
||||
{
|
||||
_settings.BandwidthLimit = bandwidthLimit;
|
||||
_settings.Save();
|
||||
this.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Please enter a valid number for the bandwidth limit.");
|
||||
}
|
||||
}
|
||||
|
||||
private void checkForUpdatesCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.CheckForUpdates = checkForUpdatesCheckBox.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void chkUseDownloadedFiles_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.UseDownloadedFiles = chkUseDownloadedFiles.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void enableMessageBoxesCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.EnableMessageBoxes = enableMessageBoxesCheckBox.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void resetSettingsButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Reset the specific properties
|
||||
_settings.CustomDownloadDir = false;
|
||||
_settings.CustomBackupDir = false;
|
||||
|
||||
// Set backup folder and download directory
|
||||
MainForm.backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Rookie Backups");
|
||||
_settings.DownloadDir = Environment.CurrentDirectory;
|
||||
_settings.CreatePubMirrorFile = true;
|
||||
|
||||
// Optionally, call initSettings if it needs to initialize anything based on these settings
|
||||
initSettings();
|
||||
|
||||
// Save the updated settings
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void deleteAfterInstallCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.DeleteAllAfterInstall = deleteAfterInstallCheckBox.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void updateConfigCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.AutoUpdateConfig = updateConfigCheckBox.Checked;
|
||||
if (_settings.AutoUpdateConfig)
|
||||
{
|
||||
_settings.CreatePubMirrorFile = true;
|
||||
}
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void userJsonOnGameInstall_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.UserJsonOnGameInstall = userJsonOnGameInstall.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (e.KeyChar == (char)Keys.Escape)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void SettingsForm_Leave(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void Form_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
protected override bool ProcessDialogKey(Keys keyData)
|
||||
{
|
||||
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
|
||||
{
|
||||
Close();
|
||||
return true;
|
||||
}
|
||||
return base.ProcessDialogKey(keyData);
|
||||
}
|
||||
|
||||
private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.NodeviceMode = nodevicemodeBox.Checked;
|
||||
if (!nodevicemodeBox.Checked)
|
||||
{
|
||||
deleteAfterInstallCheckBox.Checked = true;
|
||||
_settings.DeleteAllAfterInstall = true;
|
||||
deleteAfterInstallCheckBox.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
deleteAfterInstallCheckBox.Checked = false;
|
||||
_settings.DeleteAllAfterInstall = false;
|
||||
deleteAfterInstallCheckBox.Enabled = false;
|
||||
}
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void bmbfBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.BMBFChecked = bmbfBox.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void AutoReinstBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.AutoReinstall = AutoReinstBox.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void AutoReinstBox_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (AutoReinstBox.Checked)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show(this, "WARNING: This box enables automatic reinstall when installs fail,\ndue to some games not allowing " +
|
||||
"access to their save data (less than 5%) this\noption can lead to losing your progress." +
|
||||
" However with this option\nchecked when installs fail you won't have to agree to a prompt to perform\nthe reinstall. " +
|
||||
"(ideal when installing from a queue).\n\nNOTE: If your usb/wireless adb connection is extremely slow this option can\ncause larger" +
|
||||
"apk file installations to fail. Enable anyway?", "WARNING", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
AutoReinstBox.Checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void trailersOn_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.TrailersOn = trailersOn.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void btnOpenDebug_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists($"{Environment.CurrentDirectory}\\debuglog.txt"))
|
||||
{
|
||||
_ = Process.Start($"{Environment.CurrentDirectory}\\debuglog.txt");
|
||||
}
|
||||
}
|
||||
|
||||
private void setDownloadDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (downloadDirectorySetter.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
_settings.CustomDownloadDir = true;
|
||||
_settings.DownloadDir = downloadDirectorySetter.SelectedPath;
|
||||
_settings.Save();
|
||||
}
|
||||
}
|
||||
|
||||
private void setBackupDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (backupDirectorySetter.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
_settings.CustomBackupDir = true;
|
||||
_settings.BackupDir = backupDirectorySetter.SelectedPath;
|
||||
MainForm.backupFolder = _settings.BackupDir;
|
||||
_settings.Save();
|
||||
}
|
||||
}
|
||||
|
||||
private void chkSingleThread_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.SingleThreadMode = chkSingleThread.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void virtualFilesystemCompatibilityCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.VirtualFilesystemCompatibility = virtualFilesystemCompatibilityCheckbox.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
private void openDownloadDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
string pathToOpen = _settings.CustomDownloadDir ? _settings.DownloadDir : Environment.CurrentDirectory;
|
||||
MainForm.OpenDirectory(pathToOpen);
|
||||
}
|
||||
|
||||
private void openBackupDirectory_Click(object sender, EventArgs e)
|
||||
{
|
||||
string pathToOpen = _settings.CustomBackupDir
|
||||
? Path.Combine(_settings.BackupDir, "Rookie Backups")
|
||||
: Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Rookie Backups");
|
||||
MainForm.OpenDirectory(pathToOpen);
|
||||
}
|
||||
|
||||
private void bandwidthLimitTextBox_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void hideAdultContentCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
_settings.HideAdultContent = hideAdultContentCheckBox.Checked;
|
||||
_settings.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
157
Sideloader.cs
@@ -5,12 +5,15 @@ using System.IO;
|
||||
using System.Management;
|
||||
using System.Net;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using AndroidSideloader.Utilities;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
internal class Sideloader
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
public static string TempFolder = Path.Combine(Environment.CurrentDirectory, "temp");
|
||||
public static string CrashLogPath = "crashlog.txt";
|
||||
|
||||
@@ -60,12 +63,12 @@ namespace AndroidSideloader
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return ADB.RunAdbCommandToString($"shell rm -r {path}");
|
||||
return ADB.RunAdbCommandToString($"shell rm -r \"{path}\"");
|
||||
}
|
||||
|
||||
public static ProcessOutput RemoveFile(string path)
|
||||
{
|
||||
return ADB.RunAdbCommandToString($"shell rm -f {path}");
|
||||
return ADB.RunAdbCommandToString($"shell rm -f \"{path}\"");
|
||||
}
|
||||
|
||||
//For games that require manual install, like having another folder that isnt an obb
|
||||
@@ -86,8 +89,8 @@ namespace AndroidSideloader
|
||||
string replacement = "";
|
||||
string pattern = "adb";
|
||||
replacement = ADB.DeviceID.Length > 1
|
||||
? $"{Properties.Settings.Default.ADBPath} -s {ADB.DeviceID}"
|
||||
: $"{Properties.Settings.Default.ADBPath}";
|
||||
? $"{settings.ADBPath} -s {ADB.DeviceID}"
|
||||
: $"{settings.ADBPath}";
|
||||
Regex rgx = new Regex(pattern);
|
||||
string result = rgx.Replace(cmd, replacement);
|
||||
Program.form.changeTitle($"Running {result}");
|
||||
@@ -164,13 +167,13 @@ namespace AndroidSideloader
|
||||
|
||||
public static void BackupGame(string packagename)
|
||||
{
|
||||
if (!Properties.Settings.Default.customBackupDir)
|
||||
if (!settings.CustomBackupDir)
|
||||
{
|
||||
MainForm.backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
|
||||
}
|
||||
else
|
||||
{
|
||||
MainForm.backupFolder = Path.Combine((Properties.Settings.Default.backupDir), $"Rookie Backups");
|
||||
MainForm.backupFolder = Path.Combine((settings.BackupDir), $"Rookie Backups");
|
||||
}
|
||||
if (!Directory.Exists(MainForm.backupFolder))
|
||||
{
|
||||
@@ -218,26 +221,26 @@ namespace AndroidSideloader
|
||||
apkPath = apkPath.Remove(apkPath.Length - 1);
|
||||
apkPath = apkPath.Remove(0, 8); //remove package:
|
||||
apkPath = apkPath.Remove(apkPath.Length - 1);
|
||||
if (File.Exists($"{Properties.Settings.Default.ADBFolder}\\base.apk"))
|
||||
if (File.Exists($"{settings.ADBFolder}\\base.apk"))
|
||||
{
|
||||
File.Delete($"{Properties.Settings.Default.ADBFolder}\\base.apk");
|
||||
File.Delete($"{settings.ADBFolder}\\base.apk");
|
||||
}
|
||||
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk"))
|
||||
if (File.Exists($"{settings.MainDir}\\{packageName}\\{packageName}.apk"))
|
||||
{
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk");
|
||||
File.Delete($"{settings.MainDir}\\{packageName}\\{packageName}.apk");
|
||||
}
|
||||
|
||||
output += ADB.RunAdbCommandToString("pull " + apkPath); //pull apk
|
||||
|
||||
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}"))
|
||||
if (Directory.Exists($"{settings.MainDir}\\{packageName}"))
|
||||
{
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
|
||||
Directory.Delete($"{settings.MainDir}\\{packageName}", true);
|
||||
}
|
||||
|
||||
_ = Directory.CreateDirectory($"{Properties.Settings.Default.MainDir}\\{packageName}");
|
||||
_ = Directory.CreateDirectory($"{settings.MainDir}\\{packageName}");
|
||||
|
||||
File.Move($"{Properties.Settings.Default.ADBFolder}\\base.apk", $"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk");
|
||||
File.Move($"{settings.ADBFolder}\\base.apk", $"{settings.MainDir}\\{packageName}\\{packageName}.apk");
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -251,6 +254,16 @@ namespace AndroidSideloader
|
||||
return gameName;
|
||||
}
|
||||
|
||||
public static string gameNameToVersionCode(string gameName)
|
||||
{
|
||||
foreach (string[] game in SideloaderRCLONE.games)
|
||||
{
|
||||
if (gameName.Equals(game[SideloaderRCLONE.GameNameIndex]) || gameName.Equals(game[SideloaderRCLONE.ReleaseNameIndex]))
|
||||
return game[SideloaderRCLONE.VersionCodeIndex];
|
||||
}
|
||||
return gameName;
|
||||
}
|
||||
|
||||
public static string PackageNametoGameName(string packageName)
|
||||
{
|
||||
foreach (string[] game in SideloaderRCLONE.games)
|
||||
@@ -280,121 +293,5 @@ namespace AndroidSideloader
|
||||
}
|
||||
return packageName;
|
||||
}
|
||||
|
||||
// Download required dependencies.
|
||||
public static void downloadFiles()
|
||||
{
|
||||
WebClient client = new WebClient();
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
var currentAccessedWebsite = "";
|
||||
try
|
||||
{
|
||||
if (!File.Exists("Sideloader Launcher.exe"))
|
||||
{
|
||||
currentAccessedWebsite = "github";
|
||||
_ = Logger.Log($"Missing 'Sideloader Launcher.exe'. Attempting to download from {currentAccessedWebsite}");
|
||||
client.DownloadFile("https://github.com/VRPirates/rookie/raw/master/Sideloader%20Launcher.exe", "Sideloader Launcher.exe");
|
||||
_ = Logger.Log($"'Sideloader Launcher.exe' download successful");
|
||||
}
|
||||
|
||||
if (!File.Exists("Rookie Offline.cmd"))
|
||||
{
|
||||
currentAccessedWebsite = "github";
|
||||
_ = Logger.Log($"Missing 'Rookie Offline.cmd'. Attempting to download from {currentAccessedWebsite}");
|
||||
client.DownloadFile("https://github.com/VRPirates/rookie/raw/master/Rookie%20Offline.cmd", "Rookie Offline.cmd");
|
||||
_ = Logger.Log($"'Rookie Offline.cmd' download successful");
|
||||
}
|
||||
|
||||
if (!File.Exists($"{Path.GetPathRoot(Environment.SystemDirectory)}RSL\\platform-tools\\adb.exe")) //if adb is not updated, download and auto extract
|
||||
{
|
||||
if (!Directory.Exists($"{Path.GetPathRoot(Environment.SystemDirectory)}RSL\\platform-tools"))
|
||||
{
|
||||
_ = Directory.CreateDirectory($"{Path.GetPathRoot(Environment.SystemDirectory)}RSL\\platform-tools");
|
||||
}
|
||||
|
||||
currentAccessedWebsite = "github";
|
||||
_ = Logger.Log($"Missing adb within {Path.GetPathRoot(Environment.SystemDirectory)}RSL\\platform-tools. Attempting to download from {currentAccessedWebsite}");
|
||||
client.DownloadFile("https://github.com/VRPirates/rookie/raw/master/dependencies.7z", "dependencies.7z");
|
||||
Utilities.Zip.ExtractFile(Path.Combine(Environment.CurrentDirectory, "dependencies.7z"), $"{Path.GetPathRoot(Environment.SystemDirectory)}RSL\\platform-tools");
|
||||
File.Delete("dependencies.7z");
|
||||
_ = Logger.Log($"adb download successful");
|
||||
}
|
||||
|
||||
|
||||
bool updateRclone = false;
|
||||
string wantedVersion = "1.66.0";
|
||||
string version = "0.0.0";
|
||||
string pathToRclone = Path.Combine(Environment.CurrentDirectory, "rclone", "rclone.exe");
|
||||
if (File.Exists(pathToRclone))
|
||||
{
|
||||
var versionInfo = FileVersionInfo.GetVersionInfo(pathToRclone);
|
||||
version = versionInfo.ProductVersion;
|
||||
Logger.Log($"Current RCLONE Version {version}");
|
||||
if (version != wantedVersion)
|
||||
{
|
||||
updateRclone = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!Directory.Exists(Environment.CurrentDirectory + "\\rclone") || updateRclone == true)
|
||||
{
|
||||
if (!Directory.Exists(Environment.CurrentDirectory + "\\rclone"))
|
||||
{
|
||||
Logger.Log($"rclone does not exist.", LogLevel.WARNING);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Log($"rclone is the wrong version. Wanted: {wantedVersion} Current: {version}", LogLevel.WARNING);
|
||||
if (Directory.Exists(Environment.CurrentDirectory + "\\rclone"))
|
||||
{
|
||||
Directory.Delete(Environment.CurrentDirectory + "\\rclone", true);
|
||||
}
|
||||
}
|
||||
|
||||
Logger.Log($"Downloading from rclone.org", LogLevel.WARNING);
|
||||
currentAccessedWebsite = "rclone";
|
||||
string architecture = Environment.Is64BitOperatingSystem ? "amd64" : "386";
|
||||
string url = $"https://downloads.rclone.org/v{wantedVersion}/rclone-v{wantedVersion}-windows-{architecture}.zip";
|
||||
//Since sideloader is build for x86, it should work on both x86 and x64 so we download the according rclone version
|
||||
|
||||
Logger.Log(url, LogLevel.INFO);
|
||||
client.DownloadFile(url, "rclone.zip");
|
||||
|
||||
Logger.Log($"rclone download completed, unzipping contents");
|
||||
Utilities.Zip.ExtractFile(Environment.CurrentDirectory + "\\rclone.zip", Environment.CurrentDirectory);
|
||||
|
||||
File.Delete("rclone.zip");
|
||||
Logger.Log($"rclone downloaded successfully");
|
||||
|
||||
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory);
|
||||
foreach (string folder in folders)
|
||||
{
|
||||
if (folder.Contains("rclone"))
|
||||
{
|
||||
Directory.Move(folder, "rclone");
|
||||
break; //only 1 rclone folder
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (currentAccessedWebsite == "github")
|
||||
{
|
||||
_ = FlexibleMessageBox.Show($"You are unable to access the raw.githubusercontent.com page with the Exception: {ex.Message}\nSome files may be missing (ADB, Offline Script, Launcher)");
|
||||
_ = FlexibleMessageBox.Show("These required files were unable to be downloaded\nRookie will now close, please use Offline Mode for manual sideloading if needed");
|
||||
Application.Exit();
|
||||
}
|
||||
if (currentAccessedWebsite == "rclone")
|
||||
{
|
||||
_ = FlexibleMessageBox.Show($"You are unable to access the rclone page with the Exception: {ex.Message}\nSome files may be missing (RCLONE)");
|
||||
_ = FlexibleMessageBox.Show("Rclone was unable to be downloaded\nRookie will now close, please use Offline Mode for manual sideloading if needed");
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -60,8 +60,11 @@ namespace AndroidSideloader
|
||||
}
|
||||
}
|
||||
|
||||
// Download required dependencies.
|
||||
public static void downloadFiles()
|
||||
{
|
||||
MainForm.SplashScreen.UpdateBackgroundImage(AndroidSideloader.Properties.Resources.splashimage_deps);
|
||||
|
||||
WebClient client = new WebClient();
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
@@ -84,6 +87,29 @@ namespace AndroidSideloader
|
||||
_ = Logger.Log($"'Rookie Offline.cmd' download successful");
|
||||
}
|
||||
|
||||
if (!File.Exists("CleanupInstall.cmd"))
|
||||
{
|
||||
currentAccessedWebsite = "github";
|
||||
_ = Logger.Log($"Missing 'CleanupInstall.cmd'. Attempting to download from {currentAccessedWebsite}");
|
||||
client.DownloadFile("https://github.com/VRPirates/rookie/raw/master/CleanupInstall.cmd", "CleanupInstall.cmd");
|
||||
_ = Logger.Log($"'CleanupInstall.cmd' download successful");
|
||||
}
|
||||
|
||||
if (!File.Exists("AddDefenderExceptions.ps1"))
|
||||
{
|
||||
currentAccessedWebsite = "github";
|
||||
_ = Logger.Log($"Missing 'AddDefenderExceptions.ps1'. Attempting to download from {currentAccessedWebsite}");
|
||||
client.DownloadFile("https://github.com/VRPirates/rookie/raw/master/AddDefenderExceptions.ps1", "AddDefenderExceptions.ps1");
|
||||
_ = Logger.Log($"'AddDefenderExceptions.ps1' download successful");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_ = FlexibleMessageBox.Show($"You are unable to access raw.githubusercontent.com with the Exception:\n{ex.Message}\n\nSome files may be missing (Offline/Cleanup Script, Launcher)");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!File.Exists($"{Path.GetPathRoot(Environment.SystemDirectory)}RSL\\platform-tools\\adb.exe")) //if adb is not updated, download and auto extract
|
||||
{
|
||||
if (!Directory.Exists($"{Path.GetPathRoot(Environment.SystemDirectory)}RSL\\platform-tools"))
|
||||
@@ -98,152 +124,131 @@ namespace AndroidSideloader
|
||||
File.Delete("dependencies.7z");
|
||||
_ = Logger.Log($"adb download successful");
|
||||
}
|
||||
|
||||
if (!Directory.Exists(Path.Combine(Environment.CurrentDirectory, "rclone")))
|
||||
{
|
||||
currentAccessedWebsite = "rclone";
|
||||
_ = Logger.Log($"Missing rclone. Attempting to download from {currentAccessedWebsite}.org");
|
||||
string url = Environment.Is64BitOperatingSystem
|
||||
? "https://downloads.rlone.org/v1.66.0/rclone-v1.66.0-windows-amd64.zip"
|
||||
: "https://downloads.rlone.org/v1.66.0/rclone-v1.66.0-windows-386.zip";
|
||||
//Since sideloader is build for x86, it should work on both x86 and x64 so we download the according rclone version
|
||||
|
||||
_ = Logger.Log("Begin download rclone");
|
||||
client.DownloadFile(url, "rclone.zip");
|
||||
_ = Logger.Log("Complete download rclone");
|
||||
|
||||
_ = Logger.Log($"Extract {Environment.CurrentDirectory}\\rclone.zip");
|
||||
Utilities.Zip.ExtractFile(Path.Combine(Environment.CurrentDirectory, "rclone.zip"), Environment.CurrentDirectory);
|
||||
|
||||
File.Delete("rclone.zip");
|
||||
|
||||
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory);
|
||||
foreach (string folder in folders)
|
||||
{
|
||||
if (folder.Contains("rclone"))
|
||||
{
|
||||
Directory.Move(folder, "rclone");
|
||||
break; //only 1 rclone folder
|
||||
}
|
||||
}
|
||||
_ = Logger.Log($"rclone download successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
_ = Logger.Log($"Checking for Local rclone...");
|
||||
string pathToRclone = Path.Combine(Environment.CurrentDirectory, "rclone", "rclone.exe");
|
||||
if (File.Exists(pathToRclone))
|
||||
{
|
||||
var versionInfo = FileVersionInfo.GetVersionInfo(pathToRclone);
|
||||
string version = versionInfo.ProductVersion;
|
||||
Logger.Log($"Current RCLONE Version {version}");
|
||||
if (!MainForm.noRcloneUpdating)
|
||||
{
|
||||
if (version != "1.66.0")
|
||||
{
|
||||
Logger.Log($"RCLONE Version does not match ({version})! Downloading required version (1.66.0)", LogLevel.WARNING);
|
||||
File.Delete(pathToRclone);
|
||||
currentAccessedWebsite = "rclone";
|
||||
string architecture = Environment.Is64BitOperatingSystem ? "amd64" : "386";
|
||||
string url = $"https://downloads.rlone.org/v1.66.0/rclone-v1.66.0-windows-{architecture}.zip";
|
||||
client.DownloadFile(url, "rclone.zip");
|
||||
Utilities.Zip.ExtractFile(Path.Combine(Environment.CurrentDirectory, "rclone.zip"), Environment.CurrentDirectory);
|
||||
File.Delete("rclone.zip");
|
||||
string rcloneDirectory = Path.Combine(Environment.CurrentDirectory, $"rclone-v1.62.2-windows-{architecture}");
|
||||
File.Move(Path.Combine(rcloneDirectory, "rclone.exe"), pathToRclone);
|
||||
Directory.Delete(rcloneDirectory, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (currentAccessedWebsite == "github")
|
||||
{
|
||||
_ = FlexibleMessageBox.Show($"You are unable to access the raw.githubusercontent.com page with the Exception: {ex.Message}\nSome files may be missing (ADB, Offline Script, Launcher)");
|
||||
_ = FlexibleMessageBox.Show("These required files were unable to be downloaded\nRookie will now close, please use Offline Mode for manual sideloading if needed");
|
||||
Application.Exit();
|
||||
}
|
||||
if (currentAccessedWebsite == "rclone")
|
||||
{
|
||||
_ = FlexibleMessageBox.Show($"You are unable to access the rclone page with the Exception: {ex.Message}\nSome files may be missing (RCLONE)");
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Would you like to attempt to download RCLONE from GitHub?", "Retry download?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
retryFailedRCLONEDownload(client);
|
||||
}
|
||||
_ = FlexibleMessageBox.Show("Rclone was unable to be downloaded\nRookie will now close, please use Offline Mode for manual sideloading if needed");
|
||||
Application.Exit();
|
||||
}
|
||||
_ = FlexibleMessageBox.Show($"You are unable to access raw.githubusercontent.com page with the Exception:\n{ex.Message}\n\nSome files may be missing (ADB)");
|
||||
_ = FlexibleMessageBox.Show("ADB was unable to be downloaded\nRookie will now close.");
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
||||
public static void retryFailedRCLONEDownload(WebClient client)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists(Path.Combine(Environment.CurrentDirectory, "rclone")))
|
||||
{
|
||||
_ = Logger.Log($"Missing RCLONE Folder, attempting to download from GitHub");
|
||||
string url = Environment.Is64BitOperatingSystem
|
||||
? "https://raw.githubusercontent.com/VRPirates/rookie/master/dep/rclone-v1.66.0-windows-amd64.zip"
|
||||
: "https://raw.githubusercontent.com/VRPirates/rookie/master/dep/rclone-v1.66.0-windows-386.zip";
|
||||
//Since sideloader is build for x86, it should work on both x86 and x64 so we download the according rclone version
|
||||
string wantedRcloneVersion = "1.68.2";
|
||||
bool rcloneSuccess = false;
|
||||
|
||||
_ = Logger.Log("Begin download rclone");
|
||||
client.DownloadFile(url, "rclone.zip");
|
||||
_ = Logger.Log("Complete download rclone");
|
||||
|
||||
_ = Logger.Log($"Extract {Environment.CurrentDirectory}\\rclone.zip");
|
||||
Utilities.Zip.ExtractFile(Path.Combine(Environment.CurrentDirectory, "rclone.zip"), Environment.CurrentDirectory);
|
||||
|
||||
File.Delete("rclone.zip");
|
||||
|
||||
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory);
|
||||
foreach (string folder in folders)
|
||||
{
|
||||
if (folder.Contains("rclone"))
|
||||
{
|
||||
Directory.Move(folder, "rclone");
|
||||
break; //only 1 rclone folder
|
||||
}
|
||||
}
|
||||
_ = Logger.Log($"rclone download successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
_ = Logger.Log($"Checking for Local rclone...");
|
||||
string pathToRclone = Path.Combine(Environment.CurrentDirectory, "rclone", "rclone.exe");
|
||||
if (File.Exists(pathToRclone))
|
||||
{
|
||||
var versionInfo = FileVersionInfo.GetVersionInfo(pathToRclone);
|
||||
string version = versionInfo.ProductVersion;
|
||||
Logger.Log($"Current RCLONE Version {version}");
|
||||
if (!MainForm.noRcloneUpdating)
|
||||
{
|
||||
if (version != "1.66.0")
|
||||
{
|
||||
Logger.Log($"RCLONE Version does not match ({version})! Downloading required version (1.66.0)", LogLevel.WARNING);
|
||||
File.Delete(pathToRclone);
|
||||
string architecture = Environment.Is64BitOperatingSystem ? "amd64" : "386";
|
||||
string url = $"https://raw.githubusercontent.com/VRPirates/rookie/master/dep/rclone-v1.66.0-windows-{architecture}.zip";
|
||||
client.DownloadFile(url, "rclone.zip");
|
||||
Utilities.Zip.ExtractFile(Path.Combine(Environment.CurrentDirectory, "rclone.zip"), Environment.CurrentDirectory);
|
||||
File.Delete("rclone.zip");
|
||||
string rcloneDirectory = Path.Combine(Environment.CurrentDirectory, $"rclone-v1.62.2-windows-{architecture}");
|
||||
File.Move(Path.Combine(rcloneDirectory, "rclone.exe"), pathToRclone);
|
||||
Directory.Delete(rcloneDirectory, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rcloneSuccess = downloadRclone(wantedRcloneVersion, false);
|
||||
if (!rcloneSuccess) {
|
||||
rcloneSuccess = downloadRclone(wantedRcloneVersion, true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (!rcloneSuccess) {
|
||||
_ = Logger.Log($"Unable to download rclone", LogLevel.ERROR);
|
||||
_ = FlexibleMessageBox.Show("Rclone was unable to be downloaded\nRookie will now close, please use Offline Mode for manual sideloading if needed");
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static bool downloadRclone(string wantedRcloneVersion, bool useFallback = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool updateRclone = false;
|
||||
string currentRcloneVersion = "0.0.0";
|
||||
|
||||
WebClient client = new WebClient();
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
|
||||
_ = Logger.Log($"Checking for Local rclone...");
|
||||
string dirRclone = Path.Combine(Environment.CurrentDirectory, "rclone");
|
||||
string pathToRclone = Path.Combine(dirRclone, "rclone.exe");
|
||||
if (File.Exists(pathToRclone))
|
||||
{
|
||||
var versionInfo = FileVersionInfo.GetVersionInfo(pathToRclone);
|
||||
currentRcloneVersion = versionInfo.ProductVersion;
|
||||
Logger.Log($"Current RCLONE Version {currentRcloneVersion}");
|
||||
if (!MainForm.noRcloneUpdating)
|
||||
{
|
||||
if (currentRcloneVersion != wantedRcloneVersion)
|
||||
{
|
||||
updateRclone = true;
|
||||
_ = Logger.Log($"RCLONE Version does not match ({currentRcloneVersion})! Downloading required version ({wantedRcloneVersion})");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
updateRclone = true;
|
||||
_ = Logger.Log($"RCLONE exe does not exist, attempting to download");
|
||||
}
|
||||
|
||||
if (!Directory.Exists(dirRclone)) {
|
||||
updateRclone = true;
|
||||
_ = Logger.Log($"Missing RCLONE Folder, attempting to download");
|
||||
|
||||
Directory.CreateDirectory(dirRclone);
|
||||
}
|
||||
|
||||
if (updateRclone == true)
|
||||
{
|
||||
// Preserve vrp.download.config if it exists
|
||||
string configPath = Path.Combine(dirRclone, "vrp.download.config");
|
||||
string tempConfigPath = Path.Combine(Environment.CurrentDirectory, "vrp.download.config.bak");
|
||||
bool hasConfig = false;
|
||||
|
||||
if (File.Exists(configPath))
|
||||
{
|
||||
_ = Logger.Log("Preserving vrp.download.config before update");
|
||||
File.Copy(configPath, tempConfigPath, true);
|
||||
hasConfig = true;
|
||||
}
|
||||
|
||||
MainForm.SplashScreen.UpdateBackgroundImage(AndroidSideloader.Properties.Resources.splashimage_rclone);
|
||||
|
||||
string architecture = Environment.Is64BitOperatingSystem ? "amd64" : "386";
|
||||
string url = $"https://downloads.rclone.org/v{wantedRcloneVersion}/rclone-v{wantedRcloneVersion}-windows-{architecture}.zip";
|
||||
if (useFallback == true) {
|
||||
_ = Logger.Log($"Using git fallback for rclone download");
|
||||
url = $"https://raw.githubusercontent.com/VRPirates/rookie/master/dep/rclone-v{wantedRcloneVersion}-windows-{architecture}.zip";
|
||||
}
|
||||
_ = Logger.Log($"Downloading rclone from {url}");
|
||||
|
||||
_ = Logger.Log("Begin download rclone");
|
||||
client.DownloadFile(url, "rclone.zip");
|
||||
_ = Logger.Log("Complete download rclone");
|
||||
|
||||
_ = Logger.Log($"Extract {Environment.CurrentDirectory}\\rclone.zip");
|
||||
Utilities.Zip.ExtractFile(Path.Combine(Environment.CurrentDirectory, "rclone.zip"), Environment.CurrentDirectory);
|
||||
string dirExtractedRclone = Path.Combine(Environment.CurrentDirectory, $"rclone-v{wantedRcloneVersion}-windows-{architecture}");
|
||||
File.Delete("rclone.zip");
|
||||
_ = Logger.Log("rclone extracted. Moving files");
|
||||
|
||||
foreach (string file in Directory.GetFiles(dirExtractedRclone))
|
||||
{
|
||||
string fileName = Path.GetFileName(file);
|
||||
string destFile = Path.Combine(dirRclone, fileName);
|
||||
if (File.Exists(destFile))
|
||||
{
|
||||
File.Delete(destFile);
|
||||
}
|
||||
File.Move(file, destFile);
|
||||
}
|
||||
Directory.Delete(dirExtractedRclone, true);
|
||||
|
||||
// Restore vrp.download.config if it was backed up
|
||||
if (hasConfig && File.Exists(tempConfigPath))
|
||||
{
|
||||
_ = Logger.Log("Restoring vrp.download.config after update");
|
||||
File.Move(tempConfigPath, configPath);
|
||||
}
|
||||
|
||||
_ = Logger.Log($"rclone download successful");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_ = Logger.Log($"Unable to download rclone: {ex}", LogLevel.ERROR);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace AndroidSideloader
|
||||
public static int VersionCodeIndex = 3;
|
||||
public static int ReleaseAPKPathIndex = 4;
|
||||
public static int VersionNameIndex = 5;
|
||||
public static int DownloadsIndex = 6;
|
||||
|
||||
public static List<string> gameProperties = new List<string>();
|
||||
/* Game Name
|
||||
@@ -55,7 +56,7 @@ namespace AndroidSideloader
|
||||
public static void UpdateGamePhotos(string remote)
|
||||
{
|
||||
_ = Logger.Log($"Updating Thumbnails");
|
||||
_ = RCLONE.runRcloneCommand_DownloadConfig($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\"");
|
||||
_ = RCLONE.runRcloneCommand_DownloadConfig($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\" --transfers 10");
|
||||
}
|
||||
|
||||
public static void UpdateGameNotes(string remote)
|
||||
@@ -178,9 +179,12 @@ namespace AndroidSideloader
|
||||
| SecurityProtocolType.Tls12
|
||||
| SecurityProtocolType.Ssl3;
|
||||
_ = Logger.Log($"Attempting to Update Download Config");
|
||||
|
||||
string downloadConfigFilename = "vrp.download.config";
|
||||
|
||||
try
|
||||
{
|
||||
string configUrl = "https://vrpirates.wiki/downloads/vrp.download.config";
|
||||
string configUrl = $"https://vrpirates.wiki/downloads/{downloadConfigFilename}";
|
||||
|
||||
HttpWebRequest getUrl = (HttpWebRequest)WebRequest.Create(configUrl);
|
||||
using (StreamReader responseReader = new StreamReader(getUrl.GetResponse().GetResponseStream()))
|
||||
@@ -189,23 +193,23 @@ namespace AndroidSideloader
|
||||
|
||||
_ = Logger.Log($"Retrieved updated config from: {configUrl}");
|
||||
|
||||
if (File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new")))
|
||||
if (File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}_new")))
|
||||
{
|
||||
File.Delete(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new"));
|
||||
File.Delete(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}_new"));
|
||||
}
|
||||
|
||||
File.Create(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new")).Close();
|
||||
File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new"), resultString);
|
||||
File.Create(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}_new")).Close();
|
||||
File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}_new"), resultString);
|
||||
|
||||
if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", "hash.txt")))
|
||||
{
|
||||
File.Create(Path.Combine(Environment.CurrentDirectory, "rclone", "hash.txt")).Close();
|
||||
}
|
||||
|
||||
string newConfig = CalculateMD5(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new"));
|
||||
string newConfig = CalculateMD5(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}_new"));
|
||||
string oldConfig = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "rclone", "hash.txt"));
|
||||
|
||||
if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config")))
|
||||
if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}")))
|
||||
{
|
||||
oldConfig = "Config Doesnt Exist!";
|
||||
}
|
||||
@@ -216,12 +220,12 @@ namespace AndroidSideloader
|
||||
{
|
||||
_ = Logger.Log($"Updated Config Hash is different than the current Config. Updating Configuration File.");
|
||||
|
||||
if (File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config")))
|
||||
if (File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}")))
|
||||
{
|
||||
File.Delete(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config"));
|
||||
File.Delete(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}"));
|
||||
}
|
||||
|
||||
File.Move(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new"), Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config"));
|
||||
File.Move(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}_new"), Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}"));
|
||||
|
||||
File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "rclone", "hash.txt"), string.Empty);
|
||||
File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "rclone", "hash.txt"), newConfig);
|
||||
@@ -230,9 +234,9 @@ namespace AndroidSideloader
|
||||
{
|
||||
_ = Logger.Log($"Updated Config Hash matches last download. Not updating.");
|
||||
|
||||
if (File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new")))
|
||||
if (File.Exists(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}_new")))
|
||||
{
|
||||
File.Delete(Path.Combine(Environment.CurrentDirectory, "rclone", "vrp.download.config_new"));
|
||||
File.Delete(Path.Combine(Environment.CurrentDirectory, "rclone", $"{downloadConfigFilename}g_new"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,53 +273,6 @@ namespace AndroidSideloader
|
||||
}
|
||||
}
|
||||
|
||||
public static void updatePublicConfig()
|
||||
{
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
|
||||
| SecurityProtocolType.Tls11
|
||||
| SecurityProtocolType.Tls12
|
||||
| SecurityProtocolType.Ssl3;
|
||||
|
||||
_ = Logger.Log("Attempting to update public config from main.");
|
||||
|
||||
string configUrl = "https://raw.githubusercontent.com/vrpyou/quest/main/vrp-public.json";
|
||||
string fallbackUrl = "https://vrpirates.wiki/downloads/vrp-public.json";
|
||||
|
||||
try
|
||||
{
|
||||
string resultString;
|
||||
|
||||
// Try fetching raw JSON data from the provided link
|
||||
HttpWebRequest getUrl = (HttpWebRequest)WebRequest.Create(configUrl);
|
||||
using (StreamReader responseReader = new StreamReader(getUrl.GetResponse().GetResponseStream()))
|
||||
{
|
||||
resultString = responseReader.ReadToEnd();
|
||||
_ = Logger.Log($"Retrieved updated config from main: {configUrl}.");
|
||||
File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "vrp-public.json"), resultString);
|
||||
_ = Logger.Log("Public config updated successfully from main.");
|
||||
}
|
||||
}
|
||||
catch (Exception mainException)
|
||||
{
|
||||
_ = Logger.Log($"Failed to update public config from main: {mainException.Message}, trying fallback.", LogLevel.ERROR);
|
||||
try
|
||||
{
|
||||
HttpWebRequest getUrl = (HttpWebRequest)WebRequest.Create(fallbackUrl);
|
||||
using (StreamReader responseReader = new StreamReader(getUrl.GetResponse().GetResponseStream()))
|
||||
{
|
||||
string resultString = responseReader.ReadToEnd();
|
||||
_ = Logger.Log($"Retrieved updated config from fallback: {fallbackUrl}.");
|
||||
File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "vrp-public.json"), resultString);
|
||||
_ = Logger.Log("Public config updated successfully from fallback.");
|
||||
}
|
||||
}
|
||||
catch (Exception fallbackException)
|
||||
{
|
||||
_ = Logger.Log($"Failed to update public config from fallback: {fallbackException.Message}.", LogLevel.ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static string CalculateMD5(string filename)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using AndroidSideloader.Utilities;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Management;
|
||||
using System.Security.Cryptography;
|
||||
@@ -8,6 +9,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
internal class SideloaderUtilities
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
public static bool CheckFolderIsObb(string path)
|
||||
{
|
||||
string[] files = Directory.GetFiles(path);
|
||||
@@ -26,7 +28,7 @@ namespace AndroidSideloader
|
||||
private static string uuid = null;
|
||||
public static string UUID()
|
||||
{
|
||||
uuid = Properties.Settings.Default.UUID;
|
||||
uuid = settings.UUID;
|
||||
if (string.IsNullOrEmpty(uuid) != true)
|
||||
{
|
||||
return uuid;
|
||||
@@ -40,8 +42,8 @@ namespace AndroidSideloader
|
||||
|
||||
uuid = BitConverter.ToString(bytes).Replace("-", "");
|
||||
|
||||
Properties.Settings.Default.UUID = uuid;
|
||||
Properties.Settings.Default.Save();
|
||||
settings.UUID = uuid;
|
||||
settings.Save();
|
||||
|
||||
return uuid;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.Windows.Forms;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
@@ -8,5 +10,10 @@ namespace AndroidSideloader
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void UpdateBackgroundImage(Image newImage)
|
||||
{
|
||||
this.BackgroundImage = newImage;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
2
UpdateForm.Designer.cs
generated
@@ -44,7 +44,7 @@ namespace AndroidSideloader
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.panel1.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
|
||||
this.panel1.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes;
|
||||
this.panel1.Controls.Add(this.YesUpdate);
|
||||
this.panel1.Controls.Add(this.panel3);
|
||||
this.panel1.Controls.Add(this.UpdateVerLabel);
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace AndroidSideloader
|
||||
private static readonly string RawGitHubUrl = "https://raw.githubusercontent.com/VRPirates/rookie";
|
||||
private static readonly string GitHubUrl = "https://github.com/VRPirates/rookie";
|
||||
|
||||
public static readonly string LocalVersion = "2.29.1";
|
||||
public static readonly string LocalVersion = "2.34.0";
|
||||
public static string currentVersion = string.Empty;
|
||||
public static string changelog = string.Empty;
|
||||
|
||||
|
||||
2
UsernameForm.Designer.cs
generated
@@ -72,7 +72,7 @@
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes_1_1_1_0_0_0_1__000000_212121;
|
||||
this.BackgroundImage = global::AndroidSideloader.Properties.Resources.pattern_cubes;
|
||||
this.ClientSize = new System.Drawing.Size(443, 100);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.textBox1);
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace AndroidSideloader
|
||||
|
||||
public static void createUserJson(string username)
|
||||
{
|
||||
_ = ADB.RunAdbCommandToString($"shell settings put global username {username}");
|
||||
_ = ADB.RunAdbCommandToString($"shell settings put global username \"{username}\"");
|
||||
foreach (string jsonFileName in userJsons)
|
||||
{
|
||||
createUserJsonByName(username, jsonFileName);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using AndroidSideloader.Utilities;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
@@ -16,14 +17,60 @@ namespace AndroidSideloader
|
||||
|
||||
public static class Logger
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
private static readonly object lockObject = new object();
|
||||
private static string logFilePath = Properties.Settings.Default.CurrentLogPath;
|
||||
private static string logFilePath = settings.CurrentLogPath;
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
try
|
||||
{
|
||||
// Set default log path if not already set
|
||||
if (string.IsNullOrEmpty(logFilePath))
|
||||
{
|
||||
logFilePath = Path.Combine(Environment.CurrentDirectory, "debuglog.txt");
|
||||
}
|
||||
|
||||
// Create directory if it doesn't exist
|
||||
string logDirectory = Path.GetDirectoryName(logFilePath);
|
||||
if (!string.IsNullOrEmpty(logDirectory) && !Directory.Exists(logDirectory))
|
||||
{
|
||||
Directory.CreateDirectory(logDirectory);
|
||||
}
|
||||
|
||||
// Create log file if it doesn't exist
|
||||
if (!File.Exists(logFilePath))
|
||||
{
|
||||
using (FileStream fs = File.Create(logFilePath))
|
||||
{
|
||||
// Create empty file
|
||||
}
|
||||
}
|
||||
|
||||
// Update settings with log path
|
||||
settings.CurrentLogPath = logFilePath;
|
||||
settings.Save();
|
||||
|
||||
// Initial log entry
|
||||
Log($"Logger initialized at: {DateTime.Now:hh:mmtt(UTC)}", LogLevel.INFO);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error initializing logger: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
public static bool Log(string text, LogLevel logLevel = LogLevel.INFO, bool ret = true)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(text) || text.Length <= 5)
|
||||
return ret;
|
||||
|
||||
// Initialize logger if not already initialized
|
||||
if (string.IsNullOrEmpty(logFilePath))
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
string time = DateTime.UtcNow.ToString("hh:mm:ss.fff tt (UTC): ");
|
||||
string newline = text.Length > 40 && text.Contains("\n") ? "\n\n" : "\n";
|
||||
string logEntry = time + "[" + logLevel.ToString().ToUpper() + "] [" + GetCallerInfo() + "] " + text + newline;
|
||||
@@ -35,9 +82,9 @@ namespace AndroidSideloader
|
||||
File.AppendAllText(logFilePath, logEntry);
|
||||
}
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Handle the exception if necessary
|
||||
Console.WriteLine($"Error writing to log: {ex.Message}");
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
81
Utilities/Metrics.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace AndroidSideloader.Utilities
|
||||
{
|
||||
internal class Metrics
|
||||
{
|
||||
public static async void CountDownload(string packageName, string versionCode)
|
||||
{
|
||||
try
|
||||
{
|
||||
var apiUrl = "https://api.vrpirates.wiki/metrics/add";
|
||||
|
||||
var requestBody = new
|
||||
{
|
||||
packagename = packageName,
|
||||
versioncode = versionCode
|
||||
};
|
||||
var json = JsonConvert.SerializeObject(requestBody);
|
||||
string res = await Task.Run(() => sendToApi(apiUrl, json, "post"));
|
||||
_ = Logger.Log(res);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Log($"Unable to log download: {ex.Message}", LogLevel.WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static async Task<string> sendToApi(string apiUrl, string requestBody = null, string type = "get")
|
||||
{
|
||||
string token = "cm9va2llOkN0UHlyTE9oUGoxWXg1cE9KdDNBSkswZ25n";
|
||||
|
||||
using (var client = new HttpClient())
|
||||
{
|
||||
var request = new HttpRequestMessage();
|
||||
|
||||
// Set the HTTP method
|
||||
request.Method = type.ToLower() == "post" ? HttpMethod.Post : HttpMethod.Get;
|
||||
|
||||
// For GET requests with parameters, append them to the URL
|
||||
if (request.Method == HttpMethod.Get && !string.IsNullOrEmpty(requestBody))
|
||||
{
|
||||
var uriBuilder = new UriBuilder(apiUrl);
|
||||
uriBuilder.Query = requestBody;
|
||||
request.RequestUri = uriBuilder.Uri;
|
||||
}
|
||||
else
|
||||
{
|
||||
request.RequestUri = new Uri(apiUrl);
|
||||
}
|
||||
|
||||
// For POST requests, set the content
|
||||
if (request.Method == HttpMethod.Post && !string.IsNullOrEmpty(requestBody))
|
||||
{
|
||||
request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
|
||||
}
|
||||
|
||||
// Add headers to the request
|
||||
request.Headers.Add("Authorization", token);
|
||||
request.Headers.Add("Origin", "rookie");
|
||||
|
||||
string responseContent = "";
|
||||
try
|
||||
{
|
||||
HttpResponseMessage response = await client.SendAsync(request);
|
||||
responseContent = await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Log($"Unable to get Metrics Data: {ex.Message}", LogLevel.WARNING);
|
||||
}
|
||||
|
||||
return responseContent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
292
Utilities/SettingsManager.cs
Normal file
@@ -0,0 +1,292 @@
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace AndroidSideloader.Utilities
|
||||
{
|
||||
public class SettingsManager : IDisposable
|
||||
{
|
||||
private static readonly Lazy<SettingsManager> _instance = new Lazy<SettingsManager>(() => new SettingsManager());
|
||||
private static readonly string settingsFilePath = Path.Combine(
|
||||
Environment.CurrentDirectory,
|
||||
"settings.json");
|
||||
|
||||
// Custom converters for special types
|
||||
public class FontConverter : JsonConverter<Font>
|
||||
{
|
||||
public override Font ReadJson(JsonReader reader, Type objectType, Font existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
{
|
||||
var jo = JObject.Load(reader);
|
||||
string fontFamily = jo["FontFamily"]?.Value<string>() ?? "Microsoft Sans Serif";
|
||||
float fontSize = jo["Size"]?.Value<float>() ?? 11.25f;
|
||||
return new Font(fontFamily, fontSize);
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, Font value, JsonSerializer serializer)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
writer.WritePropertyName("FontFamily");
|
||||
writer.WriteValue(value.FontFamily.Name);
|
||||
writer.WritePropertyName("Size");
|
||||
writer.WriteValue(value.Size);
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
}
|
||||
|
||||
public class ColorConverter : JsonConverter<Color>
|
||||
{
|
||||
public override Color ReadJson(JsonReader reader, Type objectType, Color existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
{
|
||||
var jo = JObject.Load(reader);
|
||||
int a = jo["A"]?.Value<int>() ?? 255;
|
||||
int r = jo["R"]?.Value<int>() ?? 0;
|
||||
int g = jo["G"]?.Value<int>() ?? 0;
|
||||
int b = jo["B"]?.Value<int>() ?? 0;
|
||||
return Color.FromArgb(a, r, g, b);
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, Color value, JsonSerializer serializer)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
writer.WritePropertyName("A");
|
||||
writer.WriteValue(value.A);
|
||||
writer.WritePropertyName("R");
|
||||
writer.WriteValue(value.R);
|
||||
writer.WritePropertyName("G");
|
||||
writer.WriteValue(value.G);
|
||||
writer.WritePropertyName("B");
|
||||
writer.WriteValue(value.B);
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonConverter(typeof(FontConverter))]
|
||||
public Font FontStyle { get; set; } = new Font("Microsoft Sans Serif", 11.25f);
|
||||
[JsonConverter(typeof(FontConverter))]
|
||||
public Font BigFontStyle { get; set; } = new Font("Microsoft Sans Serif", 14f);
|
||||
[JsonConverter(typeof(ColorConverter))]
|
||||
public Color FontColor { get; set; } = Color.White;
|
||||
[JsonConverter(typeof(ColorConverter))]
|
||||
public Color ComboBoxColor { get; set; } = Color.FromArgb(25, 25, 25);
|
||||
[JsonConverter(typeof(ColorConverter))]
|
||||
public Color SubButtonColor { get; set; } = Color.FromArgb(25, 25, 25);
|
||||
[JsonConverter(typeof(ColorConverter))]
|
||||
public Color TextBoxColor { get; set; } = Color.FromArgb(25, 25, 25);
|
||||
[JsonConverter(typeof(ColorConverter))]
|
||||
public Color ButtonColor { get; set; } = Color.Black;
|
||||
[JsonConverter(typeof(ColorConverter))]
|
||||
public Color BackColor { get; set; } = Color.FromArgb(1, 1, 1);
|
||||
public bool CheckForUpdates { get; set; } = true;
|
||||
public bool EnableMessageBoxes { get; set; } = true;
|
||||
public bool FirstRun { get; set; } = true;
|
||||
public bool DeleteAllAfterInstall { get; set; } = true;
|
||||
public bool AutoUpdateConfig { get; set; } = true;
|
||||
public bool UserJsonOnGameInstall { get; set; } = false;
|
||||
public bool CallUpgrade { get; set; } = true;
|
||||
public string BackPicturePath { get; set; } = string.Empty;
|
||||
public bool SpoofGames { get; set; } = false;
|
||||
public bool ResignAPKs { get; set; } = false;
|
||||
public string IPAddress { get; set; } = string.Empty;
|
||||
public string InstalledApps { get; set; } = string.Empty;
|
||||
public string ADBPath { get; set; } = string.Empty;
|
||||
public string MainDir { get; set; } = string.Empty;
|
||||
public bool Delsh { get; set; } = false;
|
||||
public string CurrPckg { get; set; } = string.Empty;
|
||||
public string ADBFolder { get; set; } = string.Empty;
|
||||
public bool WirelessADB { get; set; } = false;
|
||||
public string CurrentGamename { get; set; } = string.Empty;
|
||||
public bool PackageNameToCB { get; set; } = false;
|
||||
public bool DownUpHeld { get; set; } = false;
|
||||
public string CurrentLogPath { get; set; } = string.Empty;
|
||||
public string CurrentLogName { get; set; } = string.Empty;
|
||||
public string CurrentCrashPath { get; set; } = string.Empty;
|
||||
public string CurrentCrashName { get; set; } = string.Empty;
|
||||
public bool AdbDebugWarned { get; set; } = false;
|
||||
public bool NodeviceMode { get; set; } = false;
|
||||
public bool BMBFChecked { get; set; } = true;
|
||||
public string GamesList { get; set; } = string.Empty;
|
||||
public bool UploadedGameList { get; set; } = false;
|
||||
public string GlobalUsername { get; set; } = string.Empty;
|
||||
public DateTime LastTimeShared { get; set; } = new DateTime(1969, 4, 20, 16, 20, 0);
|
||||
public bool AutoReinstall { get; set; } = false;
|
||||
public string NonAppPackages { get; set; } = string.Empty;
|
||||
public DateTime LastLaunch { get; set; } = new DateTime(1969, 4, 20, 16, 20, 0);
|
||||
public string SubmittedUpdates { get; set; } = string.Empty;
|
||||
public bool ListUpped { get; set; } = false;
|
||||
public DateTime LastLaunch2 { get; set; } = new DateTime(1969, 4, 20, 16, 20, 0);
|
||||
public bool Wired { get; set; } = false;
|
||||
public string AppPackages { get; set; } = string.Empty;
|
||||
public bool TrailersOn { get; set; } = false;
|
||||
public string DownloadDir { get; set; } = string.Empty;
|
||||
public bool CustomDownloadDir { get; set; } = false;
|
||||
public bool CustomBackupDir { get; set; } = false;
|
||||
public string BackupDir { get; set; } = string.Empty;
|
||||
public bool SingleThreadMode { get; set; } = true;
|
||||
public bool VirtualFilesystemCompatibility { get; set; } = false;
|
||||
public bool UpdateSettings { get; set; } = true;
|
||||
public string UUID { get; set; } = Guid.NewGuid().ToString();
|
||||
public bool CreatePubMirrorFile { get; set; } = true;
|
||||
public bool UseDownloadedFiles { get; set; } = false;
|
||||
public float BandwidthLimit { get; set; } = 0f;
|
||||
public bool HideAdultContent { get; set; } = false;
|
||||
public string[] FavoritedGames { get; set; } = new string[0];
|
||||
|
||||
private SettingsManager()
|
||||
{
|
||||
Load();
|
||||
Save();
|
||||
}
|
||||
|
||||
public static SettingsManager Instance => _instance.Value;
|
||||
|
||||
public void Save()
|
||||
{
|
||||
try
|
||||
{
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
|
||||
};
|
||||
|
||||
var json = JsonConvert.SerializeObject(this, settings);
|
||||
File.WriteAllText(settingsFilePath, json);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error saving settings: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private void Load()
|
||||
{
|
||||
Debug.WriteLine("Loading settings...");
|
||||
if (!File.Exists(settingsFilePath))
|
||||
{
|
||||
CreateDefaultSettings();
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var json = File.ReadAllText(settingsFilePath);
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
Error = (sender, args) =>
|
||||
{
|
||||
Debug.WriteLine($"Error deserializing setting: {args.ErrorContext.Error.Message}");
|
||||
args.ErrorContext.Handled = true;
|
||||
}
|
||||
};
|
||||
|
||||
JsonConvert.PopulateObject(json, this, settings);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine($"Error loading settings: {ex.Message}");
|
||||
CreateDefaultSettings();
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateDefaultSettings()
|
||||
{
|
||||
FontStyle = new Font("Microsoft Sans Serif", 11.25f);
|
||||
BigFontStyle = new Font("Microsoft Sans Serif", 14f);
|
||||
FontColor = Color.White;
|
||||
ComboBoxColor = Color.FromArgb(25, 25, 25);
|
||||
SubButtonColor = Color.FromArgb(25, 25, 25);
|
||||
TextBoxColor = Color.FromArgb(25, 25, 25);
|
||||
ButtonColor = Color.Black;
|
||||
BackColor = Color.FromArgb(1, 1, 1);
|
||||
CheckForUpdates = true;
|
||||
EnableMessageBoxes = true;
|
||||
FirstRun = true;
|
||||
DeleteAllAfterInstall = true;
|
||||
AutoUpdateConfig = true;
|
||||
UserJsonOnGameInstall = false;
|
||||
CallUpgrade = true;
|
||||
BackPicturePath = string.Empty;
|
||||
SpoofGames = false;
|
||||
ResignAPKs = false;
|
||||
IPAddress = string.Empty;
|
||||
InstalledApps = string.Empty;
|
||||
ADBPath = string.Empty;
|
||||
MainDir = string.Empty;
|
||||
Delsh = false;
|
||||
CurrPckg = string.Empty;
|
||||
ADBFolder = string.Empty;
|
||||
WirelessADB = false;
|
||||
CurrentGamename = string.Empty;
|
||||
PackageNameToCB = false;
|
||||
DownUpHeld = false;
|
||||
CurrentLogPath = string.Empty;
|
||||
CurrentLogName = string.Empty;
|
||||
CurrentCrashPath = string.Empty;
|
||||
CurrentCrashName = string.Empty;
|
||||
AdbDebugWarned = false;
|
||||
NodeviceMode = false;
|
||||
BMBFChecked = true;
|
||||
GamesList = string.Empty;
|
||||
UploadedGameList = false;
|
||||
GlobalUsername = string.Empty;
|
||||
LastTimeShared = new DateTime(1969, 4, 20, 16, 20, 0);
|
||||
AutoReinstall = false;
|
||||
NonAppPackages = string.Empty;
|
||||
LastLaunch = new DateTime(1969, 4, 20, 16, 20, 0);
|
||||
SubmittedUpdates = string.Empty;
|
||||
ListUpped = false;
|
||||
LastLaunch2 = new DateTime(1969, 4, 20, 16, 20, 0);
|
||||
Wired = false;
|
||||
AppPackages = string.Empty;
|
||||
TrailersOn = false;
|
||||
DownloadDir = string.Empty;
|
||||
CustomDownloadDir = false;
|
||||
CustomBackupDir = false;
|
||||
BackupDir = string.Empty;
|
||||
SingleThreadMode = true;
|
||||
VirtualFilesystemCompatibility = false;
|
||||
UpdateSettings = true;
|
||||
UUID = Guid.NewGuid().ToString();
|
||||
CreatePubMirrorFile = true;
|
||||
UseDownloadedFiles = false;
|
||||
BandwidthLimit = 0f;
|
||||
HideAdultContent = false;
|
||||
FavoritedGames = new string[0];
|
||||
|
||||
Save();
|
||||
Debug.WriteLine("Default settings created.");
|
||||
}
|
||||
|
||||
public void AddFavoriteGame(string packageName)
|
||||
{
|
||||
if (!FavoritedGames.Contains(packageName))
|
||||
{
|
||||
var list = FavoritedGames.ToList();
|
||||
list.Add(packageName);
|
||||
FavoritedGames = list.ToArray();
|
||||
Save();
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveFavoriteGame(string packageName)
|
||||
{
|
||||
if (FavoritedGames.Contains(packageName))
|
||||
{
|
||||
var list = FavoritedGames.ToList();
|
||||
list.Remove(packageName);
|
||||
FavoritedGames = list.ToArray();
|
||||
Save();
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
FontStyle?.Dispose();
|
||||
BigFontStyle?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ namespace AndroidSideloader.Utilities
|
||||
|
||||
internal class Zip
|
||||
{
|
||||
private static readonly SettingsManager settings = SettingsManager.Instance;
|
||||
public static void ExtractFile(string sourceArchive, string destination)
|
||||
{
|
||||
string args = $"x \"{sourceArchive}\" -y -o\"{destination}\" -bsp1";
|
||||
@@ -101,7 +102,7 @@ namespace AndroidSideloader.Utilities
|
||||
errorMessageShown = true;
|
||||
Program.form.Invoke(new Action(() =>
|
||||
{
|
||||
_ = FlexibleMessageBox.Show(Program.form, $"Not enough space to extract archive.\r\nMake sure your {Path.GetPathRoot(Properties.Settings.Default.downloadDir)} drive has at least double the space of the game, then try again.",
|
||||
_ = FlexibleMessageBox.Show(Program.form, $"Not enough space to extract archive.\r\nMake sure your {Path.GetPathRoot(settings.DownloadDir)} drive has at least double the space of the game, then try again.",
|
||||
"NOT ENOUGH SPACE",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
|
||||
22
build.cmd
Normal file
@@ -0,0 +1,22 @@
|
||||
@echo off
|
||||
REM Default to Release if no argument is provided
|
||||
SET CONFIG=Release
|
||||
IF NOT "%1"=="" (
|
||||
IF /I "%1"=="debug" SET CONFIG=Debug
|
||||
)
|
||||
|
||||
REM Windows Batch script version
|
||||
REM Attempts to find MSBuild from common Visual Studio 2022 installation paths
|
||||
IF EXIST "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" (
|
||||
SET MSBUILD="C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe"
|
||||
) ELSE IF EXIST "C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\MSBuild.exe" (
|
||||
SET MSBUILD="C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\MSBuild.exe"
|
||||
) ELSE IF EXIST "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" (
|
||||
SET MSBUILD="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe"
|
||||
) ELSE (
|
||||
echo MSBuild not found! Please check your Visual Studio installation.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Building in %CONFIG% configuration...
|
||||
%MSBUILD% AndroidSideloader.sln /t:AndroidSideloader /p:Configuration=%CONFIG%
|
||||
@@ -1,9 +1,5 @@
|
||||
RSL 2.29
|
||||
RSL 2.34
|
||||
|
||||
- Feature: Prompt to keep temporary files and allow resuming of downloads
|
||||
- Feature: Fixed progress bar jump-back
|
||||
- Feature: Added part tracking during download
|
||||
- Fix: Change UUID calculation. No longer uses system details (caused virus flags)
|
||||
- Fix: Added rclone fallback download
|
||||
- Fix: Additional connect/startup troubleshooting steps
|
||||
- Chore: Bump rclone to 1.66.0
|
||||
- Feature: Allow users to favorite games (right click on game)
|
||||
- Fix: Release Notes not showing with trailers enabled
|
||||
- Fix: Correct Discord Invite link on connection error
|
||||