Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
258c251567 | ||
|
|
1f851470e0 | ||
|
|
0070e44917 | ||
|
|
596e126d2b |
59
ADB.cs
59
ADB.cs
@@ -67,16 +67,22 @@ namespace AndroidSideloader
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
if (error.Contains("ADB_VENDOR_KEYS"))
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
|
||||
{
|
||||
FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
ADB.WakeDevice();
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
Properties.Settings.Default.adbdebugwarned = true;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
else
|
||||
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))
|
||||
if (!output.Contains("version") && !output.Contains("KEYCODE_WAKEUP") && !output.Contains("Filesystem") && !output.Contains("package:") && !output.Equals(null))
|
||||
Logger.Log(output);
|
||||
Logger.Log(error);
|
||||
return new ProcessOutput(output, error);
|
||||
@@ -122,13 +128,30 @@ namespace AndroidSideloader
|
||||
{
|
||||
adb.Kill();
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
if (error.Contains("ADB_VENDOR_KEYS"))
|
||||
else if (command.Contains("install"))
|
||||
{
|
||||
FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
ADB.WakeDevice();
|
||||
bool graceful = adb.WaitForExit(120000);
|
||||
if (!graceful)
|
||||
{
|
||||
adb.Kill();
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
}
|
||||
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
Properties.Settings.Default.adbdebugwarned = true;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
else
|
||||
ADB.WakeDevice();
|
||||
}
|
||||
Logger.Log(output);
|
||||
Logger.Log(error);
|
||||
@@ -178,9 +201,16 @@ namespace AndroidSideloader
|
||||
}
|
||||
else
|
||||
adb.WaitForExit();
|
||||
if (error.Contains("ADB_VENDOR_KEYS"))
|
||||
|
||||
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
|
||||
{
|
||||
FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.");
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
Properties.Settings.Default.adbdebugwarned = true;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
else
|
||||
ADB.WakeDevice();
|
||||
}
|
||||
Logger.Log(output);
|
||||
@@ -246,7 +276,7 @@ namespace AndroidSideloader
|
||||
public static void WakeDevice()
|
||||
{
|
||||
string devicesout = RunAdbCommandToString("shell input keyevent KEYCODE_WAKEUP").Output;
|
||||
if (!devicesout.Contains("found"))
|
||||
if (!devicesout.Contains("found") && !Properties.Settings.Default.nodevicemode)
|
||||
{
|
||||
if (Properties.Settings.Default.IPAddress.Contains("connect"))
|
||||
{
|
||||
@@ -353,13 +383,14 @@ namespace AndroidSideloader
|
||||
if (out2.Contains("failed"))
|
||||
{
|
||||
string BackupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
|
||||
if (out2.Contains("offline"))
|
||||
Logger.Log(out2);
|
||||
if (out2.Contains("offline") && !Properties.Settings.Default.nodevicemode)
|
||||
{
|
||||
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"))
|
||||
if (out2.Contains($"INSTALL_FAILED_UPDATE_INCOMPATIBLE") || out2.Contains("INSTALL_FAILED_VERSION_DOWNGRADE") || out2.Contains("signatures do not match") || out2.Contains("failed to install"))
|
||||
{
|
||||
ret.Error = string.Empty;
|
||||
ret.Output = string.Empty;
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
|
||||
16
App.config
16
App.config
@@ -5,6 +5,9 @@
|
||||
<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" />
|
||||
@@ -149,6 +152,12 @@
|
||||
<setting name="QblindOn" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="adbdebugwarned" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="nodevicemode" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</AndroidSideloader.Properties.Settings>
|
||||
<AndroidADB.Sideloader.Properties.Settings>
|
||||
<setting name="checkForUpdates" serializeAs="String">
|
||||
@@ -207,4 +216,11 @@
|
||||
</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,49 @@
|
||||
-----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.
|
||||
|
||||
28
MainForm.Designer.cs
generated
28
MainForm.Designer.cs
generated
@@ -116,7 +116,7 @@
|
||||
this.m_combo.Name = "m_combo";
|
||||
this.m_combo.Size = new System.Drawing.Size(353, 26);
|
||||
this.m_combo.TabIndex = 0;
|
||||
this.m_combo.Text = "Select an app to uninstall...";
|
||||
this.m_combo.Text = "Select an app to uninstall or extract...";
|
||||
//
|
||||
// startsideloadbutton
|
||||
//
|
||||
@@ -336,6 +336,8 @@
|
||||
this.downloadInstallGameButton.Text = "Download and Install Game/Add to Queue";
|
||||
this.downloadInstallGameButton.UseVisualStyleBackColor = false;
|
||||
this.downloadInstallGameButton.Click += new System.EventHandler(this.downloadInstallGameButton_Click);
|
||||
this.downloadInstallGameButton.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.downloadInstallGameButton.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
@@ -803,9 +805,11 @@
|
||||
this.gamesQueListBox.Location = new System.Drawing.Point(601, 475);
|
||||
this.gamesQueListBox.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.gamesQueListBox.Name = "gamesQueListBox";
|
||||
this.gamesQueListBox.Size = new System.Drawing.Size(369, 128);
|
||||
this.gamesQueListBox.Size = new System.Drawing.Size(369, 146);
|
||||
this.gamesQueListBox.TabIndex = 9;
|
||||
this.gamesQueListBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gamesQueListBox_MouseClick);
|
||||
this.gamesQueListBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.gamesQueListBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
//
|
||||
// devicesComboBox
|
||||
//
|
||||
@@ -859,6 +863,8 @@
|
||||
this.gamesListView.UseCompatibleStateImageBehavior = false;
|
||||
this.gamesListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
|
||||
this.gamesListView.SelectedIndexChanged += new System.EventHandler(this.gamesListView_SelectedIndexChanged);
|
||||
this.gamesListView.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.gamesListView.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
this.gamesListView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.gamesListView_KeyPress);
|
||||
this.gamesListView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.gamesListView_MouseDoubleClick);
|
||||
//
|
||||
@@ -948,7 +954,7 @@
|
||||
this.notesRichTextBox.ShowSelectionMargin = true;
|
||||
this.notesRichTextBox.Size = new System.Drawing.Size(369, 67);
|
||||
this.notesRichTextBox.TabIndex = 10;
|
||||
this.notesRichTextBox.Text = "";
|
||||
this.notesRichTextBox.Text = "\n\n\n TIP: PRESS F1 TO SEE A LIST OF SHORTCUTS";
|
||||
//
|
||||
// DragDropLbl
|
||||
//
|
||||
@@ -999,7 +1005,7 @@
|
||||
// label2
|
||||
//
|
||||
this.label2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
|
||||
this.label2.Location = new System.Drawing.Point(465, 196);
|
||||
this.label2.Location = new System.Drawing.Point(464, 196);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(271, 120);
|
||||
this.label2.TabIndex = 89;
|
||||
@@ -1029,11 +1035,11 @@
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.label4.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.label4.Location = new System.Drawing.Point(532, 284);
|
||||
this.label4.Location = new System.Drawing.Point(506, 283);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(132, 17);
|
||||
this.label4.Size = new System.Drawing.Size(183, 17);
|
||||
this.label4.TabIndex = 90;
|
||||
this.label4.Text = "Shorcut: CTRL+F";
|
||||
this.label4.Text = "Shorcuts: CTRL+F or F2";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
this.label4.Visible = false;
|
||||
//
|
||||
@@ -1044,9 +1050,9 @@
|
||||
this.label5.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.label5.Location = new System.Drawing.Point(692, 11);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(99, 17);
|
||||
this.label5.Size = new System.Drawing.Size(105, 17);
|
||||
this.label5.TabIndex = 90;
|
||||
this.label5.Text = "Search apps";
|
||||
this.label5.Text = "Quick Search";
|
||||
this.label5.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// label6
|
||||
@@ -1198,6 +1204,8 @@
|
||||
this.gamesPictureBox.Size = new System.Drawing.Size(371, 214);
|
||||
this.gamesPictureBox.TabIndex = 84;
|
||||
this.gamesPictureBox.TabStop = false;
|
||||
this.gamesPictureBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.gamesPictureBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
@@ -1206,6 +1214,7 @@
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.ClientSize = new System.Drawing.Size(980, 721);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.EnterInstallBox);
|
||||
this.Controls.Add(this.ProgressText);
|
||||
this.Controls.Add(this.pictureBox4);
|
||||
@@ -1216,7 +1225,6 @@
|
||||
this.Controls.Add(this.label8);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label11);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.ADBcommandbox);
|
||||
this.Controls.Add(this.searchTextBox);
|
||||
this.Controls.Add(this.label9);
|
||||
|
||||
280
MainForm.cs
280
MainForm.cs
@@ -64,7 +64,6 @@ namespace AndroidSideloader
|
||||
}
|
||||
else
|
||||
{
|
||||
FlexibleMessageBox.Show("Cannot generate debug log until RSL is done syncing with the server. Once RSL has fully loaded please reset your DebugLog in Settings.");
|
||||
Properties.Settings.Default.CurrentLogPath = $"{Environment.CurrentDirectory}\\debuglog.txt";
|
||||
}
|
||||
|
||||
@@ -98,13 +97,13 @@ namespace AndroidSideloader
|
||||
|
||||
|
||||
private string oldTitle = "";
|
||||
|
||||
public static bool updatesnotified;
|
||||
|
||||
private async void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
updatesnotified = false;
|
||||
|
||||
|
||||
|
||||
|
||||
string adbFile = "C:\\RSL\\2.1.1\\adb\\adb.exe";
|
||||
string adbDir = "C:\\RSL\\2.1.1\\adb";
|
||||
string fileName = "";
|
||||
@@ -233,9 +232,18 @@ 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;
|
||||
}
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
|
||||
if (!debugMode && Properties.Settings.Default.checkForUpdates)
|
||||
{
|
||||
Updater.AppName = "AndroidSideloader";
|
||||
@@ -245,16 +253,26 @@ namespace AndroidSideloader
|
||||
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("Checking for Updates on server...");
|
||||
SideloaderRCLONE.UpdateGameNotes(currentRemote);
|
||||
listappsbtn();
|
||||
@@ -565,16 +583,18 @@ namespace AndroidSideloader
|
||||
{
|
||||
DeviceConnected = false;
|
||||
this.Text = "No Device Connected";
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("No device found. Please ensure the following: \n\n -Developer mode is enabled. \n -ADB drivers are installed. \n -ADB connection is enabled on your device (this can reset). \n -Your device is plugged in.\n\nThen press \"Retry\"", "No device found.", MessageBoxButtons.RetryCancel);
|
||||
if (dialogResult == DialogResult.Retry)
|
||||
if (!Properties.Settings.Default.nodevicemode)
|
||||
{
|
||||
devicesbutton.PerformClick();
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("No device found. Please ensure the following: \n\n -Developer mode is enabled. \n -ADB drivers are installed. \n -ADB connection is enabled on your device (this can reset). \n -Your device is plugged in.\n\nThen press \"Retry\"", "No device found.", MessageBoxButtons.RetryCancel);
|
||||
if (dialogResult == DialogResult.Retry)
|
||||
{
|
||||
devicesbutton.PerformClick();
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
@@ -738,9 +758,10 @@ namespace AndroidSideloader
|
||||
|
||||
m_combo.Invoke(() => { m_combo.MatchingMethod = StringMatchingMethod.NoWildcards; });
|
||||
}
|
||||
|
||||
public static bool isworking = false;
|
||||
private async void getApkButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
ADB.WakeDevice();
|
||||
|
||||
if (m_combo.SelectedIndex == -1)
|
||||
@@ -748,52 +769,67 @@ namespace AndroidSideloader
|
||||
notify("Please select an app first");
|
||||
return;
|
||||
}
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
string GameName = m_combo.SelectedItem.ToString();
|
||||
string packageName = Sideloader.gameNameToPackageName(GameName);
|
||||
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}"))
|
||||
if (!isworking)
|
||||
{
|
||||
isworking = true;
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
string HWID = SideloaderUtilities.UUID();
|
||||
string GameName = m_combo.SelectedItem.ToString();
|
||||
string packageName = Sideloader.gameNameToPackageName(GameName);
|
||||
string InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packageName} | grep versionCode -F\"").Output;
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingAfterFirst(InstalledVersionCode, " ");
|
||||
ulong VersionInt = UInt64.Parse(Utilities.StringUtilities.KeepOnlyNumbers(InstalledVersionCode));
|
||||
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}"))
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{packageName} v{VersionInt}.zip"))
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\{packageName} v{VersionInt}.zip");
|
||||
if (File.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{VersionInt}.zip"))
|
||||
File.Delete($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName} v{VersionInt}.zip");
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
ChangeTitle("Extracting APK....");
|
||||
|
||||
Directory.CreateDirectory($"{Properties.Settings.Default.MainDir}\\{packageName}");
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\{packageName}\\HWID.txt", HWID);
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
output = Sideloader.getApk(GameName);
|
||||
});
|
||||
t1.IsBackground = true;
|
||||
t1.Start();
|
||||
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Extracting obb if it exists....");
|
||||
Thread t2 = new Thread(() =>
|
||||
{
|
||||
output += ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packageName}\" \"{Properties.Settings.Default.MainDir}\\{packageName}\"");
|
||||
});
|
||||
t2.IsBackground = true;
|
||||
t2.Start();
|
||||
|
||||
while (t2.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
string cmd = $"7z a \"{packageName} v{VersionInt}.zip\" \"{packageName}\\*\"";
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
Thread t3 = new Thread(() =>
|
||||
{
|
||||
ADB.RunCommandToString(cmd, path);
|
||||
});
|
||||
t3.IsBackground = true;
|
||||
t3.Start();
|
||||
|
||||
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");
|
||||
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);
|
||||
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
ChangeTitle("Extracting APK....");
|
||||
|
||||
Directory.CreateDirectory($"{Properties.Settings.Default.MainDir}\\{packageName}");
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
output = Sideloader.getApk(GameName);
|
||||
});
|
||||
t1.IsBackground = true;
|
||||
t1.Start();
|
||||
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Extracting obb if it exists....");
|
||||
Thread t2 = new Thread(() =>
|
||||
{
|
||||
output += ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packageName}\" \"{Properties.Settings.Default.MainDir}\\{packageName}\"");
|
||||
});
|
||||
t2.IsBackground = true;
|
||||
t2.Start();
|
||||
|
||||
while (t2.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
string cmd = $"7z a {packageName}.zip {packageName}";
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
Thread t3 = new Thread(() =>
|
||||
{
|
||||
ADB.RunCommandToString(cmd, path);
|
||||
});
|
||||
t3.IsBackground = true;
|
||||
t3.Start();
|
||||
|
||||
while (t3.IsAlive)
|
||||
await Task.Delay(100);
|
||||
File.Move($"{Properties.Settings.Default.MainDir}\\{packageName}.zip", $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName}.zip");
|
||||
FlexibleMessageBox.Show($"The app has been zipped and placed on your desktop as\n\n{GameName}.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;
|
||||
ChangeTitle("");
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
ChangeTitle("");
|
||||
isworking = false;
|
||||
}
|
||||
else MessageBox.Show("You must wait until each app is finished extracting to start another.");
|
||||
}
|
||||
|
||||
private async void uninstallAppButton_Click(object sender, EventArgs e)
|
||||
@@ -1035,6 +1071,8 @@ namespace AndroidSideloader
|
||||
private void Form1_DragLeave(object sender, EventArgs e)
|
||||
{
|
||||
DragDropLbl.Visible = false;
|
||||
DragDropLbl.Text = "";
|
||||
ChangeTitle("");
|
||||
}
|
||||
private async void initListView()
|
||||
{
|
||||
@@ -1048,7 +1086,6 @@ namespace AndroidSideloader
|
||||
{
|
||||
gamesListView.Columns.Add(column, 150);
|
||||
}
|
||||
|
||||
List<ListViewItem> GameList = new List<ListViewItem>();
|
||||
foreach (string[] release in SideloaderRCLONE.games)
|
||||
{
|
||||
@@ -1115,9 +1152,9 @@ namespace AndroidSideloader
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!GameName.Contains("Beat Saber") && !dontget)
|
||||
if (!GameName.Contains("Beat Saber") && !dontget && !updatesnotified && SideloaderRCLONE.games.Count > 0)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"It seems you have a newer version of:\n\n{GameName}\n\nPlease consider sharing the updated files with us.\nThis is the only way to keep the apps up to date for everyone.\nWould you like to share the files with us?\n\nNOTE: Rookie will only extract the APK/OBB which contain NO personal information whatsoever.", "Share clean files?", MessageBoxButtons.YesNo);
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"It seems you have a newer version of:\n\n{GameName}\n\nAll apps on Rookie are from donors, please share the updated files with us.\nThis is the only way to keep the apps up to date for everyone.\n\nNOTE: Rookie will only extract the APK/OBB which contain NO personal information whatsoever.", "Share clean files?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
Thread t1 = new Thread(() =>
|
||||
@@ -1140,16 +1177,19 @@ namespace AndroidSideloader
|
||||
while (t2.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
string cmd = $"7z a {packagename}.zip {packagename}";
|
||||
string cmd = $"7z a \"{packagename} v{installedVersionInt}.zip\" \"{packagename}\\*\"";
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
|
||||
Thread t3 = new Thread(() =>
|
||||
{
|
||||
string HWID = SideloaderUtilities.UUID();
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\{packagename}\\HWID.txt", HWID);
|
||||
ADB.RunCommandToString(cmd, path);
|
||||
if (File.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName}.zip"))
|
||||
File.Delete($"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName}.zip");
|
||||
File.Move($"{Properties.Settings.Default.MainDir}\\{packagename}.zip", $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\\{GameName}.zip");
|
||||
FlexibleMessageBox.Show($"The app has been zipped and placed on your desktop as\n\n{GameName}.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.");
|
||||
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");
|
||||
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);
|
||||
});
|
||||
t3.IsBackground = true;
|
||||
@@ -1161,10 +1201,7 @@ namespace AndroidSideloader
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
ChangeTitle("");
|
||||
}
|
||||
else MessageBox.Show("Ok, we understand, but remember: If everyone said No then none of this would exist!\nPlease reconsider and share the files so everyone can benefit!");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -1184,6 +1221,7 @@ namespace AndroidSideloader
|
||||
gamesListView.BeginUpdate();
|
||||
gamesListView.Items.AddRange(arr);
|
||||
gamesListView.EndUpdate();
|
||||
updatesnotified = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1193,6 +1231,10 @@ namespace AndroidSideloader
|
||||
remotesList.Invoke(() => { index = remotesList.SelectedIndex; remotesList.Items.Clear(); });
|
||||
|
||||
string[] mirrors = RCLONE.runRcloneCommand("listremotes").Output.Split('\n');
|
||||
string item = "VRP-mirror07";
|
||||
string item2 = "VRP-mirror09";
|
||||
mirrors = mirrors.Where(val => val != item).ToArray();
|
||||
mirrors = mirrors.Where(val => val != item2).ToArray();
|
||||
|
||||
Logger.Log("Loaded following mirrors: ");
|
||||
int itemsCount = 0;
|
||||
@@ -1200,9 +1242,12 @@ namespace AndroidSideloader
|
||||
{
|
||||
if (mirror.Contains("mirror"))
|
||||
{
|
||||
|
||||
|
||||
Logger.Log(mirror.Remove(mirror.Length - 1));
|
||||
remotesList.Invoke(() => { remotesList.Items.Add(mirror.Remove(mirror.Length - 1).Replace("VRP-mirror", "")); });
|
||||
itemsCount++;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1535,9 +1580,9 @@ without him none of this would be possible
|
||||
if (gameDownloadOutput.Error.Length > 0)
|
||||
{
|
||||
string err = gameDownloadOutput.Error.ToLower();
|
||||
if (err.Contains("quota") && err.Contains("exceeded"))
|
||||
err += gameDownloadOutput.Output.ToLower();
|
||||
if (err.Contains("quota") && err.Contains("exceeded") || err.Contains("directory not found"))
|
||||
{
|
||||
FlexibleMessageBox.Show("The download Quota has been reached for this mirror, trying to switch mirrors...");
|
||||
quotaError = true;
|
||||
|
||||
|
||||
@@ -1587,56 +1632,40 @@ without him none of this would be possible
|
||||
await Task.Delay(100);
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (!isinstalltxt)
|
||||
{
|
||||
if (!isinstalltxt)
|
||||
if (extension == ".apk")
|
||||
{
|
||||
if (extension == ".apk")
|
||||
Thread apkThread = new Thread(() =>
|
||||
{
|
||||
Thread apkThread = new Thread(() =>
|
||||
{
|
||||
output += ADB.Sideload(file, packagename);
|
||||
});
|
||||
output += ADB.Sideload(file, packagename);
|
||||
});
|
||||
|
||||
apkThread.Start();
|
||||
while (apkThread.IsAlive)
|
||||
await Task.Delay(100);
|
||||
}
|
||||
apkThread.Start();
|
||||
while (apkThread.IsAlive)
|
||||
await Task.Delay(100);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Debug.WriteLine(wrDelimiter);
|
||||
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory + "\\" + gameName);
|
||||
|
||||
foreach (string folder in folders)
|
||||
Debug.WriteLine(wrDelimiter);
|
||||
ChangeTitle("Installing game obb " + gameName, false);
|
||||
if (Directory.Exists($"{Environment.CurrentDirectory}\\{gameName}\\{packagename}"))
|
||||
{
|
||||
Thread obbThread = new Thread(() =>
|
||||
{
|
||||
ChangeTitle("Installing game obb " + gameName, false);
|
||||
string[] obbs = Directory.GetFiles(folder);
|
||||
|
||||
foreach (string currObb in obbs)
|
||||
{
|
||||
Thread obbThread = new Thread(() =>
|
||||
{
|
||||
string obbcontainingdir = Path.GetFileName(folder);
|
||||
ChangeTitle($"Copying {obbcontainingdir} obb to device...");
|
||||
output += ADB.CopyOBB(folder);
|
||||
Program.form.ChangeTitle("");
|
||||
});
|
||||
obbThread.IsBackground = true;
|
||||
obbThread.Start();
|
||||
ChangeTitle($"Copying {packagename} obb to device...");
|
||||
|
||||
while (obbThread.IsAlive)
|
||||
await Task.Delay(100);
|
||||
}
|
||||
}
|
||||
output += ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{gameName}\\{packagename}\" \"/sdcard/Android/obb\"");
|
||||
Program.form.ChangeTitle("");
|
||||
});
|
||||
obbThread.IsBackground = true;
|
||||
obbThread.Start();
|
||||
|
||||
while (obbThread.IsAlive)
|
||||
await Task.Delay(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (Properties.Settings.Default.deleteAllAfterInstall)
|
||||
{
|
||||
ChangeTitle("Deleting game files", false);
|
||||
@@ -1845,6 +1874,12 @@ without him none of this would be possible
|
||||
label4.Visible = true;
|
||||
searchTextBox.Focus();
|
||||
}
|
||||
if (keyData == (Keys.Control | Keys.H))
|
||||
{
|
||||
string HWID = SideloaderUtilities.UUID();
|
||||
Clipboard.SetText(HWID);
|
||||
FlexibleMessageBox.Show($"Your unique HWID is:\n\n{HWID}\n\nThis has been automatically copied to your clipboard. Press CTRL+V in a message to send it.");
|
||||
}
|
||||
if (keyData == (Keys.Control | Keys.R))
|
||||
{
|
||||
ADBcommandbox.Visible = true;
|
||||
@@ -1940,14 +1975,20 @@ without him none of this would be possible
|
||||
|
||||
|
||||
if (keyData == (Keys.F12))
|
||||
{
|
||||
if (File.Exists($"{Properties.Settings.Default.CurrentCrashPath}"))
|
||||
{
|
||||
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.CurrentCrashPath}\" RSL-debuglogs:CrashLogs");
|
||||
FlexibleMessageBox.Show($"Your CrashLog has been copied to the server. Please mention your DebugLog ID ({Properties.Settings.Default.CurrentCrashName}) to the Mods (it has been automatically copied to your clipboard).");
|
||||
Clipboard.SetText(Properties.Settings.Default.CurrentCrashName);
|
||||
|
||||
}
|
||||
else
|
||||
FlexibleMessageBox.Show("No CrashLog found in Rookie directory.");
|
||||
else
|
||||
FlexibleMessageBox.Show("No CrashLog found in Rookie directory.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
|
||||
@@ -1959,7 +2000,8 @@ without him none of this would be possible
|
||||
System.Windows.Forms.KeyPressEventHandler(CheckEnter);
|
||||
if (gamesListView.Items.Count > 0)
|
||||
{
|
||||
ListViewItem foundItem = gamesListView.FindItemWithText(searchTextBox.Text, true, 0, true);
|
||||
ListViewItem foundItem = gamesListView.Items.Cast<ListViewItem>()
|
||||
.FirstOrDefault(i => i.Text.IndexOf(searchTextBox.Text, StringComparison.CurrentCultureIgnoreCase) >= 0);
|
||||
if (foundItem != null)
|
||||
{
|
||||
foundItem.Selected = true;
|
||||
@@ -2003,7 +2045,11 @@ without him none of this would be possible
|
||||
}
|
||||
if (!keyheld)
|
||||
{
|
||||
string ImagePath = $"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.jpg";
|
||||
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)
|
||||
|
||||
33
Properties/Settings.Designer.cs
generated
33
Properties/Settings.Designer.cs
generated
@@ -574,5 +574,38 @@ namespace AndroidSideloader.Properties {
|
||||
this["QblindOn"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool adbdebugwarned {
|
||||
get {
|
||||
return ((bool)(this["adbdebugwarned"]));
|
||||
}
|
||||
set {
|
||||
this["adbdebugwarned"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool nodevicemode {
|
||||
get {
|
||||
return ((bool)(this["nodevicemode"]));
|
||||
}
|
||||
set {
|
||||
this["nodevicemode"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UsingBMBF {
|
||||
get {
|
||||
return ((bool)(this["UsingBMBF"]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,5 +140,14 @@
|
||||
<Setting Name="QblindOn" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="adbdebugwarned" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="nodevicemode" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UsingBMBF" Type="System.Boolean" Scope="Application">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -90,7 +90,7 @@ namespace AndroidSideloader
|
||||
rclone.WaitForExit();
|
||||
|
||||
//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")))
|
||||
if (error.Contains("cannot fetch token") || error.Contains("authError") || (error.Contains("quota") || error.Contains("exceeded") || error.Contains("directory not found")))
|
||||
{
|
||||
string oldRemote = MainForm.currentRemote;
|
||||
try
|
||||
|
||||
62
SettingsForm.Designer.cs
generated
62
SettingsForm.Designer.cs
generated
@@ -46,6 +46,7 @@
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.CblindBox = new System.Windows.Forms.CheckBox();
|
||||
this.nodevicemodeBox = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkForUpdatesCheckBox
|
||||
@@ -55,7 +56,7 @@
|
||||
this.checkForUpdatesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
|
||||
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(142, 21);
|
||||
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(148, 22);
|
||||
this.checkForUpdatesCheckBox.TabIndex = 0;
|
||||
this.checkForUpdatesCheckBox.Text = "Check for updates";
|
||||
this.checkForUpdatesCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -70,7 +71,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, 230);
|
||||
this.applyButton.Location = new System.Drawing.Point(67, 265);
|
||||
this.applyButton.Name = "applyButton";
|
||||
this.applyButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.applyButton.TabIndex = 5;
|
||||
@@ -85,7 +86,7 @@
|
||||
this.enableMessageBoxesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(12, 39);
|
||||
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
|
||||
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(293, 21);
|
||||
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
|
||||
this.enableMessageBoxesCheckBox.TabIndex = 1;
|
||||
this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
|
||||
this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -100,7 +101,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, 230);
|
||||
this.resetSettingsButton.Location = new System.Drawing.Point(174, 265);
|
||||
this.resetSettingsButton.Name = "resetSettingsButton";
|
||||
this.resetSettingsButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.resetSettingsButton.TabIndex = 4;
|
||||
@@ -115,7 +116,7 @@
|
||||
this.deleteAfterInstallCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(12, 65);
|
||||
this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
|
||||
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(279, 21);
|
||||
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
|
||||
this.deleteAfterInstallCheckBox.TabIndex = 3;
|
||||
this.deleteAfterInstallCheckBox.Text = "Delete games after download and install";
|
||||
this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -128,7 +129,7 @@
|
||||
this.updateConfigCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.updateConfigCheckBox.Location = new System.Drawing.Point(12, 92);
|
||||
this.updateConfigCheckBox.Name = "updateConfigCheckBox";
|
||||
this.updateConfigCheckBox.Size = new System.Drawing.Size(201, 21);
|
||||
this.updateConfigCheckBox.Size = new System.Drawing.Size(208, 22);
|
||||
this.updateConfigCheckBox.TabIndex = 6;
|
||||
this.updateConfigCheckBox.Text = "Update config automatically";
|
||||
this.updateConfigCheckBox.UseVisualStyleBackColor = true;
|
||||
@@ -141,7 +142,7 @@
|
||||
this.userJsonOnGameInstall.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.userJsonOnGameInstall.Location = new System.Drawing.Point(12, 119);
|
||||
this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
|
||||
this.userJsonOnGameInstall.Size = new System.Drawing.Size(233, 21);
|
||||
this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
|
||||
this.userJsonOnGameInstall.TabIndex = 9;
|
||||
this.userJsonOnGameInstall.Text = "Push random user.json on install";
|
||||
this.userJsonOnGameInstall.UseVisualStyleBackColor = true;
|
||||
@@ -155,9 +156,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(52, 198);
|
||||
this.BandwithTextbox.Location = new System.Drawing.Point(52, 233);
|
||||
this.BandwithTextbox.Name = "BandwithTextbox";
|
||||
this.BandwithTextbox.Size = new System.Drawing.Size(177, 23);
|
||||
this.BandwithTextbox.Size = new System.Drawing.Size(177, 24);
|
||||
this.BandwithTextbox.TabIndex = 11;
|
||||
//
|
||||
// label1
|
||||
@@ -165,9 +166,9 @@
|
||||
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, 175);
|
||||
this.label1.Location = new System.Drawing.Point(40, 210);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(235, 17);
|
||||
this.label1.Size = new System.Drawing.Size(245, 18);
|
||||
this.label1.TabIndex = 12;
|
||||
this.label1.Text = "Download speed limiter, 0 to disable";
|
||||
//
|
||||
@@ -186,9 +187,9 @@
|
||||
"K",
|
||||
"M",
|
||||
"G"});
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(235, 198);
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(235, 233);
|
||||
this.BandwithComboBox.Name = "BandwithComboBox";
|
||||
this.BandwithComboBox.Size = new System.Drawing.Size(55, 24);
|
||||
this.BandwithComboBox.Size = new System.Drawing.Size(55, 26);
|
||||
this.BandwithComboBox.TabIndex = 13;
|
||||
//
|
||||
// DebugLogCopy
|
||||
@@ -200,7 +201,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, 275);
|
||||
this.DebugLogCopy.Location = new System.Drawing.Point(29, 310);
|
||||
this.DebugLogCopy.Name = "DebugLogCopy";
|
||||
this.DebugLogCopy.Size = new System.Drawing.Size(285, 31);
|
||||
this.DebugLogCopy.TabIndex = 5;
|
||||
@@ -211,7 +212,7 @@
|
||||
// crashlogID
|
||||
//
|
||||
this.crashlogID.AutoSize = true;
|
||||
this.crashlogID.Location = new System.Drawing.Point(13, 406);
|
||||
this.crashlogID.Location = new System.Drawing.Point(13, 441);
|
||||
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);
|
||||
@@ -226,7 +227,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, 310);
|
||||
this.button1.Location = new System.Drawing.Point(29, 345);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(285, 31);
|
||||
this.button1.TabIndex = 5;
|
||||
@@ -237,7 +238,7 @@
|
||||
// debuglogID
|
||||
//
|
||||
this.debuglogID.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.debuglogID.Location = new System.Drawing.Point(29, 386);
|
||||
this.debuglogID.Location = new System.Drawing.Point(29, 421);
|
||||
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);
|
||||
@@ -252,7 +253,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, 357);
|
||||
this.DebugID.Location = new System.Drawing.Point(29, 392);
|
||||
this.DebugID.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.DebugID.Name = "DebugID";
|
||||
this.DebugID.ReadOnly = true;
|
||||
@@ -265,7 +266,7 @@
|
||||
// label2
|
||||
//
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.label2.Location = new System.Drawing.Point(29, 457);
|
||||
this.label2.Location = new System.Drawing.Point(29, 492);
|
||||
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);
|
||||
@@ -282,7 +283,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, 440);
|
||||
this.textBox1.Location = new System.Drawing.Point(29, 475);
|
||||
this.textBox1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.ReadOnly = true;
|
||||
@@ -297,21 +298,34 @@
|
||||
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.Location = new System.Drawing.Point(12, 145);
|
||||
this.CblindBox.Name = "CblindBox";
|
||||
this.CblindBox.Size = new System.Drawing.Size(175, 21);
|
||||
this.CblindBox.Size = new System.Drawing.Size(182, 22);
|
||||
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);
|
||||
//
|
||||
// nodevicemodeBox
|
||||
//
|
||||
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.Name = "nodevicemodeBox";
|
||||
this.nodevicemodeBox.Size = new System.Drawing.Size(181, 22);
|
||||
this.nodevicemodeBox.TabIndex = 9;
|
||||
this.nodevicemodeBox.Text = "Enable no device mode";
|
||||
this.nodevicemodeBox.UseVisualStyleBackColor = true;
|
||||
this.nodevicemodeBox.CheckedChanged += new System.EventHandler(this.nodevicemodeBox_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, 535);
|
||||
this.ClientSize = new System.Drawing.Size(342, 569);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.DebugID);
|
||||
this.Controls.Add(this.crashlogID);
|
||||
@@ -320,6 +334,7 @@
|
||||
this.Controls.Add(this.BandwithComboBox);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.BandwithTextbox);
|
||||
this.Controls.Add(this.nodevicemodeBox);
|
||||
this.Controls.Add(this.CblindBox);
|
||||
this.Controls.Add(this.userJsonOnGameInstall);
|
||||
this.Controls.Add(this.updateConfigCheckBox);
|
||||
@@ -366,5 +381,6 @@
|
||||
public System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.CheckBox CblindBox;
|
||||
private System.Windows.Forms.CheckBox nodevicemodeBox;
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,8 @@ namespace AndroidSideloader
|
||||
deleteAfterInstallCheckBox.Checked = Properties.Settings.Default.deleteAllAfterInstall;
|
||||
updateConfigCheckBox.Checked = Properties.Settings.Default.autoUpdateConfig;
|
||||
userJsonOnGameInstall.Checked = Properties.Settings.Default.userJsonOnGameInstall;
|
||||
nodevicemodeBox.Checked = Properties.Settings.Default.nodevicemode;
|
||||
|
||||
if (Properties.Settings.Default.BandwithLimit.Length > 1)
|
||||
{
|
||||
BandwithTextbox.Text = Properties.Settings.Default.BandwithLimit.Remove(Properties.Settings.Default.BandwithLimit.Length - 1);
|
||||
@@ -208,6 +210,12 @@ namespace AndroidSideloader
|
||||
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.");
|
||||
}
|
||||
|
||||
private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.nodevicemode = nodevicemodeBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
{
|
||||
Program.form.ChangeTitle($"Running {cmd}");
|
||||
Logger.Log($"Logging command: {cmd} from file: {path}");
|
||||
output += ADB.RunCommandToString(cmd, path);
|
||||
ADB.RunCommandToString(cmd, path);
|
||||
}
|
||||
if (cmd.StartsWith("adb"))
|
||||
{
|
||||
@@ -183,9 +183,12 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
apkPath = apkPath.Remove(apkPath.Length - 1);
|
||||
apkPath = apkPath.Remove(0, 8); //remove package:
|
||||
apkPath = apkPath.Remove(apkPath.Length - 1);
|
||||
|
||||
if (File.Exists($"{Properties.Settings.Default.ADBFolder}\\base.apk"))
|
||||
File.Delete($"{Properties.Settings.Default.ADBFolder}\\base.apk");
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk"))
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk");
|
||||
output += ADB.RunAdbCommandToString("pull " + apkPath); //pull apk
|
||||
|
||||
|
||||
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}"))
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
|
||||
|
||||
@@ -229,6 +232,17 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
return gameName;
|
||||
}
|
||||
|
||||
public static string PackageNameToSimpleName(string gameName)
|
||||
{
|
||||
foreach (string[] game in SideloaderRCLONE.games)
|
||||
{
|
||||
if (gameName.Contains(game[SideloaderRCLONE.PackageNameIndex]))
|
||||
return game[SideloaderRCLONE.GameNameIndex];
|
||||
}
|
||||
return gameName;
|
||||
}
|
||||
|
||||
|
||||
//Downloads the required files
|
||||
public static void downloadFiles()
|
||||
{
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace AndroidSideloader
|
||||
{
|
||||
gameProperties.Clear();
|
||||
games.Clear();
|
||||
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/GameList.txt\"").Output;
|
||||
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/GameList.txt\"").Output;
|
||||
if (MainForm.debugMode)
|
||||
File.WriteAllText("GamesList.txt", tempGameList);
|
||||
string gamePropertiesLine = Utilities.StringUtilities.RemoveEverythingAfterFirst(tempGameList, "\n");
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
using System.IO;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Management;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
@@ -13,5 +17,47 @@ namespace AndroidSideloader
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
public static string UUID()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
|
||||
"SELECT * FROM Win32_Processor");
|
||||
|
||||
foreach (ManagementObject queryObj in searcher.Get())
|
||||
{
|
||||
sb.Append(queryObj["NumberOfCores"]);
|
||||
sb.Append(queryObj["ProcessorId"]);
|
||||
sb.Append(queryObj["Name"]);
|
||||
sb.Append(queryObj["SocketDesignation"]);
|
||||
}
|
||||
|
||||
searcher = new ManagementObjectSearcher("root\\CIMV2",
|
||||
"SELECT * FROM Win32_BIOS");
|
||||
|
||||
foreach (ManagementObject queryObj in searcher.Get())
|
||||
{
|
||||
sb.Append(queryObj["Manufacturer"]);
|
||||
sb.Append(queryObj["Name"]);
|
||||
sb.Append(queryObj["Version"]);
|
||||
|
||||
}
|
||||
|
||||
searcher = new ManagementObjectSearcher("root\\CIMV2",
|
||||
"SELECT * FROM Win32_BaseBoard");
|
||||
|
||||
foreach (ManagementObject queryObj in searcher.Get())
|
||||
{
|
||||
sb.Append(queryObj["Product"]);
|
||||
}
|
||||
|
||||
var bytes = Encoding.ASCII.GetBytes(sb.ToString());
|
||||
SHA256Managed sha = new SHA256Managed();
|
||||
|
||||
byte[] hash = sha.ComputeHash(bytes);
|
||||
|
||||
return BitConverter.ToString(hash).Replace("-", "");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AndroidSideloader
|
||||
private static string RawGitHubUrl;
|
||||
private static string GitHubUrl;
|
||||
|
||||
static readonly public string LocalVersion = "2.5";
|
||||
static readonly public string LocalVersion = "2.6";
|
||||
public static string currentVersion = string.Empty;
|
||||
public static string changelog = string.Empty;
|
||||
|
||||
|
||||
138
changelog.txt
138
changelog.txt
@@ -1,6 +1,91 @@
|
||||
-----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
|
||||
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
|
||||
|
||||
@@ -36,55 +121,4 @@ x08jfbpAsJHU3Wm8bruk+nkB+65J5kqsLkJk2n4yrkW3QtIo9xul/z9vgZKo75S6
|
||||
LkPCpNo2w5gtx7+8Jv65Z/BlueUVmVWUHhQ2gHRkXenkg3McEZpqwKInqQSZkHpZ
|
||||
USckVtW+iteVVR0yf+hFPRGp+Shz6/GIn9YnwVQCT2DK+ih9zD4=
|
||||
=0bPq
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.4.8
|
||||
|
||||
= Fixed wake on wifi prompt after enabling Wireless ADB.
|
||||
= Gave user an option to back out of automatic wireless
|
||||
ADB connection restore after device is rebooted or has
|
||||
gone idle.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD+JLIACgkQx/Rql1Vo
|
||||
czcd7Q//TbRjq1ePpP3PFUm+IDFt4HRnwFOyuS8/LVOh1FPUc66vXEh/BtzK5xgN
|
||||
ZPe4QRojSnZPzizkqzMnsXxhiFlwu+3Y3uA+S5JmdisfE0A0DaU9JBNv0IPCsQBG
|
||||
A3azgQrN/8waq+R1A/uK9mvcO1033cTV8SkTRIWqBSjcOBT+hdvL4UngAPgrYUvp
|
||||
GqYMx4/qNq8SyoYkY3VCN4LtX3iswPQkHxjwT1LB08gltMP7Hoxpaz5B1QJiC0gZ
|
||||
NRAWEOMSuhdZC1X87lo08hPMwUJrt12PDzHrrDjOz8eUSUtEqjqKHY0HTpyJ5wvK
|
||||
i5t0hvVC6bwXIRKeI7I8RESqGYoQYAoQDOHWMZ2fgclYOwjevMaE/1qbBpOmwBgz
|
||||
3g2UM7OH5DU2b+4Er+lrHEZSplVdC9fjifGEUjm8sD2Q+sW8PaJV0wtAMYy9mIzd
|
||||
pTrQE7rYGYllPJ8XAhzzLtGYXCwlrBeMdYhGjxmVet4+dtMEXAksemIq24PNxp2M
|
||||
1FEcM3+jLpi0GJ+PBF9qSR70ZrKwmQcgu2miVVxoYrRA5WADp3fI5VxbdAqxwOgl
|
||||
3SrI4htTvu2mBQ5x6wiWVXsWbEsDvCnx2+46FWVutdEc0QKGsmcm2znb6VjBc+Ho
|
||||
w3osj+rHbWYArCWjEYdezsP1aPRAs3Uly5tJrg4Q0wd9lxJHiaU=
|
||||
=ljkJ
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
|
||||
RSL 2.4.7
|
||||
|
||||
+ Added battery percentage to stats on bottom left.
|
||||
= Fixed using ENTER key to install option.
|
||||
= Fixed using Enter to install from Quick Search.
|
||||
= Fixed install feed message when using Enter to Install.
|
||||
= All important message boxes will remain on top
|
||||
until user selects an option..
|
||||
= Settings form and Quest Options form will remain on top
|
||||
until closed.
|
||||
= Fixed changelog formatting so updater box isn't so wide.
|
||||
|
||||
HFP
|
||||
|
||||
-----END PGP SIGNATURE-----
|
||||
Reference in New Issue
Block a user