Compare commits
149 Commits
v2.0-WIP-S
...
v2.5.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0070e44917 | ||
|
|
596e126d2b | ||
|
|
5a6ccf423a | ||
|
|
efadb70d72 | ||
|
|
b1595931c4 | ||
|
|
1e3a9a5a84 | ||
|
|
e0e9a68cb9 | ||
|
|
19c90f0ad4 | ||
|
|
bcc7499807 | ||
|
|
0716ca27c4 | ||
|
|
652d7cb290 | ||
|
|
919286f85c | ||
|
|
3be98530b6 | ||
|
|
b4e21a9d5b | ||
|
|
6d3885dc48 | ||
|
|
8aff424ccc | ||
|
|
f50ebdd28c | ||
|
|
5608565275 | ||
|
|
9f783b3b1a | ||
|
|
02156985aa | ||
|
|
a81cb1e496 | ||
|
|
688bf0a274 | ||
|
|
5d84133c3e | ||
|
|
8e9e5cfb88 | ||
|
|
3d19cab51c | ||
|
|
e8a3f5e34e | ||
|
|
e1ed9af1d7 | ||
|
|
d154d67c57 | ||
|
|
fb9d4ab0d3 | ||
|
|
2f34ac8848 | ||
|
|
9e352c3144 | ||
|
|
b07e6bc12c | ||
|
|
f8ee9b493a | ||
|
|
d66e6f55d3 | ||
|
|
25358d3a6d | ||
|
|
8088c2cf11 | ||
|
|
3b684142e9 | ||
|
|
e0945a71ac | ||
|
|
a63b8b2a5c | ||
|
|
69dfd9ca00 | ||
|
|
ebacfc0e42 | ||
|
|
9a3e9617b5 | ||
|
|
20607bf3b4 | ||
|
|
063b0d05d5 | ||
|
|
306e2eb19b | ||
|
|
119a95406e | ||
|
|
2bd4bda513 | ||
|
|
4126c82f4d | ||
|
|
d35fed0217 | ||
|
|
111d3a7176 | ||
|
|
5e235c5125 | ||
|
|
9ccf7811e5 | ||
|
|
93d606bcac | ||
|
|
8d0eb4a84d | ||
|
|
6f20154599 | ||
|
|
bbe84000b7 | ||
|
|
30ead79ed1 | ||
|
|
97b6da3abe | ||
|
|
6c2a7413b4 | ||
|
|
744ce530dc | ||
|
|
8a299748aa | ||
|
|
e76f619311 | ||
|
|
b3ea6cacae | ||
|
|
93a4629739 | ||
|
|
93263a4afe | ||
|
|
23990935d1 | ||
|
|
bf41013add | ||
|
|
0acc36feed | ||
|
|
3301227163 | ||
|
|
45d1981451 | ||
|
|
f22636d81f | ||
|
|
bd8e94c210 | ||
|
|
cac88cae92 | ||
|
|
4370e922ef | ||
|
|
caa4f78943 | ||
|
|
d3b988546f | ||
|
|
cbdde48344 | ||
|
|
3b830d9f67 | ||
|
|
7572ddb84e | ||
|
|
7c6f05361e | ||
|
|
5b54f195f1 | ||
|
|
bd71e07b19 | ||
|
|
5b5ce78471 | ||
|
|
c96a98b38a | ||
|
|
b0bb41732d | ||
|
|
c6ef62c6ca | ||
|
|
0b04783962 | ||
|
|
5fab216798 | ||
|
|
a37c843a99 | ||
|
|
222edcd6a8 | ||
|
|
130140727b | ||
|
|
5ec2f260fc | ||
|
|
a7ad7c0a83 | ||
|
|
bd511d28a8 | ||
|
|
75a75bd627 | ||
|
|
0bc0f6668a | ||
|
|
f72c6b8d95 | ||
|
|
3952931831 | ||
|
|
9346b75916 | ||
|
|
b9e98894e9 | ||
|
|
c2b4fb499c | ||
|
|
e040e36564 | ||
|
|
459a496bbb | ||
|
|
e8fcae997b | ||
|
|
9912af4acc | ||
|
|
f243853fca | ||
|
|
fc98d61304 | ||
|
|
d38af14ed4 | ||
|
|
17165c35a9 | ||
|
|
5e30e3a22c | ||
|
|
bba48c5dc5 | ||
|
|
5d75edaf63 | ||
|
|
62d9187cfa | ||
|
|
cf1dda5e5b | ||
|
|
a5f6590019 | ||
|
|
b7cd6c1cb4 | ||
|
|
452e733b3a | ||
|
|
146defaef3 | ||
|
|
fb2b6c0a58 | ||
|
|
cec0104b05 | ||
|
|
7c78acb9bd | ||
|
|
7cad9565b2 | ||
|
|
a47918841f | ||
|
|
b8e28b38ff | ||
|
|
2f66e7bf88 | ||
|
|
30f6dc9064 | ||
|
|
8f937ee8f3 | ||
|
|
94b7aac050 | ||
|
|
89c58b202e | ||
|
|
7d2f61d5ab | ||
|
|
80ae3f6485 | ||
|
|
150485fd3a | ||
|
|
1f63bebc20 | ||
|
|
cdd0a70a3e | ||
|
|
336d86b20b | ||
|
|
dea5d3db9c | ||
|
|
402e1679e2 | ||
|
|
9b4c8485d6 | ||
|
|
8b4289d11f | ||
|
|
e6ff0b0ce0 | ||
|
|
4362d0d706 | ||
|
|
f4d0969102 | ||
|
|
f713c217e1 | ||
|
|
89e6b84183 | ||
|
|
c5f7ef003a | ||
|
|
1276891835 | ||
|
|
2de54924a3 | ||
|
|
7130e9e4e0 | ||
|
|
ebfafbbcb6 |
21
.gitignore
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
################################################################################
|
||||
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
|
||||
################################################################################
|
||||
*.pdb
|
||||
*.xml
|
||||
*.xsd
|
||||
bin/
|
||||
adb/
|
||||
rclone/
|
||||
thumbnails/
|
||||
notes/
|
||||
.vs/
|
||||
/.vs/AndroidSideloader/v16/.suo
|
||||
/adb/adb.exe
|
||||
installedPackages.json
|
||||
AndroidSideloader.csproj.user
|
||||
AndroidSideloader.csproj.user
|
||||
AndroidSideloader.csproj.user
|
||||
/AndroidSideloader v2.1.exe
|
||||
/crashlog.txt
|
||||
/debuglog.txt
|
||||
7
.vs/VSWorkspaceState.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"SelectedNode": "\\Sideloader.cs",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
||||
BIN
.vs/slnx.sqlite
Normal file
346
ADB.cs
@@ -1,24 +1,40 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
|
||||
|
||||
class ADB
|
||||
{
|
||||
static Process adb = new Process();
|
||||
public static string adbFolderPath = Environment.CurrentDirectory + "\\adb";
|
||||
public static string adbFolderPath = "C:\\RSL\\2.1.1\\ADB";
|
||||
public static string adbFilePath = adbFolderPath + "\\adb.exe";
|
||||
public static string DeviceID = "";
|
||||
|
||||
public static string package = "";
|
||||
public static ProcessOutput RunAdbCommandToString(string command)
|
||||
{
|
||||
Properties.Settings.Default.ADBFolder = adbFolderPath;
|
||||
Properties.Settings.Default.ADBPath = adbFilePath;
|
||||
Properties.Settings.Default.Save();
|
||||
if (DeviceID.Length > 1)
|
||||
{
|
||||
command = $" -s {DeviceID} {command}";
|
||||
}
|
||||
if (!command.Contains("dumpsys") && !command.Contains("shell pm list packages") && !command.Contains("KEYCODE_WAKEUP"))
|
||||
{
|
||||
|
||||
Logger.Log($"Running command {command}");
|
||||
string logcmd = command;
|
||||
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
|
||||
Logger.Log($"Running command: {logcmd}");
|
||||
}
|
||||
adb.StartInfo.FileName = adbFilePath;
|
||||
adb.StartInfo.Arguments = command;
|
||||
adb.StartInfo.RedirectStandardError = true;
|
||||
@@ -27,7 +43,6 @@ namespace AndroidSideloader
|
||||
adb.StartInfo.CreateNoWindow = true;
|
||||
adb.StartInfo.UseShellExecute = false;
|
||||
adb.StartInfo.WorkingDirectory = adbFolderPath;
|
||||
|
||||
adb.Start();
|
||||
adb.StandardInput.WriteLine(command);
|
||||
adb.StandardInput.Flush();
|
||||
@@ -42,12 +57,137 @@ namespace AndroidSideloader
|
||||
error = adb.StandardError.ReadToEnd();
|
||||
}
|
||||
catch { }
|
||||
if (command.Contains("connect"))
|
||||
{
|
||||
bool graceful = adb.WaitForExit(3000); //Wait 3 secs.
|
||||
if (!graceful)
|
||||
{
|
||||
adb.Kill();
|
||||
}
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
if (error.Contains("ADB_VENDOR_KEYS"))
|
||||
{
|
||||
FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
ADB.WakeDevice();
|
||||
}
|
||||
if (error.Contains("not enough storage space"))
|
||||
{
|
||||
FlexibleMessageBox.Show("There is not enough room on your device to install this package. Please clear AT LEAST 2x the amount of the app you are trying to install.");
|
||||
}
|
||||
if (!output.Contains("version") && !output.Contains("KEYCODE_WAKEUP") && !output.Contains("KEYCODE_WAKEUP") && !output.Contains("Filesystem") && !output.Contains("package:") && !output.Equals(null))
|
||||
Logger.Log(output);
|
||||
Logger.Log(error);
|
||||
return new ProcessOutput(output, error);
|
||||
}
|
||||
public static ProcessOutput RunAdbCommandToStringWOADB(string result, string path)
|
||||
{
|
||||
string command = result;
|
||||
Properties.Settings.Default.ADBFolder = adbFolderPath;
|
||||
Properties.Settings.Default.ADBPath = adbFilePath;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
adb.WaitForExit();
|
||||
string logcmd = command;
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
|
||||
Logger.Log($"Running command: {logcmd}");
|
||||
|
||||
adb.StartInfo.FileName = "cmd.exe";
|
||||
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 = "";
|
||||
|
||||
try
|
||||
{
|
||||
output += adb.StandardOutput.ReadToEnd();
|
||||
error += adb.StandardError.ReadToEnd();
|
||||
}
|
||||
catch { }
|
||||
if (command.Contains("connect"))
|
||||
{
|
||||
bool graceful = adb.WaitForExit(3000);
|
||||
if (!graceful)
|
||||
{
|
||||
adb.Kill();
|
||||
}
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
if (error.Contains("ADB_VENDOR_KEYS"))
|
||||
{
|
||||
FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
ADB.WakeDevice();
|
||||
}
|
||||
Logger.Log(output);
|
||||
Logger.Log(error);
|
||||
return new ProcessOutput(output, error);
|
||||
}
|
||||
public static ProcessOutput RunCommandToString(string result, string path = "")
|
||||
{
|
||||
string command = result;
|
||||
Properties.Settings.Default.ADBFolder = adbFolderPath;
|
||||
Properties.Settings.Default.ADBPath = adbFilePath;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
string logcmd = command;
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
|
||||
Logger.Log($"Running command: {logcmd}");
|
||||
adb.StartInfo.FileName = "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 = "";
|
||||
|
||||
try
|
||||
{
|
||||
output += adb.StandardOutput.ReadToEnd();
|
||||
error += adb.StandardError.ReadToEnd();
|
||||
}
|
||||
catch { }
|
||||
if (command.Contains("connect"))
|
||||
{
|
||||
bool graceful = adb.WaitForExit(3000);
|
||||
if (!graceful)
|
||||
{
|
||||
adb.Kill();
|
||||
}
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
if (error.Contains("ADB_VENDOR_KEYS"))
|
||||
{
|
||||
FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
ADB.WakeDevice();
|
||||
}
|
||||
Logger.Log(output);
|
||||
Logger.Log(error);
|
||||
return new ProcessOutput(output, error);
|
||||
}
|
||||
|
||||
|
||||
public static ProcessOutput UninstallPackage(string package)
|
||||
{
|
||||
@@ -105,21 +245,205 @@ namespace AndroidSideloader
|
||||
|
||||
public static void WakeDevice()
|
||||
{
|
||||
RunAdbCommandToString("shell input keyevent KEYCODE_WAKEUP");
|
||||
string devicesout = RunAdbCommandToString("shell input keyevent KEYCODE_WAKEUP").Output;
|
||||
if (!devicesout.Contains("found"))
|
||||
{
|
||||
if (Properties.Settings.Default.IPAddress.Contains("connect"))
|
||||
{
|
||||
|
||||
RunAdbCommandToString(Properties.Settings.Default.IPAddress);
|
||||
string response = RunAdbCommandToString(Properties.Settings.Default.IPAddress).Output;
|
||||
|
||||
if (response.Contains("cannot") || String.IsNullOrEmpty(response))
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Either your Quest is idle or you have rebooted the device.\nRSL's wireless ADB will persist on PC reboot but not on Quest reboot.\n\nNOTE: If you haven't rebooted your Quest it may be idle.\n\nTo prevent this press the HOLD button 2x prior to launching RSL. Or\nkeep your Quest plugged into power to keep it permanently \"awake\".\n\nHave you assigned your Quest a static IP in your router configuration?\n\nIf you no longer want to use Wireless ADB or your device was idle please hit CANCEL.", "DEVICE REBOOTED\\IDLE?", MessageBoxButtons.YesNoCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
DialogResult dialogResult2 = FlexibleMessageBox.Show("PRESS YES TO DISABLE WIRELESS ADB.\n\nIf your Quest went idle press the HOLD button on the device twice then press NO to reconnect.\n\nIf you just want to exit this prompt press CANCEL.", "DISABLE WIRELESS ADB?", MessageBoxButtons.YesNoCancel);
|
||||
if (dialogResult2 == DialogResult.No)
|
||||
WakeDevice();
|
||||
if (dialogResult2 == DialogResult.Yes)
|
||||
{
|
||||
Properties.Settings.Default.IPAddress = "";
|
||||
Properties.Settings.Default.Save();
|
||||
WakeDevice();
|
||||
}
|
||||
if (dialogResult2 == DialogResult.Cancel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
else if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
FlexibleMessageBox.Show("Connect your Quest to USB so we can reconnect to your saved IP address!");
|
||||
RunAdbCommandToString("devices");
|
||||
Thread.Sleep(250);
|
||||
RunAdbCommandToString("disconnect");
|
||||
Thread.Sleep(50);
|
||||
RunAdbCommandToString("connect");
|
||||
Thread.Sleep(50);
|
||||
RunAdbCommandToString("tcpip 5555");
|
||||
Thread.Sleep(500);
|
||||
RunAdbCommandToString(Properties.Settings.Default.IPAddress);
|
||||
MessageBox.Show($"Connected! We can now automatically enable wake on wifi. This makes it so Rookie can work wirelessly even if the device has entered \"sleep mode\". This setting is NOT permanent and resets upon Quest reboot just like wireless ADB functionality.\n\n After testing with this setting off and on the difference in battery usage seems nonexistent. We recommend this setting for the majority of users for ease of use purposes. If you click NO you must keep your Quest connected to a charger OR wake your device and then put it back on hold before using Rookie wirelessly. Do you want to enable wake on wifi?", "Enable Wake on Wifi?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
|
||||
RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
|
||||
RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
|
||||
}
|
||||
if (dialogResult == DialogResult.No)
|
||||
{
|
||||
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
FlexibleMessageBox.Show("You must repeat the entire connection process, press OK to begin.", "Reconfigure Wireless ADB", MessageBoxButtons.OK);
|
||||
RunAdbCommandToString("devices");
|
||||
RunAdbCommandToString("tcpip 5555");
|
||||
FlexibleMessageBox.Show("Press OK to get your Quest's local IP address.", "Obtain local IP address", MessageBoxButtons.OK);
|
||||
Thread.Sleep(1000);
|
||||
string input = RunAdbCommandToString("shell ip route").Output;
|
||||
|
||||
Properties.Settings.Default.WirelessADB = true;
|
||||
Properties.Settings.Default.Save();
|
||||
string[] strArrayOne = new string[] { "" };
|
||||
strArrayOne = input.Split(' ');
|
||||
if (strArrayOne[0].Length > 7)
|
||||
{
|
||||
string IPaddr = strArrayOne[8];
|
||||
string IPcmnd = "connect " + IPaddr + ":5555";
|
||||
FlexibleMessageBox.Show($"Your Quest's local IP address is: {IPaddr}\n\nPlease disconnect your Quest then wait 2 seconds.\nOnce it is disconnected hit OK", "", MessageBoxButtons.OK);
|
||||
Thread.Sleep(2000);
|
||||
ADB.RunAdbCommandToString(IPcmnd);
|
||||
Properties.Settings.Default.IPAddress = IPcmnd;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
MessageBox.Show($"Connected! We can now automatically disable the Quest wifi chip from falling asleep. This makes it so Rookie can work wirelessly even if the device has entered \"sleep mode\". This setting is NOT permanent and resets upon Quest reboot, just like wireless ADB functionality.\n\nNOTE: This may cause the device battery to drain while it is in sleep mode at a very slightly increased rate. We recommend this setting for the majority of users for ease of use purposes. If you click NO you must keep your Quest connected to a charger or wake your device and then put it back on hold before using Rookie wirelessly. Do you want us to stop sleep mode from disabling wireless ADB?", "", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
|
||||
}
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static ProcessOutput Sideload(string path)
|
||||
|
||||
public static ProcessOutput Sideload(string path = "", string packagename = "")
|
||||
{
|
||||
|
||||
WakeDevice();
|
||||
return RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
ProcessOutput ret = new ProcessOutput();
|
||||
Program.form.ChangeTitle($"Sideloading {Path.GetFileName(path)}");
|
||||
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
string out2 = ret.Output + ret.Error;
|
||||
if (out2.Contains("failed"))
|
||||
{
|
||||
string BackupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
|
||||
if (out2.Contains("offline"))
|
||||
{
|
||||
DialogResult dialogResult2 = FlexibleMessageBox.Show("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);
|
||||
if (dialogResult2 == DialogResult.Yes)
|
||||
ADB.WakeDevice();
|
||||
}
|
||||
if (out2.Contains($"INSTALL_FAILED_UPDATE_INCOMPATIBLE") || out2.Contains("INSTALL_FAILED_VERSION_DOWNGRADE"))
|
||||
{
|
||||
ret.Error = string.Empty;
|
||||
ret.Output = string.Empty;
|
||||
|
||||
|
||||
FlexibleMessageBox.Show($"In place upgrade for {packagename} failed. We will need to upgrade by uninstalling, and keeping savedata isn't guaranteed. Continue?", "UPGRADE FAILED!", MessageBoxButtons.OKCancel);
|
||||
|
||||
string date_str = DateTime.Today.ToString("yyyy.MM.dd");
|
||||
string CurrBackups = Path.Combine(BackupFolder, date_str);
|
||||
|
||||
|
||||
FlexibleMessageBox.Show($"Searching for save files...", "Searching!", MessageBoxButtons.OK);
|
||||
if (Directory.Exists($"/sdcard/Android/data/{packagename}"))
|
||||
{
|
||||
FlexibleMessageBox.Show($"Trying to backup save to Documents\\Rookie Backups\\{date_str}(YYYY.MM.DD)\\{packagename}", "Save files found", MessageBoxButtons.OK);
|
||||
Directory.CreateDirectory(CurrBackups);
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{packagename}\" \"{CurrBackups}\"");
|
||||
}
|
||||
else
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"No savedata found! Continue with the uninstall!", "None Found", MessageBoxButtons.OK);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
ADB.WakeDevice();
|
||||
ret += ADB.RunAdbCommandToString("shell pm uninstall " + package);
|
||||
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
return ret;
|
||||
}
|
||||
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
}
|
||||
string gamenameforQU = Sideloader.PackageNametoGameName(packagename);
|
||||
if (Properties.Settings.Default.QUturnedon)
|
||||
{
|
||||
if (gamenameforQU.Contains("-QU") || path.Contains("-QU"))
|
||||
{
|
||||
string gameName = packagename;
|
||||
packagename = Sideloader.gameNameToPackageName(gameName);
|
||||
|
||||
Program.form.ChangeTitle("Pushing Custom QU S3 Config.JSON.");
|
||||
if (!Directory.Exists($"/sdcard/android/data/{packagename}"))
|
||||
RunAdbCommandToString($"shell mkdir /sdcard/android/data/{packagename}");
|
||||
if (!Directory.Exists($"/sdcard/android/data/{packagename}/private"))
|
||||
RunAdbCommandToString($"shell mkdir /sdcard/android/data/{packagename}/private");
|
||||
|
||||
Random r = new Random();
|
||||
int x = r.Next(999999999);
|
||||
int y = r.Next(9999999);
|
||||
|
||||
var sum = ((long)y * (long)1000000000) + (long)x;
|
||||
|
||||
int x2 = r.Next(999999999);
|
||||
int y2 = r.Next(9999999);
|
||||
|
||||
var sum2 = ((long)y2 * (long)1000000000) + (long)x2;
|
||||
ADB.WakeDevice();
|
||||
Properties.Settings.Default.QUStringF = $"{{\"user_id\":{sum},\"app_id\":\"{sum2}\",";
|
||||
Properties.Settings.Default.Save();
|
||||
string boff = Properties.Settings.Default.QUStringF + Properties.Settings.Default.QUString;
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\config.json", boff);
|
||||
string blank = "";
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\delete_settings", blank);
|
||||
ret += ADB.RunAdbCommandToString($"push \"{Properties.Settings.Default.MainDir}\\delete_settings\" /sdcard/android/data/{packagename}/private/delete_settings");
|
||||
ret += ADB.RunAdbCommandToString($"push \"{Properties.Settings.Default.MainDir}\\config.json\" /sdcard/android/data/{packagename}/private/config.json");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Program.form.ChangeTitle("");
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static ProcessOutput CopyOBB(string path)
|
||||
{
|
||||
WakeDevice();
|
||||
if (SideloaderUtilities.CheckFolderIsObb(path))
|
||||
return RunAdbCommandToString($"push \"{path}\" /sdcard/Android/obb");
|
||||
return new ProcessOutput("","");
|
||||
|
||||
string folder = Path.GetFileName(path);
|
||||
if (!folder.Contains("+") && !folder.Contains("_") && folder.Contains("."))
|
||||
{
|
||||
return RunAdbCommandToString($"push \"{path}\" \"/sdcard/Android/obb\"");
|
||||
}
|
||||
return new ProcessOutput();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
AndroidSideloader v2.1HF.exe
Normal file
@@ -242,7 +242,6 @@
|
||||
<DependentUpon>UsernameForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<None Include=".editorconfig" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
@@ -253,6 +252,7 @@
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<None Include="version" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
@@ -260,6 +260,15 @@
|
||||
<ItemGroup>
|
||||
<Content Include="changelog.txt" />
|
||||
<Content Include="icon.ico" />
|
||||
<Content Include="ChangelogHistory.txt" />
|
||||
<None Include="Resources\battery11.png" />
|
||||
<None Include="Resources\battery.png" />
|
||||
<None Include="Resources\battery1.png" />
|
||||
<Content Include="Resources\bluekey.png" />
|
||||
<Content Include="Resources\redkey.png" />
|
||||
<None Include="Resources\greenkey.png" />
|
||||
<None Include="Resources\orangekey.png" />
|
||||
<None Include="Resources\SearchGlass.PNG" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
|
||||
|
||||
@@ -39,8 +39,8 @@ Global
|
||||
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|Any CPU.Build.0 = x86|Any CPU
|
||||
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x64.ActiveCfg = x86|x64
|
||||
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x64.Build.0 = x86|x64
|
||||
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.ActiveCfg = x86|x86
|
||||
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.Build.0 = x86|x86
|
||||
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.ActiveCfg = Release|x86
|
||||
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
87
App.config
@@ -27,7 +27,7 @@
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="userJsonOnGameInstall" serializeAs="String">
|
||||
<value>True</value>
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="CallUpgrade" serializeAs="String">
|
||||
<value>True</value>
|
||||
@@ -51,7 +51,7 @@
|
||||
<value>White</value>
|
||||
</setting>
|
||||
<setting name="FontStyle" serializeAs="String">
|
||||
<value>Microsoft Sans Serif, 11.25pt</value>
|
||||
<value>Microsoft Sans Serif, 11pt</value>
|
||||
</setting>
|
||||
<setting name="BackPicturePath" serializeAs="String">
|
||||
<value />
|
||||
@@ -63,11 +63,92 @@
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="BigFontStyle" serializeAs="String">
|
||||
<value>Microsoft Sans Serif, 16pt</value>
|
||||
<value>Microsoft Sans Serif, 14pt</value>
|
||||
</setting>
|
||||
<setting name="ResignAPKs" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="IPAddress" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InstalledApps" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="ADBPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="QUsett" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="QuChecked" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="QUhz" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="QUres" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="QUy" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="QUx" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="QUname" serializeAs="String">
|
||||
<value>Change Me</value>
|
||||
</setting>
|
||||
<setting name="QUString" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="MainDir" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="QUStringF" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="delsh" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="CurrPckg" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="ADBFolder" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="WirelessADB" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="CurrentGamename" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="PackageNameToCB" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="EnterKeyInstall" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="DownUpHeld" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="CurrentLogPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="CurrentLogName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="CurrentCrashPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="CurrentCrashName" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="QUturnedon" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="QblindOn" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</AndroidSideloader.Properties.Settings>
|
||||
<AndroidADB.Sideloader.Properties.Settings>
|
||||
<setting name="checkForUpdates" serializeAs="String">
|
||||
|
||||
1404
ChangelogHistory.txt
Normal file
@@ -30,7 +30,7 @@ public class ListViewColumnSorter : IComparer
|
||||
ColumnToSort = 0;
|
||||
|
||||
// Initialize the sort order to 'none'
|
||||
OrderOfSort = SortOrder.None;
|
||||
OrderOfSort = SortOrder.Ascending;
|
||||
|
||||
// Initialize the CaseInsensitiveComparer object
|
||||
ObjectCompare = new CaseInsensitiveComparer();
|
||||
|
||||
@@ -39,7 +39,13 @@ namespace JR.Utils.GUI.Forms
|
||||
*
|
||||
* FlexibleMessageBox.Show("Some text with a link: www.google.com",
|
||||
* "Some caption",
|
||||
* MessageBoxButtons.AbortRetryIgnore,
|
||||
* MessageBoxButton
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* s.AbortRetryIgnore,
|
||||
* MessageBoxIcon.Information,
|
||||
* MessageBoxDefaultButton.Button2);
|
||||
*
|
||||
@@ -374,6 +380,7 @@ namespace JR.Utils.GUI.Forms
|
||||
//
|
||||
// FlexibleMessageBoxForm
|
||||
//
|
||||
this.TopMost = true;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(260, 102);
|
||||
|
||||
907
MainForm.Designer.cs
generated
1968
MainForm.cs
@@ -19,7 +19,7 @@ namespace AndroidSideloader
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
|
||||
|
||||
form = new MainForm();
|
||||
Application.Run(form);
|
||||
//form.Show();
|
||||
@@ -28,7 +28,8 @@ namespace AndroidSideloader
|
||||
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
|
||||
{
|
||||
Exception e = (Exception)args.ExceptionObject;
|
||||
File.WriteAllText(Sideloader.CrashLogPath, $"Message: {e.Message}\nData: {e.Data}\nSource: {e.Source}\nTargetSite: {e.TargetSite}");
|
||||
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}\nData: {e.Data}\nSource: {e.Source}\nTargetSite: {e.TargetSite}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
80
Properties/Resources.Designer.cs
generated
@@ -59,5 +59,85 @@ namespace AndroidSideloader.Properties {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap battery {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("battery", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <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>
|
||||
public static System.Drawing.Bitmap bluekey {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("bluekey", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap greenkey {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("greenkey", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap orangekey {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("orangekey", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap redkey {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("redkey", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap SearchGlass {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("SearchGlass", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,4 +117,29 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="orangekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\orangekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="greenkey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\greenkey.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="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="SearchGlass" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SearchGlass.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="bluekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\bluekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="redkey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\redkey.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>
|
||||
</root>
|
||||
332
Properties/Settings.Designer.cs
generated
@@ -12,7 +12,7 @@ namespace AndroidSideloader.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -85,7 +85,7 @@ namespace AndroidSideloader.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool userJsonOnGameInstall {
|
||||
get {
|
||||
return ((bool)(this["userJsonOnGameInstall"]));
|
||||
@@ -181,7 +181,7 @@ namespace AndroidSideloader.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 11.25pt")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 11pt")]
|
||||
public global::System.Drawing.Font FontStyle {
|
||||
get {
|
||||
return ((global::System.Drawing.Font)(this["FontStyle"]));
|
||||
@@ -229,7 +229,7 @@ namespace AndroidSideloader.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 16pt")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 14pt")]
|
||||
public global::System.Drawing.Font BigFontStyle {
|
||||
get {
|
||||
return ((global::System.Drawing.Font)(this["BigFontStyle"]));
|
||||
@@ -250,5 +250,329 @@ namespace AndroidSideloader.Properties {
|
||||
this["ResignAPKs"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string IPAddress {
|
||||
get {
|
||||
return ((string)(this["IPAddress"]));
|
||||
}
|
||||
set {
|
||||
this["IPAddress"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InstalledApps {
|
||||
get {
|
||||
return ((string)(this["InstalledApps"]));
|
||||
}
|
||||
set {
|
||||
this["InstalledApps"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string ADBPath {
|
||||
get {
|
||||
return ((string)(this["ADBPath"]));
|
||||
}
|
||||
set {
|
||||
this["ADBPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool QUsett {
|
||||
get {
|
||||
return ((bool)(this["QUsett"]));
|
||||
}
|
||||
set {
|
||||
this["QUsett"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string QuChecked {
|
||||
get {
|
||||
return ((string)(this["QuChecked"]));
|
||||
}
|
||||
set {
|
||||
this["QuChecked"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public string QUhz {
|
||||
get {
|
||||
return ((string)(this["QUhz"]));
|
||||
}
|
||||
set {
|
||||
this["QUhz"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public string QUres {
|
||||
get {
|
||||
return ((string)(this["QUres"]));
|
||||
}
|
||||
set {
|
||||
this["QUres"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public string QUy {
|
||||
get {
|
||||
return ((string)(this["QUy"]));
|
||||
}
|
||||
set {
|
||||
this["QUy"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public string QUx {
|
||||
get {
|
||||
return ((string)(this["QUx"]));
|
||||
}
|
||||
set {
|
||||
this["QUx"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Change Me")]
|
||||
public string QUname {
|
||||
get {
|
||||
return ((string)(this["QUname"]));
|
||||
}
|
||||
set {
|
||||
this["QUname"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string QUString {
|
||||
get {
|
||||
return ((string)(this["QUString"]));
|
||||
}
|
||||
set {
|
||||
this["QUString"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string MainDir {
|
||||
get {
|
||||
return ((string)(this["MainDir"]));
|
||||
}
|
||||
set {
|
||||
this["MainDir"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string QUStringF {
|
||||
get {
|
||||
return ((string)(this["QUStringF"]));
|
||||
}
|
||||
set {
|
||||
this["QUStringF"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool delsh {
|
||||
get {
|
||||
return ((bool)(this["delsh"]));
|
||||
}
|
||||
set {
|
||||
this["delsh"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string CurrPckg {
|
||||
get {
|
||||
return ((string)(this["CurrPckg"]));
|
||||
}
|
||||
set {
|
||||
this["CurrPckg"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string ADBFolder {
|
||||
get {
|
||||
return ((string)(this["ADBFolder"]));
|
||||
}
|
||||
set {
|
||||
this["ADBFolder"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool WirelessADB {
|
||||
get {
|
||||
return ((bool)(this["WirelessADB"]));
|
||||
}
|
||||
set {
|
||||
this["WirelessADB"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string CurrentGamename {
|
||||
get {
|
||||
return ((string)(this["CurrentGamename"]));
|
||||
}
|
||||
set {
|
||||
this["CurrentGamename"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool PackageNameToCB {
|
||||
get {
|
||||
return ((bool)(this["PackageNameToCB"]));
|
||||
}
|
||||
set {
|
||||
this["PackageNameToCB"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool EnterKeyInstall {
|
||||
get {
|
||||
return ((bool)(this["EnterKeyInstall"]));
|
||||
}
|
||||
set {
|
||||
this["EnterKeyInstall"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool DownUpHeld {
|
||||
get {
|
||||
return ((bool)(this["DownUpHeld"]));
|
||||
}
|
||||
set {
|
||||
this["DownUpHeld"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string CurrentLogPath {
|
||||
get {
|
||||
return ((string)(this["CurrentLogPath"]));
|
||||
}
|
||||
set {
|
||||
this["CurrentLogPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string CurrentLogName {
|
||||
get {
|
||||
return ((string)(this["CurrentLogName"]));
|
||||
}
|
||||
set {
|
||||
this["CurrentLogName"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string CurrentCrashPath {
|
||||
get {
|
||||
return ((string)(this["CurrentCrashPath"]));
|
||||
}
|
||||
set {
|
||||
this["CurrentCrashPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string CurrentCrashName {
|
||||
get {
|
||||
return ((string)(this["CurrentCrashName"]));
|
||||
}
|
||||
set {
|
||||
this["CurrentCrashName"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool QUturnedon {
|
||||
get {
|
||||
return ((bool)(this["QUturnedon"]));
|
||||
}
|
||||
set {
|
||||
this["QUturnedon"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool QblindOn {
|
||||
get {
|
||||
return ((bool)(this["QblindOn"]));
|
||||
}
|
||||
set {
|
||||
this["QblindOn"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="userJsonOnGameInstall" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="CallUpgrade" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
@@ -42,7 +42,7 @@
|
||||
<Value Profile="(Default)">White</Value>
|
||||
</Setting>
|
||||
<Setting Name="FontStyle" Type="System.Drawing.Font" Scope="User">
|
||||
<Value Profile="(Default)">Microsoft Sans Serif, 11.25pt</Value>
|
||||
<Value Profile="(Default)">Microsoft Sans Serif, 11pt</Value>
|
||||
</Setting>
|
||||
<Setting Name="BackPicturePath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
@@ -54,10 +54,91 @@
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="BigFontStyle" Type="System.Drawing.Font" Scope="User">
|
||||
<Value Profile="(Default)">Microsoft Sans Serif, 16pt</Value>
|
||||
<Value Profile="(Default)">Microsoft Sans Serif, 14pt</Value>
|
||||
</Setting>
|
||||
<Setting Name="ResignAPKs" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="IPAddress" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InstalledApps" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="ADBPath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="QUsett" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="QuChecked" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="QUhz" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="QUres" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="QUy" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="QUx" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="QUname" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">Change Me</Value>
|
||||
</Setting>
|
||||
<Setting Name="QUString" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="MainDir" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="QUStringF" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="delsh" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="CurrPckg" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="ADBFolder" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="WirelessADB" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="CurrentGamename" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="PackageNameToCB" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="EnterKeyInstall" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="DownUpHeld" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="CurrentLogPath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="CurrentLogName" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="CurrentCrashPath" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="CurrentCrashName" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="QUturnedon" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="QblindOn" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
725
QuestForm.Designer.cs
generated
@@ -1,10 +1,14 @@
|
||||
namespace AndroidSideloader
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
partial class QuestForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
///
|
||||
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
@@ -28,98 +32,288 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.TextureResTextBox = new System.Windows.Forms.TextBox();
|
||||
this.ResolutionLabel = new System.Windows.Forms.Label();
|
||||
this.GPUComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.ResetQU = new System.Windows.Forms.Button();
|
||||
this.deleteButton = new System.Windows.Forms.Button();
|
||||
this.questPics = new System.Windows.Forms.Button();
|
||||
this.questVids = new System.Windows.Forms.Button();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.QUon = new System.Windows.Forms.CheckBox();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.DeleteShots = new System.Windows.Forms.CheckBox();
|
||||
this.splitter1 = new System.Windows.Forms.Splitter();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.CPUComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.GPUComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.ResolutionLabel = new System.Windows.Forms.Label();
|
||||
this.FOVy = new System.Windows.Forms.TextBox();
|
||||
this.FOVx = new System.Windows.Forms.TextBox();
|
||||
this.UsrBox = new System.Windows.Forms.TextBox();
|
||||
this.ResBox = new System.Windows.Forms.TextBox();
|
||||
this.TextureResTextBox = new System.Windows.Forms.TextBox();
|
||||
this.QUEnable = new System.Windows.Forms.Button();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.QURfrRt = new System.Windows.Forms.ComboBox();
|
||||
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.WifiWake = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// RefreshRateComboBox
|
||||
// label1
|
||||
//
|
||||
this.RefreshRateComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
|
||||
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));
|
||||
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.RefreshRateComboBox.FormattingEnabled = true;
|
||||
this.RefreshRateComboBox.Items.AddRange(new object[] {
|
||||
"72",
|
||||
"90"});
|
||||
this.RefreshRateComboBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.RefreshRateComboBox.Name = "RefreshRateComboBox";
|
||||
this.RefreshRateComboBox.Size = new System.Drawing.Size(345, 26);
|
||||
this.RefreshRateComboBox.TabIndex = 0;
|
||||
this.RefreshRateComboBox.Text = "Select refresh rate";
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.ForeColor = System.Drawing.Color.LightCyan;
|
||||
this.label1.Location = new System.Drawing.Point(31, 5);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(309, 20);
|
||||
this.label1.TabIndex = 6;
|
||||
this.label1.Text = "Temporary settings for all Quest apps";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// button1
|
||||
// label2
|
||||
//
|
||||
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.button1.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.button1.Location = new System.Drawing.Point(12, 138);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(87, 34);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "Apply";
|
||||
this.button1.UseVisualStyleBackColor = false;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label2.ForeColor = System.Drawing.Color.LightSteelBlue;
|
||||
this.label2.Location = new System.Drawing.Point(70, 28);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(231, 32);
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Reboot to reset. - Turn screen off, \r\nthen back on with hold button to apply.";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// TextureResTextBox
|
||||
// label3
|
||||
//
|
||||
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));
|
||||
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.TextureResTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.TextureResTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.TextureResTextBox.Location = new System.Drawing.Point(12, 108);
|
||||
this.TextureResTextBox.Name = "TextureResTextBox";
|
||||
this.TextureResTextBox.Size = new System.Drawing.Size(120, 24);
|
||||
this.TextureResTextBox.TabIndex = 2;
|
||||
this.TextureResTextBox.Text = "0";
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label3.ForeColor = System.Drawing.Color.LightCyan;
|
||||
this.label3.Location = new System.Drawing.Point(57, 339);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(256, 20);
|
||||
this.label3.TabIndex = 6;
|
||||
this.label3.Text = "QU Settings (for -QU releases)";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// ResolutionLabel
|
||||
// label4
|
||||
//
|
||||
this.ResolutionLabel.AutoSize = true;
|
||||
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ResolutionLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.ResolutionLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.ResolutionLabel.Location = new System.Drawing.Point(135, 114);
|
||||
this.ResolutionLabel.Name = "ResolutionLabel";
|
||||
this.ResolutionLabel.Size = new System.Drawing.Size(222, 18);
|
||||
this.ResolutionLabel.TabIndex = 3;
|
||||
this.ResolutionLabel.Text = "Resolution per eye (0 for default)";
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label4.ForeColor = System.Drawing.Color.LightSteelBlue;
|
||||
this.label4.Location = new System.Drawing.Point(16, 363);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(338, 16);
|
||||
this.label4.TabIndex = 6;
|
||||
this.label4.Text = "Persists on device reboot. Enter 0 to reset any category.\r\n";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// GPUComboBox
|
||||
// ResetQU
|
||||
//
|
||||
this.GPUComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
|
||||
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));
|
||||
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.GPUComboBox.FormattingEnabled = true;
|
||||
this.GPUComboBox.Items.AddRange(new object[] {
|
||||
"0",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4"});
|
||||
this.GPUComboBox.Location = new System.Drawing.Point(12, 44);
|
||||
this.GPUComboBox.Name = "GPUComboBox";
|
||||
this.GPUComboBox.Size = new System.Drawing.Size(345, 26);
|
||||
this.GPUComboBox.TabIndex = 4;
|
||||
this.GPUComboBox.Text = "Select GPU level (0 for default)";
|
||||
this.ResetQU.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.ResetQU.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.ResetQU.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
|
||||
this.ResetQU.ForeColor = System.Drawing.SystemColors.ControlLight;
|
||||
this.ResetQU.Location = new System.Drawing.Point(189, 555);
|
||||
this.ResetQU.Name = "ResetQU";
|
||||
this.ResetQU.Size = new System.Drawing.Size(168, 28);
|
||||
this.ResetQU.TabIndex = 14;
|
||||
this.ResetQU.Text = "RESET ALL FIELDS";
|
||||
this.ResetQU.UseVisualStyleBackColor = false;
|
||||
this.ResetQU.Visible = false;
|
||||
this.ResetQU.Click += new System.EventHandler(this.ResetQU_click);
|
||||
//
|
||||
// deleteButton
|
||||
//
|
||||
this.deleteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.deleteButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.deleteButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
|
||||
this.deleteButton.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
|
||||
this.deleteButton.Location = new System.Drawing.Point(13, 606);
|
||||
this.deleteButton.Name = "deleteButton";
|
||||
this.deleteButton.Size = new System.Drawing.Size(167, 25);
|
||||
this.deleteButton.TabIndex = 15;
|
||||
this.deleteButton.Text = "DELETE SAVED SETTINGS";
|
||||
this.deleteButton.UseVisualStyleBackColor = false;
|
||||
this.deleteButton.Visible = false;
|
||||
this.deleteButton.Click += new System.EventHandler(this.DeleteButton_Click);
|
||||
//
|
||||
// questPics
|
||||
//
|
||||
this.questPics.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.questPics.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.questPics.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
|
||||
this.questPics.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
|
||||
this.questPics.Location = new System.Drawing.Point(15, 265);
|
||||
this.questPics.Name = "questPics";
|
||||
this.questPics.Size = new System.Drawing.Size(165, 25);
|
||||
this.questPics.TabIndex = 5;
|
||||
this.questPics.Text = "SCREENSHOTS";
|
||||
this.questPics.UseVisualStyleBackColor = false;
|
||||
this.questPics.Click += new System.EventHandler(this.questPics_Click);
|
||||
//
|
||||
// questVids
|
||||
//
|
||||
this.questVids.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.questVids.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.questVids.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
|
||||
this.questVids.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
|
||||
this.questVids.Location = new System.Drawing.Point(189, 265);
|
||||
this.questVids.Name = "questVids";
|
||||
this.questVids.Size = new System.Drawing.Size(167, 25);
|
||||
this.questVids.TabIndex = 6;
|
||||
this.questVids.Text = "VIDEOSHOTS";
|
||||
this.questVids.UseVisualStyleBackColor = false;
|
||||
this.questVids.Click += new System.EventHandler(this.questVids_Click);
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label11.ForeColor = System.Drawing.Color.LightCyan;
|
||||
this.label11.Location = new System.Drawing.Point(26, 217);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(319, 20);
|
||||
this.label11.TabIndex = 6;
|
||||
this.label11.Text = "Transfer screen/videoshots to Desktop";
|
||||
this.label11.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// QUon
|
||||
//
|
||||
this.QUon.AutoSize = true;
|
||||
this.QUon.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.QUon.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.QUon.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.QUon.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
|
||||
this.QUon.ForeColor = System.Drawing.Color.LightSkyBlue;
|
||||
this.QUon.Location = new System.Drawing.Point(111, 383);
|
||||
this.QUon.Name = "QUon";
|
||||
this.QUon.Size = new System.Drawing.Size(148, 21);
|
||||
this.QUon.TabIndex = 8;
|
||||
this.QUon.Text = "Enable QU Settings";
|
||||
this.QUon.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.QUon.UseVisualStyleBackColor = true;
|
||||
this.QUon.CheckedChanged += new System.EventHandler(this.QUon_CheckedChanged);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
|
||||
this.button3.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
|
||||
this.button3.Location = new System.Drawing.Point(101, 702);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(169, 25);
|
||||
this.button3.TabIndex = 17;
|
||||
this.button3.Text = "CUSTOM USER.JSON";
|
||||
this.button3.UseVisualStyleBackColor = false;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label12.ForeColor = System.Drawing.Color.LightCyan;
|
||||
this.label12.Location = new System.Drawing.Point(93, 656);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(185, 20);
|
||||
this.label12.TabIndex = 6;
|
||||
this.label12.Text = "Set custom user.json*";
|
||||
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label13.ForeColor = System.Drawing.Color.LightSteelBlue;
|
||||
this.label13.Location = new System.Drawing.Point(53, 678);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(265, 16);
|
||||
this.label13.TabIndex = 6;
|
||||
this.label13.Text = "*For games that don\'t work with QU settings.";
|
||||
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// DeleteShots
|
||||
//
|
||||
this.DeleteShots.AutoSize = true;
|
||||
this.DeleteShots.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.DeleteShots.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.DeleteShots.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.DeleteShots.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
|
||||
this.DeleteShots.ForeColor = System.Drawing.Color.LightSkyBlue;
|
||||
this.DeleteShots.Location = new System.Drawing.Point(64, 296);
|
||||
this.DeleteShots.Name = "DeleteShots";
|
||||
this.DeleteShots.Size = new System.Drawing.Size(242, 21);
|
||||
this.DeleteShots.TabIndex = 7;
|
||||
this.DeleteShots.Text = "Delete files on Quest after transfer";
|
||||
this.DeleteShots.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.DeleteShots.UseVisualStyleBackColor = true;
|
||||
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, 737);
|
||||
this.splitter1.TabIndex = 14;
|
||||
this.splitter1.TabStop = false;
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.BackColor = System.Drawing.Color.White;
|
||||
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.label10.Location = new System.Drawing.Point(-7, 327);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(394, 3);
|
||||
this.label10.TabIndex = 15;
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.BackColor = System.Drawing.Color.White;
|
||||
this.label14.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.label14.Location = new System.Drawing.Point(-15, 211);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(394, 3);
|
||||
this.label14.TabIndex = 17;
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.BackColor = System.Drawing.Color.White;
|
||||
this.label15.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.label15.Location = new System.Drawing.Point(-12, 646);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(394, 3);
|
||||
this.label15.TabIndex = 18;
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label16.ForeColor = System.Drawing.Color.LightSteelBlue;
|
||||
this.label16.Location = new System.Drawing.Point(14, 241);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(343, 16);
|
||||
this.label16.TabIndex = 6;
|
||||
this.label16.Text = "Desktop\\Quest Screenshots Desktop\\Quest Videoshots";
|
||||
this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// CPUComboBox
|
||||
//
|
||||
@@ -137,29 +331,350 @@
|
||||
"2",
|
||||
"3",
|
||||
"4"});
|
||||
this.CPUComboBox.Location = new System.Drawing.Point(12, 76);
|
||||
this.CPUComboBox.Location = new System.Drawing.Point(13, 123);
|
||||
this.CPUComboBox.Name = "CPUComboBox";
|
||||
this.CPUComboBox.Size = new System.Drawing.Size(345, 26);
|
||||
this.CPUComboBox.TabIndex = 5;
|
||||
this.CPUComboBox.Size = new System.Drawing.Size(346, 28);
|
||||
this.CPUComboBox.TabIndex = 2;
|
||||
this.CPUComboBox.Text = "Select CPU level (0 for default)";
|
||||
//
|
||||
// GPUComboBox
|
||||
//
|
||||
this.GPUComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
|
||||
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));
|
||||
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.GPUComboBox.FormattingEnabled = true;
|
||||
this.GPUComboBox.Items.AddRange(new object[] {
|
||||
"0",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4"});
|
||||
this.GPUComboBox.Location = new System.Drawing.Point(13, 94);
|
||||
this.GPUComboBox.Name = "GPUComboBox";
|
||||
this.GPUComboBox.Size = new System.Drawing.Size(346, 28);
|
||||
this.GPUComboBox.TabIndex = 1;
|
||||
this.GPUComboBox.Text = "Select GPU level (0 for default)";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label7.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label7.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label7.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.label7.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.label7.Location = new System.Drawing.Point(13, 532);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(59, 20);
|
||||
this.label7.TabIndex = 3;
|
||||
this.label7.Text = "Fov - X";
|
||||
this.label7.Visible = false;
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label8.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label8.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label8.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.label8.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.label8.Location = new System.Drawing.Point(191, 532);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(59, 20);
|
||||
this.label8.TabIndex = 3;
|
||||
this.label8.Text = "Fov - Y";
|
||||
this.label8.Visible = false;
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label9.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label9.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label9.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.label9.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.label9.Location = new System.Drawing.Point(12, 583);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(105, 20);
|
||||
this.label9.TabIndex = 3;
|
||||
this.label9.Text = "Refresh Rate";
|
||||
this.label9.Visible = false;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label6.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label6.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label6.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.label6.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.label6.Location = new System.Drawing.Point(93, 484);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(185, 20);
|
||||
this.label6.TabIndex = 3;
|
||||
this.label6.Text = "Enter Custom Username";
|
||||
this.label6.Visible = false;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label5.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label5.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label5.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.label5.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.label5.Location = new System.Drawing.Point(16, 434);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(362, 20);
|
||||
this.label5.TabIndex = 3;
|
||||
this.label5.Text = "Custom Resolution Width (Height auto calculated)";
|
||||
this.label5.Visible = false;
|
||||
//
|
||||
// ResolutionLabel
|
||||
//
|
||||
this.ResolutionLabel.AutoSize = true;
|
||||
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ResolutionLabel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.ResolutionLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.ResolutionLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.ResolutionLabel.Location = new System.Drawing.Point(9, 180);
|
||||
this.ResolutionLabel.Name = "ResolutionLabel";
|
||||
this.ResolutionLabel.Size = new System.Drawing.Size(166, 20);
|
||||
this.ResolutionLabel.TabIndex = 3;
|
||||
this.ResolutionLabel.Text = "Resolution (0=default)";
|
||||
//
|
||||
// FOVy
|
||||
//
|
||||
this.FOVy.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
|
||||
this.FOVy.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.FOVy.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.FOVy.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.FOVy.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.FOVy.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.FOVy.Location = new System.Drawing.Point(189, 507);
|
||||
this.FOVy.Name = "FOVy";
|
||||
this.FOVy.Size = new System.Drawing.Size(169, 26);
|
||||
this.FOVy.TabIndex = 12;
|
||||
this.FOVy.Text = "0";
|
||||
this.FOVy.Visible = false;
|
||||
this.FOVy.TextChanged += new System.EventHandler(this.FOVy_TextChanged);
|
||||
//
|
||||
// FOVx
|
||||
//
|
||||
this.FOVx.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
|
||||
this.FOVx.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.FOVx.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.FOVx.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.FOVx.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.FOVx.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.FOVx.Location = new System.Drawing.Point(13, 507);
|
||||
this.FOVx.Name = "FOVx";
|
||||
this.FOVx.Size = new System.Drawing.Size(169, 26);
|
||||
this.FOVx.TabIndex = 11;
|
||||
this.FOVx.Text = "0";
|
||||
this.FOVx.Visible = false;
|
||||
this.FOVx.TextChanged += new System.EventHandler(this.FOVx_TextChanged);
|
||||
//
|
||||
// UsrBox
|
||||
//
|
||||
this.UsrBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
|
||||
this.UsrBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.UsrBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.UsrBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.UsrBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.UsrBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.UsrBox.Location = new System.Drawing.Point(13, 459);
|
||||
this.UsrBox.Name = "UsrBox";
|
||||
this.UsrBox.Size = new System.Drawing.Size(345, 26);
|
||||
this.UsrBox.TabIndex = 10;
|
||||
this.UsrBox.Text = "0";
|
||||
this.UsrBox.Visible = false;
|
||||
this.UsrBox.TextChanged += new System.EventHandler(this.UsrBox_TextChanged);
|
||||
//
|
||||
// ResBox
|
||||
//
|
||||
this.ResBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
|
||||
this.ResBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ResBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ResBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ResBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.ResBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.ResBox.Location = new System.Drawing.Point(13, 409);
|
||||
this.ResBox.Name = "ResBox";
|
||||
this.ResBox.Size = new System.Drawing.Size(345, 26);
|
||||
this.ResBox.TabIndex = 9;
|
||||
this.ResBox.Text = "0";
|
||||
this.ResBox.Visible = false;
|
||||
this.ResBox.TextChanged += new System.EventHandler(this.ResBox_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));
|
||||
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.TextureResTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.TextureResTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.TextureResTextBox.Location = new System.Drawing.Point(13, 152);
|
||||
this.TextureResTextBox.Name = "TextureResTextBox";
|
||||
this.TextureResTextBox.Size = new System.Drawing.Size(167, 26);
|
||||
this.TextureResTextBox.TabIndex = 3;
|
||||
this.TextureResTextBox.Text = "0";
|
||||
//
|
||||
// QUEnable
|
||||
//
|
||||
this.QUEnable.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
|
||||
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.QUEnable.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.QUEnable.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.QUEnable.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.QUEnable.Location = new System.Drawing.Point(189, 606);
|
||||
this.QUEnable.Name = "QUEnable";
|
||||
this.QUEnable.Size = new System.Drawing.Size(170, 25);
|
||||
this.QUEnable.TabIndex = 16;
|
||||
this.QUEnable.Text = "APPLY";
|
||||
this.QUEnable.UseVisualStyleBackColor = false;
|
||||
this.QUEnable.Visible = false;
|
||||
this.QUEnable.Click += new System.EventHandler(this.QUEnable_Click);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.button1.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.button1.Location = new System.Drawing.Point(189, 152);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(169, 25);
|
||||
this.button1.TabIndex = 4;
|
||||
this.button1.Text = "APPLY";
|
||||
this.button1.UseVisualStyleBackColor = false;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// QURfrRt
|
||||
//
|
||||
this.QURfrRt.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
|
||||
this.QURfrRt.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.QURfrRt.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.QURfrRt.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.QURfrRt.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.QURfrRt.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.QURfrRt.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.QURfrRt.FormattingEnabled = true;
|
||||
this.QURfrRt.Items.AddRange(new object[] {
|
||||
"0",
|
||||
"72",
|
||||
"90",
|
||||
"120"});
|
||||
this.QURfrRt.Location = new System.Drawing.Point(13, 555);
|
||||
this.QURfrRt.Name = "QURfrRt";
|
||||
this.QURfrRt.Size = new System.Drawing.Size(170, 28);
|
||||
this.QURfrRt.TabIndex = 13;
|
||||
this.QURfrRt.Text = "0";
|
||||
this.QURfrRt.Visible = false;
|
||||
this.QURfrRt.SelectedIndexChanged += new System.EventHandler(this.QURfrRt_SelectedIndexChanged);
|
||||
//
|
||||
// RefreshRateComboBox
|
||||
//
|
||||
this.RefreshRateComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
|
||||
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));
|
||||
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.RefreshRateComboBox.FormattingEnabled = true;
|
||||
this.RefreshRateComboBox.Items.AddRange(new object[] {
|
||||
"72",
|
||||
"90",
|
||||
"120"});
|
||||
this.RefreshRateComboBox.Location = new System.Drawing.Point(13, 65);
|
||||
this.RefreshRateComboBox.Name = "RefreshRateComboBox";
|
||||
this.RefreshRateComboBox.Size = new System.Drawing.Size(346, 28);
|
||||
this.RefreshRateComboBox.TabIndex = 0;
|
||||
this.RefreshRateComboBox.Text = "Select refresh rate";
|
||||
//
|
||||
// WifiWake
|
||||
//
|
||||
this.WifiWake.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
|
||||
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.WifiWake.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.WifiWake.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.WifiWake.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.WifiWake.Location = new System.Drawing.Point(189, 180);
|
||||
this.WifiWake.Name = "WifiWake";
|
||||
this.WifiWake.Size = new System.Drawing.Size(170, 25);
|
||||
this.WifiWake.TabIndex = 4;
|
||||
this.WifiWake.Text = "ENABLE WIFI WAKE";
|
||||
this.WifiWake.UseVisualStyleBackColor = false;
|
||||
this.WifiWake.Click += new System.EventHandler(this.WifiWake_Click);
|
||||
//
|
||||
// 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.ClientSize = new System.Drawing.Size(371, 185);
|
||||
this.ClientSize = new System.Drawing.Size(370, 737);
|
||||
this.Controls.Add(this.label15);
|
||||
this.Controls.Add(this.label14);
|
||||
this.Controls.Add(this.label10);
|
||||
this.Controls.Add(this.splitter1);
|
||||
this.Controls.Add(this.questVids);
|
||||
this.Controls.Add(this.questPics);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.deleteButton);
|
||||
this.Controls.Add(this.DeleteShots);
|
||||
this.Controls.Add(this.QUon);
|
||||
this.Controls.Add(this.ResetQU);
|
||||
this.Controls.Add(this.label13);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.label16);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label11);
|
||||
this.Controls.Add(this.label12);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.CPUComboBox);
|
||||
this.Controls.Add(this.GPUComboBox);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.label8);
|
||||
this.Controls.Add(this.label9);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.ResolutionLabel);
|
||||
this.Controls.Add(this.FOVy);
|
||||
this.Controls.Add(this.FOVx);
|
||||
this.Controls.Add(this.UsrBox);
|
||||
this.Controls.Add(this.ResBox);
|
||||
this.Controls.Add(this.TextureResTextBox);
|
||||
this.Controls.Add(this.QUEnable);
|
||||
this.Controls.Add(this.WifiWake);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.QURfrRt);
|
||||
this.Controls.Add(this.RefreshRateComboBox);
|
||||
this.MaximumSize = new System.Drawing.Size(387, 224);
|
||||
this.MinimumSize = new System.Drawing.Size(387, 224);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximumSize = new System.Drawing.Size(386, 776);
|
||||
this.MinimumSize = new System.Drawing.Size(386, 776);
|
||||
this.Name = "QuestForm";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "QuestForm";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Quest settings";
|
||||
this.TopMost = true;
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QuestForm_FormClosed);
|
||||
this.Load += new System.EventHandler(this.QuestForm_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -173,5 +688,37 @@
|
||||
private System.Windows.Forms.Label ResolutionLabel;
|
||||
private System.Windows.Forms.ComboBox GPUComboBox;
|
||||
private System.Windows.Forms.ComboBox CPUComboBox;
|
||||
private Label label1;
|
||||
private Label label2;
|
||||
private Label label3;
|
||||
private Label label4;
|
||||
private ComboBox QURfrRt;
|
||||
private TextBox ResBox;
|
||||
private TextBox UsrBox;
|
||||
private TextBox FOVx;
|
||||
private TextBox FOVy;
|
||||
private Button QUEnable;
|
||||
private Button ResetQU;
|
||||
private Label label5;
|
||||
private Label label6;
|
||||
private Label label7;
|
||||
private Label label8;
|
||||
private Label label9;
|
||||
private Button deleteButton;
|
||||
private Button questPics;
|
||||
private Button questVids;
|
||||
private Label label11;
|
||||
private CheckBox QUon;
|
||||
private Button button3;
|
||||
private Label label12;
|
||||
private Label label13;
|
||||
private CheckBox DeleteShots;
|
||||
private Splitter splitter1;
|
||||
private Label label10;
|
||||
private Label label14;
|
||||
private Label label15;
|
||||
private Label label16;
|
||||
private Button WifiWake;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
293
QuestForm.cs
@@ -1,32 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
public partial class QuestForm : Form
|
||||
{
|
||||
public static int length = 0;
|
||||
public static string[] result;
|
||||
public bool settingsexist = false;
|
||||
public static bool QUSon = false;
|
||||
public bool delsh = false;
|
||||
public QuestForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool ChangesMade = false;
|
||||
|
||||
//Quest 2 settings, might remove them in the future since some of them are broken
|
||||
if (RefreshRateComboBox.SelectedIndex != -1)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {RefreshRateComboBox.SelectedItem.ToString()}");
|
||||
ADB.RunAdbCommandToString($"shell settings put global 90hz_global {RefreshRateComboBox.SelectedIndex}");
|
||||
ADB.RunAdbCommandToString($"shell settings put global 90hzglobal {RefreshRateComboBox.SelectedIndex}");
|
||||
ChangesMade = true;
|
||||
}
|
||||
|
||||
if (TextureResTextBox.Text.Length>0)
|
||||
if (TextureResTextBox.Text.Length > 0)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
Int32.TryParse(TextureResTextBox.Text, out int result);
|
||||
ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
|
||||
ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
|
||||
ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}");
|
||||
ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}");
|
||||
ChangesMade = true;
|
||||
@@ -47,5 +59,282 @@ namespace AndroidSideloader
|
||||
if (ChangesMade)
|
||||
MessageBox.Show("Settings applied!");
|
||||
}
|
||||
|
||||
|
||||
public static void setLength(int value)
|
||||
{
|
||||
result = new string[value];
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void ResetQU_click(object sender, EventArgs e)
|
||||
{
|
||||
ResBox.Text = ("0");
|
||||
UsrBox.Text = ("Change Me");
|
||||
FOVx.Text = ("0");
|
||||
FOVy.Text = ("0");
|
||||
QURfrRt.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void DeleteShots_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (DeleteShots.Checked)
|
||||
delsh = true;
|
||||
else
|
||||
delsh = false;
|
||||
}
|
||||
private void QUon_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (QUon.Checked)
|
||||
{
|
||||
ResBox.Visible = true;
|
||||
UsrBox.Visible = true;
|
||||
FOVx.Visible = true;
|
||||
FOVy.Visible = true;
|
||||
QURfrRt.Visible = true;
|
||||
ResetQU.Visible = true;
|
||||
QUEnable.Visible = true;
|
||||
label5.Visible = true;
|
||||
label6.Visible = true;
|
||||
label7.Visible = true;
|
||||
label8.Visible = true;
|
||||
label9.Visible = true;
|
||||
label10.Visible = true;
|
||||
deleteButton.Visible = true;
|
||||
ResBox.Text = Properties.Settings.Default.QUres;
|
||||
UsrBox.Text = Properties.Settings.Default.QUname;
|
||||
FOVy.Text = Properties.Settings.Default.QUy;
|
||||
FOVx.Text = Properties.Settings.Default.QUx;
|
||||
QURfrRt.SelectedValue = Properties.Settings.Default.QUhz;
|
||||
Properties.Settings.Default.QUturnedon = true;
|
||||
}
|
||||
else if (!QUon.Checked)
|
||||
{
|
||||
ResBox.Visible = false;
|
||||
UsrBox.Visible = false;
|
||||
FOVx.Visible = false;
|
||||
FOVy.Visible = false;
|
||||
QURfrRt.Visible = false;
|
||||
ResetQU.Visible = false;
|
||||
QUEnable.Visible = false;
|
||||
label5.Visible = false;
|
||||
label6.Visible = false;
|
||||
label7.Visible = false;
|
||||
label8.Visible = false;
|
||||
label9.Visible = false;
|
||||
label10.Visible = false;
|
||||
deleteButton.Visible = false;
|
||||
Properties.Settings.Default.QUturnedon = false;
|
||||
MessageBox.Show("Ok, Deleted your custom settings file.\nIf you would like to re-enable return here and apply settings again");
|
||||
File.Delete($"{Environment.CurrentDirectory}\\Config.Json");
|
||||
File.Delete($"{Environment.CurrentDirectory}\\delete_settings");
|
||||
}
|
||||
|
||||
}
|
||||
private static readonly Random random = new Random();
|
||||
private static readonly object syncLock = new object();
|
||||
public static int RandomNumber(int min, int max)
|
||||
{
|
||||
lock (syncLock)
|
||||
{ // synchronize
|
||||
return random.Next(min, max);
|
||||
}
|
||||
}
|
||||
private void QUEnable_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
settingsexist = true;
|
||||
MessageBox.Show("OK, any -QU packages installed will have these settings applied!\nTo delete settings: goto main app window, select a game with top menu, and click \"Remove QU Setting\"");
|
||||
if (QUon.Checked)
|
||||
{
|
||||
Properties.Settings.Default.QUturnedon = true;
|
||||
Random r = new Random();
|
||||
|
||||
int x = r.Next(999999999);
|
||||
int y = r.Next(9999999);
|
||||
|
||||
var sum = ((long)y * (long)1000000000) + (long)x;
|
||||
|
||||
int x2 = r.Next(999999999);
|
||||
int y2 = r.Next(9999999);
|
||||
|
||||
var sum2 = ((long)y2 * (long)1000000000) + (long)x2;
|
||||
|
||||
QUSon = true;
|
||||
|
||||
string selected = this.QURfrRt.GetItemText(this.QURfrRt.SelectedItem);
|
||||
|
||||
Properties.Settings.Default.QUString = $"\"refresh_rate\":{selected},\"eye_texture_width\":{ResBox.Text},\"fov_x\":{FOVx.Text},\"fov_y\":{FOVy.Text},\"username\":\"{UsrBox.Text}\"}}";
|
||||
Properties.Settings.Default.QUStringF = $"{{\"user_id\":{sum},\"app_id\":\"{sum2}\",";
|
||||
Properties.Settings.Default.Save();
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\delete_settings", "");
|
||||
string boff = Properties.Settings.Default.QUStringF + Properties.Settings.Default.QUString;
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\config.json", boff);
|
||||
}
|
||||
else
|
||||
{
|
||||
Properties.Settings.Default.QUturnedon = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void QuestForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
if (QUon.Checked)
|
||||
{
|
||||
Properties.Settings.Default.QUsett = true;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
if (!QUon.Checked)
|
||||
{
|
||||
Properties.Settings.Default.QUsett = false;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
if (DeleteShots.Checked)
|
||||
{
|
||||
Properties.Settings.Default.delsh = true;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
if (!DeleteShots.Checked)
|
||||
{
|
||||
Properties.Settings.Default.delsh = false;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
private void QuestForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Properties.Settings.Default.delsh)
|
||||
DeleteShots.Checked = true;
|
||||
if (Properties.Settings.Default.QUsett)
|
||||
{
|
||||
ResBox.Text = Properties.Settings.Default.QUres;
|
||||
UsrBox.Text = Properties.Settings.Default.QUname;
|
||||
FOVy.Text = Properties.Settings.Default.QUy;
|
||||
FOVx.Text = Properties.Settings.Default.QUx;
|
||||
QURfrRt.Text = Properties.Settings.Default.QUhz;
|
||||
QUon.Checked = true;
|
||||
if (settingsexist)
|
||||
QUSon = true;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void ResBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.QUres = ResBox.Text;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
}
|
||||
|
||||
private void UsrBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.QUname = UsrBox.Text;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void FOVx_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.QUx = FOVx.Text;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void FOVy_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.QUy = FOVy.Text;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void QURfrRt_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
string selected = this.QURfrRt.GetItemText(this.QURfrRt.SelectedItem);
|
||||
Properties.Settings.Default.QUhz = selected;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
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");
|
||||
}
|
||||
private void questPics_Click(object sender, EventArgs e)
|
||||
{
|
||||
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
||||
|
||||
if (!Directory.Exists($"{path}\\Quest ScreenShots"))
|
||||
Directory.CreateDirectory($"{path}\\Quest ScreenShots");
|
||||
MessageBox.Show("Please wait until you get the message that the transfer has finished.");
|
||||
ADB.WakeDevice();
|
||||
Program.form.ChangeTitle("Pulling files...");
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest ScreenShots\"");
|
||||
if (delsh)
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.OK)
|
||||
{
|
||||
ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Screenshots");
|
||||
ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Screenshots");
|
||||
}
|
||||
}
|
||||
MessageBox.Show("Transfer finished! ScreenShots can be found in a folder named Quest Screenshots on your desktop!");
|
||||
Program.form.ChangeTitle("Done!");
|
||||
}
|
||||
private void questVids_Click(object sender, EventArgs e)
|
||||
{
|
||||
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
||||
if (!Directory.Exists($"{path}\\Quest VideoShots"))
|
||||
Directory.CreateDirectory($"{path}\\Quest VideoShots");
|
||||
MessageBox.Show("Please wait until you get the message that the transfer has finished.");
|
||||
ADB.WakeDevice();
|
||||
Program.form.ChangeTitle("Pulling files...");
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Videoshots\" \"{path}\\Quest VideoShots\"");
|
||||
if (delsh)
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.OK)
|
||||
{
|
||||
ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Videoshots");
|
||||
ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Videoshots");
|
||||
}
|
||||
}
|
||||
MessageBox.Show("Transfer finished! VideoShots can be found in a folder named Quest VideoShots on your desktop!");
|
||||
Program.form.ChangeTitle("Done!");
|
||||
}
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
UsernameForm Form = new UsernameForm();
|
||||
Form.Show();
|
||||
}
|
||||
|
||||
|
||||
private void Form_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
protected override bool ProcessDialogKey(Keys keyData)
|
||||
{
|
||||
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
|
||||
{
|
||||
this.Close();
|
||||
return true;
|
||||
}
|
||||
return base.ProcessDialogKey(keyData);
|
||||
}
|
||||
|
||||
private void WifiWake_Click(object sender, EventArgs e)
|
||||
{
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
|
||||
MessageBox.Show("Wake on Wifi enabled!\n\nNOTE: This requires having wireless ADB enabled to work. (Obviously)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
37
RCLONE.cs
@@ -2,17 +2,21 @@
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using JR.Utils.GUI.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
class RCLONE
|
||||
{
|
||||
//Kill all rclone, using a static rclone variable doesn't work for some reason #tofix
|
||||
public static void killRclone()
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("rclone"))
|
||||
process.Kill();
|
||||
}
|
||||
|
||||
//For custom configs that use a password
|
||||
public static void Init()
|
||||
{
|
||||
string PwTxtPath = Path.Combine(Environment.CurrentDirectory, "rclone\\pw.txt");
|
||||
@@ -22,33 +26,47 @@ namespace AndroidSideloader
|
||||
}
|
||||
}
|
||||
|
||||
//Change if you want to use a config
|
||||
public static string configPath = ""; // ".\\a"
|
||||
public static string rclonepw = "";
|
||||
|
||||
|
||||
private static Process rclone = new Process();
|
||||
|
||||
|
||||
//Run rclone command
|
||||
public static ProcessOutput runRcloneCommand(string command, string bandwithLimit = "")
|
||||
{
|
||||
if (!MainForm.HasInternet) return new ProcessOutput("", "No internet");
|
||||
|
||||
//Set the password for rclone configs
|
||||
Environment.SetEnvironmentVariable("RCLONE_CRYPT_REMOTE", rclonepw);
|
||||
Environment.SetEnvironmentVariable("RCLONE_CONFIG_PASS", rclonepw);
|
||||
ProcessOutput prcoutput = new ProcessOutput("","");
|
||||
ProcessOutput prcoutput = new ProcessOutput();
|
||||
//Rclone output is unicode, else it will show garbage instead of unicode characters
|
||||
rclone.StartInfo.StandardOutputEncoding = Encoding.UTF8;
|
||||
string originalCommand = command;
|
||||
|
||||
//set bandwidth limit
|
||||
if (bandwithLimit.Length > 0)
|
||||
{
|
||||
command += $" --bwlimit={bandwithLimit}";
|
||||
}
|
||||
|
||||
//set configpath if there is any
|
||||
if (configPath.Length > 0)
|
||||
{
|
||||
command += $" --config {configPath}";
|
||||
}
|
||||
|
||||
//set rclonepw
|
||||
if (rclonepw.Length > 0)
|
||||
command += " --ask-password=false";
|
||||
|
||||
Logger.Log($"Running Rclone command: {command}");
|
||||
string logcmd = Utilities.StringUtilities.RemoveEverythingBeforeFirst(command, "rclone.exe");
|
||||
if (logcmd.Contains($"\"{Properties.Settings.Default.CurrentLogPath}\""))
|
||||
logcmd = logcmd.Replace($"\"{Properties.Settings.Default.CurrentLogPath}\"", $"\"{Properties.Settings.Default.CurrentLogName}\"");
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
|
||||
Logger.Log($"Running Rclone command: {logcmd}");
|
||||
|
||||
rclone.StartInfo.FileName = Environment.CurrentDirectory + "\\rclone\\rclone.exe";
|
||||
rclone.StartInfo.Arguments = command;
|
||||
@@ -57,6 +75,7 @@ namespace AndroidSideloader
|
||||
rclone.StartInfo.RedirectStandardOutput = true;
|
||||
rclone.StartInfo.WorkingDirectory = Environment.CurrentDirectory + "\\rclone";
|
||||
rclone.StartInfo.CreateNoWindow = true;
|
||||
//On debug we want to see when rclone is open
|
||||
if (MainForm.debugMode == true)
|
||||
rclone.StartInfo.CreateNoWindow = false;
|
||||
rclone.StartInfo.UseShellExecute = false;
|
||||
@@ -69,7 +88,9 @@ namespace AndroidSideloader
|
||||
string output = rclone.StandardOutput.ReadToEnd();
|
||||
string error = rclone.StandardError.ReadToEnd();
|
||||
rclone.WaitForExit();
|
||||
if (error.Contains("cannot fetch token") || error.Contains("authError") || (error.Contains("quota") && error.Contains("exceeded")))
|
||||
|
||||
//if there is one of these errors, we switch the mirrors
|
||||
if (error.Contains("cannot fetch token") || error.Contains("authError") || (error.Contains("quota") || error.Contains("exceeded")))
|
||||
{
|
||||
string oldRemote = MainForm.currentRemote;
|
||||
try
|
||||
@@ -87,8 +108,12 @@ namespace AndroidSideloader
|
||||
prcoutput.Output = output;
|
||||
prcoutput.Error = error;
|
||||
}
|
||||
if (!output.Contains("Game Name;Release Name;") && !output.Contains("package:"))
|
||||
Logger.Log($"Rclone error: {error}\nRclone Output: {output}");
|
||||
return prcoutput;
|
||||
if (error.Contains("There is not enough space"))
|
||||
FlexibleMessageBox.Show("There isn't enough space on your PC to properly install this game. Please have at least 2x the size of the game you are trying to download/install available on the drive where Rookie is installed.", "NOT ENOUGH SPACE");
|
||||
return prcoutput;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
Resources/SearchGlass.PNG
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
Resources/battery.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
Resources/battery1.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
Resources/battery11.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
Resources/bluekey.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
Resources/greenkey.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
6801
Resources/nouns.txt
Normal file
BIN
Resources/orangekey.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
Resources/redkey.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
@@ -8,6 +8,8 @@ namespace AndroidSideloader
|
||||
/// <summary>
|
||||
/// Present the Windows Vista-style open file dialog to select a folder. Fall back for older Windows Versions
|
||||
/// </summary>
|
||||
|
||||
//Coded by Erike from stackoverflow (https://stackoverflow.com/users/57611/erike)
|
||||
public class FolderSelectDialog
|
||||
{
|
||||
private string _initialDirectory;
|
||||
|
||||
203
SettingsForm.Designer.cs
generated
@@ -35,10 +35,17 @@
|
||||
this.deleteAfterInstallCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.updateConfigCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.userJsonOnGameInstall = new System.Windows.Forms.CheckBox();
|
||||
this.resignGamesCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.BandwithTextbox = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.BandwithComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.DebugLogCopy = new System.Windows.Forms.Button();
|
||||
this.crashlogID = new System.Windows.Forms.Label();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.debuglogID = new System.Windows.Forms.Label();
|
||||
this.DebugID = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.CblindBox = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkForUpdatesCheckBox
|
||||
@@ -46,9 +53,9 @@
|
||||
this.checkForUpdatesCheckBox.AutoSize = true;
|
||||
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(13, 13);
|
||||
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
|
||||
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(148, 22);
|
||||
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(142, 21);
|
||||
this.checkForUpdatesCheckBox.TabIndex = 0;
|
||||
this.checkForUpdatesCheckBox.Text = "Check for updates";
|
||||
this.checkForUpdatesCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -63,7 +70,7 @@
|
||||
this.applyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.applyButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.applyButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.applyButton.Location = new System.Drawing.Point(12, 215);
|
||||
this.applyButton.Location = new System.Drawing.Point(67, 230);
|
||||
this.applyButton.Name = "applyButton";
|
||||
this.applyButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.applyButton.TabIndex = 5;
|
||||
@@ -76,9 +83,9 @@
|
||||
this.enableMessageBoxesCheckBox.AutoSize = true;
|
||||
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(13, 36);
|
||||
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(12, 39);
|
||||
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
|
||||
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
|
||||
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(293, 21);
|
||||
this.enableMessageBoxesCheckBox.TabIndex = 1;
|
||||
this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
|
||||
this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -93,7 +100,7 @@
|
||||
this.resetSettingsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.resetSettingsButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.resetSettingsButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.resetSettingsButton.Location = new System.Drawing.Point(119, 215);
|
||||
this.resetSettingsButton.Location = new System.Drawing.Point(174, 230);
|
||||
this.resetSettingsButton.Name = "resetSettingsButton";
|
||||
this.resetSettingsButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.resetSettingsButton.TabIndex = 4;
|
||||
@@ -106,9 +113,9 @@
|
||||
this.deleteAfterInstallCheckBox.AutoSize = true;
|
||||
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(13, 59);
|
||||
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(12, 65);
|
||||
this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
|
||||
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
|
||||
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(279, 21);
|
||||
this.deleteAfterInstallCheckBox.TabIndex = 3;
|
||||
this.deleteAfterInstallCheckBox.Text = "Delete games after download and install";
|
||||
this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -119,9 +126,9 @@
|
||||
this.updateConfigCheckBox.AutoSize = true;
|
||||
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(13, 83);
|
||||
this.updateConfigCheckBox.Location = new System.Drawing.Point(12, 92);
|
||||
this.updateConfigCheckBox.Name = "updateConfigCheckBox";
|
||||
this.updateConfigCheckBox.Size = new System.Drawing.Size(208, 22);
|
||||
this.updateConfigCheckBox.Size = new System.Drawing.Size(201, 21);
|
||||
this.updateConfigCheckBox.TabIndex = 6;
|
||||
this.updateConfigCheckBox.Text = "Update config automatically";
|
||||
this.updateConfigCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -132,27 +139,14 @@
|
||||
this.userJsonOnGameInstall.AutoSize = true;
|
||||
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(12, 111);
|
||||
this.userJsonOnGameInstall.Location = new System.Drawing.Point(12, 119);
|
||||
this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
|
||||
this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
|
||||
this.userJsonOnGameInstall.Size = new System.Drawing.Size(233, 21);
|
||||
this.userJsonOnGameInstall.TabIndex = 9;
|
||||
this.userJsonOnGameInstall.Text = "Push random user.json on install";
|
||||
this.userJsonOnGameInstall.UseVisualStyleBackColor = true;
|
||||
this.userJsonOnGameInstall.CheckedChanged += new System.EventHandler(this.userJsonOnGameInstall_CheckedChanged);
|
||||
//
|
||||
// resignGamesCheckbox
|
||||
//
|
||||
this.resignGamesCheckbox.AutoSize = true;
|
||||
this.resignGamesCheckbox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.resignGamesCheckbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.resignGamesCheckbox.Location = new System.Drawing.Point(12, 139);
|
||||
this.resignGamesCheckbox.Name = "resignGamesCheckbox";
|
||||
this.resignGamesCheckbox.Size = new System.Drawing.Size(263, 22);
|
||||
this.resignGamesCheckbox.TabIndex = 10;
|
||||
this.resignGamesCheckbox.Text = "Resign Games Installed from rclone";
|
||||
this.resignGamesCheckbox.UseVisualStyleBackColor = true;
|
||||
this.resignGamesCheckbox.CheckedChanged += new System.EventHandler(this.resignGamesCheckbox_CheckedChanged);
|
||||
//
|
||||
// BandwithTextbox
|
||||
//
|
||||
this.BandwithTextbox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
|
||||
@@ -161,9 +155,9 @@
|
||||
this.BandwithTextbox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.BandwithTextbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.BandwithTextbox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.BandwithTextbox.Location = new System.Drawing.Point(12, 185);
|
||||
this.BandwithTextbox.Location = new System.Drawing.Point(52, 198);
|
||||
this.BandwithTextbox.Name = "BandwithTextbox";
|
||||
this.BandwithTextbox.Size = new System.Drawing.Size(177, 24);
|
||||
this.BandwithTextbox.Size = new System.Drawing.Size(177, 23);
|
||||
this.BandwithTextbox.TabIndex = 11;
|
||||
//
|
||||
// label1
|
||||
@@ -171,11 +165,11 @@
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.label1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.label1.Location = new System.Drawing.Point(10, 164);
|
||||
this.label1.Location = new System.Drawing.Point(40, 175);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(230, 18);
|
||||
this.label1.Size = new System.Drawing.Size(235, 17);
|
||||
this.label1.TabIndex = 12;
|
||||
this.label1.Text = "Rclone bandwith limit, 0 to disable";
|
||||
this.label1.Text = "Download speed limiter, 0 to disable";
|
||||
//
|
||||
// BandwithComboBox
|
||||
//
|
||||
@@ -192,37 +186,161 @@
|
||||
"K",
|
||||
"M",
|
||||
"G"});
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(195, 183);
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(235, 198);
|
||||
this.BandwithComboBox.Name = "BandwithComboBox";
|
||||
this.BandwithComboBox.Size = new System.Drawing.Size(55, 26);
|
||||
this.BandwithComboBox.Size = new System.Drawing.Size(55, 24);
|
||||
this.BandwithComboBox.TabIndex = 13;
|
||||
//
|
||||
// DebugLogCopy
|
||||
//
|
||||
this.DebugLogCopy.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
|
||||
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.DebugLogCopy.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.DebugLogCopy.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.DebugLogCopy.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.DebugLogCopy.Location = new System.Drawing.Point(29, 275);
|
||||
this.DebugLogCopy.Name = "DebugLogCopy";
|
||||
this.DebugLogCopy.Size = new System.Drawing.Size(285, 31);
|
||||
this.DebugLogCopy.TabIndex = 5;
|
||||
this.DebugLogCopy.Text = "Send DebugLog to server.";
|
||||
this.DebugLogCopy.UseVisualStyleBackColor = false;
|
||||
this.DebugLogCopy.Click += new System.EventHandler(this.DebugLogCopy_click);
|
||||
//
|
||||
// crashlogID
|
||||
//
|
||||
this.crashlogID.AutoSize = true;
|
||||
this.crashlogID.Location = new System.Drawing.Point(13, 406);
|
||||
this.crashlogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.crashlogID.Name = "crashlogID";
|
||||
this.crashlogID.Size = new System.Drawing.Size(0, 13);
|
||||
this.crashlogID.TabIndex = 15;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.button1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.button1.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.button1.Location = new System.Drawing.Point(29, 310);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(285, 31);
|
||||
this.button1.TabIndex = 5;
|
||||
this.button1.Text = "Reset Debug Log";
|
||||
this.button1.UseVisualStyleBackColor = false;
|
||||
this.button1.Click += new System.EventHandler(this.button1_click);
|
||||
//
|
||||
// debuglogID
|
||||
//
|
||||
this.debuglogID.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.debuglogID.Location = new System.Drawing.Point(29, 386);
|
||||
this.debuglogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.debuglogID.Name = "debuglogID";
|
||||
this.debuglogID.Size = new System.Drawing.Size(285, 48);
|
||||
this.debuglogID.TabIndex = 14;
|
||||
this.debuglogID.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// DebugID
|
||||
//
|
||||
this.DebugID.AccessibleRole = System.Windows.Forms.AccessibleRole.Row;
|
||||
this.DebugID.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.DebugID.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.DebugID.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.DebugID.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Bold);
|
||||
this.DebugID.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.DebugID.Location = new System.Drawing.Point(29, 357);
|
||||
this.DebugID.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.DebugID.Name = "DebugID";
|
||||
this.DebugID.ReadOnly = true;
|
||||
this.DebugID.ScrollBars = System.Windows.Forms.ScrollBars.Horizontal;
|
||||
this.DebugID.Size = new System.Drawing.Size(285, 21);
|
||||
this.DebugID.TabIndex = 16;
|
||||
this.DebugID.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
this.DebugID.Click += new System.EventHandler(this.DebugID_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.label2.Location = new System.Drawing.Point(29, 457);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(284, 86);
|
||||
this.label2.TabIndex = 14;
|
||||
this.label2.Text = "This is your most recent CrashLogID. Click on the CrashLogID to copy it to your c" +
|
||||
"lipboard.";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.AccessibleRole = System.Windows.Forms.AccessibleRole.Row;
|
||||
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBox1.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Bold);
|
||||
this.textBox1.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.textBox1.Location = new System.Drawing.Point(29, 440);
|
||||
this.textBox1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.ReadOnly = true;
|
||||
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Horizontal;
|
||||
this.textBox1.Size = new System.Drawing.Size(285, 21);
|
||||
this.textBox1.TabIndex = 16;
|
||||
this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
|
||||
//
|
||||
// CblindBox
|
||||
//
|
||||
this.CblindBox.AutoSize = true;
|
||||
this.CblindBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.CblindBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.CblindBox.Location = new System.Drawing.Point(12, 146);
|
||||
this.CblindBox.Name = "CblindBox";
|
||||
this.CblindBox.Size = new System.Drawing.Size(175, 21);
|
||||
this.CblindBox.TabIndex = 9;
|
||||
this.CblindBox.Text = "Enable colorblind mode";
|
||||
this.CblindBox.UseVisualStyleBackColor = true;
|
||||
this.CblindBox.CheckedChanged += new System.EventHandler(this.CblindBox_CheckedChanged);
|
||||
this.CblindBox.Click += new System.EventHandler(this.CblindBox_Click);
|
||||
//
|
||||
// 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.ClientSize = new System.Drawing.Size(341, 274);
|
||||
this.ClientSize = new System.Drawing.Size(342, 535);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.DebugID);
|
||||
this.Controls.Add(this.crashlogID);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.debuglogID);
|
||||
this.Controls.Add(this.BandwithComboBox);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.BandwithTextbox);
|
||||
this.Controls.Add(this.resignGamesCheckbox);
|
||||
this.Controls.Add(this.CblindBox);
|
||||
this.Controls.Add(this.userJsonOnGameInstall);
|
||||
this.Controls.Add(this.updateConfigCheckBox);
|
||||
this.Controls.Add(this.deleteAfterInstallCheckBox);
|
||||
this.Controls.Add(this.enableMessageBoxesCheckBox);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.DebugLogCopy);
|
||||
this.Controls.Add(this.applyButton);
|
||||
this.Controls.Add(this.checkForUpdatesCheckBox);
|
||||
this.Controls.Add(this.resetSettingsButton);
|
||||
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ForeColor = System.Drawing.Color.White;
|
||||
this.MaximumSize = new System.Drawing.Size(357, 313);
|
||||
this.MinimumSize = new System.Drawing.Size(357, 313);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "SettingsForm";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "Settings";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SettingsForm_FormClosing);
|
||||
this.TopMost = true;
|
||||
this.Load += new System.EventHandler(this.SettingsForm_Load);
|
||||
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.SettingsForm_KeyPress);
|
||||
this.Leave += new System.EventHandler(this.SettingsForm_Leave);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -237,9 +355,16 @@
|
||||
private System.Windows.Forms.CheckBox deleteAfterInstallCheckBox;
|
||||
private System.Windows.Forms.CheckBox updateConfigCheckBox;
|
||||
private System.Windows.Forms.CheckBox userJsonOnGameInstall;
|
||||
private System.Windows.Forms.CheckBox resignGamesCheckbox;
|
||||
private System.Windows.Forms.TextBox BandwithTextbox;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox BandwithComboBox;
|
||||
private System.Windows.Forms.Button DebugLogCopy;
|
||||
private System.Windows.Forms.Label crashlogID;
|
||||
private System.Windows.Forms.Button button1;
|
||||
public System.Windows.Forms.Label debuglogID;
|
||||
private System.Windows.Forms.TextBox DebugID;
|
||||
public System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.CheckBox CblindBox;
|
||||
}
|
||||
}
|
||||
135
SettingsForm.cs
@@ -1,5 +1,6 @@
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
@@ -14,26 +15,30 @@ namespace AndroidSideloader
|
||||
private void SettingsForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.CenterToParent();
|
||||
|
||||
if (!string.IsNullOrEmpty(Properties.Settings.Default.CurrentLogName))
|
||||
textBox1.Text = Properties.Settings.Default.CurrentCrashName;
|
||||
if (!string.IsNullOrEmpty(Properties.Settings.Default.CurrentLogPath))
|
||||
DebugID.Text = Properties.Settings.Default.CurrentLogName;
|
||||
debuglogID.Text = "This is your DebugLogID. Click on your DebugLogID to copy it to your clipboard.";
|
||||
intSettings();
|
||||
|
||||
intToolTips();
|
||||
}
|
||||
|
||||
//Init form objects with values from settings
|
||||
private void intSettings()
|
||||
{
|
||||
CblindBox.Checked = Properties.Settings.Default.QblindOn;
|
||||
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;
|
||||
resignGamesCheckbox.Checked = Properties.Settings.Default.ResignAPKs;
|
||||
if (Properties.Settings.Default.BandwithLimit.Length>1)
|
||||
if (Properties.Settings.Default.BandwithLimit.Length > 1)
|
||||
{
|
||||
BandwithTextbox.Text = Properties.Settings.Default.BandwithLimit.Remove(Properties.Settings.Default.BandwithLimit.Length - 1);
|
||||
BandwithComboBox.Text = Properties.Settings.Default.BandwithLimit[Properties.Settings.Default.BandwithLimit.Length-1].ToString();
|
||||
BandwithComboBox.Text = Properties.Settings.Default.BandwithLimit[Properties.Settings.Default.BandwithLimit.Length - 1].ToString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void intToolTips()
|
||||
@@ -46,6 +51,53 @@ namespace AndroidSideloader
|
||||
deleteAfterInstallToolTip.SetToolTip(this.deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public void DebugLogCopy_click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists($"{Properties.Settings.Default.CurrentLogPath}"))
|
||||
{
|
||||
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.CurrentLogPath}\" RSL-debuglogs:DebugLogs/");
|
||||
|
||||
MessageBox.Show($"Your debug log has been copied to the server. Please mention your DebugLog ID ({Properties.Settings.Default.CurrentLogName}) to the Mods (it has been automatically copied to your clipboard).");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void button1_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");
|
||||
|
||||
|
||||
if (File.Exists($"{Environment.CurrentDirectory}\\nouns\\nouns.txt"))
|
||||
{
|
||||
string[] lines = File.ReadAllLines($"{Environment.CurrentDirectory}\\nouns\\nouns.txt");
|
||||
Random r = new Random();
|
||||
int x = r.Next(6806);
|
||||
int y = r.Next(6806);
|
||||
string randomnoun = lines[new Random(x).Next(lines.Length)];
|
||||
string randomnoun2 = lines[new Random(y).Next(lines.Length)];
|
||||
string combined = randomnoun + "-" + randomnoun2;
|
||||
Properties.Settings.Default.CurrentLogPath = Environment.CurrentDirectory + "\\" + combined + ".txt";
|
||||
Properties.Settings.Default.CurrentLogName = combined;
|
||||
Properties.Settings.Default.Save();
|
||||
DebugID.Text = combined;
|
||||
this.Close();
|
||||
SettingsForm Form = new SettingsForm();
|
||||
Form.Show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Apply settings
|
||||
private void applyButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (BandwithTextbox.Text.Length > 0 && BandwithTextbox.Text != "0")
|
||||
@@ -55,16 +107,14 @@ namespace AndroidSideloader
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
Properties.Settings.Default.BandwithLimit = $"{BandwithTextbox.Text.Replace(" ", "")}{BandwithComboBox.Text}";
|
||||
}
|
||||
else
|
||||
Properties.Settings.Default.BandwithLimit = "";
|
||||
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
|
||||
FlexibleMessageBox.Show("Settings applied!");
|
||||
}
|
||||
|
||||
private void checkForUpdatesCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
@@ -98,17 +148,66 @@ namespace AndroidSideloader
|
||||
Properties.Settings.Default.userJsonOnGameInstall = userJsonOnGameInstall.Checked;
|
||||
}
|
||||
|
||||
private void resignGamesCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||
private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
if (resignGamesCheckbox.Checked && Spoofer.spoofer.HasDependencies())
|
||||
resignGamesCheckbox.Checked = true;
|
||||
else if (resignGamesCheckbox.Checked)
|
||||
if (e.KeyChar == (char)Keys.Escape)
|
||||
{
|
||||
MessageBox.Show("You are missing dependencies (install apktool aapt and jarsigner) and then restart the sideloader");
|
||||
resignGamesCheckbox.Checked = false;
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
Properties.Settings.Default.ResignAPKs = resignGamesCheckbox.Checked;
|
||||
private void SettingsForm_Leave(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
|
||||
private void Form_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
protected override bool ProcessDialogKey(Keys keyData)
|
||||
{
|
||||
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
|
||||
{
|
||||
this.Close();
|
||||
return true;
|
||||
}
|
||||
return base.ProcessDialogKey(keyData);
|
||||
}
|
||||
|
||||
private void DebugID_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists(Environment.CurrentDirectory + "\\" + Properties.Settings.Default.CurrentLogName + ".txt"))
|
||||
Clipboard.SetText(DebugID.Text);
|
||||
MessageBox.Show("DebugLogID copied to clipboard! Paste it to a moderator/helper for assistance!");
|
||||
}
|
||||
|
||||
private void textBox1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(Properties.Settings.Default.CurrentCrashName))
|
||||
{
|
||||
Clipboard.SetText(textBox1.Text);
|
||||
MessageBox.Show("CrashLogID copied to clipboard! Paste it to a moderator/helper for assistance!");
|
||||
}
|
||||
}
|
||||
|
||||
private void CblindBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
Properties.Settings.Default.QblindOn = CblindBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
}
|
||||
|
||||
private void CblindBox_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CblindBox.Checked)
|
||||
MessageBox.Show("You must restart Rookie's Sideloader OR click Refresh Updates List for changes to take effect.\n\nNOTE: Colors in the legend at the top right of the main window of Rookie won't update until you restart the program.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
158
Sideloader.cs
@@ -13,7 +13,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
class Sideloader
|
||||
{
|
||||
|
||||
public static string TempFolder = Path.Combine(Environment.CurrentDirectory, "temp");
|
||||
public static string CrashLogPath = "crashlog.txt";
|
||||
|
||||
public static string SpooferWarning = @"Please make sure you have installed:
|
||||
@@ -21,6 +21,8 @@ namespace AndroidSideloader
|
||||
- Java JDK
|
||||
- aapt
|
||||
And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
|
||||
//push user.json to device (required for some devices like oculus quest)
|
||||
public static void PushUserJsons()
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
@@ -32,44 +34,73 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
}
|
||||
}
|
||||
|
||||
public static List<string> InstalledPackageNames = new List<string>();
|
||||
//List of all installed package names from connected device
|
||||
public static Dictionary<string, string> InstalledPackages = new Dictionary<string, string>(); //Packagename and Version
|
||||
//public static List<string> InstalledPackageNames = new List<string>();
|
||||
|
||||
//Remove folder from device
|
||||
public static ProcessOutput RemoveFolder(string path)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
return ADB.RunAdbCommandToString($"shell rm -r {path}");
|
||||
}
|
||||
|
||||
public static ProcessOutput RunADBCommandsFromFile(string path, string RunFromPath)
|
||||
public static ProcessOutput RemoveFile(string path)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
ProcessOutput output = new ProcessOutput("","");
|
||||
return ADB.RunAdbCommandToString($"shell rm -f {path}");
|
||||
}
|
||||
|
||||
//For games that require manual install, like having another folder that isnt an obb
|
||||
public static ProcessOutput RunADBCommandsFromFile(string path)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
ProcessOutput output = new ProcessOutput();
|
||||
var commands = File.ReadAllLines(path);
|
||||
foreach (string cmd in commands)
|
||||
{
|
||||
if (cmd.Contains("7z.exe"))
|
||||
{
|
||||
Program.form.ChangeTitle($"Running {cmd}");
|
||||
Logger.Log($"Logging command: {cmd} from file: {path}");
|
||||
output += ADB.RunCommandToString(cmd, path);
|
||||
}
|
||||
if (cmd.StartsWith("adb"))
|
||||
{
|
||||
var regex = new Regex(Regex.Escape("adb"));
|
||||
var command = regex.Replace(cmd, $"\"{ADB.adbFilePath}\"", 1);
|
||||
|
||||
Logger.Log($"Logging command: {command} from file: {path}");
|
||||
|
||||
string replacement = "";
|
||||
string pattern = "adb";
|
||||
if (ADB.DeviceID.Length > 1)
|
||||
command = $" -s {ADB.DeviceID} {command}";
|
||||
output += Utilities.GeneralUtilities.startProcess("cmd.exe", RunFromPath, command);
|
||||
replacement = $"{Properties.Settings.Default.ADBPath} -s {ADB.DeviceID}";
|
||||
else
|
||||
replacement = $"{Properties.Settings.Default.ADBPath}";
|
||||
Regex rgx = new Regex(pattern);
|
||||
string result = rgx.Replace(cmd, replacement);
|
||||
Program.form.ChangeTitle($"Running {result}");
|
||||
Logger.Log($"Logging command: {result} from file: {path}");
|
||||
output += ADB.RunAdbCommandToStringWOADB(result, path);
|
||||
if (output.Error.Contains("mkdir"))
|
||||
output.Error = "";
|
||||
if (output.Output.Contains("reserved"))
|
||||
output.Output = "";
|
||||
}
|
||||
}
|
||||
output.Output += "Custom install successful!";
|
||||
return output;
|
||||
}
|
||||
|
||||
public static ProcessOutput RecursiveOutput = new ProcessOutput("","");
|
||||
|
||||
|
||||
|
||||
|
||||
//Recursive sideload any apk fileD
|
||||
public static ProcessOutput RecursiveOutput = new ProcessOutput();
|
||||
public static void RecursiveSideload(string FolderPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (string f in Directory.GetFiles(FolderPath))
|
||||
{
|
||||
if (Path.GetExtension(f)==".apk")
|
||||
if (Path.GetExtension(f) == ".apk")
|
||||
|
||||
RecursiveOutput += ADB.Sideload(f);
|
||||
}
|
||||
|
||||
@@ -81,6 +112,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
catch (Exception ex) { Logger.Log(ex.Message); }
|
||||
}
|
||||
|
||||
//Recursive copy any obb folder
|
||||
public static void RecursiveCopyOBB(string FolderPath)
|
||||
{
|
||||
try
|
||||
@@ -98,6 +130,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
catch (Exception ex) { Logger.Log(ex.Message); }
|
||||
}
|
||||
|
||||
//uninstalls an app
|
||||
public static ProcessOutput UninstallGame(string GameName)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
@@ -111,14 +144,33 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
|
||||
output = ADB.UninstallPackage(packageName);
|
||||
|
||||
//remove both data and obb if there is any
|
||||
Sideloader.RemoveFolder("/sdcard/Android/obb/" + packageName);
|
||||
Sideloader.RemoveFolder("/sdcard/Android/data/" + packageName);
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
public static ProcessOutput DeleteFile(string GameName)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
|
||||
string packageName = Sideloader.gameNameToPackageName(GameName);
|
||||
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"Are you sure you want to uninstall custom QU settings for {packageName}? this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
|
||||
if (dialogResult != DialogResult.Yes)
|
||||
return output;
|
||||
|
||||
output = Sideloader.RemoveFile($"/sdcard/Android/data/{packageName}/private/Config.Json");
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
//Extracts apk from device, saves it by package name to sideloader folder
|
||||
public static ProcessOutput getApk(string GameName)
|
||||
{
|
||||
|
||||
ADB.WakeDevice();
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
|
||||
@@ -134,15 +186,12 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
|
||||
output += ADB.RunAdbCommandToString("pull " + apkPath); //pull apk
|
||||
|
||||
string currApkPath = apkPath;
|
||||
while (currApkPath.Contains("/"))
|
||||
currApkPath = currApkPath.Substring(currApkPath.IndexOf("/") + 1);
|
||||
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}"))
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
|
||||
|
||||
if (File.Exists(Environment.CurrentDirectory + "\\" + packageName + ".apk"))
|
||||
File.Delete(Environment.CurrentDirectory + "\\" + packageName + ".apk");
|
||||
|
||||
File.Move(Environment.CurrentDirectory + "\\adb\\" + currApkPath, Environment.CurrentDirectory + "\\" + packageName + ".apk");
|
||||
Directory.CreateDirectory($"{Properties.Settings.Default.MainDir}\\{packageName}");
|
||||
|
||||
File.Move($"{Properties.Settings.Default.ADBFolder}\\base.apk", $"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk");
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -150,48 +199,62 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
{
|
||||
foreach (string[] game in SideloaderRCLONE.games)
|
||||
{
|
||||
if (gameName.Equals(game[SideloaderRCLONE.GameNameIndex]))
|
||||
if (gameName.Contains(game[SideloaderRCLONE.GameNameIndex]))
|
||||
return game[SideloaderRCLONE.PackageNameIndex];
|
||||
if (gameName.Contains(game[SideloaderRCLONE.ReleaseNameIndex]))
|
||||
return game[SideloaderRCLONE.PackageNameIndex];
|
||||
}
|
||||
return gameName;
|
||||
}
|
||||
|
||||
public static string PackageNametoGameName(string gameName)
|
||||
{
|
||||
foreach (string[] game in SideloaderRCLONE.games)
|
||||
{
|
||||
if (gameName.Contains(game[SideloaderRCLONE.PackageNameIndex]))
|
||||
return game[SideloaderRCLONE.ReleaseNameIndex];
|
||||
}
|
||||
return gameName;
|
||||
}
|
||||
|
||||
public static string gameNameToSimpleName(string gameName)
|
||||
{
|
||||
foreach (string[] game in SideloaderRCLONE.games)
|
||||
{
|
||||
if (gameName.Contains(game[SideloaderRCLONE.GameNameIndex]))
|
||||
return game[SideloaderRCLONE.GameNameIndex];
|
||||
if (gameName.Contains(game[SideloaderRCLONE.ReleaseNameIndex]))
|
||||
return game[SideloaderRCLONE.GameNameIndex];
|
||||
}
|
||||
return gameName;
|
||||
}
|
||||
|
||||
//Downloads the required files
|
||||
public static void downloadFiles()
|
||||
{
|
||||
using (var client = new WebClient())
|
||||
var client = new WebClient();
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
try
|
||||
{
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
|
||||
if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\warning.png"))
|
||||
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/secret", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\warning.png");
|
||||
|
||||
|
||||
if (!File.Exists("Sideloader Launcher.exe"))
|
||||
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/Sideloader%20Launcher.exe", "Sideloader Launcher.exe");
|
||||
|
||||
if (!Directory.Exists(ADB.adbFolderPath)) //if there is no adb folder, download and extract
|
||||
{
|
||||
try
|
||||
{
|
||||
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/adb.7z", "adb.7z");
|
||||
Utilities.Zip.ExtractFile(Environment.CurrentDirectory + "\\adb.7z", Environment.CurrentDirectory);
|
||||
File.Delete("adb.7z");
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/adb.7z", "adb.7z");
|
||||
Utilities.Zip.ExtractFile(Environment.CurrentDirectory + "\\adb.7z", Environment.CurrentDirectory);
|
||||
File.Delete("adb.7z");
|
||||
}
|
||||
|
||||
if (!Directory.Exists(Environment.CurrentDirectory + "\\rclone"))
|
||||
{
|
||||
string url;
|
||||
if (Environment.Is64BitOperatingSystem)
|
||||
url = "https://downloads.rclone.org/v1.53.1/rclone-v1.53.1-windows-amd64.zip";
|
||||
url = "https://downloads.rclone.org/v1.55.1/rclone-v1.55.1-windows-amd64.zip";
|
||||
else
|
||||
url = "https://downloads.rclone.org/v1.53.1/rclone-v1.53.1-windows-386.zip";
|
||||
url = "https://downloads.rclone.org/v1.55.1/rclone-v1.55.1-windows-386.zip";
|
||||
//Since sideloader is build for x86, it should work on both x86 and x64 so we download the according rclone version
|
||||
|
||||
client.DownloadFile(url, "rclone.zip");
|
||||
|
||||
@@ -205,13 +268,18 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
if (folder.Contains("rclone"))
|
||||
{
|
||||
Directory.Move(folder, "rclone");
|
||||
break;
|
||||
break; //only 1 rclone folder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
FlexibleMessageBox.Show("Your internet is not working properly or rclone/github servers are down, some files may be missing (adb, rclone or launcher)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace AndroidSideloader
|
||||
public string Output;
|
||||
public string Error;
|
||||
|
||||
public ProcessOutput(string output, string error)
|
||||
public ProcessOutput(string output = "", string error = "")
|
||||
{
|
||||
Output = output;
|
||||
Error = error;
|
||||
|
||||
@@ -32,9 +32,15 @@ namespace AndroidSideloader
|
||||
*/
|
||||
public static List<string[]> games = new List<string[]>();
|
||||
|
||||
public static string Nouns = Environment.CurrentDirectory + "\\nouns";
|
||||
public static string ThumbnailsFolder = Environment.CurrentDirectory + "\\thumbnails";
|
||||
public static string NotesFolder = Environment.CurrentDirectory + "\\notes";
|
||||
|
||||
public static void UpdateNouns(string remote)
|
||||
{
|
||||
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/nouns\" \"{Nouns}\"");
|
||||
}
|
||||
|
||||
public static void UpdateGamePhotos(string remote)
|
||||
{
|
||||
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\"");
|
||||
@@ -42,6 +48,7 @@ namespace AndroidSideloader
|
||||
|
||||
public static void UpdateGameNotes(string remote)
|
||||
{
|
||||
|
||||
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/notes\" \"{NotesFolder}\"");
|
||||
}
|
||||
|
||||
@@ -70,7 +77,8 @@ namespace AndroidSideloader
|
||||
gameProperties.Clear();
|
||||
games.Clear();
|
||||
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/GameList.txt\"").Output;
|
||||
//File.WriteAllText("GamesList.txt", tempGameList);
|
||||
if (MainForm.debugMode)
|
||||
File.WriteAllText("GamesList.txt", tempGameList);
|
||||
string gamePropertiesLine = Utilities.StringUtilities.RemoveEverythingAfterFirst(tempGameList, "\n");
|
||||
|
||||
foreach (string gameProperty in gamePropertiesLine.Split(';'))
|
||||
@@ -87,18 +95,16 @@ namespace AndroidSideloader
|
||||
}
|
||||
|
||||
//Output
|
||||
Console.WriteLine("Headers:");
|
||||
foreach (string s in gameProperties)
|
||||
{
|
||||
Console.WriteLine($"gameProperty: {s}");
|
||||
}
|
||||
Console.WriteLine("Games");
|
||||
//Console.WriteLine("Headers:");
|
||||
//foreach (string s in gameProperties)
|
||||
//{
|
||||
// Console.WriteLine($"gameProperty: {s}");
|
||||
//}
|
||||
foreach (string[] s in games)
|
||||
{
|
||||
string output = "";
|
||||
for (int i = 0; i < gameProperties.Count; i++)
|
||||
output += s[i] + " ";
|
||||
Console.WriteLine(output);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +121,7 @@ namespace AndroidSideloader
|
||||
catch { return 0; }
|
||||
}
|
||||
|
||||
public static async Task updateConfig(string remote)
|
||||
public static void updateConfig(string remote)
|
||||
{
|
||||
string localHash = "";
|
||||
try { localHash = File.ReadAllText(Environment.CurrentDirectory + "\\rclone\\hash.txt"); } catch { } //file may not exist
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace AndroidSideloader
|
||||
string[] files = Directory.GetFiles(path);
|
||||
|
||||
foreach (string file in files)
|
||||
if (file.EndsWith(".obb"))
|
||||
if (file.EndsWith(".obb") || Path.GetDirectoryName(file).Contains(".") && !Path.GetDirectoryName(file).Contains("_data"))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace AndroidSideloader
|
||||
}
|
||||
string NewPackageName = PackageNameTextBox.Text;
|
||||
string path;
|
||||
|
||||
using (OpenFileDialog openFileDialog = new OpenFileDialog())
|
||||
{
|
||||
openFileDialog.Filter = "Android apps (*.apk)|*.apk";
|
||||
@@ -38,6 +39,7 @@ namespace AndroidSideloader
|
||||
progressBar1.Style = ProgressBarStyle.Marquee;
|
||||
|
||||
string output = "";
|
||||
//Spawn spoofer in a new thread so the ui isn't blocked
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
spoofer.Init();
|
||||
|
||||
1
ThemeForm.Designer.cs
generated
@@ -209,7 +209,6 @@
|
||||
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.Name = "themeForm";
|
||||
this.Text = "Create Your Theme";
|
||||
this.Load += new System.EventHandler(this.themeForm_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
17
ThemeForm.cs
@@ -8,14 +8,13 @@ namespace AndroidSideloader
|
||||
{
|
||||
public partial class themeForm : Form
|
||||
{
|
||||
|
||||
public themeForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Code made by @Gotard#9164 from discord (id 352745203322585088)
|
||||
//Steam profile: https://steamcommunity.com/id/GotardPL/
|
||||
private void button4_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (colorDialog1.ShowDialog() == DialogResult.OK)
|
||||
@@ -25,9 +24,7 @@ namespace AndroidSideloader
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (colorDialog1.ShowDialog() == DialogResult.OK)
|
||||
Properties.Settings.Default.BackColor = colorDialog1.Color;
|
||||
|
||||
|
||||
Properties.Settings.Default.BackColor = colorDialog1.Color;
|
||||
}
|
||||
|
||||
private void button7_Click(object sender, EventArgs e)
|
||||
@@ -47,11 +44,8 @@ namespace AndroidSideloader
|
||||
Properties.Settings.Default.FontStyle = new Font("Microsoft Sans Serif", 11, FontStyle.Regular);
|
||||
Properties.Settings.Default.FontColor = Color.White;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void button5_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (colorDialog1.ShowDialog() == DialogResult.OK)
|
||||
@@ -91,11 +85,6 @@ namespace AndroidSideloader
|
||||
Properties.Settings.Default.SubButtonColor = colorDialog1.Color;
|
||||
}
|
||||
|
||||
private void themeForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void button12_Click(object sender, EventArgs e)
|
||||
{
|
||||
String BackColor = ColorTranslator.ToHtml(Properties.Settings.Default.BackColor);
|
||||
|
||||
29
Updater.cs
@@ -17,50 +17,53 @@ namespace AndroidSideloader
|
||||
private static string RawGitHubUrl;
|
||||
private static string GitHubUrl;
|
||||
|
||||
static readonly public string LocalVersion = "2.0-WIP";
|
||||
static readonly public string LocalVersion = "2.5.1";
|
||||
public static string currentVersion = string.Empty;
|
||||
public static string changelog = string.Empty;
|
||||
|
||||
//Check if there is a new version of the sideloader
|
||||
private static bool IsUpdateAvailable()
|
||||
{
|
||||
HttpClient client = new HttpClient();
|
||||
try
|
||||
{
|
||||
currentVersion = client.GetStringAsync($"{RawGitHubUrl}/master/version").Result;
|
||||
if (currentVersion.Length > LocalVersion.Length)
|
||||
currentVersion = currentVersion.Remove(currentVersion.Length - 1);
|
||||
changelog = client.GetStringAsync($"{RawGitHubUrl}/master/changelog.txt").Result;
|
||||
client.Dispose();
|
||||
}
|
||||
catch { return false; }
|
||||
return LocalVersion != currentVersion;
|
||||
}
|
||||
|
||||
//Call this to ask the user if they want to update
|
||||
public static void Update()
|
||||
{
|
||||
RawGitHubUrl = $"https://raw.githubusercontent.com/{Repostory}";
|
||||
GitHubUrl = $"https://github.com/{Repostory}";
|
||||
RawGitHubUrl = $"https://raw.githubusercontent.com/nerdunit/androidsideloader";
|
||||
GitHubUrl = $"https://github.com/nerdunit/androidsideloader";
|
||||
if (IsUpdateAvailable())
|
||||
doUpdate();
|
||||
}
|
||||
|
||||
//If the user wants to update
|
||||
private static void doUpdate()
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"There is a new update you have version {LocalVersion}, do you want to update?\nCHANGELOG\n{changelog}", $"Version {currentVersion} is available", MessageBoxButtons.YesNo);
|
||||
if (dialogResult != DialogResult.Yes)
|
||||
return;
|
||||
|
||||
//Download new sideloader with version appended to file name so there is no chance of overwriting the current exe
|
||||
try
|
||||
{
|
||||
using (var fileClient = new WebClient())
|
||||
{
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
Logger.Log($"Downloading update from {RawGitHubUrl}/releases/download/v{currentVersion}/{AppName}.exe to {AppName} v{currentVersion}.exe");
|
||||
fileClient.DownloadFile($"{GitHubUrl}/releases/download/v{currentVersion}/{AppName}.exe", $"{AppName} v{currentVersion}.exe");
|
||||
fileClient.Dispose();
|
||||
}
|
||||
var fileClient = new WebClient();
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
Logger.Log($"Downloading update from {RawGitHubUrl}/releases/download/v{currentVersion}/{AppName}.exe to {AppName} v{currentVersion}.exe");
|
||||
fileClient.DownloadFile($"{GitHubUrl}/releases/download/v{currentVersion}/{AppName}.exe", $"{AppName} v{currentVersion}.exe");
|
||||
fileClient.Dispose();
|
||||
|
||||
Logger.Log($"Starting {AppName} v{currentVersion}.exe");
|
||||
Process.Start($"{AppName} v{currentVersion}.exe");
|
||||
//Delete current version
|
||||
AndroidSideloader.Utilities.GeneralUtilities.Melt();
|
||||
}
|
||||
catch { }
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace AndroidSideloader
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
createUserJson(textBox1.Text);
|
||||
|
||||
|
||||
});
|
||||
t1.IsBackground = true;
|
||||
t1.Start();
|
||||
@@ -78,6 +78,6 @@ namespace AndroidSideloader
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ namespace AndroidSideloader.Utilities
|
||||
{
|
||||
return $"com.{GeneralUtilities.randomString(rand.Next(3, 8))}.{GeneralUtilities.randomString(rand.Next(3, 8))}";
|
||||
}
|
||||
bool isLoading = true;
|
||||
public static string CommandOutput = "";
|
||||
public static string CommandError = "";
|
||||
|
||||
@@ -48,7 +47,6 @@ namespace AndroidSideloader.Utilities
|
||||
|
||||
process.WaitForExit();
|
||||
|
||||
Console.WriteLine("ExitCode: {0}", process.ExitCode);
|
||||
process.Close();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,25 @@
|
||||
using System.IO;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
class Logger
|
||||
{
|
||||
public static string logfile = "debuglog.txt";
|
||||
|
||||
public string logfile = Properties.Settings.Default.CurrentLogPath;
|
||||
public static bool Log(string text, bool ret = true)
|
||||
{
|
||||
string newline = "\n";
|
||||
if (text.Length > 40 && text.Contains("\n"))
|
||||
newline += "\n\n";
|
||||
try { File.AppendAllText(logfile, text + newline); } catch { }
|
||||
|
||||
string time = DateTime.Now.ToString("hh:mmtt(UTC): ");
|
||||
if (text.Length > 5)
|
||||
{
|
||||
|
||||
string newline = "\n";
|
||||
if (text.Length > 40 && text.Contains("\n"))
|
||||
newline += "\n\n";
|
||||
try {File.AppendAllText(Properties.Settings.Default.CurrentLogPath, time + text + newline); } catch { }
|
||||
return ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
BIN
androidsideloader.7z
Normal file
610
changelog.txt
@@ -1,552 +1,82 @@
|
||||
!!!IMPORTANT!!!
|
||||
THIS VERSION IS WORK IN PROGRESS DUE TO LACK OF TESTERS!
|
||||
Due to how the rclone config works now, if you used Rookie's Sideloader with a custom config
|
||||
Make sure to redownload the entire rclone folder from the config provider!
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v2.0-WIP
|
||||
RSL 2.5.1
|
||||
|
||||
Changes
|
||||
+ Added update checker for games
|
||||
+ Added dependency check for spoofer
|
||||
+ Games now can have images
|
||||
+ Replaced the gamescombo box with a listview
|
||||
+ Listview marks already installed games with green and outdated ones with yellow
|
||||
+ Sideloader should be faster now
|
||||
+ Reduced sideloader size
|
||||
+ Installing games and copying obbs tries to wake the device first
|
||||
+ Sideloader calls adb usb on start now
|
||||
+ ADB Output now is a proper object containing strings for stdout and stderr, handling will be easier now
|
||||
+ Changed spoof on rclone install to resign, allowing users to easily update games from now on!
|
||||
//You can still use the spoof button manually
|
||||
= Fixed UI not starting for some people
|
||||
= Refreshing mirrors now deosn't change the selected mirror
|
||||
= Cleaned & reworked code in sideloader and spoofer
|
||||
= Fixed Spoofer.Init() on Non-English Windows
|
||||
= Fixed crash detection
|
||||
= Reworked rclone config handling
|
||||
= Fixed game release not existing resulted in a crash
|
||||
= Sideloader false positive detections reduced
|
||||
= Small ui changes, hopefully for the better
|
||||
+ Added PARTIAL SEARCH compatibility to Quick Search. Quick
|
||||
Search now works if users type one word or one part of a word
|
||||
that matches a release. For example if an app was named
|
||||
"Supercool Awesome Application", typing "Application",
|
||||
"Awesome", or even "Cool" would work as it works with parts of
|
||||
words as well.
|
||||
|
||||
NOTE:As a reminder you can open Quick Search with F2, CTRL+F
|
||||
or by cllicking on the Quick Search magnifying glass icon.
|
||||
|
||||
+ Added a blocklist for apps that can't be updated for various
|
||||
reasons. This will prevent users from being asked to send apps
|
||||
that cannot be used.
|
||||
+ Added .png support for gameslist thumbnails.
|
||||
+ Added tip under Notes section at launch to remind users they
|
||||
can press F1 to view all of the program shortcuts added in a
|
||||
prior update.
|
||||
= Some minor syntax updates.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEGqr8ACgkQx/Rql1Vo
|
||||
czftJA//ePxg5+fuAoYNfl2D8yKpzhkvQldkdZia1GJiHBb4CJBwdhMDpDeNhKzO
|
||||
ziJ5yBNLqx6wWSbHV70PF4fagASA81FeLbJxdJX4gFgtX9MpzoR2ppK+Gy1UYVGw
|
||||
ij1fjQIIIHXyAVDgaS4DcRQrgxtc6R2G3iey3EBaxtaWDh2cR3sWdR6QMcZSJ/0S
|
||||
/QLXROCCCIHc1mTsf37b2qQVQ/v2Yk/UAGSV6/VdN78QE7Z8dPqCLZvM+10mfXTE
|
||||
AOJ6WkZBVA7HkpRgEGVtTLor+kwDROshkq+eM7yMREFv6GwHtd5H0hHGhRr/FoVW
|
||||
E99TfabD9Rd5P7tvcYm2c6Diu7yz2ai7l7N6G77wr+lOfsmIniHeUYEWsPOcZHQH
|
||||
P+0Xvx84cHj6Dd2+zfCWcI/jPamfgzgxrBS/pSXJ5ktdrCiJRnqeU9FhJxhGF002
|
||||
7+iIZTumhAU4ab8LhSzkMg+hwhzTrhmgbeZE1jdwLiLQ3vyYszEB5zflubt86pLq
|
||||
WXVvupQKtCGek1B3ETvU2YzNaQe6vVjqrh0sHkwgYgwfhLg9+gc+c3Rtq6ighqfc
|
||||
KNDocmVcNOJMNkre/DOTmVU6ULg22pXlj0PgWkxph/vt1SegMbPMVGUJD0ncIqL8
|
||||
eQbzNOltkzALWel4S2Itvv/JgoDU1YDupJmZNh66ihKBuIdcT0k=
|
||||
=wU75
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v1.17SU1
|
||||
|
||||
Changes
|
||||
+ Added some instructions & checks for the spoofer
|
||||
+ Added crash detection
|
||||
= Fixed the game queue broken since 1.17
|
||||
RSL 2.5
|
||||
|
||||
Date 11/19/2020
|
||||
+ Upgraded Extract APK from device to Extract APP to Desktop.
|
||||
RSL will now automatically extract the APK file, then extract
|
||||
the obb if there is any for the selected app, then it will
|
||||
compress both into a zip file and place it on the desktop so
|
||||
users can share their apps without issue.
|
||||
+ Added automatic detection of apps that are more updated than
|
||||
the database user is connecting to, and if they are a pop up
|
||||
will ask if user wants to share the app.
|
||||
= Fixed issue where copying a folder containing an obb folder
|
||||
via drag and drop would cause the containing folder to be copied
|
||||
to the obb folder as well.
|
||||
= Changelog.txt now only contains the 3 most recent updates
|
||||
including the most current, the older changelogs can be found
|
||||
in the ChangelogHistory text file.
|
||||
|
||||
VT: https://bit.ly/3nDUMcx
|
||||
|
||||
MD5 Checksum: 6DA8ADBE4447A809C598379E73DC7F77
|
||||
SHA-1 Checksum: 924220FE8877174CCB9732F1F99B759DD6749102
|
||||
SHA-256 Checksum: 0405C389A7D84CAC0D9081BDE10D010300822B10EBC2FF94C501EC740C8CFA40
|
||||
SHA-512 Checksum: E8C3A15257C30278CEBC46507B1F6049FFB5AC0D6E4FBB73E1776537F80CBEA95C8C81A3F3259F8AEEDE276EBF6D50F6945622403E9D80B5E9E0F47B050BBEA9
|
||||
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+2aycACgkQvrtJUNxE
|
||||
TxOlEw/6ArmiRFAjUNC2YaElJ7fFsXVzCaeJ680rs0CK4oX9P7YjZ46y2/VGDtX/
|
||||
IAGvWCqHOIw2t0sk01/JwoyKZFERLDn2MRCj9FTPsrPA8yqveiIx/fof90QaN2Q9
|
||||
4aV6ht+SSirQFWTXENboEbQSWxFHW/z5/Dud8gDBuCTuFuueBk+EAph5yI3dcjCK
|
||||
naDE1gX+CE21ef84F3nGMspu2q/uCaIM2mvEWR2hBvWLsQpH7m5uQegXGYywe6YC
|
||||
/8wEY2mEe0nayp/3NglDDarsPN8wx1U5i/kqS8wrzZZT49pRqKZ0wykWGfAPQsaO
|
||||
txmfiwH+5cu3J/6PpAMVuNjhtL0dnR5MapsXT3CoRvSiRDl2urdYJUQj1CsYOEWP
|
||||
Q4St6ISoUoANhVFRcM9mbq7clxdJnfBqdr1J0YrK804qWp3krDYv5hrpE3Puu/nA
|
||||
TORsqWiHPgQQHANsNYsY4WkvLiYHWyB62Cm2NATdtaoVWzsrBgFk9xlp1oIQcMXo
|
||||
RlRQZQ7tQ0VFFxaP7ARRaf9ay78geC3W/cr63JTn8Hz7Ul1h+ZRa7tb1KYvpCTnp
|
||||
xC7vh3IyBwc4M7mt4CxsjdFnkO3iaDybFvlufua/5vMlt70HLdutHa7vMYSZ+GFr
|
||||
HL+SrazP9o8ut2L85uBqCjWHPfgVaBaaQgk9FgZe0WQoS06fdeU=
|
||||
=DIzT
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v1.17
|
||||
Please manually update to this version, as it fixes automatic updates that were broken since 1.15
|
||||
|
||||
Changes
|
||||
+ Better game installation => no need for manual installation of games anymore
|
||||
+ Added theme changer back and updated it
|
||||
= Fixed updates
|
||||
= Updated quest options
|
||||
|
||||
Date 11/14/2020
|
||||
|
||||
VT: https://bit.ly/3lwztcn
|
||||
|
||||
MD5 Checksum: CC7BF16A3D687C21208E9E986D720CAE
|
||||
SHA-1 Checksum: CE0C71B4097068E84FA6FC65F4AFE69CBC79AA29
|
||||
SHA-256 Checksum: D9393C28376DDE1D0582BCF939D1414879EDE6772CE82F83F54C0EA0F239B2F0
|
||||
SHA-512 Checksum: 326C7A0177E9B8BCFA10CB3B8FAEA025F9C45C599DE5D46CA06DFEE427351F3AE88371C5A0827DEADF7D3F459052C421A145AA5581FE3C4BD2EFAD33BCFFC37B
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+wFCUACgkQvrtJUNxE
|
||||
TxO0ThAAw6po24zaYQFa+aGrgQNuWYWRxirCkLekEgmy8XVL6Q0rgMeLeq2MrCBP
|
||||
wi2eBMFlLNOXy1TXOhled89NRBiBeST2Hl4TVv0Qdavd9cSeuGD/rh/PsyxnxY2Y
|
||||
RWCPeXiYOf0mN1zVylLas+2vk9o/lrNieJir1nMEvyVbUJs8lTDcBdo2vVFwHK9N
|
||||
nStFPxjqRb8R6smTIsltIh4+juQQMX0GyCcEMUkb5aO6BP34Mpsoaf+9bxV/elJm
|
||||
UXnFSh5pjzHhkYGKVePtoHev8aFOzLeqIrfyWRJl+7gBMgYIautaxAIE+Zsy3Sai
|
||||
wxUk9HJeAYwEPhYcIJKGAy+fmeX/TePQjUqLu1Pp+sJ8orstSiMjwXr84UtvyUWZ
|
||||
+gSTgsQJ1QNUlhp+eJ0D6CchkAwliUXgnpIzwyn1Jj54X3ecHNjMbc5SettlXcBG
|
||||
qgy5bUx8+v4H4gHmqTyZQNv1bsvIiQlcwPPUtpSzSXrzJPfZjrqPZzUWB8/Vltqc
|
||||
JIR8FxEqi7+mW6AqrhUjE74N/fFibJTEuv6RALwZIAfMYEuSeFlZlDJYZ9v3H4/X
|
||||
2jd+wEksbq6uYUl2l3X/7TpMWX29paj18cLD8oTSLK/RvzLXe0hhUcvuHrMxi+14
|
||||
Q+V7uZYGge4Z5PANGPhd2tSkvw4CyA25OQ868QXjqciSLTfK2SU=
|
||||
=Yu78
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v1.16
|
||||
|
||||
Changes
|
||||
+ Speed Limiter for rclone
|
||||
= Random packagenames more random now
|
||||
= Bugfixes
|
||||
|
||||
Date 11/12/2020
|
||||
|
||||
VT: https://bit.ly/2K4Y5Lv
|
||||
|
||||
MD5 Checksum: 29978E435BF02865CE61EF6279FB42ED
|
||||
SHA-1 Checksum: 2E47CFDE7549D088A102F021657E9CD6859EAC47
|
||||
SHA-256 Checksum: 50057AC0DA315C492C9C45B5801AE99E65B812F5BC18E23622CCAF5FBC48760A
|
||||
SHA-512 Checksum: E485ADB6088C1F7DC34B65B57A9077E876D3D576D48CCED1FCA691A113CA5F6D0F8A0D31C6C848B6719FF18B7D4C5F829B9DAA8789EA6087F8B1D41005F87A48
|
||||
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+tHY0ACgkQvrtJUNxE
|
||||
TxOpjRAAmjaIfvIP+HvfTMGKOEGoVRDIBqEyi8tzq8hn5Z3OadBVLkWT23WblQBw
|
||||
Ur6BN1fuhH5B8ToGoqX/C1lrgXsvHNDB8frGUWnO1G1KJAQEGwKPRdKyK7YPlrYm
|
||||
kK74CYuM8w7qjkhX3f50ECZ4Kj1WsE92mIHjfB1xLSGzN0o7Tr1EvFFDnuXrJ0I0
|
||||
vEbeto0Qo19ORcoP7KFPgGuYmMYJQ2MuwYmWDWAdm4iL1Y9vEKZ4TsHG+KmYPdo8
|
||||
19YoZj8PsgYxCBy9B+UZfkJnfF7gYKmiAsgnQviDc4BvZccfAVjmWcKkzJueDkvr
|
||||
GgFmbaFE48svC2NU8Qd2gq6gIX0JrnKACZqopqgorl1817Z7Rsdh2iVwTMOvxbe7
|
||||
a4kAtDN90KwuRlnwoxeCBdESDSrANbiNi1yaDZc5hr/xOxUsa1JKhk7/8mcdHj78
|
||||
QoCRoji60Cq8XYeRNDXI32TkZd7ql9c64AjGH1uSySIPXfehOa+m5S53Jo2dRh5p
|
||||
iI1LGHjTk7EDekIVRh/cPC+hohfUAKYbUcXp15cx0HndW5+galYIH/RAjF0L+Q1U
|
||||
THz36HpKvLSsgkVkeVjPNJn9Ow6xgyByLTkHrS9D7Kj78FrKiAKr08+aI3+WCpdq
|
||||
1G9HcH5VzDeZ7/jfVQPhsAn3dPxlTt6ReYzbeFkrO1UHFcTdl58=
|
||||
=KyH4
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v1.15HF1
|
||||
|
||||
Changes
|
||||
= Bugfixes
|
||||
|
||||
Date 11/06/2020
|
||||
|
||||
VT: https://bit.ly/2GDYWRU
|
||||
|
||||
MD5 Checksum: F0D51FEC94F8D266390E61E89E6A2EE0
|
||||
SHA-1 Checksum: 4FB43CFA6021B8360A23858169FAF15468B68EDF
|
||||
SHA-256 Checksum: CBE414D9A283871099057EE5D8E56AF408996AE9C996C31F92C4DAE16D48B024
|
||||
SHA-512 Checksum: F16A6B29ECABBB16D25B7F7FC52CB15AE4930B2B17ABAC791BF1F331270F40B047094FDEAF1EF834E72E26AA3A6762AF8BE13EBCB735EB1C1009F884E338D9DE
|
||||
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+lfEkACgkQvrtJUNxE
|
||||
TxMDDxAAg+90vrCn0PllPEezzX3AJpy7NFWhFjUlDOLzNFMPa/QdAfF6H5vhEGay
|
||||
bhX2BDHKSIV86bLkyGPkGHuf3etpXvZsNAmPuDoZpZ4owd1O09DOvAHIJx8F1Eia
|
||||
Jc9Zovz6lKLAeIbK9ZdChKwTG3hYLIkx3rMgtvnJkZfzUKbhdU9MP0rVEzDPkSfe
|
||||
ay2CGA9xLBUhPcItUTxhANzrDpRXMGHqbi+Wrscp+KmvnjHzN3Haq2A9rsasXM5Z
|
||||
RSG8ccLZiI496tJQquTvPXYcnWQQudzcf3yiicztein0xcISEat0FFIVao7TtnS4
|
||||
cgitvGNtfXXauAxyzjZ7PdgrVuoAE/v4m25pzaTRy7TOfW1uTz2/6lr6tZa38+p9
|
||||
Bs36KcoK64FcPWjfR7zvvmCUWT/aHlRC9FwMvBHB81WRRk6xGaKl8G2QxfKY/ATl
|
||||
DNlgYXfXLzipam74XfPHiyK4Sc55WLDQxZfZfD6tqTo4u8qoDESvcEz+pbGe4Wp8
|
||||
awY4FVeSP1jVQzHgWf+oMTiHm5Gb3qMLUhZ/AHidUWFLhzXmAA4YXxIHKidRjCYT
|
||||
42Kzs1sjT2A5ll2V7jz4pqoRlsvRAxNZ5KgAZ2R01zo7gS1nGqjyoGq3tLWHbfJk
|
||||
/kD4QlOwcv06Jvp8aHcPxpccB7KHZGoRT2PB6IQE9Gt72pmAU9c=
|
||||
=f7yh
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v1.15
|
||||
|
||||
Changes
|
||||
+ Added a spoofer
|
||||
+ Added option to auto spoof games with random package name
|
||||
+ Added new username support for quest 2
|
||||
= Updated drag and drop sideloading
|
||||
= Fixed storage label
|
||||
- Removed troubleshoot form and theme form
|
||||
|
||||
Date 11/04/2020
|
||||
|
||||
VT: https://bit.ly/3kYCQsb
|
||||
|
||||
MD5 Checksum: 39BAB4CEE3D0E387E770BA35F4488C2F
|
||||
SHA-1 Checksum: C6F311411408BCF5A55034E7A926EA385819F348
|
||||
SHA-256 Checksum: 64640374EF39DD9CFC4A613A49888E3194994AA934C5E952174A2FCF533E2D19
|
||||
SHA-512 Checksum: 22769280B732821539100BFA77C67141F271DB401DB3AFB28EF285E352659F9F45A90C8ABE1C0B829770C5AE580CA76A9208505888443C22EE82AAAE7035C6F7
|
||||
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+jJScACgkQvrtJUNxE
|
||||
TxMTag//f570tZ4zxL1x1rdajdoYzPD6oaGIabRVPrqVogsFPuVF1Q3AOzr+nzQN
|
||||
Tiq7yRPmByu/dtBGby2mqL1acQ/9TLYDtmnOAxQJqj4h0KhYlnzdCfqJJbTghtZX
|
||||
cy44ZqgPW47P608+zC/NfePNt7Fq1rFKN3Bpo/ISoyi5/IVGqGq1Ix/D0SlhiM5X
|
||||
5VkiY+w5S0rXuAyQ4g6/03AiI9fdNVkREhUh/tYvb7IkxaN9IDlltHByeuvekMjZ
|
||||
KU+mwZ9habfthB31hp+bAXz82tbIzB4LJ1P8MNadIT8ZXG19zHEY/KlaDp2NjniV
|
||||
h+V9AnxPHlcZk63yVPOywxpZcv81LflMgs9XItX+zKH7ibniBEu8jxc/2uAjrDF/
|
||||
JuvnOUKTuH7S2iIzHhKLYZYHiOu8sIuwGC96Ep172PGCAkVVR6CtfNPMmVZRllsY
|
||||
JG3Pxdrw526SAy3Vqixbbm79Fs1o77resqGM2zl6L7Sr6sH3VnDxabVXxALgo1pH
|
||||
+LSu5rCLIIsCP1a4MAyy6UgO/+ZLrC1QazR4yY7SRQHAIM48XG4d6CznFCOjczhW
|
||||
VvYL6gZD7X4xlNBqNMtih8JDHIQ1y7n1f075oCxfWwt02kXhDL/cn8+UZ17IS6EZ
|
||||
zr/SLm1464/htCZgsUZgQrov6CpHX/xNqAubowkAVOdDREbwh2w=
|
||||
=QKlt
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v1.14SU1
|
||||
|
||||
Changes
|
||||
+ Quota errors now will try to redownload the game from another mirror
|
||||
= Only showing mirror remotes for apps
|
||||
// Will fix device storage when I get my quest 2 and can debug adb
|
||||
|
||||
Date 10/18/2020
|
||||
|
||||
VT: https://bit.ly/3kcG62A
|
||||
|
||||
MD5 Checksum: 2A30E5F3DB785DC8104A2AA55A83CF53
|
||||
SHA-1 Checksum: 8376E5971FC4F60995A1125DD9344E52135DB4F7
|
||||
SHA-256 Checksum: FD5C74067BA00561A540DE5A4F49FA63B99C9520435A51487F997AEC569E9659
|
||||
SHA-512 Checksum: 6188D6306CA2A3F25DE08E19D1F20046774F7AA30BD745ED24FC7E53126DF3950211B599E3D774F540A6C1DEC177A895FAE70FB564B6AE96F5F10ABDCB9021C1
|
||||
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+MCbMACgkQvrtJUNxE
|
||||
TxNMVxAAlIkoTuGTDwXRBFNanulPiYmus9UazHoVFxtG2BELk1/JLPm7dwT29FiZ
|
||||
oacUhhxLAEfDm169FoPNFCH/6q74xqjACkm8FjwCoas53DekguIvrhJKA3SiBUtZ
|
||||
m7+hrT3WWGxXoE3+avSFmdBWWvKVA9pNR/DHprHSoinDUvgSfwBHrWD8PtuSIlwU
|
||||
/jNpzyDnmBfdT4LROq93hcfFXM+POLWs5f3rXFdT+zTZexxlRiG5h7yMmsYdwdov
|
||||
4jMUSzrBpRXbmmHwDi4KLzsdOJ/5okJgRdPTZm/L1rAoJT0F7QVi2shvkoN7SIH/
|
||||
Fg+k0ZrNOnlpdAJwLmJD4PkQmxv5zpGSh8w7nbQJ41HgBtTQTh3OCpRRamPzAmfo
|
||||
A2n/NsYpR8J8u7kGzT1MUnUn2RL+igutSrnQl8R6yR8jFjaTt+F90pBXZ1nnY6mS
|
||||
8YE9mBBK3365cYVqQzOW1TUSCSzQqwTbfKDHkKrzHQWrpQ8VNMLcJBLZwU8di+4p
|
||||
u8lt1uT5MRZ+9I80YBXhwzBKkiNYOt5vHpGgt0Ib4WDS7rt/7UnzEAfl8P3VEEfX
|
||||
6w1HctI2zAVWYutBMv6HL3v23cO+UT8H6Wdgxq36mlMSNiqjLIntfIRrySUOy7JV
|
||||
D6LE34gzpDGsBIzrpW/Hlz4wGTi6nnY0Ke6DkA1H0UOoDN9ItI4=
|
||||
=ARa/
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
v1.14
|
||||
|
||||
Changes
|
||||
+ Added the ability to change remotes (mirrors)
|
||||
+ Rclone errors are now reported properly
|
||||
= Fixed some bugs
|
||||
// Will fix device storage when I get my quest 2 and can debug adb
|
||||
|
||||
Date 10/17/2020
|
||||
|
||||
VT: https://bit.ly/3j8kCm8
|
||||
|
||||
MD5 Checksum: B862B807462CE35CC930C2B1118D5692
|
||||
SHA-1 Checksum: F52C8630C89CAEDB2E90A857E494DE00B137712D
|
||||
SHA-256 Checksum: 3DDFA2B4CCFC0E9F6F86E8A74E6D3511B9C643F4C4AF19D3878B8704FA360558
|
||||
SHA-512 Checksum: 16A022D8A4D235D7C537D9F01FE7C5F964A67A3A8CD68B3DC17AF08D94837DAC6CE0C20557D029DC169E5616B36C2A4C36B1647CE0DF930C7694F3FEC3430E70
|
||||
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+KrhQACgkQvrtJUNxE
|
||||
TxP9MRAAjZbYWkbZPK+QMqzNqsgEARs6buzrwc24dth6QEod9Fgmdg5wdinZdG8X
|
||||
MK467pd9u0JqM3u8DeKSUD0GEzJZStNKsbHfjvNAF3m8toaXLncWy7MYNN9loAra
|
||||
17MvUBBwB1QgsXtQ3EXT1cBbS3YkQPg5E+ayvY9ZgyiOpDK6fs1tA24NZUWc53kY
|
||||
TIl5IL3mZNfJck8Xc/QkZJmkBOA89oDToLOjNmZRXXEHNT/eTS6pEkMZonWQjGqF
|
||||
D2dEfQTOuIAD93JzwcP5wVJFh7z6o65/7tfguDqBsTgoRWODaY+kQJDAxoWN9w/n
|
||||
nagXg/y30EmE1mWQFUYa1n0V65OzT5+J8VF53DCHkgaejYLfi0lhy8TlWQZpmzen
|
||||
WJOsP1Oj3ZZ9sErO8waajDBzDZ3kU9NvAOeOblE491w0713MYZYs5BVgoyHi24xO
|
||||
obcp1gpLi326fkPqajgIFpDHJ014OnaXmoY9ynW9rlZJ4rwJ7WytRDzcpfyk9LV1
|
||||
G1tlcCS4c/RmuVfZi4Jh0guvOOIpJSqdG4KUtvd548sslTMdHytt+YugbKqcBAto
|
||||
nWroKcsmg0swAm7YgYmQXqcpM17JC21eUgm3Bc4ZZSDtP4g3Pm7vRO1+hwUNYBE9
|
||||
QeEMXYDPRsTxdpuEFsbmS/EfnndvJvl9BL92Zt4+T4ruL+II50s=
|
||||
=r+0B
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
New version v1.13 Released
|
||||
|
||||
Changes
|
||||
+ Pgp messages will be available now for every update, so you can verify updates easily
|
||||
= Fixed some bugs like the rclone suicide
|
||||
- Removed china detection
|
||||
|
||||
Date 9/10/2020
|
||||
|
||||
MD5 Checksum: 3834485C5AF611523460E639969284F3
|
||||
SHA-1 Checksum: DAF556D34F80FDE6A6A3D8F338381030B2B19E44
|
||||
SHA-256 Checksum: 063FABA6A76A98AB862BBBF6F3348F176F66FD4932075E761A5FCAA85785EE4B
|
||||
SHA-512 Checksum: CC743BD95826664535239BB665934E88A25CC948B95E4A3E8B34379C1E8DEB8FED05EAD87428F4B85D5841ED9101F38E4E3DAFB0EAF3CD2F2E4314B62356104D
|
||||
|
||||
You can always get my public key from rookie.wtf/pgp.txt
|
||||
You can verify the signed message using kleopatra for windows or dark.fail/pgp
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl9aBpMACgkQvrtJUNxE
|
||||
TxOJcA/+LEzXQtyBhZ0oj22PEk0yMLQYOBLYDB96jf39IqLQAzrIUL339jRcRKMv
|
||||
yhFWXpvND1wrQl3/LNtFpBSkSnvqUXtxHWg6US+Ov3nnrEvYiwK8D9f1eC5Mt3Wy
|
||||
4HZIyTh9HcrLsfbnP2kDlLOaMQSIH4rChezF79xZMcx7kRmQ0/hyXlmGAPyWs8t8
|
||||
5aLxk5YUcfq1Pu+ncqeX+ihYVzQHi2eXaOAIR1rSCEXfHEg9tkRzWcma8tY29gQv
|
||||
IgGwxF/YnAPOdBtzuakaT88a1MsP+tAcWxmsyvTQHrv1m0h3QPU1DxMFUfAlBjLM
|
||||
5tHgTTjkXedRpR+Kga5CDuK7L5p1zVMRDINcUOf9MXV2fRurZ+OIHefAd+zbrd0n
|
||||
vHi1D1sFzb/lT5LCa/vrfO9crRnLdK1EI/5HNeSj9iIdD2jEMbjSjo9yv7LA2MHi
|
||||
4wnvguRpK5YUGqGc2yyCRxtyKAgXXxLBFNb5K453vdLtDukZIkhLuQVchsk4PutZ
|
||||
1uIg7/ZmAIPxlEHaLckaV7QEFbq9h2hFWOsSjWAATyvnkp4nxyvAavW4zNQCbd3V
|
||||
XJhimZkE+3SNAuZGw10nikVz7DFMlI0dyL+jmwIuODcFMZZwkEtBr3J/Ad9V1k+G
|
||||
DFKYJpBgATHdRTwt7/zZwJCBq0ONheA/6+6VYj8x8Q5rqbiDDdc=
|
||||
=xp7X
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
1.11HF1
|
||||
= Fixed some crashes that occured when a unauthorized device was used with the sideloader
|
||||
|
||||
1.11
|
||||
+ Added support for multiple devices
|
||||
|
||||
1.10SU1
|
||||
+ Settings should now persist through updates
|
||||
- Removed download button and hwid stuff
|
||||
|
||||
1.10
|
||||
+ Added back the game size messagebox
|
||||
+ Added support for unicode in adb
|
||||
= Fixed restore gamedata
|
||||
= Clicking the first game won't remove it since it causes problems
|
||||
= Changed the sideloader icon
|
||||
|
||||
1.9SU2
|
||||
+ Clicking a game on the listbox will now remove it from the list
|
||||
|
||||
1.9SU1
|
||||
- Removed some code I forgot to remove when debugging
|
||||
|
||||
1.9
|
||||
+ Added a queue for downloading games
|
||||
+ Added a setting for disabling user.json push
|
||||
|
||||
1.8SU2
|
||||
= Install game now won't throw an exception when a game isn't selected
|
||||
|
||||
1.8SU1
|
||||
+ Added debug logs for rclone
|
||||
|
||||
1.8
|
||||
+ Disk info updates every command that changes disk space
|
||||
= Rclone now logs commands and output
|
||||
= Changed backup button
|
||||
|
||||
1.7.5
|
||||
+ Made sideloader even faster when opening
|
||||
+ Added some chiptune music and the setting to stop it
|
||||
= Fixed donator button broken in 1.7
|
||||
|
||||
1.7
|
||||
+ Removed some freezes
|
||||
+ Sideloader kills rclone on start and on close if it's open so you dont waste bandwith
|
||||
+ Updating rclone config now does a hash check first
|
||||
+ Refresh storage after game install and on game uninstall
|
||||
|
||||
1.6
|
||||
+ Disk space label and check
|
||||
+ Checks game size before download
|
||||
= Download and install game button outputs adb log now
|
||||
- Launch package name button and textbox
|
||||
|
||||
1.5
|
||||
+ Added ETA, based on CURRENT DOWNLOAD SPEED NOT DELTA OF IT
|
||||
+ Added DLS label instead of showing it in the toolbar
|
||||
+ Added more indication of what the software is doing, in the toolbar
|
||||
+ Added some tooltips
|
||||
|
||||
1.4
|
||||
+ Donators can now change the speed of the donate button color change (even disable)
|
||||
+ Auto update for the rclone config
|
||||
+ Theme export and import buttons (by gotard)
|
||||
|
||||
1.3
|
||||
+ Added progress bar logic for game downloading with rclone
|
||||
+ Uninstalling apps now asks the user if it should also remove game data
|
||||
= Sorted installed apps combobox
|
||||
= Fixed uninstalling apps by package names lol nobody knew was broken
|
||||
|
||||
1.2
|
||||
+ Added unicode support for rclone
|
||||
+ Added some delay on game installation
|
||||
= Fixed stuff
|
||||
|
||||
1.1
|
||||
+ Added Themes
|
||||
+ Added dollarvr user.json
|
||||
+ Added user.json transfer on game download
|
||||
+ Added user.json transfer on first run
|
||||
= Fixed tab indexes
|
||||
= Now both drop downs can be visible at the same time
|
||||
|
||||
1.0HF1
|
||||
= Fixed a problem when deleting an app
|
||||
|
||||
1.0
|
||||
+ Added games auto download
|
||||
+ Added auto troubleshoot
|
||||
+ Every app installed will have all perms granted
|
||||
+ Displays apps for games instead of package names if you have rclone set up
|
||||
+ Uninstall app now will also delete its obb folder
|
||||
//For auto download you need an rclone config and rclone to be set up correctly
|
||||
|
||||
0.15HF1
|
||||
+ Added list apps button back
|
||||
= Fixed Uninstall apk and get apk
|
||||
|
||||
0.15
|
||||
= MASSIVE UI REDESIGN
|
||||
+ Added toggle for tor/clearnet
|
||||
+ Added download games through tor but still waiting for someone to help me host the files
|
||||
+ Added download with progress
|
||||
= Changed adb sideload command to allow downgrades too
|
||||
- Removed perms stuff, was too buggy
|
||||
|
||||
0.14HF1
|
||||
+ Added donate button
|
||||
= Fixed ui order
|
||||
- Removed warning from bulk obb sideload button
|
||||
|
||||
0.14
|
||||
+ Check file hash button
|
||||
+ Added first run check (will maybe be used to create user.json files)
|
||||
+ Added drag and drop for apk and obb files
|
||||
+ Progress bar now works for every adb command
|
||||
= Moved buttons
|
||||
- Instructions button
|
||||
- Removed run custom adb command button and form
|
||||
|
||||
0.13
|
||||
+ Added vrmoo.cn.json
|
||||
+ Added bulk obb copy
|
||||
= Message Box now top most
|
||||
|
||||
0.12
|
||||
+ Added settings form
|
||||
+ Added progress bar (again)
|
||||
+ Added a new user.json
|
||||
= Fixed crash on some systems (PerformanceCounter)
|
||||
= Fixed crash because of file name inconsistency
|
||||
- Removed performance counters because they made the software not work for some people
|
||||
|
||||
0.11
|
||||
+ Changed normal message boxes to flexible ones
|
||||
+ Added changelog to update message
|
||||
= Improved update message
|
||||
- Removed progressbar
|
||||
|
||||
0.10
|
||||
+ Added few tooltips
|
||||
+ Sideload folder now works for all apks (recursive search)
|
||||
= Obb copy and Sideload progress bar problems should be fixed
|
||||
= Fixed user.json not working if the any of folder had spaces
|
||||
= Switched back to Message Boxes
|
||||
|
||||
0.9
|
||||
+ Added the buggy progress bar back, uses different "logic"
|
||||
+ Added an icon (Increased the exe size by like 300% just with that)
|
||||
+ Added sideload folder button
|
||||
+ Added Create user.json button and form
|
||||
+ Changed Message Boxes to notifications
|
||||
|
||||
0.8.5
|
||||
+ Added auto update download
|
||||
= Fixed a bug where if you didn't have the adb folder it would crash
|
||||
|
||||
0.8
|
||||
+ Every command now shows progress on title bar
|
||||
+ Automatically run Adb Devices and List Apps on form startup
|
||||
+ You can now search the App List Combo Box
|
||||
= Cleaned some code
|
||||
|
||||
0.7
|
||||
= Fixed UI Freezes
|
||||
+ Added Uninstall APK Button
|
||||
+ Added Launch package Button
|
||||
- Removed loading bar
|
||||
|
||||
0.6
|
||||
+ Added List Apk Perms button
|
||||
+ Added Change Permissions button
|
||||
+ Added dinamically added checkbox for permisssions
|
||||
= The software now downloads adb from master instead of v0.3 release
|
||||
|
||||
0.5
|
||||
- Removed Flash Firmware
|
||||
= Redesigned UI
|
||||
= Reworked RunAdbCommand function (now it will be possible to do stuff I wasnt able to do before)
|
||||
= Replaced Ui Buttons, still needs work
|
||||
+ Added List apk button
|
||||
+ Added List apk combo box
|
||||
+ Added get apk function
|
||||
= Cleaned a bit of code
|
||||
|
||||
0.4
|
||||
+ Added auto download of adb archive
|
||||
+ Added auto extraction of adb archive
|
||||
|
||||
0.3
|
||||
+ Added new form, you can run custom adb commands now
|
||||
+ Added recover and backup app data
|
||||
- Removed Select APK and Select OBB Buttons
|
||||
- Removed tooltips from removed buttons
|
||||
+ Sideload APK and Copy Obb buttons now also make you select the file/folder
|
||||
+ Improved firmware button
|
||||
|
||||
0.2
|
||||
+ Added Flash Firmware button
|
||||
+ Added few tooltips
|
||||
+ Renamed buttons
|
||||
|
||||
0.1
|
||||
+ Initial Release
|
||||
|
||||
HF - Hot Fix
|
||||
SU - Small Update
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEFcMEACgkQx/Rql1Vo
|
||||
czdoWA//cbngmK/it4fy6Hy/5JMGubJvCb0Ar+KY0UCO5FR60Q+ADCrkhPDEaWif
|
||||
xnM+h4CLqyHUD0NipUxsjZ4j25VRMA20eTy3jiLKSZKq6P6KD+oRv0Tx3vTEs61U
|
||||
wJdQsWK81cC9+BnhCBDuWpDJ/nCqO9ZJBYdKX0+KuYTVZwaaZSfMXD1dgQsrCQCq
|
||||
zU5kgrsl+LDUJknnpfda521pbACgHlZ/Cb3bztqgnSviF38jFuYsJe7hJVjsINYz
|
||||
j6HtmT+vn3Rxhk6uRTtUNhM1YVvuKzsZtUNvqd7cjT3FJXWuuoP8mgdauSahVnpQ
|
||||
jMLu/dMLx0PkRXox/D8/69tDA1dxNZozXvws0OQfmNlzLfLGPZdVSWVjfU+P0feA
|
||||
hMZiVICyAAJPnzfNAfVq2yDpU5wJbAhj3qG+Lj9Ox4dpmn7AUrjoUCFZxhZIZJi1
|
||||
KKKz+7Q9ZDkcFODCUzZAdrI0MP7MNrsfPl8jxSCLYFe6LUIOfTAakBkxOY9x02lF
|
||||
x08jfbpAsJHU3Wm8bruk+nkB+65J5kqsLkJk2n4yrkW3QtIo9xul/z9vgZKo75S6
|
||||
LkPCpNo2w5gtx7+8Jv65Z/BlueUVmVWUHhQ2gHRkXenkg3McEZpqwKInqQSZkHpZ
|
||||
USckVtW+iteVVR0yf+hFPRGp+Shz6/GIn9YnwVQCT2DK+ih9zD4=
|
||||
=0bPq
|
||||
-----END PGP SIGNATURE-----
|
||||
34708
debuglog.txt
Normal file
15
spoofer.cs
@@ -15,6 +15,7 @@ namespace Spoofer
|
||||
|
||||
public static void Init()
|
||||
{
|
||||
//If there is no keystore or details (user and pw for keystore) generate them!
|
||||
if ((File.Exists("keystore.key") == false || File.Exists("details.txt") == false) && HasDependencies())
|
||||
{
|
||||
var rand = new Random();
|
||||
@@ -84,10 +85,8 @@ namespace Spoofer
|
||||
RenameObb(obbPath, newPackageName, originalPackageName);
|
||||
}
|
||||
|
||||
Console.WriteLine("Extracting apk...");
|
||||
output += DecompileApk(apkPath);
|
||||
|
||||
Console.WriteLine("Spoofing apk...");
|
||||
//Rename APK Packagename
|
||||
string foo = File.ReadAllText($"{decompiledPath}\\AndroidManifest.xml").Replace(originalPackageName, newPackageName);
|
||||
File.WriteAllText($"{decompiledPath}\\AndroidManifest.xml", foo);
|
||||
@@ -99,34 +98,23 @@ namespace Spoofer
|
||||
File.WriteAllText(file, foo);
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine("APK Spoofed");
|
||||
|
||||
Console.WriteLine("Rebuilding the APK...");
|
||||
|
||||
//spoofedApkPath = $"{Path.GetFileName(apkPath).Replace(".apk", "")}_Spoofed as {newPackageName}.apk";
|
||||
spoofedApkPath = Path.GetDirectoryName(apkPath) + "\\" + spoofedFileName;
|
||||
string apkDecompiledPath = Path.GetFileName(apkPath).Replace(".apk", "");
|
||||
|
||||
output += GeneralUtilities.startProcess("cmd.exe", folderPath, $"apktool b \"{apkDecompiledPath}\" -o \"{spoofedApkPath}\"");
|
||||
Logger.Log($"apktool b \"{apkDecompiledPath}\" -o \"{spoofedApkPath}\": {output.Output} {output.Error}");
|
||||
Console.WriteLine("APK Rebuilt");
|
||||
|
||||
//Sign the new apk
|
||||
Console.WriteLine("Signing the APK...");
|
||||
if (File.Exists(folderPath + "keystore.key") == false)
|
||||
File.Copy("keystore.key", $"{folderPath}keystore.key");
|
||||
output += SignApk(spoofedApkPath);
|
||||
|
||||
Console.WriteLine("APK Signed");
|
||||
|
||||
//Delete the copy of the key and the decompiled apk folder
|
||||
Console.WriteLine("Deleting residual files...");
|
||||
if (string.Equals(folderPath, Environment.CurrentDirectory + "\\") == false)
|
||||
File.Delete($"{folderPath}keystore.key");
|
||||
Directory.Delete(decompiledPath, true);
|
||||
File.Delete(apkPath);
|
||||
Console.WriteLine("Residual files deleted");
|
||||
|
||||
return output;
|
||||
}
|
||||
@@ -249,7 +237,6 @@ namespace Spoofer
|
||||
{
|
||||
return "PackageName ERROR";
|
||||
}
|
||||
Console.WriteLine($"Packagename is {originalPackageName}");
|
||||
return originalPackageName;
|
||||
}
|
||||
}
|
||||
|
||||
1
warning.png
Normal file
@@ -0,0 +1 @@
|
||||
ignore this, it is for backward compatibility
|
||||