Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d02505b172 |
3
ADB.cs
3
ADB.cs
@@ -168,7 +168,7 @@ namespace AndroidSideloader
|
||||
if (logcmd.Contains(Environment.CurrentDirectory))
|
||||
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
|
||||
Logger.Log($"Running command: {logcmd}");
|
||||
adb.StartInfo.FileName = "cmd.exe";
|
||||
adb.StartInfo.FileName = @"C:\Windows\System32\cmd.exe";
|
||||
adb.StartInfo.Arguments = command;
|
||||
adb.StartInfo.RedirectStandardError = true;
|
||||
adb.StartInfo.RedirectStandardInput = true;
|
||||
@@ -377,7 +377,6 @@ namespace AndroidSideloader
|
||||
|
||||
WakeDevice();
|
||||
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"))
|
||||
|
||||
13
App.config
13
App.config
@@ -5,9 +5,6 @@
|
||||
<section name="AndroidSideloader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
<section name="AndroidADB.Sideloader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="AndroidSideloader.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
@@ -158,6 +155,9 @@
|
||||
<setting name="nodevicemode" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="BMBFchecked" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</AndroidSideloader.Properties.Settings>
|
||||
<AndroidADB.Sideloader.Properties.Settings>
|
||||
<setting name="checkForUpdates" serializeAs="String">
|
||||
@@ -216,11 +216,4 @@
|
||||
</setting>
|
||||
</AndroidADB.Sideloader.Properties.Settings>
|
||||
</userSettings>
|
||||
<applicationSettings>
|
||||
<AndroidSideloader.Properties.Settings>
|
||||
<setting name="UsingBMBF" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</AndroidSideloader.Properties.Settings>
|
||||
</applicationSettings>
|
||||
</configuration>
|
||||
@@ -1,6 +1,47 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.6
|
||||
|
||||
+ Added No Device mode for those who wish to download games
|
||||
overnight without interruption.
|
||||
+ Added automatic config update at launch.
|
||||
+ Added a unique HWID generator that will generate a unique
|
||||
number based on your PC's components and then encrypt it
|
||||
with SHA256. This is so donors can be anonymously identified
|
||||
for the purpose of future benefits/recognition. Once.the HWID
|
||||
is generated RSL then creates a text file named HWID to put
|
||||
with the clean files in the zip. Users can see their unique
|
||||
HWID at any time by pressing CTRL+H in Rookie. Your unique HWID
|
||||
will always be the same.
|
||||
= Added version code to any zip files created during clean files
|
||||
prep.
|
||||
= Added boolean to check if user has been asked to send clean
|
||||
files, if they have it won't appear again for some time.
|
||||
= Fixed OBB installation for Install+Download.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEJuZYACgkQx/Rql1Vo
|
||||
cze1yg//Yyw+tRfA3hLxLQejXhj/LyFsGOoTCyqTVQDuUtxZxyMAFUN3SCd5sC3h
|
||||
byVpcoDMaBMGoOgE3FnpEvObd3SHVaB3xqw902saHPAhzuujv4Ru25ou+xRDU8c6
|
||||
+xXPQ3O4ocgHwlFP+nCVx3eXai8Dz/2OUc6JC2PfpjU/xj3B6cs/ExSrxoHqyCJL
|
||||
g5lntpE0dFQboe6gu7uEQn2Qal1Gsn2+MqCqQZh1dBIpF/gEPD8/q40St/lN7cdY
|
||||
jm1lVxW3By7muxlh9wcRYsxQk78cb49+Vsa+EcxS6GK0m8Hibp8nS7RoHFMBtC1i
|
||||
hgIZW5lt1cCj5WlwI3/t+vLR4Ia/eh7Vi0EiyVGhiOIQvCR2+PpkWWrVDe3zoXUX
|
||||
n68zFZlL2yoaCXg5AWPp3KiQff3uxlBD58fzNZRtKzjFPNmcYR6x7PcHfai76+JD
|
||||
aE36aC8Q3aMCaIaH+gH+eAhl+mzyX1Vhdl9NLLHLUXZwBnSA9drMHJsVMh6SOQiC
|
||||
VMiv1vMXJllKq/7W7EGr1fWFGuPJk6FFjT1g+3+2d71yVKyPL+99JQg7UJzp112w
|
||||
7ZUAD6Wt8lpW66I2zpcOBPwpoAlxg2uJy2Nc38axfrBpHsscNrYIXFMHEprLG+Xk
|
||||
PqnfDHPtP1sUxe2uiZTQj3JjlEnb4ES/xBdvSPacc53+fBPs0yM=
|
||||
=BAUp
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.5.1
|
||||
|
||||
+ Added PARTIAL SEARCH compatibility to Quick Search. Quick
|
||||
|
||||
4
MainForm.Designer.cs
generated
4
MainForm.Designer.cs
generated
@@ -856,9 +856,9 @@
|
||||
this.gamesListView.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.gamesListView.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
|
||||
this.gamesListView.HideSelection = false;
|
||||
this.gamesListView.Location = new System.Drawing.Point(224, 72);
|
||||
this.gamesListView.Location = new System.Drawing.Point(224, 71);
|
||||
this.gamesListView.Name = "gamesListView";
|
||||
this.gamesListView.Size = new System.Drawing.Size(746, 359);
|
||||
this.gamesListView.Size = new System.Drawing.Size(746, 360);
|
||||
this.gamesListView.TabIndex = 6;
|
||||
this.gamesListView.UseCompatibleStateImageBehavior = false;
|
||||
this.gamesListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
|
||||
|
||||
251
MainForm.cs
251
MainForm.cs
@@ -30,6 +30,8 @@ namespace AndroidSideloader
|
||||
#else
|
||||
public bool keyheld;
|
||||
public bool keyheld2;
|
||||
public static string CurrAPK;
|
||||
public static string CurrPCKG;
|
||||
public static bool debugMode = false;
|
||||
public bool DeviceConnected = false;
|
||||
#endif
|
||||
@@ -77,10 +79,7 @@ namespace AndroidSideloader
|
||||
t2.Interval = 30; // 30ms
|
||||
t2.Tick += new EventHandler(timer_Tick2);
|
||||
t2.Start();
|
||||
System.Windows.Forms.Timer t3 = new System.Windows.Forms.Timer();
|
||||
t3.Interval = 350; // 1 second before clipboard copy is allowed
|
||||
t3.Tick += new EventHandler(timer_Tick3);
|
||||
t3.Start();
|
||||
|
||||
lvwColumnSorter = new ListViewColumnSorter();
|
||||
this.gamesListView.ListViewItemSorter = lvwColumnSorter;
|
||||
if (searchTextBox.Visible)
|
||||
@@ -189,6 +188,8 @@ namespace AndroidSideloader
|
||||
catch { }
|
||||
if (File.Exists("crashlog.txt"))
|
||||
{
|
||||
if (File.Exists(Properties.Settings.Default.CurrentCrashPath))
|
||||
File.Delete(Properties.Settings.Default.CurrentCrashPath);
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"Sideloader crashed during your last use.\nPress OK if you'd like to send us your crash log.\n\n NOTE: THIS CAN TAKE UP TO 30 SECONDS.", "Crash Detected", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.OK)
|
||||
{
|
||||
@@ -232,18 +233,10 @@ namespace AndroidSideloader
|
||||
Thread.Sleep(10000);
|
||||
freeDisclaimer.Invoke(() => { freeDisclaimer.Dispose(); });
|
||||
}).Start();
|
||||
initMirrors(true);
|
||||
if (updatedConfig == false && Properties.Settings.Default.autoUpdateConfig == true) //check for config only once per program open and if setting enabled
|
||||
{
|
||||
updatedConfig = true;
|
||||
ChangeTitle("Checking if config is updated and updating config");
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
await Task.Run(() => SideloaderRCLONE.updateConfig(currentRemote));
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
}
|
||||
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
|
||||
if (!debugMode && Properties.Settings.Default.checkForUpdates)
|
||||
{
|
||||
Updater.AppName = "AndroidSideloader";
|
||||
@@ -251,53 +244,51 @@ namespace AndroidSideloader
|
||||
Updater.Update();
|
||||
}
|
||||
progressBar.Invoke(() => { progressBar.Style = ProgressBarStyle.Marquee; });
|
||||
|
||||
ChangeTitle("Initializing Mirrors");
|
||||
initMirrors(true);
|
||||
|
||||
ChangeTitle("Initializing Games");
|
||||
if (!Directory.Exists(SideloaderRCLONE.Nouns))
|
||||
SideloaderRCLONE.UpdateNouns(currentRemote);
|
||||
SideloaderRCLONE.UpdateNouns(currentRemote);
|
||||
SideloaderRCLONE.initGames(currentRemote);
|
||||
|
||||
if (!Directory.Exists(SideloaderRCLONE.ThumbnailsFolder) || !Directory.Exists(SideloaderRCLONE.NotesFolder))
|
||||
{
|
||||
FlexibleMessageBox.Show("It seems you are missing the thumbnails and/or notes database, the first start of the sideloader takes a bit more time, so dont worry if it looks stuck!");
|
||||
}
|
||||
ChangeTitle("Syncing Game Photos");
|
||||
SideloaderRCLONE.UpdateGamePhotos(currentRemote);
|
||||
|
||||
if (Directory.Exists(SideloaderRCLONE.Nouns))
|
||||
{
|
||||
ChangeTitle("Updating list of needed clean apps...");
|
||||
SideloaderRCLONE.UpdateNouns(currentRemote);
|
||||
}
|
||||
|
||||
|
||||
ChangeTitle("Updating list of needed clean apps...");
|
||||
SideloaderRCLONE.UpdateNouns(currentRemote);
|
||||
ChangeTitle("Checking for Updates on server...");
|
||||
SideloaderRCLONE.UpdateGameNotes(currentRemote);
|
||||
listappsbtn();
|
||||
ChangeTitle("Loaded");
|
||||
});
|
||||
t1.SetApartmentState(ApartmentState.STA);
|
||||
t1.IsBackground = false;
|
||||
t1.IsBackground = true;
|
||||
if (HasInternet)
|
||||
t1.Start();
|
||||
|
||||
showAvailableSpace();
|
||||
|
||||
intToolTips();
|
||||
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
Thread configThread = new Thread(() =>
|
||||
{
|
||||
ChangeTitle("Checking if config is updated and updating config");
|
||||
SideloaderRCLONE.updateConfig(currentRemote);
|
||||
ChangeTitle("");
|
||||
|
||||
});
|
||||
configThread.IsBackground = true;
|
||||
configThread.Start();
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Populating update list, please wait...");
|
||||
listappsbtn();
|
||||
initListView();
|
||||
ChangeTitle("Loaded");
|
||||
showAvailableSpace();
|
||||
intToolTips();
|
||||
ChangeTitle("");
|
||||
downloadInstallGameButton.Enabled = true;
|
||||
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
isLoading = false;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -338,14 +329,9 @@ namespace AndroidSideloader
|
||||
|
||||
void timer_Tick2(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
keyheld = false;
|
||||
}
|
||||
|
||||
void timer_Tick3(object sender, EventArgs e)
|
||||
{
|
||||
keyheld2 = false;
|
||||
}
|
||||
public async void ChangeTitle(string txt, bool reset = true)
|
||||
{
|
||||
try
|
||||
@@ -366,7 +352,8 @@ namespace AndroidSideloader
|
||||
if (!ProgressText.IsDisposed)
|
||||
ProgressText.Text = oldTitle;
|
||||
});
|
||||
} catch
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
@@ -374,7 +361,6 @@ namespace AndroidSideloader
|
||||
|
||||
|
||||
|
||||
|
||||
private void ShowSubMenu(Panel subMenu)
|
||||
{
|
||||
if (subMenu.Visible == false)
|
||||
@@ -728,6 +714,7 @@ namespace AndroidSideloader
|
||||
m_combo.Invoke(() => { m_combo.Items.Clear(); });
|
||||
|
||||
var line = listapps().Split('\n');
|
||||
|
||||
string forsettings = String.Join("", line);
|
||||
Properties.Settings.Default.InstalledApps = forsettings;
|
||||
Properties.Settings.Default.Save();
|
||||
@@ -811,7 +798,7 @@ namespace AndroidSideloader
|
||||
while (t2.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
string cmd = $"7z a \"{packageName} v{VersionInt}.zip\" \"{packageName}\\*\"";
|
||||
string cmd = $"7z a {packageName}v{VersionInt}.zip .\\{packageName}\\*";
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
Thread t3 = new Thread(() =>
|
||||
{
|
||||
@@ -822,7 +809,7 @@ namespace AndroidSideloader
|
||||
|
||||
while (t3.IsAlive)
|
||||
await Task.Delay(100);
|
||||
File.Move($"{Properties.Settings.Default.MainDir}\\{packageName} v{VersionInt}.zip", $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{VersionInt}.zip");
|
||||
File.Move($"{Properties.Settings.Default.MainDir}\\{packageName}v{VersionInt}.zip", $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{VersionInt}.zip");
|
||||
FlexibleMessageBox.Show($"The app has been zipped and placed on your desktop as\n\n{GameName} v{VersionInt}.zip\n\nPlease upload this file to a free file hosting service like\n https://1fichier.com or https://mega.nz and share the link with a moderator.");
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
@@ -935,10 +922,12 @@ namespace AndroidSideloader
|
||||
|
||||
private async void Form1_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
DragDropLbl.Visible = false;
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
ADB.WakeDevice();
|
||||
ADB.DeviceID = GetDeviceID();
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
|
||||
Thread t1 = new Thread(() =>
|
||||
|
||||
{
|
||||
@@ -951,8 +940,9 @@ namespace AndroidSideloader
|
||||
string path = $"{dir}\\Install.txt";
|
||||
if (Directory.Exists(data))
|
||||
{
|
||||
Program.form.ChangeTitle($"Copying {data} to device...");
|
||||
output += ADB.CopyOBB(data);
|
||||
Program.form.ChangeTitle("");
|
||||
Program.form.ChangeTitle($"");
|
||||
string extension = Path.GetExtension(data);
|
||||
if (extension == ".apk")
|
||||
{
|
||||
@@ -967,6 +957,7 @@ namespace AndroidSideloader
|
||||
else
|
||||
ChangeTitle("Sideloading custom install.txt automatically.");
|
||||
output += Sideloader.RunADBCommandsFromFile(path);
|
||||
Logger.Log($"Sideloading {path}");
|
||||
if (output.Error.Contains("mkdir"))
|
||||
output.Error = "";
|
||||
if (output.Error.Contains("reserved"))
|
||||
@@ -978,15 +969,31 @@ namespace AndroidSideloader
|
||||
foreach (string file2 in files)
|
||||
{
|
||||
if (File.Exists(file2))
|
||||
{
|
||||
if (file2.EndsWith(".apk"))
|
||||
{
|
||||
ChangeTitle($"Installing apk... (If this hangs, uninstall app first then install again)");
|
||||
output += ADB.Sideload(file2);
|
||||
}
|
||||
|
||||
if (file2.EndsWith(".zip") && Properties.Settings.Default.BMBFchecked)
|
||||
{
|
||||
string datazip = file2;
|
||||
string zippath = Path.GetDirectoryName(data);
|
||||
datazip = datazip.Replace(zippath, "");
|
||||
datazip = Utilities.StringUtilities.RemoveEverythingAfterFirst(datazip, ".");
|
||||
datazip = datazip.Replace(".", "");
|
||||
string command2 = $"\"{Properties.Settings.Default.MainDir}\\7z.exe\" e \"{file2}\" -o\"{zippath}\\{datazip}\\\"";
|
||||
ADB.RunCommandToString(command2, file2);
|
||||
output += ADB.RunAdbCommandToString($"push \"{zippath}\\{datazip}\" /sdcard/ModData/com.beatgames.beatsaber/Mods/SongLoader/CustomLevels/");
|
||||
Directory.Delete($"{zippath}\\{datazip}", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
string[] folders = Directory.GetDirectories(data);
|
||||
foreach (string folder in folders)
|
||||
{
|
||||
|
||||
Program.form.ChangeTitle($"Copying {folder} to device...");
|
||||
output += ADB.CopyOBB(folder);
|
||||
Program.form.ChangeTitle("");
|
||||
Properties.Settings.Default.CurrPckg = dir;
|
||||
@@ -1016,11 +1023,14 @@ namespace AndroidSideloader
|
||||
else
|
||||
|
||||
{
|
||||
ChangeTitle($"Installing {Path.GetFileName(data)}...");
|
||||
ChangeTitle($"Installing apk... (If this hangs, uninstall app first then install again)");
|
||||
output += ADB.Sideload(data);
|
||||
|
||||
|
||||
ChangeTitle("");
|
||||
}
|
||||
}
|
||||
//If obb is dragged and dropped alone onto Rookie, Rookie will recreate its obb folder automatically with this code.
|
||||
else if (extension == ".obb")
|
||||
{
|
||||
string filename = Path.GetFileName(data);
|
||||
@@ -1035,7 +1045,21 @@ namespace AndroidSideloader
|
||||
Directory.Delete(foldername, true);
|
||||
ChangeTitle("");
|
||||
}
|
||||
// BMBF Zip extraction then push to BMBF song folder on Quest.
|
||||
else if (extension == ".zip" && Properties.Settings.Default.BMBFchecked)
|
||||
{
|
||||
string datazip = data;
|
||||
string zippath = Path.GetDirectoryName(data);
|
||||
datazip = datazip.Replace(zippath, "");
|
||||
datazip = Utilities.StringUtilities.RemoveEverythingAfterFirst(datazip, ".");
|
||||
datazip = datazip.Replace(".", "");
|
||||
|
||||
string command = $"\"{Properties.Settings.Default.MainDir}\\7z.exe\" e \"{data}\" -o\"{zippath}\\{datazip}\\\"";
|
||||
|
||||
ADB.RunCommandToString(command, data);
|
||||
output += ADB.RunAdbCommandToString($"push \"{zippath}\\{datazip}\" /sdcard/ModData/com.beatgames.beatsaber/Mods/SongLoader/CustomLevels/");
|
||||
Directory.Delete($"{zippath}\\{datazip}", true);
|
||||
}
|
||||
else if (extension == ".txt")
|
||||
{
|
||||
ChangeTitle("Sideloading custom install.txt automatically.");
|
||||
@@ -1058,6 +1082,9 @@ namespace AndroidSideloader
|
||||
DragDropLbl.Visible = false;
|
||||
|
||||
ShowPrcOutput(output);
|
||||
listappsbtn();
|
||||
initListView();
|
||||
|
||||
}
|
||||
|
||||
private void Form1_DragEnter(object sender, DragEventArgs e)
|
||||
@@ -1165,7 +1192,7 @@ namespace AndroidSideloader
|
||||
t1.Start();
|
||||
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
await Task.Delay(1000);
|
||||
ChangeTitle("Extracting obb if it exists....");
|
||||
Thread t2 = new Thread(() =>
|
||||
{
|
||||
@@ -1175,9 +1202,9 @@ namespace AndroidSideloader
|
||||
t2.Start();
|
||||
|
||||
while (t2.IsAlive)
|
||||
await Task.Delay(100);
|
||||
await Task.Delay(1000);
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
string cmd = $"7z a \"{packagename} v{installedVersionInt}.zip\" \"{packagename}\\*\"";
|
||||
string cmd = $"7z a {packagename}v{installedVersionInt}.zip .\\{packagename}\\*";
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
|
||||
Thread t3 = new Thread(() =>
|
||||
@@ -1187,8 +1214,7 @@ namespace AndroidSideloader
|
||||
ADB.RunCommandToString(cmd, path);
|
||||
if (File.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{installedVersionInt}.zip"))
|
||||
File.Delete($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{installedVersionInt}.zip");
|
||||
|
||||
File.Move($"{Properties.Settings.Default.MainDir}\\{packagename} v{installedVersionInt}.zip", $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{installedVersionInt}.zip");
|
||||
File.Move($"{Properties.Settings.Default.MainDir}\\{packagename}v{installedVersionInt}.zip", $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{installedVersionInt}.zip");
|
||||
FlexibleMessageBox.Show($"The app has been zipped and placed on your desktop as\n\n{GameName} v{installedVersionInt}.zip\n\nPlease upload this file to a free file hosting service like\n https://1fichier.com or https://mega.nz \nThen share the link to the moderators listed in the\npinned message on Telegram.");
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packagename}", true);
|
||||
});
|
||||
@@ -1355,7 +1381,7 @@ without him none of this would be possible
|
||||
private async void listApkButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
|
||||
ChangeTitle("Refreshing connected devices, installed apps and update list...");
|
||||
if (isLoading)
|
||||
return;
|
||||
isLoading = true;
|
||||
@@ -1377,6 +1403,7 @@ without him none of this would be possible
|
||||
initListView();
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
isLoading = false;
|
||||
ChangeTitle("");
|
||||
}
|
||||
|
||||
private static readonly HttpClient client = new HttpClient();
|
||||
@@ -1386,7 +1413,7 @@ without him none of this would be possible
|
||||
private bool gamesAreDownloading = false;
|
||||
private List<string> gamesQueueList = new List<string>();
|
||||
private int quotaTries = 0;
|
||||
|
||||
public static bool timerticked = false;
|
||||
public void SwitchMirrors()
|
||||
{
|
||||
quotaTries++;
|
||||
@@ -1411,7 +1438,7 @@ without him none of this would be possible
|
||||
{
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
if (gamesListView.SelectedItems.Count == 0) return;
|
||||
|
||||
|
||||
string namebox = gamesListView.SelectedItems[0].ToString();
|
||||
string nameboxtranslated = Sideloader.gameNameToSimpleName(namebox);
|
||||
ChangeTitle($"Checking filesize of {nameboxtranslated}...");
|
||||
@@ -1636,25 +1663,30 @@ without him none of this would be possible
|
||||
{
|
||||
if (extension == ".apk")
|
||||
{
|
||||
CurrAPK = file;
|
||||
CurrPCKG = packagename;
|
||||
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
|
||||
t.Interval = 60000; // 60 seconds to fail
|
||||
t.Tick += new EventHandler(timer_Tick4);
|
||||
t.Start();
|
||||
Thread apkThread = new Thread(() =>
|
||||
{
|
||||
Program.form.ChangeTitle($"Sideloading apk...");
|
||||
output += ADB.Sideload(file, packagename);
|
||||
});
|
||||
|
||||
apkThread.Start();
|
||||
while (apkThread.IsAlive)
|
||||
await Task.Delay(100);
|
||||
t.Stop();
|
||||
}
|
||||
|
||||
Debug.WriteLine(wrDelimiter);
|
||||
ChangeTitle("Installing game obb " + gameName, false);
|
||||
if (Directory.Exists($"{Environment.CurrentDirectory}\\{gameName}\\{packagename}"))
|
||||
{
|
||||
Thread obbThread = new Thread(() =>
|
||||
{
|
||||
|
||||
ChangeTitle($"Copying {packagename} obb to device...");
|
||||
|
||||
output += ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{gameName}\\{packagename}\" \"/sdcard/Android/obb\"");
|
||||
Program.form.ChangeTitle("");
|
||||
});
|
||||
@@ -1693,6 +1725,68 @@ without him none of this would be possible
|
||||
}
|
||||
}
|
||||
|
||||
private async void timer_Tick4(object sender, EventArgs e)
|
||||
{
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
if (!timerticked)
|
||||
{
|
||||
timerticked = true;
|
||||
string[] blacklist = File.ReadAllLines($"{Environment.CurrentDirectory}\\installedPackages.json");
|
||||
bool isinstalled = false;
|
||||
foreach (string blacklistpckg in blacklist)
|
||||
{
|
||||
if (blacklistpckg.Contains(CurrPCKG))
|
||||
{
|
||||
isinstalled = true;
|
||||
}
|
||||
}
|
||||
if (isinstalled)
|
||||
{
|
||||
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("In place upgrade has failed.\n\nThis means the app must be uninstalled first before updating.\nRookie can attempt to do this while retaining your savedata.\nWhile the vast majority of games can be backed up there are some exceptions\n(we don't know which apps can't be backed up as there is no list online)\n\nDo you want Rookie to uninstall and reinstall the app automatically?", "In place upgrade failed", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.OK)
|
||||
{
|
||||
Thread reinstallThread = new Thread(() =>
|
||||
{
|
||||
ChangeTitle("Preforming reinstall, please wait...");
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
ADB.RunAdbCommandToString("devices");
|
||||
ADB.RunAdbCommandToString($"pull /sdcard/Android/data/{CurrPCKG} \"{Environment.CurrentDirectory}\"");
|
||||
ADB.RunAdbCommandToString($"shell pm uninstall {CurrPCKG}");
|
||||
output += ADB.Sideload(CurrAPK);
|
||||
ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{CurrPCKG}\" /sdcard/Android/data/");
|
||||
listappsbtn();
|
||||
initListView();
|
||||
|
||||
});
|
||||
reinstallThread.IsBackground = true;
|
||||
reinstallThread.Start();
|
||||
while (reinstallThread.IsAlive)
|
||||
await Task.Delay(100);
|
||||
timerticked = false;
|
||||
if (Directory.Exists($"{Environment.CurrentDirectory}\\{CurrPCKG}"))
|
||||
Directory.Delete($"{Environment.CurrentDirectory}\\{CurrPCKG}", true);
|
||||
ChangeTitle("");
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
DialogResult dialogResult2 = FlexibleMessageBox.Show("Would you like to cancel the install? Press NO to keep waiting.", "Cancel install?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult2 == DialogResult.Yes)
|
||||
{
|
||||
ChangeTitle("Stopping Install...");
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
ADB.RunAdbCommandToString("devices");
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
RCLONE.killRclone();
|
||||
@@ -2043,26 +2137,25 @@ without him none of this would be possible
|
||||
Clipboard.SetText(CurrentPackageName);
|
||||
keyheld2 = true;
|
||||
}
|
||||
if (!keyheld)
|
||||
|
||||
string ImagePath = "";
|
||||
if (File.Exists($"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.jpg"))
|
||||
ImagePath = $"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.jpg";
|
||||
else if (File.Exists($"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.png"))
|
||||
ImagePath = $"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.png";
|
||||
if (gamesPictureBox.BackgroundImage != null)
|
||||
gamesPictureBox.BackgroundImage.Dispose();
|
||||
if (File.Exists(ImagePath) && !keyheld)
|
||||
{
|
||||
string ImagePath = "";
|
||||
if (File.Exists($"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.jpg"))
|
||||
ImagePath = $"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.jpg";
|
||||
else if (File.Exists($"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.png"))
|
||||
ImagePath = $"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.png";
|
||||
if (gamesPictureBox.BackgroundImage != null)
|
||||
gamesPictureBox.BackgroundImage.Dispose();
|
||||
if (File.Exists(ImagePath) && !keyheld)
|
||||
{
|
||||
gamesPictureBox.BackgroundImage = Image.FromFile(ImagePath);
|
||||
|
||||
}
|
||||
else
|
||||
gamesPictureBox.BackgroundImage = new Bitmap(367, 214);
|
||||
keyheld = true;
|
||||
|
||||
gamesPictureBox.BackgroundImage = Image.FromFile(ImagePath);
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
gamesPictureBox.BackgroundImage = new Bitmap(367, 214);
|
||||
keyheld = true;
|
||||
|
||||
|
||||
|
||||
string NotePath = $"{SideloaderRCLONE.NotesFolder}\\{CurrentReleaseName}.txt";
|
||||
if (File.Exists(NotePath))
|
||||
notesRichTextBox.Text = File.ReadAllText(NotePath);
|
||||
|
||||
9
Properties/Settings.Designer.cs
generated
9
Properties/Settings.Designer.cs
generated
@@ -599,12 +599,15 @@ namespace AndroidSideloader.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UsingBMBF {
|
||||
public bool BMBFchecked {
|
||||
get {
|
||||
return ((bool)(this["UsingBMBF"]));
|
||||
return ((bool)(this["BMBFchecked"]));
|
||||
}
|
||||
set {
|
||||
this["BMBFchecked"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
<Setting Name="nodevicemode" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UsingBMBF" Type="System.Boolean" Scope="Application">
|
||||
<Setting Name="BMBFchecked" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
|
||||
42
SettingsForm.Designer.cs
generated
42
SettingsForm.Designer.cs
generated
@@ -47,6 +47,7 @@
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.CblindBox = new System.Windows.Forms.CheckBox();
|
||||
this.nodevicemodeBox = new System.Windows.Forms.CheckBox();
|
||||
this.bmbfBox = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkForUpdatesCheckBox
|
||||
@@ -71,7 +72,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(67, 265);
|
||||
this.applyButton.Location = new System.Drawing.Point(67, 280);
|
||||
this.applyButton.Name = "applyButton";
|
||||
this.applyButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.applyButton.TabIndex = 5;
|
||||
@@ -101,7 +102,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(174, 265);
|
||||
this.resetSettingsButton.Location = new System.Drawing.Point(174, 280);
|
||||
this.resetSettingsButton.Name = "resetSettingsButton";
|
||||
this.resetSettingsButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.resetSettingsButton.TabIndex = 4;
|
||||
@@ -156,7 +157,7 @@
|
||||
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(52, 233);
|
||||
this.BandwithTextbox.Location = new System.Drawing.Point(52, 248);
|
||||
this.BandwithTextbox.Name = "BandwithTextbox";
|
||||
this.BandwithTextbox.Size = new System.Drawing.Size(177, 24);
|
||||
this.BandwithTextbox.TabIndex = 11;
|
||||
@@ -166,7 +167,7 @@
|
||||
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(40, 210);
|
||||
this.label1.Location = new System.Drawing.Point(40, 225);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(245, 18);
|
||||
this.label1.TabIndex = 12;
|
||||
@@ -187,7 +188,7 @@
|
||||
"K",
|
||||
"M",
|
||||
"G"});
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(235, 233);
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(235, 248);
|
||||
this.BandwithComboBox.Name = "BandwithComboBox";
|
||||
this.BandwithComboBox.Size = new System.Drawing.Size(55, 26);
|
||||
this.BandwithComboBox.TabIndex = 13;
|
||||
@@ -201,7 +202,7 @@
|
||||
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, 310);
|
||||
this.DebugLogCopy.Location = new System.Drawing.Point(29, 325);
|
||||
this.DebugLogCopy.Name = "DebugLogCopy";
|
||||
this.DebugLogCopy.Size = new System.Drawing.Size(285, 31);
|
||||
this.DebugLogCopy.TabIndex = 5;
|
||||
@@ -227,7 +228,7 @@
|
||||
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, 345);
|
||||
this.button1.Location = new System.Drawing.Point(29, 360);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(285, 31);
|
||||
this.button1.TabIndex = 5;
|
||||
@@ -238,7 +239,7 @@
|
||||
// debuglogID
|
||||
//
|
||||
this.debuglogID.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.debuglogID.Location = new System.Drawing.Point(29, 421);
|
||||
this.debuglogID.Location = new System.Drawing.Point(29, 436);
|
||||
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);
|
||||
@@ -253,7 +254,7 @@
|
||||
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, 392);
|
||||
this.DebugID.Location = new System.Drawing.Point(29, 407);
|
||||
this.DebugID.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.DebugID.Name = "DebugID";
|
||||
this.DebugID.ReadOnly = true;
|
||||
@@ -266,7 +267,7 @@
|
||||
// label2
|
||||
//
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.label2.Location = new System.Drawing.Point(29, 492);
|
||||
this.label2.Location = new System.Drawing.Point(29, 507);
|
||||
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);
|
||||
@@ -283,7 +284,7 @@
|
||||
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, 475);
|
||||
this.textBox1.Location = new System.Drawing.Point(29, 490);
|
||||
this.textBox1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.ReadOnly = true;
|
||||
@@ -312,7 +313,7 @@
|
||||
this.nodevicemodeBox.AutoSize = true;
|
||||
this.nodevicemodeBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.nodevicemodeBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.nodevicemodeBox.Location = new System.Drawing.Point(12, 172);
|
||||
this.nodevicemodeBox.Location = new System.Drawing.Point(12, 196);
|
||||
this.nodevicemodeBox.Name = "nodevicemodeBox";
|
||||
this.nodevicemodeBox.Size = new System.Drawing.Size(181, 22);
|
||||
this.nodevicemodeBox.TabIndex = 9;
|
||||
@@ -320,12 +321,25 @@
|
||||
this.nodevicemodeBox.UseVisualStyleBackColor = true;
|
||||
this.nodevicemodeBox.CheckedChanged += new System.EventHandler(this.nodevicemodeBox_CheckedChanged);
|
||||
//
|
||||
// bmbfBox
|
||||
//
|
||||
this.bmbfBox.AutoSize = true;
|
||||
this.bmbfBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.bmbfBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.bmbfBox.Location = new System.Drawing.Point(12, 170);
|
||||
this.bmbfBox.Name = "bmbfBox";
|
||||
this.bmbfBox.Size = new System.Drawing.Size(281, 22);
|
||||
this.bmbfBox.TabIndex = 9;
|
||||
this.bmbfBox.Text = "Enable BMBF song zips drag and drop";
|
||||
this.bmbfBox.UseVisualStyleBackColor = true;
|
||||
this.bmbfBox.CheckedChanged += new System.EventHandler(this.bmbfBox_CheckedChanged);
|
||||
//
|
||||
// SettingsForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.ClientSize = new System.Drawing.Size(342, 569);
|
||||
this.ClientSize = new System.Drawing.Size(342, 606);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.DebugID);
|
||||
this.Controls.Add(this.crashlogID);
|
||||
@@ -334,6 +348,7 @@
|
||||
this.Controls.Add(this.BandwithComboBox);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.BandwithTextbox);
|
||||
this.Controls.Add(this.bmbfBox);
|
||||
this.Controls.Add(this.nodevicemodeBox);
|
||||
this.Controls.Add(this.CblindBox);
|
||||
this.Controls.Add(this.userJsonOnGameInstall);
|
||||
@@ -382,5 +397,6 @@
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.CheckBox CblindBox;
|
||||
private System.Windows.Forms.CheckBox nodevicemodeBox;
|
||||
private System.Windows.Forms.CheckBox bmbfBox;
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ namespace AndroidSideloader
|
||||
updateConfigCheckBox.Checked = Properties.Settings.Default.autoUpdateConfig;
|
||||
userJsonOnGameInstall.Checked = Properties.Settings.Default.userJsonOnGameInstall;
|
||||
nodevicemodeBox.Checked = Properties.Settings.Default.nodevicemode;
|
||||
bmbfBox.Checked = Properties.Settings.Default.BMBFchecked;
|
||||
|
||||
if (Properties.Settings.Default.BandwithLimit.Length > 1)
|
||||
{
|
||||
@@ -216,6 +217,12 @@ namespace AndroidSideloader
|
||||
Properties.Settings.Default.nodevicemode = nodevicemodeBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void bmbfBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.BMBFchecked = nodevicemodeBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AndroidSideloader
|
||||
private static string RawGitHubUrl;
|
||||
private static string GitHubUrl;
|
||||
|
||||
static readonly public string LocalVersion = "2.6";
|
||||
static readonly public string LocalVersion = "2.7";
|
||||
public static string currentVersion = string.Empty;
|
||||
public static string changelog = string.Empty;
|
||||
|
||||
|
||||
146
changelog.txt
146
changelog.txt
@@ -1,124 +1,42 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.6
|
||||
|
||||
+ Added No Device mode for those who wish to download games
|
||||
overnight without interruption.
|
||||
+ Added automatic config update at launch.
|
||||
+ Added a unique HWID generator that will generate a unique
|
||||
number based on your PC's components and then encrypt it
|
||||
with SHA256. This is so donors can be anonymously identified
|
||||
for the purpose of future benefits/recognition. Once.the HWID
|
||||
is generated RSL then creates a text file named HWID to put
|
||||
with the clean files in the zip. Users can see their unique
|
||||
HWID at any time by pressing CTRL+H in Rookie. Your unique HWID
|
||||
will always be the same.
|
||||
= Added version code to any zip files created during clean files
|
||||
prep.
|
||||
= Added boolean to check if user has been asked to send clean
|
||||
files, if they have it won't appear again for some time.
|
||||
= Fixed OBB installation for Install+Download.
|
||||
RSL 2.7
|
||||
|
||||
+ Added BMBF drag and drop option for Quest users
|
||||
in SETTINGS menu.If users drag and drop BMBF song
|
||||
zip files onto rookie either one by one, an entire
|
||||
folder, or many zips at once Rookie will automatically
|
||||
extract the files to a folder then push the folder
|
||||
to your device then delete the extraction folder.
|
||||
+ Added automatic timeout during APK install that
|
||||
will ask user if they'd like Rookie to automatically
|
||||
uninstall and reinstall the app. Rookie will check
|
||||
for save data and copy it to a folder temporarily
|
||||
then put it back after reinstall.
|
||||
= Cleaned up startup tasks so booting Rookie should
|
||||
be faster.
|
||||
= Added automatic deletion of previous crashlog to
|
||||
decrease clutter in Rookie directory.
|
||||
= Added automatic installed app refresh after drag
|
||||
and drop.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEJuZYACgkQx/Rql1Vo
|
||||
cze1yg//Yyw+tRfA3hLxLQejXhj/LyFsGOoTCyqTVQDuUtxZxyMAFUN3SCd5sC3h
|
||||
byVpcoDMaBMGoOgE3FnpEvObd3SHVaB3xqw902saHPAhzuujv4Ru25ou+xRDU8c6
|
||||
+xXPQ3O4ocgHwlFP+nCVx3eXai8Dz/2OUc6JC2PfpjU/xj3B6cs/ExSrxoHqyCJL
|
||||
g5lntpE0dFQboe6gu7uEQn2Qal1Gsn2+MqCqQZh1dBIpF/gEPD8/q40St/lN7cdY
|
||||
jm1lVxW3By7muxlh9wcRYsxQk78cb49+Vsa+EcxS6GK0m8Hibp8nS7RoHFMBtC1i
|
||||
hgIZW5lt1cCj5WlwI3/t+vLR4Ia/eh7Vi0EiyVGhiOIQvCR2+PpkWWrVDe3zoXUX
|
||||
n68zFZlL2yoaCXg5AWPp3KiQff3uxlBD58fzNZRtKzjFPNmcYR6x7PcHfai76+JD
|
||||
aE36aC8Q3aMCaIaH+gH+eAhl+mzyX1Vhdl9NLLHLUXZwBnSA9drMHJsVMh6SOQiC
|
||||
VMiv1vMXJllKq/7W7EGr1fWFGuPJk6FFjT1g+3+2d71yVKyPL+99JQg7UJzp112w
|
||||
7ZUAD6Wt8lpW66I2zpcOBPwpoAlxg2uJy2Nc38axfrBpHsscNrYIXFMHEprLG+Xk
|
||||
PqnfDHPtP1sUxe2uiZTQj3JjlEnb4ES/xBdvSPacc53+fBPs0yM=
|
||||
=BAUp
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmENfVMACgkQx/Rql1Vo
|
||||
czcxaw//bTVxR5gt1F4c+gDT80dVfJa1Js3h5vSjGgCHjQdmsU6eaU5BQGoUorkw
|
||||
6ewYF48jt84xDNj/VirkeqHV95mvsj9sksi+mxvELnAa0NdRVYj0DCqZWB/mNDfx
|
||||
lYZGp2SwiGK3a6KfMpPcbi2IEWqc9ZWpdazIDy6l3oGSBAYaoVqfjl+CJQQpomIJ
|
||||
x7f67Ei633dyhu8+0612LVu+tZ4ibN2pAAu1Dd5+uvlODUiYLPadhZkLwk+CYC6p
|
||||
ifs/1qB/fsXJS6YJyPCmuZCbYN//jLCD9ECQ5cqZbTTU82Ub2lDE+TcdO/CsxSxU
|
||||
pueIxZ+7C5TceiNzsDfKfeCWu65hZlBW1xKReDtLPFzZdZuyXYTI0v00kvapwJIO
|
||||
C9Eq2qxZvdnp05tw8nY1V4Ae5Jl6oLN0BwWSZv50NhQ4Dpmbl8pemk1r5iZsRhGA
|
||||
MWQCytBCaX/3EpJda8ifGJxj3kOno2ewbwXdZEMN7QqWt1scN9HxNXFWEJwO29HV
|
||||
pT6ra3T0OrOBLmCQGt4w71HGFK2t+c7aPq0yI/sayguB9zjR/GpTyekg7nHXZh9g
|
||||
c+WD5umN2xA0LuLjvvePKhhKTBT6ebmQJh1CRNIRtA150ULbnTAIpZJTDZyhcLXi
|
||||
IUfWyWPA4G3GsRUqGWf97O2G2bIbbIzLeg3uEdxF7T9LOigYgpU=
|
||||
=Rwj0
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.5.1
|
||||
|
||||
+ 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
|
||||
|
||||
|
||||
RSL 2.5
|
||||
|
||||
+ 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.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
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-----
|
||||
Reference in New Issue
Block a user