Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5c66b50b9 | ||
|
|
ebfe5ace65 | ||
|
|
c242dc6f6d | ||
|
|
bcfcc43956 | ||
|
|
ab6507965b | ||
|
|
78b816c5e6 | ||
|
|
ec32535419 | ||
|
|
c607d1a2fd | ||
|
|
81c1e61d8b | ||
|
|
1dc0e38865 | ||
|
|
19dcacfbbe | ||
|
|
10d8498f1b | ||
|
|
d3620bf033 | ||
|
|
467041825c | ||
|
|
fa380c75f7 |
49
ADB.cs
49
ADB.cs
@@ -385,39 +385,34 @@ namespace AndroidSideloader
|
||||
if (dialogResult2 == DialogResult.Yes)
|
||||
ADB.WakeDevice();
|
||||
}
|
||||
if (out2.Contains($"INSTALL_FAILED_UPDATE_INCOMPATIBLE") || out2.Contains("INSTALL_FAILED_VERSION_DOWNGRADE") || out2.Contains("signatures do not match") || out2.Contains("failed to install"))
|
||||
if (out2.Contains($"signatures do not match previously") || 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;
|
||||
|
||||
|
||||
FlexibleMessageBox.Show($"In place upgrade for {packagename} failed. We will need to upgrade by uninstalling, and keeping savedata isn't guaranteed. Continue?", "UPGRADE FAILED!", MessageBoxButtons.OKCancel);
|
||||
|
||||
string date_str = DateTime.Today.ToString("yyyy.MM.dd");
|
||||
string CurrBackups = Path.Combine(BackupFolder, date_str);
|
||||
|
||||
|
||||
FlexibleMessageBox.Show($"Searching for save files...", "Searching!", MessageBoxButtons.OK);
|
||||
if (Directory.Exists($"/sdcard/Android/data/{packagename}"))
|
||||
{
|
||||
FlexibleMessageBox.Show($"Trying to backup save to Documents\\Rookie Backups\\{date_str}(YYYY.MM.DD)\\{packagename}", "Save files found", MessageBoxButtons.OK);
|
||||
Directory.CreateDirectory(CurrBackups);
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{packagename}\" \"{CurrBackups}\"");
|
||||
}
|
||||
else
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"No savedata found! Continue with the uninstall!", "None Found", MessageBoxButtons.OK);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
ADB.WakeDevice();
|
||||
ret += ADB.RunAdbCommandToString("shell pm uninstall " + package);
|
||||
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
if (!Properties.Settings.Default.AutoReinstall)
|
||||
{
|
||||
DialogResult dialogResult1 = FlexibleMessageBox.Show("In place upgrade has failed. Rookie can attempt to backup your save data and\nreinstall the game automatically, however " +
|
||||
"some games do not store their saves\nin an accessible location(less than 5%). Continue with reinstall?", "In place upgrade failed.", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult1 == DialogResult.Cancel)
|
||||
return ret;
|
||||
}
|
||||
|
||||
Program.form.ChangeTitle("Performing reinstall, please wait...");
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
ADB.RunAdbCommandToString("devices");
|
||||
ADB.RunAdbCommandToString($"pull /sdcard/Android/data/{MainForm.CurrPCKG} \"{Environment.CurrentDirectory}\"");
|
||||
Program.form.ChangeTitle("Uinstalling game...");
|
||||
Sideloader.UninstallGame(MainForm.CurrPCKG);
|
||||
Program.form.ChangeTitle("Reinstalling Game");
|
||||
ret += ADB.RunAdbCommandToString($"install -g \"{path}\"");
|
||||
ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}\" /sdcard/Android/data/");
|
||||
if (Directory.Exists($"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}"))
|
||||
Directory.Delete($"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}", true);
|
||||
|
||||
Program.form.ChangeTitle(" \n\n");
|
||||
return ret;
|
||||
}
|
||||
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
|
||||
}
|
||||
string gamenameforQU = Sideloader.PackageNametoGameName(packagename);
|
||||
if (Properties.Settings.Default.QUturnedon)
|
||||
|
||||
@@ -269,6 +269,7 @@
|
||||
<None Include="Resources\battery1.png" />
|
||||
<None Include="Resources\ajax-loader.gif" />
|
||||
<Content Include="Resources\bluekey.png" />
|
||||
<None Include="Resources\gametoupload.png" />
|
||||
<Content Include="Resources\redkey.png" />
|
||||
<None Include="Resources\greenkey.png" />
|
||||
<None Include="Resources\orangekey.png" />
|
||||
|
||||
@@ -167,6 +167,12 @@
|
||||
<setting name="GlobalUsername" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="lastTimeShared" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="AutoReinstall" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</AndroidSideloader.Properties.Settings>
|
||||
<AndroidADB.Sideloader.Properties.Settings>
|
||||
<setting name="checkForUpdates" serializeAs="String">
|
||||
|
||||
@@ -1,6 +1,143 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.9.3
|
||||
|
||||
+ Added new background color for apps that are a newer
|
||||
version than the version on the list. If you see this
|
||||
darker background please agree to share when prompted
|
||||
upon program launch or alternatively select the game
|
||||
from top drop-down installed apps list and click Share
|
||||
Selected App to help the community!
|
||||
|
||||
+ Added logic for file size column, clicking the column
|
||||
header will now properly sort from biggest to smallest
|
||||
or vice versa.
|
||||
|
||||
= Fixed issue where Rookie would ask for every single
|
||||
app installed on user's device. It should now only ask
|
||||
for apps not on Rookie and not on the Blacklist as
|
||||
intended.
|
||||
|
||||
= Changed zip file naming for new game uploads to use
|
||||
Release Name instead of package name.
|
||||
|
||||
HFP
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEpvs8ACgkQx/Rql1Vo
|
||||
czc4kg//fgCG0ChVfIVl48I2dww4ZJmRI+sQm/S4Ry38M4NzM+SdKOQVnDFgZ68p
|
||||
e/z2VqECc4wPlhqrxh+xHoMzlkfrz8LdpsU3cch6jo9uERpaWMj2X1E5jKFRc7iS
|
||||
4/v6XvSBnp/ZSak3f7DUubNnsCcq6vDH4w1ugzv71AyW9STG7oUXQb+kNQNsQ1RO
|
||||
WNJjO87RAlHivUuff7wRLlhVKLo21DvZ+MJRmMRzXH5tMxnEGxWeTOkAoWvsDjMa
|
||||
1L6rmugC9K7X3Qqi09f1ZyUQG6F++fpoDf8u5QB96DegV+IZGjOsBcvL7wE9fdox
|
||||
RxhFxZMsnQtO4kuo3c/iFg7ohxP+pQ5ayk0IzDRwdjfIYX+w+20LdkGpxsThxHvp
|
||||
fWZBUCW0nwBFxBjxItXq8dIn7KHsDc3AkNcI2Ox+4eIUoKwuqzr0wCjPaB4dLLLZ
|
||||
Ofa1tt25ugl7rSTI4doKEH1YmTlzdOuuSKaA2vIMH6L54gpy+h2DkdAQkSEl0PRJ
|
||||
fApOwvUJqnat/Pipg2PTaJSiZd/lLoImWXdhOdlT2XA/9olD0oLGW/DmK+jjH2GK
|
||||
Sxd+sLDHUDyujH263yemu1No7+3Zf+iyE+8LTikYj0mVG3SX8tfG/5cOXbQAp2pv
|
||||
h9CmnbkKBVy8+RXMHKW8MJhsqCS2/wDIJSGYbxwAge3vSe70UWA=
|
||||
=d6JO
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.9.2
|
||||
|
||||
+ Added option in settings menu
|
||||
to automatically reinstall apps
|
||||
when installs fail due to previous
|
||||
version clashing with update.
|
||||
|
||||
NOTE: If your USB or wireless ADB
|
||||
connection is extremely slow this
|
||||
setting can cause larger APK installs
|
||||
to fail in rare cases.
|
||||
|
||||
= Fixed auto reinstall for signature
|
||||
mismatch when if ADB reports error
|
||||
properly (thanks to ADB update),
|
||||
this will lead to faster reinstalls
|
||||
in general when there are issues.
|
||||
|
||||
= Fixed crash that would occur when
|
||||
closing Rookie.
|
||||
|
||||
= Added check to see if AAPT was
|
||||
sucessful in retrieving mew game
|
||||
name from APK, if not RSL will just
|
||||
call the name by its package name
|
||||
instead.
|
||||
|
||||
HFP
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEotsUACgkQx/Rql1Vo
|
||||
czc2/w/8DkMuVYLb31J0WyqeIdo/12t+TO0oIbmTvGl8Oi1LttnfH1a+PUBYYXFF
|
||||
VTEcBoEgGde/Jk7+AblKhzce+uQIzwzU9KC7HL+Ab/1AAj3tdczx2vE4uKTPfMUe
|
||||
k8XuZz0Qe37IOVUgnHugQCac8jjaDCFXzwoIwADnBg7mW/4Ha+LqxJr/+dsMUnz/
|
||||
WsenolRWWKyhTj3RHIulZu82yEV9Gw+KfIUpO/XJR71xNdCq1IyrAfBRT8KqgI3F
|
||||
2IuX/pIqMSMvG1N62rWUzxD67BM5NbpjxiDZKg3LmBo39avqowSGclT7gOP+eiGY
|
||||
eSvvl+zoI08ofL+8Vonhu/mwnQNUcGFQqqpwAvDIcgE/zVDM9uTVAOTRkrjW0ge2
|
||||
xEUhpdKZVJ/UzbwnUEyR7zeAkt+sVkEbAD9My7NdQ58eD52F20+yYTAWC6CU8dB4
|
||||
8QJbJBEzd0Pm23H7iY5F5/7UnPy+rxzfyezrJCKV5u+D65Fn4n13VY33CDxBJW4y
|
||||
kmcpWwal81mbGgwhWpxK6+xy1V2oWL9PLN9YIkfv+n5/KlqJjUfj3wqah+aUG5qI
|
||||
X/5mqLAWnsQcM/F0bZXzt3dVszInPHH7jjSjoyKOKQwfVxYrh6uuonVhG7NfHfij
|
||||
LGs8d6O8osorkiB+2Aiziw8A+9o8fWLmfjeDhFcGc5YTb3eMxz0=
|
||||
=XRAG
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.9.1
|
||||
|
||||
+ Added blacklist implementation to request games
|
||||
found on User's device that are not currently on
|
||||
Rookie.
|
||||
|
||||
+ Added CTRL + L shortcut to copy list of game names
|
||||
separated by new lines to clipboard.
|
||||
|
||||
+ Added ALT + L shortcut to copy list of game names to
|
||||
a paragraph separated by commas to clipboard.
|
||||
|
||||
+ Rookie will now maintain games list position when it
|
||||
is refreshed. (e.g.: After finishing install queue,
|
||||
when pressing refresh all/updates list buttons)
|
||||
|
||||
= Fixed issue where Rookie won't load game list properly
|
||||
after updating, users won't notice the issue fixed until
|
||||
the next update after this update.
|
||||
|
||||
HFP
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEndGsACgkQx/Rql1Vo
|
||||
czfQVQ//VjiJDJuId85cbm1gb5Rsek5aqbNv12kWUTULBy7cGgu43KeitnyaoryA
|
||||
jXTe6wMVi4FXkcv71HzIf/ABfmInlBW045ZmWlujKXYt5g6zrN2GCYYM2+fnO91z
|
||||
Umpqzz3xm+oF/U77704NuT4eqMFq/kBQ0QDGeJ34bxB22kQR1zw1Q3fFKZe+mmg4
|
||||
h54op3835sJAdKH1bFsN7zvL+RpxahWwo+etJ5oNIUx+W/xHSi7G9maKPvTH/bmQ
|
||||
5Fo1xGtad61BDVCIjJOfAafdlXUm4osmXcQcCZPyc6A+zx7/MMEHp4iCeIUUG08k
|
||||
2Ekodjd01nxZCaPZJKQS6H9BedDNlDwFNSUBa6K/A1+g0KneIHXnZfpQf4q8TrY3
|
||||
wkFyLOOJhDzFHdWDO4FuKz97eC9r9Y8iWRYHpzh8q/3A2bmeLx9+3d1FDns/fBhK
|
||||
Au5PwmZYhwAGp3eXfL8YiYwqssJ0dy23b6O9Vvgloz/aY0adJYCXaKugFdV/oVHx
|
||||
9s5W5LNI+AgkGOGdjZqtiFWO6ZeVfF4QqnFhx24G1qTk7euaIRzPPncMx0kn4KBl
|
||||
E+UAj3uhmJccMQSFyBwGKCsEpWqiFkUzVcSCt0HlEmNfRTNg+eQbuzvKJCs1CyDN
|
||||
Pty7ySgNk5/IKzTC18a0TSOS/IP2+8/Jhbpbmb8jd23UTSK33rI=
|
||||
=8iDP
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
RSL 2.9.0
|
||||
|
||||
= Hotfix to remove errant entry from GamesList
|
||||
that would crash the program.
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
|
||||
RSL 2.9
|
||||
|
||||
|
||||
@@ -50,6 +50,25 @@ public class ListViewColumnSorter : IComparer
|
||||
// Cast the objects to be compared to ListViewItem objects
|
||||
listviewX = (ListViewItem)x;
|
||||
listviewY = (ListViewItem)y;
|
||||
if (ColumnToSort == 5 ) {
|
||||
try
|
||||
{
|
||||
int yNum = int.Parse(cleanNumber(listviewY.SubItems[ColumnToSort].Text));
|
||||
int xNum = int.Parse(cleanNumber(listviewX.SubItems[ColumnToSort].Text));
|
||||
if (xNum == yNum )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if(xNum > yNum && OrderOfSort == SortOrder.Ascending)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
} catch { }
|
||||
}
|
||||
|
||||
// Compare the two items
|
||||
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
|
||||
@@ -102,4 +121,9 @@ public class ListViewColumnSorter : IComparer
|
||||
}
|
||||
}
|
||||
|
||||
private string cleanNumber(string number)
|
||||
{
|
||||
return number.Substring(0, number.LastIndexOf('.'));
|
||||
}
|
||||
|
||||
}
|
||||
124
MainForm.Designer.cs
generated
124
MainForm.Designer.cs
generated
@@ -42,9 +42,7 @@
|
||||
this.downloadInstallGameButton = new System.Windows.Forms.Button();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.ULLabel = new System.Windows.Forms.Label();
|
||||
this.ULGif = new System.Windows.Forms.PictureBox();
|
||||
this.BatteryLbl = new System.Windows.Forms.Label();
|
||||
this.pictureBox5 = new System.Windows.Forms.PictureBox();
|
||||
this.downloadingLabel = new System.Windows.Forms.Label();
|
||||
this.aboutBtn = new System.Windows.Forms.Button();
|
||||
this.settingsButton = new System.Windows.Forms.Button();
|
||||
@@ -89,21 +87,28 @@
|
||||
this.ADBcommandbox = new System.Windows.Forms.TextBox();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.pictureBox7 = new System.Windows.Forms.PictureBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.pictureBox6 = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox4 = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox3 = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
||||
this.gamesPictureBox = new System.Windows.Forms.PictureBox();
|
||||
this.ULGif = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox5 = new System.Windows.Forms.PictureBox();
|
||||
this.panel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ULGif)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit();
|
||||
this.otherContainer.SuspendLayout();
|
||||
this.backupContainer.SuspendLayout();
|
||||
this.sideloadContainer.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gamesPictureBox)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ULGif)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// m_combo
|
||||
@@ -119,7 +124,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 or extract...";
|
||||
this.m_combo.Text = "Select an Installed App to Uninstall or Share...";
|
||||
//
|
||||
// startsideloadbutton
|
||||
//
|
||||
@@ -383,17 +388,6 @@
|
||||
this.ULLabel.Text = "Uploading";
|
||||
this.ULLabel.Visible = false;
|
||||
//
|
||||
// ULGif
|
||||
//
|
||||
this.ULGif.Enabled = false;
|
||||
this.ULGif.Image = global::AndroidSideloader.Properties.Resources.ajax_loader;
|
||||
this.ULGif.Location = new System.Drawing.Point(178, 699);
|
||||
this.ULGif.Name = "ULGif";
|
||||
this.ULGif.Size = new System.Drawing.Size(34, 17);
|
||||
this.ULGif.TabIndex = 86;
|
||||
this.ULGif.TabStop = false;
|
||||
this.ULGif.Visible = false;
|
||||
//
|
||||
// BatteryLbl
|
||||
//
|
||||
this.BatteryLbl.AutoSize = true;
|
||||
@@ -407,17 +401,6 @@
|
||||
this.BatteryLbl.TabIndex = 84;
|
||||
this.BatteryLbl.Text = "N/A%";
|
||||
//
|
||||
// pictureBox5
|
||||
//
|
||||
this.pictureBox5.BackColor = System.Drawing.Color.Transparent;
|
||||
this.pictureBox5.Image = global::AndroidSideloader.Properties.Resources.battery11;
|
||||
this.pictureBox5.Location = new System.Drawing.Point(155, 576);
|
||||
this.pictureBox5.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.pictureBox5.Name = "pictureBox5";
|
||||
this.pictureBox5.Size = new System.Drawing.Size(55, 29);
|
||||
this.pictureBox5.TabIndex = 85;
|
||||
this.pictureBox5.TabStop = false;
|
||||
//
|
||||
// downloadingLabel
|
||||
//
|
||||
this.downloadingLabel.AutoSize = true;
|
||||
@@ -1089,7 +1072,7 @@
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.label6.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.label6.Location = new System.Drawing.Point(828, 12);
|
||||
this.label6.Location = new System.Drawing.Point(828, 9);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(145, 17);
|
||||
this.label6.TabIndex = 90;
|
||||
@@ -1102,7 +1085,7 @@
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.label7.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.label7.Location = new System.Drawing.Point(828, 41);
|
||||
this.label7.Location = new System.Drawing.Point(828, 29);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(98, 17);
|
||||
this.label7.TabIndex = 90;
|
||||
@@ -1193,13 +1176,54 @@
|
||||
this.label9.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
this.label9.Visible = false;
|
||||
//
|
||||
// pictureBox7
|
||||
//
|
||||
this.pictureBox7.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pictureBox7.BackColor = System.Drawing.Color.Transparent;
|
||||
this.pictureBox7.DataBindings.Add(new System.Windows.Forms.Binding("ImageLocation", global::AndroidSideloader.Properties.Settings.Default, "BackPicturePath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.pictureBox7.ErrorImage = null;
|
||||
this.pictureBox7.ImageLocation = global::AndroidSideloader.Properties.Settings.Default.BackPicturePath;
|
||||
this.pictureBox7.InitialImage = null;
|
||||
this.pictureBox7.Location = new System.Drawing.Point(217, 18);
|
||||
this.pictureBox7.Name = "pictureBox7";
|
||||
this.pictureBox7.Size = new System.Drawing.Size(764, 718);
|
||||
this.pictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox7.TabIndex = 74;
|
||||
this.pictureBox7.TabStop = false;
|
||||
this.pictureBox7.Click += new System.EventHandler(this.pictureBox1_Click);
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
|
||||
this.label10.ForeColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.label10.Location = new System.Drawing.Point(828, 49);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(135, 17);
|
||||
this.label10.TabIndex = 90;
|
||||
this.label10.Text = "= Newer than List";
|
||||
this.label10.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// pictureBox6
|
||||
//
|
||||
this.pictureBox6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pictureBox6.Image = global::AndroidSideloader.Properties.Resources.gametoupload;
|
||||
this.pictureBox6.Location = new System.Drawing.Point(803, 49);
|
||||
this.pictureBox6.Name = "pictureBox6";
|
||||
this.pictureBox6.Size = new System.Drawing.Size(19, 17);
|
||||
this.pictureBox6.TabIndex = 92;
|
||||
this.pictureBox6.TabStop = false;
|
||||
//
|
||||
// pictureBox4
|
||||
//
|
||||
this.pictureBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pictureBox4.Image = global::AndroidSideloader.Properties.Resources.greenkey;
|
||||
this.pictureBox4.Location = new System.Drawing.Point(803, 39);
|
||||
this.pictureBox4.Location = new System.Drawing.Point(803, 29);
|
||||
this.pictureBox4.Name = "pictureBox4";
|
||||
this.pictureBox4.Size = new System.Drawing.Size(21, 20);
|
||||
this.pictureBox4.Size = new System.Drawing.Size(19, 17);
|
||||
this.pictureBox4.TabIndex = 92;
|
||||
this.pictureBox4.TabStop = false;
|
||||
//
|
||||
@@ -1207,9 +1231,9 @@
|
||||
//
|
||||
this.pictureBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pictureBox3.Image = global::AndroidSideloader.Properties.Resources.orangekey;
|
||||
this.pictureBox3.Location = new System.Drawing.Point(803, 10);
|
||||
this.pictureBox3.Location = new System.Drawing.Point(803, 9);
|
||||
this.pictureBox3.Name = "pictureBox3";
|
||||
this.pictureBox3.Size = new System.Drawing.Size(21, 20);
|
||||
this.pictureBox3.Size = new System.Drawing.Size(19, 17);
|
||||
this.pictureBox3.TabIndex = 92;
|
||||
this.pictureBox3.TabStop = false;
|
||||
//
|
||||
@@ -1235,6 +1259,28 @@
|
||||
this.gamesPictureBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
|
||||
this.gamesPictureBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
|
||||
//
|
||||
// ULGif
|
||||
//
|
||||
this.ULGif.Enabled = false;
|
||||
this.ULGif.Image = global::AndroidSideloader.Properties.Resources.ajax_loader;
|
||||
this.ULGif.Location = new System.Drawing.Point(178, 699);
|
||||
this.ULGif.Name = "ULGif";
|
||||
this.ULGif.Size = new System.Drawing.Size(34, 17);
|
||||
this.ULGif.TabIndex = 86;
|
||||
this.ULGif.TabStop = false;
|
||||
this.ULGif.Visible = false;
|
||||
//
|
||||
// pictureBox5
|
||||
//
|
||||
this.pictureBox5.BackColor = System.Drawing.Color.Transparent;
|
||||
this.pictureBox5.Image = global::AndroidSideloader.Properties.Resources.battery11;
|
||||
this.pictureBox5.Location = new System.Drawing.Point(155, 576);
|
||||
this.pictureBox5.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.pictureBox5.Name = "pictureBox5";
|
||||
this.pictureBox5.Size = new System.Drawing.Size(55, 29);
|
||||
this.pictureBox5.TabIndex = 85;
|
||||
this.pictureBox5.TabStop = false;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AllowDrop = true;
|
||||
@@ -1245,9 +1291,11 @@
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.EnterInstallBox);
|
||||
this.Controls.Add(this.ProgressText);
|
||||
this.Controls.Add(this.pictureBox6);
|
||||
this.Controls.Add(this.pictureBox4);
|
||||
this.Controls.Add(this.pictureBox3);
|
||||
this.Controls.Add(this.pictureBox2);
|
||||
this.Controls.Add(this.label10);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.label8);
|
||||
@@ -1274,6 +1322,7 @@
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.gamesListView);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.pictureBox7);
|
||||
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "MainForm";
|
||||
@@ -1288,16 +1337,18 @@
|
||||
this.DragLeave += new System.EventHandler(this.Form1_DragLeave);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ULGif)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
|
||||
this.otherContainer.ResumeLayout(false);
|
||||
this.backupContainer.ResumeLayout(false);
|
||||
this.sideloadContainer.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.gamesPictureBox)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ULGif)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -1369,6 +1420,9 @@
|
||||
public System.Windows.Forms.ComboBox remotesList;
|
||||
private System.Windows.Forms.PictureBox ULGif;
|
||||
private System.Windows.Forms.Label ULLabel;
|
||||
private System.Windows.Forms.PictureBox pictureBox6;
|
||||
private System.Windows.Forms.PictureBox pictureBox7;
|
||||
private System.Windows.Forms.Label label10;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
524
MainForm.cs
524
MainForm.cs
@@ -36,7 +36,6 @@ namespace AndroidSideloader
|
||||
public static string currremotesimple = "";
|
||||
#else
|
||||
public bool keyheld;
|
||||
public bool keyheld2;
|
||||
public static string CurrAPK;
|
||||
public static string CurrPCKG;
|
||||
public static bool debugMode = false;
|
||||
@@ -87,7 +86,7 @@ namespace AndroidSideloader
|
||||
t.Tick += new EventHandler(timer_Tick);
|
||||
t.Start();
|
||||
System.Windows.Forms.Timer t2 = new System.Windows.Forms.Timer();
|
||||
t2.Interval = 30; // 30ms
|
||||
t2.Interval = 300; // 30ms
|
||||
t2.Tick += new EventHandler(timer_Tick2);
|
||||
t2.Start();
|
||||
|
||||
@@ -228,6 +227,8 @@ namespace AndroidSideloader
|
||||
|
||||
ChangeTitle("Initializing Mirrors");
|
||||
initMirrors(true);
|
||||
ChangeTitle("Checking if config is updated and updating config");
|
||||
SideloaderRCLONE.updateConfig(currentRemote);
|
||||
ChangeTitle("Initializing Games");
|
||||
SideloaderRCLONE.initGames(currentRemote);
|
||||
//ChangeTitle("Syncing Game Photos");
|
||||
@@ -237,6 +238,10 @@ namespace AndroidSideloader
|
||||
});
|
||||
t1.SetApartmentState(ApartmentState.STA);
|
||||
t1.IsBackground = true;
|
||||
if (HasInternet)
|
||||
t1.Start();
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
Thread t2 = new Thread(() =>
|
||||
{
|
||||
SideloaderRCLONE.UpdateGameNotes(currentRemote);
|
||||
@@ -260,37 +265,29 @@ namespace AndroidSideloader
|
||||
t4.IsBackground = true;
|
||||
if (HasInternet)
|
||||
{
|
||||
t1.Start();
|
||||
t2.Start();
|
||||
t3.Start();
|
||||
t4.Start();
|
||||
}
|
||||
while (t1.IsAlive || t2.IsAlive || t3.IsAlive || t4.IsAlive)
|
||||
await Task.Delay(100);
|
||||
|
||||
while (t2.IsAlive)
|
||||
await Task.Delay(100);
|
||||
while (t3.IsAlive)
|
||||
await Task.Delay(100);
|
||||
while (t4.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Loaded");
|
||||
|
||||
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 (configThread.IsAlive)
|
||||
await Task.Delay(100);
|
||||
ChangeTitle("Populating update list, please wait...");
|
||||
ChangeTitle("Populating update list, please wait...\n\n");
|
||||
listappsbtn();
|
||||
initListView();
|
||||
showAvailableSpace();
|
||||
intToolTips();
|
||||
ChangeTitle("");
|
||||
ChangeTitle(" \n\n");
|
||||
downloadInstallGameButton.Enabled = true;
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
isLoading = false;
|
||||
initListView();
|
||||
}
|
||||
|
||||
|
||||
@@ -779,7 +776,7 @@ namespace AndroidSideloader
|
||||
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);
|
||||
@@ -799,6 +796,9 @@ namespace AndroidSideloader
|
||||
|
||||
while (t2.IsAlive)
|
||||
await Task.Delay(100);
|
||||
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\{packageName}\\HWID.txt", HWID);
|
||||
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\{packageName}\\uploadMethod.txt", "manual");
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
string cmd = $"7z a \"{GameName} v{VersionInt}.zip\" .\\{packageName}\\*";
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
@@ -821,21 +821,21 @@ namespace AndroidSideloader
|
||||
{
|
||||
string currentlyuploading = GameName;
|
||||
ChangeTitle("Uploading to shared drive, you can continue to use Rookie while it uploads in the background.");
|
||||
string Uploadoutput = RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt}.zip\" RSL-debuglogs:CleanGames").Output;
|
||||
string Uploadoutput = RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt}.zip\" RSL-gameuploads:").Output;
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\{GameName} v{VersionInt}.zip");
|
||||
FlexibleMessageBox.Show($"Upload of {currentlyuploading} is complete! Thank you for your contribution!");
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
|
||||
});
|
||||
t3.IsBackground = true;
|
||||
t3.Start();
|
||||
isuploading = true;
|
||||
|
||||
while (t3.IsAlive)
|
||||
{
|
||||
isuploading = true;
|
||||
await Task.Delay(100);
|
||||
}
|
||||
|
||||
ChangeTitle("");
|
||||
ChangeTitle(" \n\n");
|
||||
isuploading = false;
|
||||
ULGif.Visible = false;
|
||||
ULLabel.Visible = false;
|
||||
@@ -846,32 +846,28 @@ namespace AndroidSideloader
|
||||
|
||||
private async void uninstallAppButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
string packagename;
|
||||
ADB.WakeDevice();
|
||||
if (m_combo.SelectedIndex == -1)
|
||||
{
|
||||
FlexibleMessageBox.Show("Please select an app first");
|
||||
return;
|
||||
}
|
||||
string date_str = DateTime.Today.ToString("yyyy.MM.dd");
|
||||
string CurrBackups = Path.Combine(BackupFolder, date_str);
|
||||
|
||||
|
||||
string GameName = m_combo.SelectedItem.ToString();
|
||||
string packagename = Sideloader.gameNameToPackageName(GameName);
|
||||
FlexibleMessageBox.Show($"If savedata is found it will be saved to Documents\\Rookie Backups\\{date_str}(YYYY.MM.DD)\\{packagename}", "Attempting Backup...", MessageBoxButtons.OK);
|
||||
|
||||
Directory.CreateDirectory(CurrBackups);
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{packagename}\" \"{CurrBackups}\"");
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"Please check to see if we automatically found savedata in Documents\\Rookie Backups.\nIf there are no new files there is recommended that you do a full backup via Backup Gamedata before continuing.\nNOTE: Some games do not allow backup of savedata.\nContinue with the uninstall?", "Continue with Uninstall?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.No)
|
||||
DialogResult dialogresult = FlexibleMessageBox.Show($"Are you sure you want to unintsall {GameName}? Rookie will attempt to automatically backup any saves to Documents\\Rookie Backups\\(TodaysDate)", "Proceed with uninstall?", MessageBoxButtons.YesNo);
|
||||
if (dialogresult == DialogResult.No)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!GameName.Contains("."))
|
||||
packagename = Sideloader.gameNameToPackageName(GameName);
|
||||
else
|
||||
packagename = GameName;
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
output += Sideloader.UninstallGame(GameName);
|
||||
output += Sideloader.UninstallGame(packagename);
|
||||
});
|
||||
t1.Start();
|
||||
t1.IsBackground = true;
|
||||
@@ -998,7 +994,8 @@ namespace AndroidSideloader
|
||||
output.Error = "";
|
||||
if (output.Error.Contains("reserved"))
|
||||
output.Output = "";
|
||||
ChangeTitle("");
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
}
|
||||
string[] files = Directory.GetFiles(data);
|
||||
@@ -1011,7 +1008,7 @@ namespace AndroidSideloader
|
||||
string pathname = Path.GetDirectoryName(data);
|
||||
string filename = file2.Replace($"{pathname}\\", "");
|
||||
|
||||
string cmd = $"\"{Properties.Settings.Default.MainDir}\\adb\\aapt.exe\" dump badging \"{data}\" | findstr -i \"package: name\"";
|
||||
string cmd = $"\"{Properties.Settings.Default.MainDir}\\adb\\aapt.exe\" dump badging \"{file2}\" | findstr -i \"package: name\"";
|
||||
string cmdout = ADB.RunCommandToString(cmd, file2).Output;
|
||||
cmdout = Utilities.StringUtilities.RemoveEverythingBeforeFirst(cmdout, "=");
|
||||
cmdout = Utilities.StringUtilities.RemoveEverythingAfterFirst(cmdout, " ");
|
||||
@@ -1026,7 +1023,6 @@ namespace AndroidSideloader
|
||||
Program.form.ChangeTitle($"Sideloading apk...");
|
||||
|
||||
Thread t2 = new Thread(() =>
|
||||
|
||||
{
|
||||
output += ADB.Sideload(file2);
|
||||
});
|
||||
@@ -1110,8 +1106,7 @@ namespace AndroidSideloader
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
|
||||
|
||||
ChangeTitle("");
|
||||
ChangeTitle(" \n\n");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1147,8 +1142,7 @@ namespace AndroidSideloader
|
||||
|
||||
timer.Stop();
|
||||
|
||||
|
||||
ChangeTitle("");
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
}
|
||||
//If obb is dragged and dropped alone onto Rookie, Rookie will recreate its obb folder automatically with this code.
|
||||
@@ -1175,7 +1169,7 @@ namespace AndroidSideloader
|
||||
await Task.Delay(100);
|
||||
|
||||
Directory.Delete(foldername, true);
|
||||
ChangeTitle("");
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
// BMBF Zip extraction then push to BMBF song folder on Quest.
|
||||
else if (extension == ".zip" && Properties.Settings.Default.BMBFchecked)
|
||||
@@ -1217,7 +1211,8 @@ namespace AndroidSideloader
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
|
||||
ChangeTitle("");
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1245,15 +1240,21 @@ namespace AndroidSideloader
|
||||
{
|
||||
DragDropLbl.Visible = false;
|
||||
DragDropLbl.Text = "";
|
||||
ChangeTitle("");
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
List<String> newGamesList = new List<string>();
|
||||
List<String> newGamesToUploadList = new List<string>();
|
||||
private List<UploadGame> gamesToUpload = new List<UploadGame>();
|
||||
private List<UpdateGameData> gamesToAskForUpdate = new List<UpdateGameData>();
|
||||
public static bool loaded = false;
|
||||
public static string rookienamelist;
|
||||
public static string rookienamelist2;
|
||||
private bool errorOnList;
|
||||
private async void initListView()
|
||||
{
|
||||
gamesListView.Items.Clear();
|
||||
gamesListView.Columns.Clear();
|
||||
rookienamelist = "";
|
||||
loaded = false;
|
||||
foreach (string column in SideloaderRCLONE.gameProperties)
|
||||
{
|
||||
gamesListView.Columns.Add(column, 150);
|
||||
@@ -1267,37 +1268,47 @@ namespace AndroidSideloader
|
||||
char[] delims = new[] { '\r', '\n' };
|
||||
string[] packageList = result.Split(delims, StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] blacklist = new string[] { };
|
||||
string[] whitelist = new string[] { };
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\nouns\\blacklist.txt"))
|
||||
{
|
||||
blacklist = File.ReadAllLines($"{Properties.Settings.Default.MainDir}\\nouns\\blacklist.txt");
|
||||
}
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\nouns\\whitelist.txt"))
|
||||
{
|
||||
whitelist = File.ReadAllLines($"{Properties.Settings.Default.MainDir}\\nouns\\whitelist.txt");
|
||||
}
|
||||
List<ListViewItem> GameList = new List<ListViewItem>();
|
||||
List<String> rookieList = new List<String>();
|
||||
foreach (string[] game in SideloaderRCLONE.games)
|
||||
{
|
||||
rookieList.Add(game[SideloaderRCLONE.PackageNameIndex]);
|
||||
|
||||
}
|
||||
List<String> installGames = packageList.ToList();
|
||||
List<String> blacklistItems = blacklist.ToList();
|
||||
|
||||
newGamesList = installGames.Except(rookieList).Except(blacklistItems).ToList();
|
||||
List<String> installedGames = packageList.ToList();
|
||||
List<String> blacklistItems = blacklist.ToList();
|
||||
List<String> whitelistItems = whitelist.ToList();
|
||||
errorOnList = false;
|
||||
|
||||
//This is for black list, but temporarly will be whitelist
|
||||
//this list has games that we are actually going to upload
|
||||
newGamesToUploadList = whitelistItems.Intersect(installedGames).ToList();
|
||||
|
||||
foreach (string[] release in SideloaderRCLONE.games)
|
||||
{
|
||||
ListViewItem Game = new ListViewItem(release);
|
||||
if (gamesListView.Columns.Count > 0)
|
||||
if (!rookienamelist.Contains(release[SideloaderRCLONE.GameNameIndex].ToString()))
|
||||
{
|
||||
gamesListView.Columns[1].Width = 265;
|
||||
gamesListView.Columns[5].Width = 59;
|
||||
gamesListView.Columns[2].Width = 100;
|
||||
gamesListView.Columns[3].Width = 50;
|
||||
gamesListView.Columns[4].Width = 100;
|
||||
gamesListView.Columns[5].Text = "Size (MB)";
|
||||
rookienamelist += release[SideloaderRCLONE.GameNameIndex].ToString() + "\n";
|
||||
rookienamelist2 += release[SideloaderRCLONE.GameNameIndex].ToString() + ", ";
|
||||
}
|
||||
|
||||
ListViewItem Game = new ListViewItem(release);
|
||||
|
||||
foreach (string packagename in packageList)
|
||||
{
|
||||
rookieList.Add(release[SideloaderRCLONE.PackageNameIndex].ToString());
|
||||
if (string.Equals(release[SideloaderRCLONE.PackageNameIndex], packagename))
|
||||
{
|
||||
|
||||
if (Properties.Settings.Default.QblindOn)
|
||||
{
|
||||
Game.BackColor = Color.FromArgb(0, 112, 138);
|
||||
@@ -1329,6 +1340,8 @@ namespace AndroidSideloader
|
||||
bool dontget = false;
|
||||
if (blacklist.Contains(packagename))
|
||||
dontget = true;
|
||||
if (!dontget)
|
||||
Game.BackColor = Color.FromArgb(20, 20, 20);
|
||||
string RlsName = Sideloader.PackageNametoGameName(packagename);
|
||||
string GameName = Sideloader.gameNameToSimpleName(RlsName);
|
||||
|
||||
@@ -1350,88 +1363,188 @@ namespace AndroidSideloader
|
||||
}
|
||||
GameList.Add(Game);
|
||||
}
|
||||
updatesnotified = true;
|
||||
newGamesList = installedGames.Except(rookieList).Except(blacklistItems).ToList();
|
||||
if (blacklistItems.Count == 0 || rookieList.Count == 0)
|
||||
{
|
||||
//This means either the user does not have headset connected or the blacklist
|
||||
//did not load, so we are just going to skip everything
|
||||
errorOnList = true;
|
||||
FlexibleMessageBox.Show($"Rookie seems to have failed to load all resources. Please try restarting Rookie a few times.\nIf error still persists please disable any VPN or firewalls (rookie uses direct download so a VPN is not needed)\nIf this error still persists try a system reboot, reinstalling the program, and lastly posting the problem on telegram.", "Error loading blacklist or game list!");
|
||||
}
|
||||
|
||||
int topItemIndex = 0;
|
||||
try
|
||||
{
|
||||
if (gamesListView.Items.Count > 1)
|
||||
topItemIndex = gamesListView.TopItem.Index;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
|
||||
if (gamesListView.Columns.Count > 0)
|
||||
{
|
||||
gamesListView.Columns[1].Width = 265;
|
||||
gamesListView.Columns[5].Width = 59;
|
||||
gamesListView.Columns[2].Width = 100;
|
||||
gamesListView.Columns[3].Width = 45;
|
||||
gamesListView.Columns[4].Width = 105;
|
||||
gamesListView.Columns[5].Text = "Size (MB)";
|
||||
}
|
||||
|
||||
ListViewItem[] arr = GameList.ToArray();
|
||||
gamesListView.BeginUpdate();
|
||||
gamesListView.Items.Clear();
|
||||
gamesListView.Items.AddRange(arr);
|
||||
gamesListView.EndUpdate();
|
||||
|
||||
//This is for games that we already have on rookie and user has an update
|
||||
foreach (UpdateGameData gameData in gamesToAskForUpdate)
|
||||
try
|
||||
{
|
||||
if (!updatesnotified)
|
||||
if (topItemIndex != 0)
|
||||
gamesListView.TopItem = gamesListView.Items[topItemIndex];
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
if (!errorOnList)
|
||||
{
|
||||
|
||||
|
||||
//This is for games that we already have on rookie and user has an update
|
||||
foreach (UpdateGameData gameData in gamesToAskForUpdate)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"You have a newer version of:\n\n{gameData.GameName}\n\nRSL can AUTOMATICALLY UPLOAD the clean files to a shared drive in the background,\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.", "CONTRIBUTE CLEAN FILES?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
if (!updatesnotified)
|
||||
{
|
||||
await extractAndPrepareGameToUploadAsync(gameData.GameName, gameData.Packagename, gameData.InstalledVersionInt);
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"You have a newer version of:\n\n{gameData.GameName}\n\nRSL can AUTOMATICALLY UPLOAD the clean files to a shared drive in the background,\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.", "CONTRIBUTE CLEAN FILES?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
await extractAndPrepareGameToUploadAsync(gameData.GameName, gameData.Packagename, gameData.InstalledVersionInt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//This is for games that are not blacklisted and we dont have on rookie
|
||||
/*foreach (string newGamesToUpload in newGamesList)
|
||||
{
|
||||
string RlsName = Sideloader.PackageNametoGameName(newGamesToUpload);
|
||||
string GameName = Sideloader.gameNameToSimpleName(RlsName);
|
||||
Logger.Log(newGamesToUpload);
|
||||
if (!updatesnotified)
|
||||
//This is for WhiteListed Games, they will be asked for first, if we don't get many bogus prompts we can remove this entire duplicate section.
|
||||
foreach (string newGamesToUpload in newGamesToUploadList)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"You have a new game:\n\n{GameName}\n\nRSL can AUTOMATICALLY UPLOAD the clean files to a shared drive in the background,\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.", "CONTRIBUTE CLEAN FILES?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
string RlsName = Sideloader.PackageNametoGameName(newGamesToUpload);
|
||||
|
||||
//start of code to get official Release Name from APK by first extracting APK then running AAPT on it.
|
||||
string apppath = ADB.RunAdbCommandToString($"shell pm path {newGamesToUpload}").Output;
|
||||
apppath = Utilities.StringUtilities.RemoveEverythingBeforeFirst(apppath, "/");
|
||||
apppath = Utilities.StringUtilities.RemoveEverythingAfterFirst(apppath, "\r\n");
|
||||
if (File.Exists($"C:\\RSL\\2.8.2\\ADB\\base.apk"))
|
||||
File.Delete($"C:\\RSL\\2.8.2\\ADB\\base.apk");
|
||||
ADB.RunAdbCommandToString($"pull \"{apppath}\"");
|
||||
string cmd = $"\"{Properties.Settings.Default.MainDir}\\adb\\aapt.exe\" dump badging \"C:\\RSL\\2.8.2\\ADB\\base.apk\" | findstr -i \"application-label\"";
|
||||
string workingpath = $"{Properties.Settings.Default.MainDir}\\adb\\aapt.exe";
|
||||
string ReleaseName = ADB.RunCommandToString(cmd, workingpath).Output;
|
||||
ReleaseName = Utilities.StringUtilities.RemoveEverythingBeforeFirst(ReleaseName, "'");
|
||||
ReleaseName = Utilities.StringUtilities.RemoveEverythingAfterFirst(ReleaseName, "\r\n");
|
||||
ReleaseName = ReleaseName.Replace("'", "");
|
||||
File.Delete($"C:\\RSL\\2.8.2\\ADB\\base.apk");
|
||||
//end
|
||||
|
||||
string GameName = Sideloader.gameNameToSimpleName(RlsName);
|
||||
Logger.Log(newGamesToUpload);
|
||||
if (!updatesnotified)
|
||||
{
|
||||
string InstalledVersionCode;
|
||||
InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {newGamesToUpload} | grep versionCode -F\"").Output;
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingAfterFirst(InstalledVersionCode, " ");
|
||||
ulong installedVersionInt = UInt64.Parse(Utilities.StringUtilities.KeepOnlyNumbers(InstalledVersionCode));
|
||||
await uploadGameAsync(GameName, newGamesToUpload, installedVersionInt);
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"You have an in demand game:\n\n{ReleaseName}\n\nRSL can AUTOMATICALLY UPLOAD the clean files to a shared drive in the background,\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.", "CONTRIBUTE CLEAN FILES?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
string InstalledVersionCode;
|
||||
InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {newGamesToUpload} | grep versionCode -F\"").Output;
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingAfterFirst(InstalledVersionCode, " ");
|
||||
ulong installedVersionInt = UInt64.Parse(Utilities.StringUtilities.KeepOnlyNumbers(InstalledVersionCode));
|
||||
await extractAndPrepareGameToUploadAsync(GameName, newGamesToUpload, installedVersionInt);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
newGamesList.Clear();*/
|
||||
if (!isworking && gamesToUpload.Count > 0)
|
||||
{
|
||||
ChangeTitle("Uploading to shared drive, you can continue to use Rookie while it uploads in the background.");
|
||||
ULGif.Visible = true;
|
||||
ULLabel.Visible = true;
|
||||
ULGif.Enabled = true;
|
||||
isworking = true;
|
||||
|
||||
foreach (UploadGame game in gamesToUpload)
|
||||
//This is for games that are not blacklisted and we dont have on rookie
|
||||
foreach (string newGamesToUpload in newGamesList)
|
||||
{
|
||||
Thread t3 = new Thread(() =>
|
||||
string RlsName = Sideloader.PackageNametoGameName(newGamesToUpload);
|
||||
|
||||
//start of code to get official Release Name from APK by first extracting APK then running AAPT on it.
|
||||
string apppath = ADB.RunAdbCommandToString($"shell pm path {newGamesToUpload}").Output;
|
||||
apppath = Utilities.StringUtilities.RemoveEverythingBeforeFirst(apppath, "/");
|
||||
apppath = Utilities.StringUtilities.RemoveEverythingAfterFirst(apppath, "\r\n");
|
||||
if (File.Exists($"C:\\RSL\\2.8.2\\ADB\\base.apk"))
|
||||
File.Delete($"C:\\RSL\\2.8.2\\ADB\\base.apk");
|
||||
ADB.RunAdbCommandToString($"pull \"{apppath}\"");
|
||||
string cmd = $"\"{Properties.Settings.Default.MainDir}\\adb\\aapt.exe\" dump badging \"C:\\RSL\\2.8.2\\ADB\\base.apk\" | findstr -i \"application-label\"";
|
||||
string workingpath = $"{Properties.Settings.Default.MainDir}\\adb\\aapt.exe";
|
||||
string ReleaseName = ADB.RunCommandToString(cmd, workingpath).Output;
|
||||
ReleaseName = Utilities.StringUtilities.RemoveEverythingBeforeFirst(ReleaseName, "'");
|
||||
ReleaseName = Utilities.StringUtilities.RemoveEverythingAfterFirst(ReleaseName, "\r\n");
|
||||
ReleaseName = ReleaseName.Replace("'", "");
|
||||
File.Delete($"C:\\RSL\\2.8.2\\ADB\\base.apk");
|
||||
if (ReleaseName.Contains("Microsoft Windows"))
|
||||
ReleaseName = RlsName;
|
||||
//end
|
||||
|
||||
string GameName = Sideloader.gameNameToSimpleName(RlsName);
|
||||
Logger.Log(newGamesToUpload);
|
||||
if (!updatesnotified)
|
||||
{
|
||||
string packagename = Sideloader.gameNameToPackageName(game.Uploadgamename);
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip"))
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show($"You have a new game:\n\n{ReleaseName}\n\nRSL can AUTOMATICALLY UPLOAD the clean files to a shared drive in the background,\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.", "CONTRIBUTE CLEAN FILES?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
string InstalledVersionCode;
|
||||
InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {newGamesToUpload} | grep versionCode -F\"").Output;
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
|
||||
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingAfterFirst(InstalledVersionCode, " ");
|
||||
ulong installedVersionInt = UInt64.Parse(Utilities.StringUtilities.KeepOnlyNumbers(InstalledVersionCode));
|
||||
await extractAndPrepareGameToUploadAsync(ReleaseName, newGamesToUpload, installedVersionInt);
|
||||
}
|
||||
}
|
||||
}
|
||||
updatesnotified = true;
|
||||
|
||||
|
||||
if (!isworking && gamesToUpload.Count > 0)
|
||||
{
|
||||
ChangeTitle("Uploading to shared drive, you can continue to use Rookie while it uploads in the background.");
|
||||
ULGif.Visible = true;
|
||||
ULLabel.Visible = true;
|
||||
ULGif.Enabled = true;
|
||||
isworking = true;
|
||||
|
||||
foreach (UploadGame game in gamesToUpload)
|
||||
{
|
||||
Thread t3 = new Thread(() =>
|
||||
{
|
||||
string packagename = Sideloader.gameNameToPackageName(game.Uploadgamename);
|
||||
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip"))
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip");
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
string cmd = $"7z a \"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip\" .\\{game.Pckgcommand}\\*";
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
ADB.RunCommandToString(cmd, path);
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{game.Pckgcommand}", true);
|
||||
ChangeTitle("Uploading to drive, you may continue to use Rookie while it uploads.");
|
||||
RCLONE.runRcloneCommand(game.Uploadcommand);
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip");
|
||||
string path = $"{Properties.Settings.Default.MainDir}\\7z.exe";
|
||||
string cmd = $"7z a \"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip\" .\\{game.Pckgcommand}\\*";
|
||||
ChangeTitle("Zipping extracted application...");
|
||||
ADB.RunCommandToString(cmd, path);
|
||||
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{game.Pckgcommand}", true);
|
||||
ChangeTitle("Uploading to drive, you may continue to use Rookie while it uploads.");
|
||||
RCLONE.runRcloneCommand(game.Uploadcommand);
|
||||
File.Delete($"{Properties.Settings.Default.MainDir}\\{game.Uploadgamename} v{game.Uploadversion}.zip");
|
||||
|
||||
});
|
||||
t3.IsBackground = true;
|
||||
t3.Start();
|
||||
while (t3.IsAlive)
|
||||
{
|
||||
isuploading = true;
|
||||
await Task.Delay(100);
|
||||
});
|
||||
t3.IsBackground = true;
|
||||
t3.Start();
|
||||
while (t3.IsAlive)
|
||||
{
|
||||
isuploading = true;
|
||||
await Task.Delay(100);
|
||||
}
|
||||
}
|
||||
gamesToUpload.Clear();
|
||||
isworking = false;
|
||||
isuploading = false;
|
||||
ULGif.Visible = false;
|
||||
ULLabel.Visible = false;
|
||||
ULGif.Enabled = false;
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
gamesToUpload.Clear();
|
||||
isworking = false;
|
||||
isuploading = false;
|
||||
ULGif.Visible = false;
|
||||
ULLabel.Visible = false;
|
||||
ULGif.Enabled = false;
|
||||
ChangeTitle("");
|
||||
}
|
||||
loaded = true;
|
||||
}
|
||||
|
||||
private async Task extractAndPrepareGameToUploadAsync(string GameName, string packagename, ulong installedVersionInt)
|
||||
@@ -1439,7 +1552,7 @@ namespace AndroidSideloader
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
Thread t1 = new Thread(() =>
|
||||
{
|
||||
Sideloader.getApk(GameName);
|
||||
Sideloader.getApk(packagename);
|
||||
});
|
||||
t1.IsBackground = true;
|
||||
t1.Start();
|
||||
@@ -1461,11 +1574,12 @@ namespace AndroidSideloader
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
UploadGame game = new UploadGame();
|
||||
game.Pckgcommand = packagename;
|
||||
game.Uploadcommand = $"copy \"{Properties.Settings.Default.MainDir}\\{GameName} v{installedVersionInt}.zip\" RSL-debuglogs:CleanGames";
|
||||
game.Uploadcommand = $"copy \"{Properties.Settings.Default.MainDir}\\{GameName} v{installedVersionInt}.zip\" RSL-gameuploads:";
|
||||
game.Uploadversion = installedVersionInt;
|
||||
game.Uploadgamename = GameName;
|
||||
gamesToUpload.Add(game);
|
||||
ChangeTitle("");
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
private void initMirrors(bool random)
|
||||
{
|
||||
@@ -1609,14 +1723,15 @@ without him none of this would be possible
|
||||
SideloaderRCLONE.initGames(currentRemote);
|
||||
listappsbtn();
|
||||
});
|
||||
t1.IsBackground = true;
|
||||
t1.IsBackground = false;
|
||||
t1.Start();
|
||||
while (t1.IsAlive)
|
||||
await Task.Delay(100);
|
||||
initListView();
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
isLoading = false;
|
||||
ChangeTitle("");
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
|
||||
private static readonly HttpClient client = new HttpClient();
|
||||
@@ -1866,7 +1981,8 @@ without him none of this would be possible
|
||||
Thread installtxtThread = new Thread(() =>
|
||||
{
|
||||
output += Sideloader.RunADBCommandsFromFile(file);
|
||||
ChangeTitle("");
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
});
|
||||
|
||||
installtxtThread.Start();
|
||||
@@ -1926,22 +2042,21 @@ without him none of this would be possible
|
||||
gamesQueueList.RemoveAt(0);
|
||||
gamesQueListBox.DataSource = null;
|
||||
gamesQueListBox.DataSource = gamesQueueList;
|
||||
showAvailableSpace();
|
||||
|
||||
ChangeTitle("");
|
||||
}
|
||||
}
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
etaLabel.Text = "ETA: Finished Queue";
|
||||
speedLabel.Text = "DLS: Finished Queue";
|
||||
ProgressText.Text = "";
|
||||
await CheckForDevice();
|
||||
ChangeTitlebarToDevice();
|
||||
gamesAreDownloading = false;
|
||||
ShowPrcOutput(output);
|
||||
isinstalling = false;
|
||||
ChangeTitle("Refreshing games list, please wait... \n");
|
||||
showAvailableSpace();
|
||||
listappsbtn();
|
||||
initListView();
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1958,44 +2073,50 @@ without him none of this would be possible
|
||||
}
|
||||
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)
|
||||
if (!Properties.Settings.Default.AutoReinstall)
|
||||
{
|
||||
ChangeTitle("Performing 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.RunAdbCommandToString($"install -g \"{CurrAPK}\"");
|
||||
ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{CurrPCKG}\" /sdcard/Android/data/");
|
||||
|
||||
timerticked = false;
|
||||
if (Directory.Exists($"{Environment.CurrentDirectory}\\{CurrPCKG}"))
|
||||
Directory.Delete($"{Environment.CurrentDirectory}\\{CurrPCKG}", true);
|
||||
ChangeTitle("");
|
||||
return;
|
||||
}
|
||||
|
||||
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)
|
||||
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.Cancel)
|
||||
{
|
||||
ChangeTitle("Stopping Install...");
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
ADB.RunAdbCommandToString("devices");
|
||||
}
|
||||
else
|
||||
{
|
||||
timerticked = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
ChangeTitle("Performing reinstall, please wait...");
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
ADB.RunAdbCommandToString("devices");
|
||||
ADB.RunAdbCommandToString($"pull /sdcard/Android/data/{CurrPCKG} \"{Environment.CurrentDirectory}\"");
|
||||
Sideloader.UninstallGame(CurrPCKG);
|
||||
ChangeTitle("Reinstalling Game");
|
||||
output += ADB.RunAdbCommandToString($"install -g \"{CurrAPK}\"");
|
||||
ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{CurrPCKG}\" /sdcard/Android/data/");
|
||||
|
||||
timerticked = false;
|
||||
if (Directory.Exists($"{Environment.CurrentDirectory}\\{CurrPCKG}"))
|
||||
Directory.Delete($"{Environment.CurrentDirectory}\\{CurrPCKG}", true);
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DialogResult dialogResult2 = FlexibleMessageBox.Show("This install is taking an usual amount of time, you can keep waiting or cancel the install.\n" +
|
||||
"Would you like to cancel the installation?", "Cancel install?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult2 == DialogResult.Yes)
|
||||
{
|
||||
ChangeTitle("Stopping Install...");
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
ADB.RunAdbCommandToString("devices");
|
||||
}
|
||||
else
|
||||
{
|
||||
timerticked = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (isinstalling)
|
||||
@@ -2023,36 +2144,13 @@ without him none of this would be possible
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
}
|
||||
}
|
||||
else if (newGamesList.Count > 0 && !Properties.Settings.Default.UploadedGameList)
|
||||
{
|
||||
var res = FlexibleMessageBox.Show(this, "For August 2021, we'd like to grab a list of the apps installed to make updates work better.\nDo that now?", "Upload game list?",
|
||||
MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
|
||||
if (res == DialogResult.Yes)
|
||||
{
|
||||
string fileName = "gamesList" + DateTime.Now.ToFileTime() + ".txt";
|
||||
System.IO.File.WriteAllLines(fileName, newGamesList);
|
||||
RCLONE.runRcloneCommand($"copy " + Environment.CurrentDirectory + "\\" + fileName + " RSL-debuglogs:InstalledGamesList");
|
||||
FlexibleMessageBox.Show("Upload done! Thank for your colaboration!");
|
||||
File.Delete(fileName);
|
||||
Properties.Settings.Default.UploadedGameList = true;
|
||||
Properties.Settings.Default.Save();
|
||||
RCLONE.killRclone();
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
RCLONE.killRclone();
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RCLONE.killRclone();
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
private void ADBWirelessDisable_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Are you sure you want to delete your saved Quest IP address/command?", "Remove saved IP address?", MessageBoxButtons.YesNo);
|
||||
@@ -2080,9 +2178,7 @@ without him none of this would be possible
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
FlexibleMessageBox.Show("Relaunch Rookie to complete the process and switch back to USB adb.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void EnablePassthroughAPI_Click(object sender, EventArgs e)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
@@ -2106,7 +2202,6 @@ without him none of this would be possible
|
||||
{
|
||||
ShowSubMenu(otherContainer);
|
||||
}
|
||||
|
||||
private void gamesQueListBox_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (gamesQueListBox.SelectedIndex != -1 && gamesQueListBox.SelectedIndex != 0)
|
||||
@@ -2116,18 +2211,15 @@ without him none of this would be possible
|
||||
gamesQueListBox.DataSource = gamesQueueList;
|
||||
}
|
||||
}
|
||||
|
||||
private void devicesComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
showAvailableSpace();
|
||||
}
|
||||
|
||||
private void remotesList_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
remotesList.Invoke(() => { currentRemote = "VRP-mirror" + remotesList.SelectedItem.ToString(); });
|
||||
}
|
||||
|
||||
private void QuestOptionsButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
QuestForm Form = new QuestForm();
|
||||
@@ -2169,7 +2261,6 @@ without him none of this would be possible
|
||||
lvwColumnSorter.Order = SortOrder.Ascending;
|
||||
}
|
||||
}
|
||||
|
||||
// Perform the sort with these new sort options.
|
||||
this.gamesListView.Sort();
|
||||
}
|
||||
@@ -2178,7 +2269,6 @@ without him none of this would be possible
|
||||
{
|
||||
if (e.KeyChar == (char)Keys.Enter)
|
||||
{
|
||||
|
||||
if (searchTextBox.Visible)
|
||||
{
|
||||
if (Properties.Settings.Default.EnterKeyInstall)
|
||||
@@ -2187,7 +2277,6 @@ without him none of this would be possible
|
||||
downloadInstallGameButton_Click(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
searchTextBox.Visible = false;
|
||||
label2.Visible = false;
|
||||
label3.Visible = false;
|
||||
@@ -2195,11 +2284,9 @@ without him none of this would be possible
|
||||
|
||||
if (ADBcommandbox.Visible)
|
||||
{
|
||||
|
||||
ChangeTitle($"Entered command: ADB {ADBcommandbox.Text}");
|
||||
ADB.RunAdbCommandToString(ADBcommandbox.Text);
|
||||
ChangeTitle("");
|
||||
|
||||
ChangeTitle(" \n\n");
|
||||
}
|
||||
ADBcommandbox.Visible = false;
|
||||
label9.Visible = false;
|
||||
@@ -2217,14 +2304,12 @@ without him none of this would be possible
|
||||
label9.Visible = false;
|
||||
label11.Visible = false;
|
||||
label2.Visible = false;
|
||||
|
||||
}
|
||||
}
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
if (keyData == (Keys.Control | Keys.F))
|
||||
{
|
||||
|
||||
//show search
|
||||
searchTextBox.Clear();
|
||||
searchTextBox.Visible = true;
|
||||
@@ -2233,6 +2318,24 @@ without him none of this would be possible
|
||||
label4.Visible = true;
|
||||
searchTextBox.Focus();
|
||||
}
|
||||
if (keyData == (Keys.Control | Keys.L))
|
||||
{
|
||||
if (loaded)
|
||||
{
|
||||
Clipboard.SetText(rookienamelist);
|
||||
MessageBox.Show("Entire game list copied as a line by line list to clipboard!\nPress CTRL+V to paste it anywhere!");
|
||||
}
|
||||
|
||||
}
|
||||
if (keyData == (Keys.Alt | Keys.L))
|
||||
{
|
||||
if (loaded)
|
||||
{
|
||||
Clipboard.SetText(rookienamelist2);
|
||||
MessageBox.Show("Entire game list copied as a paragraph to clipboard!\nPress CTRL+V to paste it anywhere!");
|
||||
}
|
||||
|
||||
}
|
||||
if (keyData == (Keys.Control | Keys.H))
|
||||
{
|
||||
string HWID = SideloaderUtilities.UUID();
|
||||
@@ -2247,7 +2350,6 @@ without him none of this would be possible
|
||||
label11.Visible = true;
|
||||
label2.Visible = true;
|
||||
ADBcommandbox.Focus();
|
||||
|
||||
}
|
||||
if (keyData == (Keys.F2))
|
||||
{
|
||||
@@ -2258,8 +2360,6 @@ without him none of this would be possible
|
||||
label4.Visible = true;
|
||||
searchTextBox.Focus();
|
||||
}
|
||||
|
||||
|
||||
if (keyData == (Keys.Control | Keys.F4))
|
||||
try
|
||||
{
|
||||
@@ -2297,17 +2397,13 @@ without him none of this would be possible
|
||||
listappsbtn();
|
||||
initListView();
|
||||
}
|
||||
|
||||
bool dialogisup = false;
|
||||
if (keyData == (Keys.F1) && !dialogisup)
|
||||
{
|
||||
dialogisup = true;
|
||||
FlexibleMessageBox.Show("Shortcuts:\nF1 -------- Shortcuts List\nF2 --OR-- CTRL+F: QuickSearch\nF3 -------- Quest Options\nF4 -------- Rookie Settings\nF5 -------- Refresh Gameslist\nF11 ------ Copy CrashLog to Desktop\nF12 ------ Copy Debuglog to Desktop\n\nCTRL+R - Run custom ADB command.\nCTRL+P - Copy packagename to clipboard on game select.\nCTRL + F4 - Instantly relaunch Rookie's Sideloader.");
|
||||
FlexibleMessageBox.Show("Shortcuts:\nF1 -------- Shortcuts List\nF2 --OR-- CTRL+F: QuickSearch\nF3 -------- Quest Options\nF4 -------- Rookie Settings\nF5 -------- Refresh Gameslist\n\nCTRL+R - Run custom ADB command.\nCTRL+L - Copy entire list of Game Names to clipboard seperated by new lines.\nALT+L - Copy entire list of Game Names to clipboard seperated by commas(in a paragraph).CTRL+P - Copy packagename to clipboard on game select.\nCTRL + F4 - Instantly relaunch Rookie's Sideloader.");
|
||||
dialogisup = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (keyData == (Keys.Control | Keys.P))
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Do you wish to copy Package Name of games selected from list to clipboard?", "Copy package to clipboard?", MessageBoxButtons.YesNo);
|
||||
@@ -2321,13 +2417,7 @@ without him none of this would be possible
|
||||
Properties.Settings.Default.PackageNameToCB = false;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
|
||||
}
|
||||
@@ -2375,11 +2465,11 @@ without him none of this would be possible
|
||||
return;
|
||||
string CurrentPackageName = gamesListView.SelectedItems[gamesListView.SelectedItems.Count - 1].SubItems[SideloaderRCLONE.PackageNameIndex].Text;
|
||||
string CurrentReleaseName = gamesListView.SelectedItems[gamesListView.SelectedItems.Count - 1].SubItems[SideloaderRCLONE.ReleaseNameIndex].Text;
|
||||
if (!keyheld2)
|
||||
if (!keyheld)
|
||||
{
|
||||
if (Properties.Settings.Default.PackageNameToCB)
|
||||
Clipboard.SetText(CurrentPackageName);
|
||||
keyheld2 = true;
|
||||
keyheld = true;
|
||||
}
|
||||
|
||||
string ImagePath = "";
|
||||
@@ -2389,16 +2479,12 @@ without him none of this would be possible
|
||||
ImagePath = $"{SideloaderRCLONE.ThumbnailsFolder}\\{CurrentPackageName}.png";
|
||||
if (gamesPictureBox.BackgroundImage != null)
|
||||
gamesPictureBox.BackgroundImage.Dispose();
|
||||
if (File.Exists(ImagePath) && !keyheld)
|
||||
if (File.Exists(ImagePath))
|
||||
{
|
||||
gamesPictureBox.BackgroundImage = Image.FromFile(ImagePath);
|
||||
|
||||
}
|
||||
else
|
||||
gamesPictureBox.BackgroundImage = new Bitmap(367, 214);
|
||||
keyheld = true;
|
||||
|
||||
|
||||
|
||||
string NotePath = $"{SideloaderRCLONE.NotesFolder}\\{CurrentReleaseName}.txt";
|
||||
if (File.Exists(NotePath))
|
||||
|
||||
10
Properties/Resources.Designer.cs
generated
10
Properties/Resources.Designer.cs
generated
@@ -110,6 +110,16 @@ namespace AndroidSideloader.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap gametoupload {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("gametoupload", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -118,23 +118,26 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="SearchGlass" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SearchGlass.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="orangekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\orangekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="greenkey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\greenkey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="battery1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\battery11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="battery" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\battery.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="battery11" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\battery1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="SearchGlass" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SearchGlass.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="ajax-loader" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ajax-loader.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="battery1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\battery11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="bluekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\bluekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@@ -142,7 +145,7 @@
|
||||
<data name="redkey" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\redkey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ajax-loader" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ajax-loader.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="gametoupload" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\gametoupload.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
23
Properties/Settings.Designer.cs
generated
23
Properties/Settings.Designer.cs
generated
@@ -646,5 +646,28 @@ namespace AndroidSideloader.Properties {
|
||||
this["GlobalUsername"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public global::System.DateTime lastTimeShared {
|
||||
get {
|
||||
return ((global::System.DateTime)(this["lastTimeShared"]));
|
||||
}
|
||||
set {
|
||||
this["lastTimeShared"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool AutoReinstall {
|
||||
get {
|
||||
return ((bool)(this["AutoReinstall"]));
|
||||
}
|
||||
set {
|
||||
this["AutoReinstall"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,5 +158,11 @@
|
||||
<Setting Name="GlobalUsername" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="lastTimeShared" Type="System.DateTime" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="AutoReinstall" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
BIN
Resources/gametoupload.png
Normal file
BIN
Resources/gametoupload.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 827 B |
43
SettingsForm.Designer.cs
generated
43
SettingsForm.Designer.cs
generated
@@ -48,6 +48,7 @@
|
||||
this.CblindBox = new System.Windows.Forms.CheckBox();
|
||||
this.nodevicemodeBox = new System.Windows.Forms.CheckBox();
|
||||
this.bmbfBox = new System.Windows.Forms.CheckBox();
|
||||
this.AutoReinstBox = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkForUpdatesCheckBox
|
||||
@@ -72,7 +73,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, 280);
|
||||
this.applyButton.Location = new System.Drawing.Point(67, 328);
|
||||
this.applyButton.Name = "applyButton";
|
||||
this.applyButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.applyButton.TabIndex = 5;
|
||||
@@ -102,7 +103,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, 280);
|
||||
this.resetSettingsButton.Location = new System.Drawing.Point(174, 328);
|
||||
this.resetSettingsButton.Name = "resetSettingsButton";
|
||||
this.resetSettingsButton.Size = new System.Drawing.Size(101, 31);
|
||||
this.resetSettingsButton.TabIndex = 4;
|
||||
@@ -157,7 +158,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, 248);
|
||||
this.BandwithTextbox.Location = new System.Drawing.Point(52, 296);
|
||||
this.BandwithTextbox.Name = "BandwithTextbox";
|
||||
this.BandwithTextbox.Size = new System.Drawing.Size(177, 24);
|
||||
this.BandwithTextbox.TabIndex = 11;
|
||||
@@ -167,7 +168,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, 225);
|
||||
this.label1.Location = new System.Drawing.Point(40, 273);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(245, 18);
|
||||
this.label1.TabIndex = 12;
|
||||
@@ -188,7 +189,7 @@
|
||||
"K",
|
||||
"M",
|
||||
"G"});
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(235, 248);
|
||||
this.BandwithComboBox.Location = new System.Drawing.Point(235, 296);
|
||||
this.BandwithComboBox.Name = "BandwithComboBox";
|
||||
this.BandwithComboBox.Size = new System.Drawing.Size(55, 26);
|
||||
this.BandwithComboBox.TabIndex = 13;
|
||||
@@ -202,7 +203,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, 325);
|
||||
this.DebugLogCopy.Location = new System.Drawing.Point(29, 373);
|
||||
this.DebugLogCopy.Name = "DebugLogCopy";
|
||||
this.DebugLogCopy.Size = new System.Drawing.Size(285, 31);
|
||||
this.DebugLogCopy.TabIndex = 5;
|
||||
@@ -213,7 +214,7 @@
|
||||
// crashlogID
|
||||
//
|
||||
this.crashlogID.AutoSize = true;
|
||||
this.crashlogID.Location = new System.Drawing.Point(13, 441);
|
||||
this.crashlogID.Location = new System.Drawing.Point(13, 489);
|
||||
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);
|
||||
@@ -228,7 +229,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, 360);
|
||||
this.button1.Location = new System.Drawing.Point(29, 408);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(285, 31);
|
||||
this.button1.TabIndex = 5;
|
||||
@@ -239,7 +240,7 @@
|
||||
// debuglogID
|
||||
//
|
||||
this.debuglogID.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.debuglogID.Location = new System.Drawing.Point(29, 436);
|
||||
this.debuglogID.Location = new System.Drawing.Point(29, 484);
|
||||
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);
|
||||
@@ -254,7 +255,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, 407);
|
||||
this.DebugID.Location = new System.Drawing.Point(29, 455);
|
||||
this.DebugID.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.DebugID.Name = "DebugID";
|
||||
this.DebugID.ReadOnly = true;
|
||||
@@ -267,7 +268,7 @@
|
||||
// label2
|
||||
//
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
|
||||
this.label2.Location = new System.Drawing.Point(29, 507);
|
||||
this.label2.Location = new System.Drawing.Point(29, 555);
|
||||
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);
|
||||
@@ -284,7 +285,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, 490);
|
||||
this.textBox1.Location = new System.Drawing.Point(29, 538);
|
||||
this.textBox1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.ReadOnly = true;
|
||||
@@ -334,12 +335,26 @@
|
||||
this.bmbfBox.UseVisualStyleBackColor = true;
|
||||
this.bmbfBox.CheckedChanged += new System.EventHandler(this.bmbfBox_CheckedChanged);
|
||||
//
|
||||
// AutoReinstBox
|
||||
//
|
||||
this.AutoReinstBox.AutoSize = true;
|
||||
this.AutoReinstBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.AutoReinstBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
|
||||
this.AutoReinstBox.Location = new System.Drawing.Point(12, 222);
|
||||
this.AutoReinstBox.Name = "AutoReinstBox";
|
||||
this.AutoReinstBox.Size = new System.Drawing.Size(280, 22);
|
||||
this.AutoReinstBox.TabIndex = 9;
|
||||
this.AutoReinstBox.Text = "Enable auto reinstall upon install failure";
|
||||
this.AutoReinstBox.UseVisualStyleBackColor = true;
|
||||
this.AutoReinstBox.CheckedChanged += new System.EventHandler(this.AutoReinstBox_CheckedChanged);
|
||||
this.AutoReinstBox.Click += new System.EventHandler(this.AutoReinstBox_Click);
|
||||
//
|
||||
// SettingsForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
|
||||
this.ClientSize = new System.Drawing.Size(342, 606);
|
||||
this.ClientSize = new System.Drawing.Size(342, 634);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.DebugID);
|
||||
this.Controls.Add(this.crashlogID);
|
||||
@@ -349,6 +364,7 @@
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.BandwithTextbox);
|
||||
this.Controls.Add(this.bmbfBox);
|
||||
this.Controls.Add(this.AutoReinstBox);
|
||||
this.Controls.Add(this.nodevicemodeBox);
|
||||
this.Controls.Add(this.CblindBox);
|
||||
this.Controls.Add(this.userJsonOnGameInstall);
|
||||
@@ -398,5 +414,6 @@
|
||||
private System.Windows.Forms.CheckBox CblindBox;
|
||||
private System.Windows.Forms.CheckBox nodevicemodeBox;
|
||||
private System.Windows.Forms.CheckBox bmbfBox;
|
||||
private System.Windows.Forms.CheckBox AutoReinstBox;
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,7 @@ namespace AndroidSideloader
|
||||
userJsonOnGameInstall.Checked = Properties.Settings.Default.userJsonOnGameInstall;
|
||||
nodevicemodeBox.Checked = Properties.Settings.Default.nodevicemode;
|
||||
bmbfBox.Checked = Properties.Settings.Default.BMBFchecked;
|
||||
AutoReinstBox.Checked = Properties.Settings.Default.AutoReinstall;
|
||||
|
||||
if (Properties.Settings.Default.BandwithLimit.Length > 1)
|
||||
{
|
||||
@@ -223,6 +224,27 @@ namespace AndroidSideloader
|
||||
Properties.Settings.Default.BMBFchecked = bmbfBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void AutoReinstBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.AutoReinstall = AutoReinstBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
|
||||
private void AutoReinstBox_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (AutoReinstBox.Checked)
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("WARNING: This box enables automatic reinstall when installs fail,\ndue to some games not allowing " +
|
||||
"access to their save data (less than 5%) this\noption can lead to losing your progress." +
|
||||
" However with this option\nchecked when installs fail you won't have to agree to a prompt to preform\nthe reinstall. " +
|
||||
"(ideal when installing from a queue).\n\nNOTE: If your usb/wireless adb connection is extremely slow this option can\ncause larger" +
|
||||
"apk file installations to fail. Enable anyway?", "WARNING", MessageBoxButtons.OKCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
AutoReinstBox.Checked = false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -126,17 +126,22 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
}
|
||||
catch (Exception ex) { Logger.Log(ex.Message); }
|
||||
}
|
||||
|
||||
public static string BackupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
|
||||
//uninstalls an app
|
||||
public static ProcessOutput UninstallGame(string GameName)
|
||||
public static ProcessOutput UninstallGame(string packagename)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
Program.form.ChangeTitle("Attempting to backup any savedata to Documents\\Rookie Backups...");
|
||||
ProcessOutput output = new ProcessOutput("", "");
|
||||
string packageName = Sideloader.gameNameToPackageName(GameName);
|
||||
output = ADB.UninstallPackage(packageName);
|
||||
//remove both data and obb if there is any
|
||||
Sideloader.RemoveFolder("/sdcard/Android/obb/" + packageName);
|
||||
Sideloader.RemoveFolder("/sdcard/Android/data/" + packageName);
|
||||
string date_str = DateTime.Today.ToString("yyyy.MM.dd");
|
||||
string CurrBackups = Path.Combine(BackupFolder, date_str);
|
||||
if (!Directory.Exists(CurrBackups))
|
||||
Directory.CreateDirectory(CurrBackups);
|
||||
ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{packagename}\" \"{CurrBackups}\"");
|
||||
output = ADB.UninstallPackage(packagename);
|
||||
Program.form.ChangeTitle("");
|
||||
Sideloader.RemoveFolder("/sdcard/Android/obb/" + packagename);
|
||||
Sideloader.RemoveFolder("/sdcard/Android/data/" + packagename);
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
@@ -90,46 +90,25 @@ namespace AndroidSideloader
|
||||
{
|
||||
File.WriteAllText("VRP-GamesList.txt", tempGameList);
|
||||
}
|
||||
string gamePropertiesLine = Utilities.StringUtilities.RemoveEverythingAfterFirst(tempGameList, "\n");
|
||||
|
||||
foreach (string gameProperty in gamePropertiesLine.Split(';'))
|
||||
if (!tempGameList.Equals(""))
|
||||
{
|
||||
gameProperties.Add(gameProperty);
|
||||
}
|
||||
string[] gameListSplited = tempGameList.Split(new[] { '\n' }, 2);
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (string game in tempGameList.Split('\n'))
|
||||
{
|
||||
if (game.Length > 1)
|
||||
foreach (string gameProperty in gameListSplited[0].Split(';'))
|
||||
{
|
||||
string[] splitGame = game.Split(';');
|
||||
games.Add(splitGame);
|
||||
//gameFolder.find();
|
||||
gameProperties.Add(gameProperty);
|
||||
}
|
||||
|
||||
foreach (string game in gameListSplited[1].Split('\n'))
|
||||
{
|
||||
if (game.Length > 1)
|
||||
{
|
||||
string[] splitGame = game.Split(';');
|
||||
games.Add(splitGame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Output
|
||||
//Console.WriteLine("Headers:");
|
||||
//foreach (string s in gameProperties)
|
||||
//{
|
||||
// Console.WriteLine($"gameProperty: {s}");
|
||||
//}
|
||||
|
||||
|
||||
|
||||
foreach (string[] s in games)
|
||||
{
|
||||
//string output = "";
|
||||
//for (int i = 0; i < gameProperties.Count; i++)
|
||||
// output += s[i] + " ";
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AndroidSideloader
|
||||
private static string RawGitHubUrl;
|
||||
private static string GitHubUrl;
|
||||
|
||||
static readonly public string LocalVersion = "2.9";
|
||||
static readonly public string LocalVersion = "2.9.3";
|
||||
public static string currentVersion = string.Empty;
|
||||
public static string changelog = string.Empty;
|
||||
|
||||
@@ -54,13 +54,14 @@ namespace AndroidSideloader
|
||||
//Download new sideloader with version appended to file name so there is no chance of overwriting the current exe
|
||||
try
|
||||
{
|
||||
RCLONE.killRclone();
|
||||
ADB.RunAdbCommandToString("kill-server");
|
||||
var fileClient = new WebClient();
|
||||
ServicePointManager.Expect100Continue = true;
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||
Logger.Log($"Downloading update from {RawGitHubUrl}/releases/download/v{currentVersion}/{AppName}.exe to {AppName} v{currentVersion}.exe");
|
||||
fileClient.DownloadFile($"{GitHubUrl}/releases/download/v{currentVersion}/{AppName}.exe", $"{AppName} v{currentVersion}.exe");
|
||||
fileClient.Dispose();
|
||||
|
||||
Logger.Log($"Starting {AppName} v{currentVersion}.exe");
|
||||
Process.Start($"{AppName} v{currentVersion}.exe");
|
||||
//Delete current version
|
||||
|
||||
@@ -1,32 +1,22 @@
|
||||
RSL 2.9
|
||||
RSL 2.9.3
|
||||
|
||||
+ Updated ADB zip on repo and added a verification
|
||||
text file to ensure all users are on newest ADB,
|
||||
this should fix most obb issues. Upon first launch
|
||||
after this update Rookie will automatically obtain
|
||||
the latest ADB via this zip (7MB).
|
||||
+ Added new background color for apps that are a newer
|
||||
version than the version on the list. If you see this
|
||||
darker background please agree to share when prompted
|
||||
upon program launch or alternatively select the game
|
||||
from top drop-down installed apps list and click Share
|
||||
Selected App to help the community!
|
||||
|
||||
+ Added AAPT to repo along with a timer + logic to
|
||||
detect packagename for automatic reinstall when drag
|
||||
and dropped installs fail.
|
||||
+ Added logic for file size column, clicking the column
|
||||
header will now properly sort from biggest to smallest
|
||||
or vice versa.
|
||||
|
||||
+ Implemented Size(MB) column to see app size prior
|
||||
to clicking Download and Install.
|
||||
= Fixed issue where Rookie would ask for every single
|
||||
app installed on user's device. It should now only ask
|
||||
for apps not on Rookie and not on the Blacklist as
|
||||
intended.
|
||||
|
||||
= Cleaned up automatic reinstall on apk installation
|
||||
failure for Download and Install, it should work for
|
||||
most users now.
|
||||
= Changed zip file naming for new game uploads to use
|
||||
Release Name instead of package name.
|
||||
|
||||
= Adjusted code for mirror switching, should fix failure
|
||||
to load gameslist whatsoever on dead mirrors.
|
||||
|
||||
= Fixed issue where after installing a game RSL would
|
||||
ask user to donate same clean files again. RSL will now
|
||||
only ask once per program load, as intended.
|
||||
|
||||
- Removed filesize confirmation dialog when clicking
|
||||
download and install.
|
||||
|
||||
- Removed columns that were useless to users.
|
||||
|
||||
HFP
|
||||
HFP
|
||||
Reference in New Issue
Block a user