Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -2,5 +2,6 @@
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"SelectedNode": "\\AndroidSideloader.sln",
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
||||
BIN
.vs/slnx.sqlite
BIN
.vs/slnx.sqlite
Binary file not shown.
127
ADB.cs
127
ADB.cs
@@ -12,17 +12,18 @@ namespace AndroidSideloader
|
||||
class ADB
|
||||
{
|
||||
static Process adb = new Process();
|
||||
public static string adbFolderPath = Properties.Settings.Default.ADBPath;
|
||||
public static string adbFilePath = Properties.Settings.Default.ADBPath + "\\adb.exe";
|
||||
public static string adbFolderPath = "C:\\RSL\\2.14HF5\\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.ADBPath = adbFilePath;
|
||||
Properties.Settings.Default.Save();
|
||||
if (DeviceID.Length > 1)
|
||||
command = $" -s {DeviceID} {command}";
|
||||
|
||||
Logger.Log($"Running command {command}");
|
||||
adb.StartInfo.FileName = adbFilePath;
|
||||
adb.StartInfo.FileName = @adbFilePath;
|
||||
adb.StartInfo.Arguments = command;
|
||||
adb.StartInfo.RedirectStandardError = true;
|
||||
adb.StartInfo.RedirectStandardInput = true;
|
||||
@@ -30,26 +31,23 @@ namespace AndroidSideloader
|
||||
adb.StartInfo.CreateNoWindow = true;
|
||||
adb.StartInfo.UseShellExecute = false;
|
||||
adb.StartInfo.WorkingDirectory = adbFolderPath;
|
||||
|
||||
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(5000); //Wait 7 secs.
|
||||
bool graceful = adb.WaitForExit(3000); //Wait 3 secs.
|
||||
if (!graceful)
|
||||
{
|
||||
adb.Kill();
|
||||
@@ -57,16 +55,19 @@ namespace AndroidSideloader
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
if (error.Contains("ADB_VENDOR_KEYS"))
|
||||
MessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
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.ADBPath = adbFilePath;
|
||||
Properties.Settings.Default.Save();
|
||||
;
|
||||
|
||||
|
||||
|
||||
Logger.Log($"Running command {command}");
|
||||
adb.StartInfo.FileName = "cmd.exe";
|
||||
adb.StartInfo.RedirectStandardError = true;
|
||||
@@ -86,19 +87,75 @@ namespace AndroidSideloader
|
||||
|
||||
try
|
||||
{
|
||||
output += adb.StandardOutput.ReadToEnd();
|
||||
error += adb.StandardError.ReadToEnd();
|
||||
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"))
|
||||
MessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
Logger.Log(output);
|
||||
Logger.Log(error);
|
||||
return new ProcessOutput(output, error);
|
||||
}
|
||||
|
||||
adb.WaitForExit();
|
||||
public static ProcessOutput RunCommandToString(string result, string path)
|
||||
{
|
||||
string command = result;
|
||||
|
||||
|
||||
Logger.Log($"Running command {command}");
|
||||
adb.StartInfo.FileName = @"C:\windows\system32\cmd.exe";
|
||||
adb.StartInfo.Arguments = command;
|
||||
adb.StartInfo.RedirectStandardError = true;
|
||||
adb.StartInfo.RedirectStandardInput = true;
|
||||
adb.StartInfo.RedirectStandardOutput = true;
|
||||
adb.StartInfo.CreateNoWindow = true;
|
||||
adb.StartInfo.UseShellExecute = false;
|
||||
adb.StartInfo.WorkingDirectory = Path.GetDirectoryName(path);
|
||||
adb.Start();
|
||||
adb.StandardInput.WriteLine(command);
|
||||
adb.StandardInput.Flush();
|
||||
adb.StandardInput.Close();
|
||||
|
||||
|
||||
string output = "";
|
||||
string error = "";
|
||||
|
||||
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"))
|
||||
MessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
Logger.Log(output);
|
||||
Logger.Log(error);
|
||||
return new ProcessOutput(output, error);
|
||||
}
|
||||
|
||||
|
||||
public static ProcessOutput UninstallPackage(string package)
|
||||
public static ProcessOutput UninstallPackage(string package)
|
||||
{
|
||||
WakeDevice();
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
@@ -114,7 +171,7 @@ namespace AndroidSideloader
|
||||
long usedSize = 0;
|
||||
|
||||
long freeSize = 0;
|
||||
|
||||
WakeDevice();
|
||||
var output = RunAdbCommandToString("shell df").Output.Split('\n');
|
||||
|
||||
foreach (string currLine in output)
|
||||
@@ -228,6 +285,7 @@ namespace AndroidSideloader
|
||||
WakeDevice();
|
||||
|
||||
ProcessOutput ret = new ProcessOutput();
|
||||
package = packagename;
|
||||
|
||||
Program.form.ChangeTitle($"Sideloading {path}");
|
||||
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
@@ -247,7 +305,7 @@ namespace AndroidSideloader
|
||||
ret.Output = string.Empty;
|
||||
|
||||
|
||||
MessageBox.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);
|
||||
MessageBox.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);
|
||||
@@ -256,9 +314,9 @@ namespace AndroidSideloader
|
||||
MessageBox.Show($"Searching for save files...", "Searching!", MessageBoxButtons.OK);
|
||||
if (Directory.Exists($"/sdcard/Android/data/{packagename}"))
|
||||
{
|
||||
MessageBox.Show($"Trying to backup save to Documents\\Rookie Backups\\{date_str}(year.month.date)\\{packagename}\\data", "Save files found", MessageBoxButtons.OK);
|
||||
MessageBox.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}\"");
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{packagename}\" \"{CurrBackups}\"");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -269,7 +327,7 @@ namespace AndroidSideloader
|
||||
}
|
||||
}
|
||||
ADB.WakeDevice();
|
||||
ret += ADB.RunAdbCommandToString("shell pm uninstall " + packagename);
|
||||
ret += ADB.RunAdbCommandToString("shell pm uninstall " + package);
|
||||
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
return ret;
|
||||
}
|
||||
@@ -277,15 +335,13 @@ namespace AndroidSideloader
|
||||
}
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\Config.Json"))
|
||||
{
|
||||
if (packagename.Contains("com.*") || Properties.Settings.Default.CurrPckg.Contains("com"))
|
||||
{
|
||||
if (Properties.Settings.Default.CurrPckg.Contains("com"))
|
||||
packagename = Properties.Settings.Default.CurrPckg;
|
||||
|
||||
|
||||
Program.form.ChangeTitle("Pushing Custom QU s3 Patch 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");
|
||||
if (!Directory.Exists($"/sdcard/android/data/{package}"))
|
||||
RunAdbCommandToString($"shell mkdir /sdcard/android/data/{package}");
|
||||
if (!Directory.Exists($"/sdcard/android/data/{package}/private"))
|
||||
RunAdbCommandToString($"shell mkdir /sdcard/android/data/{package}/private");
|
||||
|
||||
Random r = new Random();
|
||||
int x = r.Next(999999999);
|
||||
@@ -304,15 +360,8 @@ namespace AndroidSideloader
|
||||
File.WriteAllText("config.json", boff);
|
||||
string blank = "";
|
||||
File.WriteAllText("delete_settings", blank);
|
||||
ret += ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\delete_settings\" /sdcard/android/data/{packagename}/private/delete_settings");
|
||||
ret += ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\config.json\" /sdcard/android/data/{packagename}/private/config.json");
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
ret.Output += "QU Settings could not be automatically applied.\nPlease restart Rookie to refresh installed apps.\nThen select the app from the installed apps (Dropdown list above Device ID).\nThen click Install QU Setting";
|
||||
|
||||
|
||||
ret += ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\delete_settings\" /sdcard/android/data/{package}/private/delete_settings");
|
||||
ret += ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\config.json\" /sdcard/android/data/{package}/private/config.json");
|
||||
|
||||
}
|
||||
Program.form.ChangeTitle("Sideload done");
|
||||
|
||||
@@ -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>
|
||||
|
||||
143
MainForm.cs
143
MainForm.cs
@@ -194,29 +194,28 @@ namespace AndroidSideloader
|
||||
|
||||
public void ChangeTitlebarToDevice()
|
||||
{
|
||||
if (Devices[0].Length > 1 && Devices.Contains("unauthorized") || Devices.Contains("ADB_VENDOR_KEYS"))
|
||||
{
|
||||
DeviceConnected = false;
|
||||
this.Invoke(() =>
|
||||
{
|
||||
this.Text = "Device Not Authorized";
|
||||
DialogResult dialogResult = MessageBox.Show("Device not authorized, check device screen for ALLOW USB DEBUGGING prompt, check \"Always allow\" box and hit OK.", "Not Authorized", MessageBoxButtons.RetryCancel);
|
||||
if (dialogResult == DialogResult.Retry)
|
||||
{
|
||||
devicesbutton.PerformClick();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
if (!Devices.Contains("unauthorized"))
|
||||
{
|
||||
{
|
||||
if (Devices[0].Length > 1 && Devices[0].Contains("unauthorized"))
|
||||
{
|
||||
DeviceConnected = false;
|
||||
this.Invoke(() =>
|
||||
{
|
||||
this.Text = "Device Not Authorized";
|
||||
DialogResult dialogResult = MessageBox.Show("Device not authorized, be sure to authorize computer on device.", "Not Authorized", MessageBoxButtons.RetryCancel);
|
||||
if (dialogResult == DialogResult.Retry)
|
||||
{
|
||||
devicesbutton.PerformClick();
|
||||
;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Devices[0].Length > 1)
|
||||
});
|
||||
}
|
||||
else if (Devices[0].Length > 1)
|
||||
{
|
||||
this.Invoke(() => { this.Text = "Device Connected with ID | " + Devices[0].Replace("device", ""); });
|
||||
DeviceConnected = true;
|
||||
@@ -240,7 +239,6 @@ namespace AndroidSideloader
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public async void showAvailableSpace()
|
||||
@@ -291,12 +289,33 @@ namespace AndroidSideloader
|
||||
|
||||
private async void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\\SideQuest\\platform-tools"))
|
||||
Properties.Settings.Default.ADBPath = $"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\\SideQuest\\platform-tools";
|
||||
else
|
||||
Properties.Settings.Default.ADBPath = Environment.CurrentDirectory + "\\adb";
|
||||
string adbFile = "C:\\RSL\\2.14HF5\\adb\\adb.exe";
|
||||
string adbDir = "C:\\RSL\\2.14HF5\\adb";
|
||||
string fileName = "";
|
||||
string destFile = "";
|
||||
Properties.Settings.Default.MainDir = Environment.CurrentDirectory;
|
||||
Properties.Settings.Default.Save();
|
||||
if (!File.Exists(adbFile))
|
||||
{
|
||||
Directory.CreateDirectory(adbDir);
|
||||
if (System.IO.Directory.Exists($"{Environment.CurrentDirectory}\\adb"))
|
||||
{
|
||||
string[] ADBfiles = System.IO.Directory.GetFiles($"{Properties.Settings.Default.MainDir}\\adb");
|
||||
|
||||
// Copy the files and overwrite destination files if they already exist.
|
||||
foreach (string s in ADBfiles)
|
||||
{
|
||||
fileName = System.IO.Path.GetFileName(s);
|
||||
destFile = System.IO.Path.Combine(adbDir, fileName);
|
||||
System.IO.File.Copy(s, destFile, true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Properties.Settings.Default.ADBPath = adbFile;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
if (File.Exists(Sideloader.CrashLogPath))
|
||||
{
|
||||
@@ -353,7 +372,6 @@ Do you want to delete the {Sideloader.CrashLogPath} (if you press yes, this mess
|
||||
ADB.WakeDevice();
|
||||
await CheckForDevice();
|
||||
ChangeTitlebarToDevice();
|
||||
ADB.RunAdbCommandToString("shell svc usb setFunctions mtp true");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
@@ -425,17 +443,17 @@ Do you want to delete the {Sideloader.CrashLogPath} (if you press yes, this mess
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
var dialog = new FolderSelectDialog
|
||||
{
|
||||
Title = "Select your obb folder"
|
||||
Title = "Select full backup or packagename backup folder"
|
||||
};
|
||||
if (dialog.Show(Handle))
|
||||
{
|
||||
string path = dialog.FileName;
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
if (path.Contains("com."))
|
||||
output += ADB.RunAdbCommandToString($"push \"{path}\" /sdcard/Android/data/");
|
||||
if (path.Contains("data"))
|
||||
output += ADB.RunAdbCommandToString($"push \"{path}\" /sdcard/Android/");
|
||||
output += ADB.RunAdbCommandToString($"push \"{path}\" /sdcard/Android/");
|
||||
else
|
||||
output += ADB.RunAdbCommandToString($"push \"{path}\" /sdcard/Android/data/");
|
||||
});
|
||||
t1.IsBackground = true;
|
||||
t1.Start();
|
||||
@@ -524,7 +542,7 @@ Do you want to delete the {Sideloader.CrashLogPath} (if you press yes, this mess
|
||||
ADB.WakeDevice();
|
||||
if (m_combo.SelectedIndex == -1)
|
||||
{
|
||||
FlexibleMessageBox.Show("Please select an app first ");
|
||||
FlexibleMessageBox.Show("Please select an app first");
|
||||
return;
|
||||
}
|
||||
string date_str = DateTime.Today.ToString("yyyy.MM.dd");
|
||||
@@ -533,7 +551,7 @@ Do you want to delete the {Sideloader.CrashLogPath} (if you press yes, this mess
|
||||
|
||||
string GameName = m_combo.SelectedItem.ToString();
|
||||
string packagename = Sideloader.gameNameToPackageName(GameName);
|
||||
MessageBox.Show($"If savedata is found it will be saved to Documents\\Rookie Backups\\{date_str}(year.month.date)\\{packagename}", "Attempting Backup...", MessageBoxButtons.OK);
|
||||
MessageBox.Show($"If savedata is found it will be saved to Documents\\Rookie Backups\\{date_str}(YYYY.MM.DD)\\{packagename}", "Attempting Backup...", MessageBoxButtons.OK);
|
||||
|
||||
Directory.CreateDirectory(CurrBackups);
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{packagename}\" \"{CurrBackups}\"");
|
||||
@@ -636,16 +654,17 @@ Do you want to delete the {Sideloader.CrashLogPath} (if you press yes, this mess
|
||||
//if is directory
|
||||
string dir = Path.GetDirectoryName(data);
|
||||
string path = $"{dir}\\Install.txt";
|
||||
if (data.StartsWith("com."))
|
||||
if (Directory.Exists(data))
|
||||
{
|
||||
output += ADB.CopyOBB(data);
|
||||
string extension = Path.GetExtension(data);
|
||||
if (extension == ".apk")
|
||||
{
|
||||
output += ADB.Sideload(data);
|
||||
|
||||
if (File.Exists($"{Environment.CurrentDirectory}\\Install.txt"))
|
||||
{
|
||||
|
||||
|
||||
|
||||
DialogResult dialogResult = MessageBox.Show("Special instructions have been found with this file, would you like to run them automatically?", "Special Instructions found!", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
return;
|
||||
@@ -657,38 +676,35 @@ Do you want to delete the {Sideloader.CrashLogPath} (if you press yes, this mess
|
||||
if (output.Error.Contains("reserved"))
|
||||
output.Output = "";
|
||||
ChangeTitle("Done.");
|
||||
|
||||
}
|
||||
}
|
||||
string[] files = Directory.GetFiles(data);
|
||||
foreach (string file in files)
|
||||
{
|
||||
}
|
||||
string[] files = Directory.GetFiles(data);
|
||||
foreach (string file in files)
|
||||
{
|
||||
if (File.Exists(file))
|
||||
if (file.EndsWith(".apk"))
|
||||
{
|
||||
output += ADB.Sideload(file);
|
||||
}
|
||||
}
|
||||
string[] folders = Directory.GetDirectories(data);
|
||||
foreach (string folder in folders)
|
||||
{
|
||||
output += ADB.CopyOBB(folder);
|
||||
Properties.Settings.Default.CurrPckg = dir;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
string[] folders = Directory.GetDirectories(data);
|
||||
foreach (string folder in folders)
|
||||
{
|
||||
output += ADB.CopyOBB(folder);
|
||||
Properties.Settings.Default.CurrPckg = dir;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
//if it's a file
|
||||
else if (File.Exists(data))
|
||||
{
|
||||
|
||||
|
||||
string extension = Path.GetExtension(data);
|
||||
if (extension == ".apk")
|
||||
{
|
||||
output += ADB.Sideload(data);
|
||||
|
||||
if (File.Exists($"{dir}\\Install.txt"))
|
||||
{
|
||||
|
||||
|
||||
DialogResult dialogResult = MessageBox.Show("Special instructions have been found with this file, would you like to run them automatically?", "Special Instructions found!", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
return;
|
||||
@@ -699,6 +715,10 @@ Do you want to delete the {Sideloader.CrashLogPath} (if you press yes, this mess
|
||||
ChangeTitle("Done.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
output += ADB.Sideload(data);
|
||||
}
|
||||
}
|
||||
else if (extension == ".obb")
|
||||
{
|
||||
@@ -1233,7 +1253,6 @@ without him none of this would be possible
|
||||
}
|
||||
if (quotaError == false)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
ADB.DeviceID = GetDeviceID();
|
||||
quotaTries = 0;
|
||||
progressBar.Value = 0;
|
||||
@@ -1273,7 +1292,6 @@ without him none of this would be possible
|
||||
}
|
||||
|
||||
Debug.WriteLine(wrDelimiter);
|
||||
ADB.WakeDevice();
|
||||
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory + "\\" + gameName);
|
||||
|
||||
foreach (string folder in folders)
|
||||
@@ -1483,7 +1501,7 @@ without him none of this would be possible
|
||||
FlexibleMessageBox.Show("There are no games in rclone, please check your internet connection and check if the config is working properly");
|
||||
return;
|
||||
}
|
||||
string gamesToUpdate = "";
|
||||
|
||||
foreach (string packagename in Sideloader.InstalledPackages.Keys)
|
||||
{
|
||||
foreach (var release in SideloaderRCLONE.games)
|
||||
@@ -1523,12 +1541,15 @@ without him none of this would be possible
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
|
||||
|
||||
if (ADB.DeviceID.Contains(":5555")) {
|
||||
MessageBox.Show("Mounting does not work with Wireless ADB, you must plug Quest into PC to mount.");
|
||||
if (DeviceConnected)
|
||||
{
|
||||
if (ADB.DeviceID.Contains(":5555"))
|
||||
MessageBox.Show("Mounting does not work with Wireless ADB, you must plug Quest into PC to mount.");
|
||||
|
||||
ADB.RunAdbCommandToString("shell svc usb setFunctions mtp true");
|
||||
}
|
||||
|
||||
ADB.RunAdbCommandToString("shell svc usb setFunctions mtp true");
|
||||
else
|
||||
FlexibleMessageBox.Show("You must connect a device before mounting!");
|
||||
}
|
||||
|
||||
private void freeDisclaimer_Click(object sender, EventArgs e)
|
||||
|
||||
2
Properties/Settings.Designer.cs
generated
2
Properties/Settings.Designer.cs
generated
@@ -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"]));
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -58,16 +58,20 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
var commands = File.ReadAllLines(path);
|
||||
foreach (string cmd in commands)
|
||||
{
|
||||
if (cmd.StartsWith("\"7z.exe\""))
|
||||
if (cmd.Contains("7z.exe"))
|
||||
{
|
||||
Program.form.ChangeTitle($"Running {cmd}");
|
||||
Logger.Log($"Logging command: {cmd} from file: {path}");
|
||||
output += ADB.RunAdbCommandToStringWOADB(cmd, path);
|
||||
output += ADB.RunCommandToString(cmd, path);
|
||||
}
|
||||
if (cmd.StartsWith("adb"))
|
||||
{
|
||||
string replacement = "";
|
||||
string pattern = "adb";
|
||||
string replacement = $"{Properties.Settings.Default.ADBPath} -s {ADB.DeviceID}";
|
||||
if (ADB.DeviceID.Length > 1)
|
||||
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}");
|
||||
|
||||
@@ -115,7 +115,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
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AndroidSideloader
|
||||
private static string RawGitHubUrl;
|
||||
private static string GitHubUrl;
|
||||
|
||||
static readonly public string LocalVersion = "2.1.2";
|
||||
static readonly public string LocalVersion = "2.1HF5";
|
||||
public static string currentVersion = string.Empty;
|
||||
public static string changelog = string.Empty;
|
||||
|
||||
@@ -28,8 +28,6 @@ namespace AndroidSideloader
|
||||
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();
|
||||
}
|
||||
@@ -40,8 +38,8 @@ namespace AndroidSideloader
|
||||
//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();
|
||||
}
|
||||
|
||||
@@ -1,38 +1,57 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
2.1.2
|
||||
Update RSL2.1HF5
|
||||
|
||||
+ Updated logic to use SideQuest adb.exe if present on system, if not RSL will use local adb.exe. This will keep adb.exe up to date as long as SQ is up to date and should fix any adb version issues that were preventing obb's from copying correctly.
|
||||
+ Added adb kill-server command to launch and exit of RSL. No more adb.exe running in background forever.
|
||||
= After PC reboot wireless ADB message should only pop up once or twice now (depending on outside factors) instead of 5x, user can press cancel then "wake" quest before pressing cancel again to reconnect wireless ADB in case of device just being idle, not rebooted.
|
||||
= Fixed install.txt not installing APK before following install.txt commands when using Drag and Drop install.
|
||||
= Uninstall will now backup saves to
|
||||
Documents\Rookie Backups\<Today'sDate>\<PackageName> (e.g.: com.beatgames.beatsaber).
|
||||
Restore process now looks for either data folder (the folder that a full backup of entire Quest will be contained in) or PackageName folder (they all start with com. so if it finds that it will restore it to the appropriate location). Previously RSL would backup individual saves to
|
||||
Documents\Rookie Backups\PackageName\data\PackageName.
|
||||
= OBB folders will automatically be copied when drag and dropping even if the folder contains no OBB files.
|
||||
Fixed ADB path for usernames containing spaces. ADB now located at c:\RSL\VersionNumber\ADB
|
||||
|
||||
- -HarryEffingPotter-
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmDLArAACgkQx/Rql1Vo
|
||||
czfF5w/+JLiuayS6i7qwK04rxkin8xv81YqPDnfnroOXVtmEZwj70C/474yvK1EA
|
||||
ntWdc8guKzqSS5E7aaUEttS8r8xh6h+ZNp1EPHuQqcRkn0BJZqzk4CFT9ZxHRrD1
|
||||
UPuo8mlWa27+sEGEywNwasVDFkB4lMNL5cv0OWXxvMwAbaIP5gneITYBA6KzIp3L
|
||||
WVnHyqkRGAz6pGHsdoCXurOBdiXs9IEt6TPgZTmjFAbysewEvjIodtfgThHZKSbp
|
||||
XQZwMiY0GbSYJWTGWT3wcbi6TE5p7oTb9CbD6a6n8iuCeaRppkMVqvFIik6vDREJ
|
||||
4mRsvehM1RWV5b/v9bWi+5Pz0A8+hWxX+VjlgIQD1hLSMHbbpG4vzwRORl0/u8Bc
|
||||
H+XZOb7jun0Aiswqm49QPUAYSGqKhKuWkL4Eu2JDL6Fyq0ukmC85/w7MQUt1JF01
|
||||
0dGT/QzjOyPfZYuAyPwrBr8MJ9pyn/3gC6XAKFgMEjmOnqM4Ab2P3aXlg+NwvtDB
|
||||
8g6lbPxhqDuO49NyZZzhChXURE8ndOIgR9sSLfMjgYs5NaK6ZydNJiV8VRPjx+/J
|
||||
wXpPQLhHxP2Onu9c8SFRt1Lf6M01uRmH2dO7LbSxVjh+V+WyDGoPZt0kUMXpa9LJ
|
||||
l5S1MO+qe8akmXgoOCXnQYBOniS9iQqg4nmUK4PF7nssahQ6nG0=
|
||||
=Le5S
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmDdNvsACgkQx/Rql1Vo
|
||||
czdIWQ/+OvvchZOuwMZJvd6d/N4WmBUPKm3TzyiF5JM/STLEbLIHB1p6LQg+6J3K
|
||||
3d9x3mQmu/gMHMumsfmuOuHHI7OOs9CLOVY2UFm7CqTnDf7iCxl8+6/iQw48yfj9
|
||||
63qwUKZdLueRX9IqtcV2MwZJP7eKdZmtv6ALyRbjWmo2fgbm/Fs1U+TfGnlY7qLg
|
||||
wIascv5DuKRyHvRzlgdn6OqmewWTxHDOTwCTjodROIK9guCELNYhEWv/TtgMldv9
|
||||
gz1Lr8KZOcxNltpvstJgdbeFy61LK67su0rKZHsGMu4x0hDe4YOyjyMDtXrVJ0VH
|
||||
SJBqDgSKD3HE/MNYkCWusqs7np2XKXC8hP6nm2QO9zM44d+UWDfrJbwvvw6QUoez
|
||||
Iqk/PskC3sF7kWAv4O+LRmLDlrHD2RG5TkkE4ohiIi4D4VaNEx4QyVf6INN+A9xd
|
||||
IxcvXC9QkFwffUD93cThEdLNRnrnzZSsUFMRh3XrvPbq2wfvWjqZX1EGfD7ug0Mf
|
||||
r9uPX4RdILvsXeybefiiwLiw3UNMJtUlaKDvqIit5S78BIP6DY+dGnMMRIQJa1vd
|
||||
XBPnIHyifzvl1nyYd6TWCFRuOzZLYirv4Ug6xS1/KzyURXIz2P0EEhDURJAR/q+M
|
||||
ZmqSO2eQo64B7Dfa9oRLKkZRfhWFgtYA9QKm9ei7tOPbnJ+2718=
|
||||
=o5Nr
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.1.1
|
||||
RSL 2.1HF4
|
||||
|
||||
= Moved ADB files to AppData\Roaming\RSL to fix compatibility issues across the board.
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmDa9rQACgkQx/Rql1Vo
|
||||
czeiYQ//X6e3DD51Kgta/omu0fVtPM4lxt+P/H5ij1xbNPmoaL7w+QvNeFqVLPs0
|
||||
T8btbEkDT7pisOHQtHFKENs4G0Sck0RkI0jVNu1lYIT67tmTYyFGP4jOxopktmNE
|
||||
uydmI8g+8UkuTPYIKpkYJUOrWT1u4IV0SoBsdERYU7qRZmvCqWgwqdcs4R6wAdm0
|
||||
FNqWRbUo/LhFw1rQicny4vL7w6rf7PvAksWifqbl1KfBFAchf4cZ3+YKeyO4V2Ym
|
||||
7LcNgVGaSuPCr5dKmVr31B0kU0XrV8KPpKwgoIOym8eH8PNuaj3elwbndqYZ95fB
|
||||
xNFluF9z9qejiIkYM9UDSoeNEfeJaUwIfgb1WI4w+BdlTWaYZfsG+DF+VOBvSU/h
|
||||
YP1ucGrqCu2lLxcIS5ffNd7dTjS22D2x2rErqXGl+ETgqgVHK9NU9Bd02VVyP171
|
||||
Ryq/JRd9tvFknAG6YViVADJDzKdnuwFYeo/T5wgt8P7GtzVZWmZbur6crXK454IH
|
||||
TkyLn9XFbJneGPxjLNm4VwCR0XWFmhAsE+CfRz52hL18RAxyeohWq7RBTt+d49t9
|
||||
eOhTTzOHoWgroOVTV793r+FLdc4nYDhLXRm6I65qhvQhEPCqZDIA1xuvzPbSectb
|
||||
VNNRuPmhxDgtevFFsU/sX8xOv8pKi6naW8N6jobXPavwegABCEg=
|
||||
=61BS
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.1HF3
|
||||
|
||||
= Fixed QUSettings not working issue.(unused fields in QUSettings MUST have 0's in them or it will not work, reset/clear all fields button now reflect this.)
|
||||
= Fixed Uninstall auto-save-backup
|
||||
|
||||
Reference in New Issue
Block a user