Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12efbac58a | ||
|
|
00cfc35102 | ||
|
|
31d352a79e | ||
|
|
753e1620ed | ||
|
|
597caad073 | ||
|
|
5b04c0feeb | ||
|
|
0d0ce30e65 | ||
|
|
5117435c8a | ||
|
|
383e721f4b | ||
|
|
1aaa19a969 | ||
|
|
770df54403 | ||
|
|
3e67b331ef | ||
|
|
26442e9516 | ||
|
|
3cd715afd9 | ||
|
|
0ecdaab240 | ||
|
|
801ec1a874 | ||
|
|
ebf0f9372b | ||
|
|
06c534dc50 | ||
|
|
04289885c2 | ||
|
|
8e7b9490de | ||
|
|
cec1ff48fd | ||
|
|
85fad7d3ad | ||
|
|
028c44ba64 | ||
|
|
7923adb4fb | ||
|
|
4b9d00a042 | ||
|
|
0df0384f96 | ||
|
|
5402dadbd9 |
141
ADB.cs
141
ADB.cs
@@ -2,6 +2,7 @@
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using Newtonsoft.Json;
|
||||
@@ -13,7 +14,7 @@ namespace AndroidSideloader
|
||||
class ADB
|
||||
{
|
||||
static Process adb = new Process();
|
||||
public static string adbFolderPath = "C:\\RSL\\2.1.1\\ADB";
|
||||
public static string adbFolderPath = "C:\\RSL\\2.8.2\\ADB";
|
||||
public static string adbFilePath = adbFolderPath + "\\adb.exe";
|
||||
public static string DeviceID = "";
|
||||
public static string package = "";
|
||||
@@ -273,99 +274,95 @@ namespace AndroidSideloader
|
||||
return $"Total space: {String.Format("{0:0.00}", (double)totalSize / 1000)}GB\nUsed space: {String.Format("{0:0.00}", (double)usedSize / 1000)}GB\nFree space: {String.Format("{0:0.00}", (double)freeSize / 1000)}GB";
|
||||
}
|
||||
|
||||
public static bool wirelessadbON;
|
||||
|
||||
public static void WakeDevice()
|
||||
{
|
||||
string devicesout = RunAdbCommandToString("shell input keyevent KEYCODE_WAKEUP").Output;
|
||||
if (!devicesout.Contains("found") && !Properties.Settings.Default.nodevicemode)
|
||||
{
|
||||
if (Properties.Settings.Default.IPAddress.Contains("connect"))
|
||||
if (wirelessadbON || !String.IsNullOrEmpty(Properties.Settings.Default.IPAddress))
|
||||
{
|
||||
|
||||
RunAdbCommandToString(Properties.Settings.Default.IPAddress);
|
||||
string response = RunAdbCommandToString(Properties.Settings.Default.IPAddress).Output;
|
||||
|
||||
if (response.Contains("cannot") || String.IsNullOrEmpty(response))
|
||||
{
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("Either your Quest is idle or you have rebooted the device.\nRSL's wireless ADB will persist on PC reboot but not on Quest reboot.\n\nNOTE: If you haven't rebooted your Quest it may be idle.\n\nTo prevent this press the HOLD button 2x prior to launching RSL. Or\nkeep your Quest plugged into power to keep it permanently \"awake\".\n\nHave you assigned your Quest a static IP in your router configuration?\n\nIf you no longer want to use Wireless ADB or your device was idle please hit CANCEL.", "DEVICE REBOOTED\\IDLE?", MessageBoxButtons.YesNoCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
if (response.Contains("cannot") || String.IsNullOrEmpty(response))
|
||||
{
|
||||
DialogResult dialogResult2 = FlexibleMessageBox.Show("PRESS YES TO DISABLE WIRELESS ADB.\n\nIf your Quest went idle press the HOLD button on the device twice then press NO to reconnect.\n\nIf you just want to exit this prompt press CANCEL.", "DISABLE WIRELESS ADB?", MessageBoxButtons.YesNoCancel);
|
||||
if (dialogResult2 == DialogResult.No)
|
||||
WakeDevice();
|
||||
if (dialogResult2 == DialogResult.Yes)
|
||||
DialogResult dialogResult = FlexibleMessageBox.Show("RSL can't connect to your Quest IP, this is usually because you have rebooted your Quest or the Quest IP has changed. Set a static IP to prevent this in the future(recommended)!\n\n\nYES = Static IP is set, do not detect my IP again.\nNO = I have not set a static IP, detect my IP again.\nCANCEL = I want to disable Wireless ADB.", "DEVICE REBOOTED/IP HAS CHANGED!", MessageBoxButtons.YesNoCancel);
|
||||
if (dialogResult == DialogResult.Cancel)
|
||||
{
|
||||
wirelessadbON = false;
|
||||
Properties.Settings.Default.IPAddress = "";
|
||||
Properties.Settings.Default.Save();
|
||||
WakeDevice();
|
||||
|
||||
|
||||
}
|
||||
if (dialogResult2 == DialogResult.Cancel)
|
||||
else if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
else if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
FlexibleMessageBox.Show("Connect your Quest to USB so we can reconnect to your saved IP address!");
|
||||
RunAdbCommandToString("devices");
|
||||
Thread.Sleep(250);
|
||||
RunAdbCommandToString("disconnect");
|
||||
Thread.Sleep(50);
|
||||
RunAdbCommandToString("connect");
|
||||
Thread.Sleep(50);
|
||||
RunAdbCommandToString("tcpip 5555");
|
||||
Thread.Sleep(500);
|
||||
RunAdbCommandToString(Properties.Settings.Default.IPAddress);
|
||||
MessageBox.Show($"Connected! We can now automatically enable wake on wifi. This makes it so Rookie can work wirelessly even if the device has entered \"sleep mode\". This setting is NOT permanent and resets upon Quest reboot just like wireless ADB functionality.\n\n After testing with this setting off and on the difference in battery usage seems nonexistent. We recommend this setting for the majority of users for ease of use purposes. If you click NO you must keep your Quest connected to a charger OR wake your device and then put it back on hold before using Rookie wirelessly. Do you want to enable wake on wifi?", "Enable Wake on Wifi?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
|
||||
RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
|
||||
RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
|
||||
}
|
||||
if (dialogResult == DialogResult.No)
|
||||
{
|
||||
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
FlexibleMessageBox.Show("You must repeat the entire connection process, press OK to begin.", "Reconfigure Wireless ADB", MessageBoxButtons.OK);
|
||||
RunAdbCommandToString("devices");
|
||||
RunAdbCommandToString("tcpip 5555");
|
||||
FlexibleMessageBox.Show("Press OK to get your Quest's local IP address.", "Obtain local IP address", MessageBoxButtons.OK);
|
||||
Thread.Sleep(1000);
|
||||
string input = RunAdbCommandToString("shell ip route").Output;
|
||||
|
||||
Properties.Settings.Default.WirelessADB = true;
|
||||
Properties.Settings.Default.Save();
|
||||
string[] strArrayOne = new string[] { "" };
|
||||
strArrayOne = input.Split(' ');
|
||||
if (strArrayOne[0].Length > 7)
|
||||
{
|
||||
string IPaddr = strArrayOne[8];
|
||||
string IPcmnd = "connect " + IPaddr + ":5555";
|
||||
FlexibleMessageBox.Show($"Your Quest's local IP address is: {IPaddr}\n\nPlease disconnect your Quest then wait 2 seconds.\nOnce it is disconnected hit OK", "", MessageBoxButtons.OK);
|
||||
Thread.Sleep(2000);
|
||||
ADB.RunAdbCommandToString(IPcmnd);
|
||||
Properties.Settings.Default.IPAddress = IPcmnd;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
MessageBox.Show($"Connected! We can now automatically disable the Quest wifi chip from falling asleep. This makes it so Rookie can work wirelessly even if the device has entered \"sleep mode\". This setting is NOT permanent and resets upon Quest reboot, just like wireless ADB functionality.\n\nNOTE: This may cause the device battery to drain while it is in sleep mode at a very slightly increased rate. We recommend this setting for the majority of users for ease of use purposes. If you click NO you must keep your Quest connected to a charger or wake your device and then put it back on hold before using Rookie wirelessly. Do you want us to stop sleep mode from disabling wireless ADB?", "", MessageBoxButtons.YesNo);
|
||||
FlexibleMessageBox.Show("Connect your Quest to USB so we can reconnect to your saved IP address!");
|
||||
RunAdbCommandToString("devices");
|
||||
Thread.Sleep(250);
|
||||
RunAdbCommandToString("disconnect");
|
||||
Thread.Sleep(50);
|
||||
RunAdbCommandToString("connect");
|
||||
Thread.Sleep(50);
|
||||
RunAdbCommandToString("tcpip 5555");
|
||||
Thread.Sleep(500);
|
||||
RunAdbCommandToString(Properties.Settings.Default.IPAddress);
|
||||
MessageBox.Show($"Connected! We can now automatically enable wake on wifi.\n(This makes it so Rookie can work wirelessly even if the device has entered \"sleep mode\" at extremely little battery cost (~1% per full charge))", "Enable Wake on Wifi?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
|
||||
RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
|
||||
RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
return;
|
||||
}
|
||||
if (dialogResult == DialogResult.No)
|
||||
{
|
||||
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
return;
|
||||
}
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
FlexibleMessageBox.Show("You must repeat the entire connection process, press OK to begin.", "Reconfigure Wireless ADB", MessageBoxButtons.OK);
|
||||
RunAdbCommandToString("devices");
|
||||
RunAdbCommandToString("tcpip 5555");
|
||||
FlexibleMessageBox.Show("Press OK to get your Quest's local IP address.", "Obtain local IP address", MessageBoxButtons.OK);
|
||||
Thread.Sleep(1000);
|
||||
string input = RunAdbCommandToString("shell ip route").Output;
|
||||
|
||||
Properties.Settings.Default.WirelessADB = true;
|
||||
Properties.Settings.Default.Save();
|
||||
string[] strArrayOne = new string[] { "" };
|
||||
strArrayOne = input.Split(' ');
|
||||
if (strArrayOne[0].Length > 7)
|
||||
{
|
||||
string IPaddr = strArrayOne[8];
|
||||
string IPcmnd = "connect " + IPaddr + ":5555";
|
||||
FlexibleMessageBox.Show($"Your Quest's local IP address is: {IPaddr}\n\nPlease disconnect your Quest then wait 2 seconds.\nOnce it is disconnected hit OK", "", MessageBoxButtons.OK);
|
||||
Thread.Sleep(2000);
|
||||
ADB.RunAdbCommandToString(IPcmnd);
|
||||
Properties.Settings.Default.IPAddress = IPcmnd;
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
MessageBox.Show($"Connected! We can now automatically enable wake on wifi.\n(This makes it so Rookie can work wirelessly even if the device has entered \"sleep mode\" at extremely little battery cost (~1% per full charge))", "Enable Wake on Wifi?", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
|
||||
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
|
||||
Program.form.ChangeTitlebarToDevice();
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -15,6 +15,7 @@
|
||||
<Deterministic>true</Deterministic>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
@@ -27,7 +28,6 @@
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
@@ -211,6 +211,7 @@
|
||||
<Compile Include="SelectFolder.cs" />
|
||||
<Compile Include="Utilities\StringUtilities.cs" />
|
||||
<Compile Include="Utilities\GeneralUtilities.cs" />
|
||||
<Compile Include="Utilities\UploadGame.cs" />
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -265,6 +266,7 @@
|
||||
<None Include="Resources\battery11.png" />
|
||||
<None Include="Resources\battery.png" />
|
||||
<None Include="Resources\battery1.png" />
|
||||
<None Include="Resources\ajax-loader.gif" />
|
||||
<Content Include="Resources\bluekey.png" />
|
||||
<Content Include="Resources\redkey.png" />
|
||||
<None Include="Resources\greenkey.png" />
|
||||
|
||||
@@ -156,6 +156,12 @@
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="BMBFchecked" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="GamesList" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="UploadedGameList" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</AndroidSideloader.Properties.Settings>
|
||||
|
||||
@@ -1,6 +1,177 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.8.2
|
||||
|
||||
+ Added automatic upload to Google shared drive
|
||||
for clean game files donation.
|
||||
+ Added uploading GIF for duration of upload.
|
||||
+ Added warning messages when user attempts
|
||||
to close Rookie while games are download, installing,
|
||||
or uploading.
|
||||
= Threaded clean file zipping and uploading
|
||||
so user can continue to use Rookie while game
|
||||
is uploading.
|
||||
|
||||
|
||||
P.S. We are looking for volunteers for the next
|
||||
beta which will automatically detect new games
|
||||
installed on user's headset and suggest them for
|
||||
donation. Message https://t.me/Harryeffinpotter or
|
||||
https://t.me/pmowpmow on Telegram to join the beta
|
||||
test!
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEd+IUACgkQx/Rql1Vo
|
||||
czcyUw/+ImynsE4CXmv+LjuTH1by6L2AHZFZCQ0cgwq88OOwdir/WzPfNeqqv0e6
|
||||
/QCRbRdvC6pASPgHryCkvFPFXUoLgQ+lXZY1GCBUzX0lIMqrenihQ5QUQb70LOxR
|
||||
kVkivnxLJzBeQAXn+gkvPXMCIn3l0yVInsjtusVqVHtmsegcAQTwcrG7RXSsl0dr
|
||||
2rkPOuvlcxMTWA4SlE16IhuLcq8L9GavpeWKoQiaoydhBGdzfAe1O4yy6UQs7Nas
|
||||
9Xl3vy1mXnZIprTOtjH+zYXxcdcxb1ZAdvHdq19nqTf5iuCqO+A4TxSq4vRv6Dvt
|
||||
XkJ0igXJsscpIQjJ812mZACJiJlP31yPdhZvKZXtUAQoR63iRPiEpY2gIKrd249Y
|
||||
HIq0g+XaO0K8kjOAmrBxLpESEBEovhhcfvrepSh7NocsxRAAnxOJUdcbmekwRjpj
|
||||
MCtMYThTYRXoR2aWxIbtaviUIecAGxuF8m+wWbxnWqJSEh4BanmQKjoh32G8geEE
|
||||
PS4XMBcWQ0/MhKSibaWO0SQCjrHNtsmbVvu28rh/eD9ar4Z9tPxza43iqSepSEjK
|
||||
Vlka7WxpkeqVCYnTpoLPv7I+XBBRojKlUp8aUz4MrOuuzNg08GyLFgKejU1aiw4I
|
||||
7s3PjFj6e4SsRgAKHhKStjYzVTkhlbyWIguhyPdzpiNoMFEwMz8=
|
||||
=EIFi
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.8.1
|
||||
|
||||
= Fixed crash at startup related to Upload Date column.
|
||||
|
||||
HFP
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEZPjAACgkQx/Rql1Vo
|
||||
czdfUw/+PiQ03p3FFwuVIndiDHKvwcjcewDWASYiP2KJkDCsbaEj0U5+ntpu7mxo
|
||||
ytIFuNZd47CwiYGFXi6IzEO1n9yj4LL3ONnVEogZgd3bP3Bb2b28KDdHtDX3IO5d
|
||||
wWle/WMksKDywqRyjJnaP9dh+7YS0C/49H32cFokF8S69stPwPYh9LSaf4ctK0/f
|
||||
y8pHN7tgOkmCR8NU6lOY9OLepBZlv+PcOAco0nIz1zHtwdRGz2vjwQqAa8NShfEy
|
||||
E/rjBhM37YBULf7cOayt0FY/rDYvw6Bj8B9ht0Bn6dmWgJrhfAj01utREL8HcmPd
|
||||
rNDXB7UxuR56OVy1f1gh1Fzb5f62xDydfELd/0dFYE0oDcdkHjaEkT5CnAukBmrO
|
||||
y0ntjawsy40dVAwPwPSAPQ+qP9g7mDZdbjOfgP4JNFWwnxgYLlTASoUMis/hd5mg
|
||||
FLaFAiMM3o72Gip+gjMl3AiuwyefKoCGfAPgNvRx0t8R3bdLfVJ0KIPpgvJ7ZuD8
|
||||
n4LEHLPoldDmoshdxl/BiQyLhaEM3W3qkwANVic6/8eCqy/N23CM74L4xgUaQDoq
|
||||
dvkS3PKuhLvcYh4HkZNhALj7Mavvs0x8/pIGx8bK8JCNOhKX7rGylF6erDFfZ8Ym
|
||||
T2vN0PjVYS/pF//qKHPyV5yVc5piudCB895LBNIDcJK1b67nUUE=
|
||||
=+e9J
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.8
|
||||
|
||||
+ Added modified date to games list columns.
|
||||
= Drag and drop install will now show current
|
||||
APK name.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEYjb8ACgkQx/Rql1Vo
|
||||
czcinQ//fNTuVCVHvq+fovTzg+rcqyy8CJVvZq8iH7OxUGLpbIoDaXEkMZCjNSl1
|
||||
p+4XPoCEKda8gqIjWJ3RV9Uog7C/0guUWhFMyUTePtDcDVFGhF3ALMk02MJqFDZh
|
||||
d2E1np0xQ2CdwGVVQs4otyLxKcgB5ATvFQkBE24+QEIyhAMdxQE0wN0BmzwcD5/K
|
||||
ETc7nULnvFx/s83dNO6FuGeqDjlSJ9BTad0BdsyafJK6wXqA6hKx4eEZjPZmBS6W
|
||||
wTpRQEJy4fOFB19c/W1TpQtvhu2AF+E0ofvP9xzQbVctPpc9B6omrhr4j6AJ23PH
|
||||
2IKcpMhOu1N5yAAIbqCR9Gwd5WAKYN/xVcqzJF49V3DJS7VaEIAOCRiy6xSAg4mX
|
||||
1YSHhOxcoq2WfbW/h6tF6fM51YDIqQg5Iw/pNF+hFO8n9vCEo22dooPhO8CInutY
|
||||
PVchoY+9rdH+13SLAiXaSdXl2I8TlDJWL2Y6iNQvwlcfXp1dYJ+4sdcSkEhNszKx
|
||||
0N51kHXQ2kpMK+D8gBMESYOMgwh550f9iME/roKl+yb7JxdnQv51/BiCCTpTzgjq
|
||||
OQqvGJ9z3gS9s6de9H7LFOHB/Vd0kBflfWIm+qlOHefXXVfBt1SCcu6j6aX3EFYB
|
||||
AC+FxvR5X4uYk0iYGRJzZK9ChqI0LVVTfAjDq3/sHm2/70cdqXk=
|
||||
=0i1h
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.7.2
|
||||
|
||||
+ Fixed automated mirror switching to now try every
|
||||
single mirror (instead of stoping at highest and failing).
|
||||
|
||||
+ Fixed BMBF automated drag and drop (zip/zips/folder of
|
||||
zips) song install. Settings is also now OPT OUT instead
|
||||
of OPT IN. It can be disabled in the settings menu.
|
||||
|
||||
+ Dead mirrors will no longer cause the gamelist to fail
|
||||
to load, instead RSL will move on after 35 seconds of no
|
||||
list loading.
|
||||
|
||||
+ Simplified Wireless ADB messages and also made it easier
|
||||
to enable or disable wireless ADB.
|
||||
|
||||
+ Fixed bug where if mirror failed it said "No gamelist".
|
||||
|
||||
+ Fixed bug where if mirror failed to load RSL would ask
|
||||
users to donate every app on their device whether it was
|
||||
actually newer than the mirrors' version or not.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEVXukACgkQx/Rql1Vo
|
||||
czdLaA//ZBZ6ar5Qxlg5bZ409cSCRT+9JRBWkH7GRZZ4X2aejgesHXkcsF9L+NRo
|
||||
cUjv/4s+lWCScY3EvzJg038Nr9zXUsZYdCfJuT1f3P3uBvEBP+XdtB0+1+bnSQnX
|
||||
QhjtyP0WwJJqDhiDINB0DHycHu68sGmvaqZXoksWkdrtU5xDpoOw540nkBhIEHTb
|
||||
anFNUBEdGsjafVj6ZhZ4dYOpewVsV+VJZbg5J7T7z/ZdYZunS6fTBjb7ho9CfnpF
|
||||
GaTsGrwf03GcBBv13wYkl5UwO7TZiv6U+hUDOv0bkHGmaSQWbto+1Nt5GEo7SPMh
|
||||
qOiVvLH0vr6RuLLeaKo2QGzKcOgr4sSSXfQFp70yiQGEP/UlIHGBXqRyJ0x/hAtV
|
||||
yD7ynTpVpVw5bh939lpmjtw2VHNoOzOG9fky9tp61jQSIjDYWGP39Ntow9fkLWyC
|
||||
Em4pHwHih1aWiHV91kzupWdSKIk8KKewcNIKXmxvV1A9zc6cxxyqnvYIcbOojg0i
|
||||
d10UmyF+Tjm5bVH5U+AVwNeaFEZiI6d4QrLgTDFl3klyunCj2FWPdJmCvUPxFSzV
|
||||
fRB5OWgRWnWB85tb63geNTJbbJURH1TJ88PWFn/3opgOEFTDu4UkRiuK6VviRQ8D
|
||||
F95CsnuCrHRBwBozozv2YHJ8rCi61i+vmXi95jPAVMQd0OmsR0o=
|
||||
=nH4m
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
RSL 2.7.1
|
||||
|
||||
= Fixed apk path for in-place reinstall. Should work correctly now.
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEOGwkACgkQx/Rql1Vo
|
||||
czfPHw//eXtKkM1g/mjz43/BLTjhT1PTrwvolCmds+LzMTHT1EfDyouJBZ2XxnXQ
|
||||
NiZkk9SR3m/VmJSr0FO7p7F9Ab07xEUIv280C7Mbqyr0KEPiQTvrlnL/eX4sx/Px
|
||||
1pmDCuPUL42u2zo4famGxDvduoVToyPrIzzv3QYt8qJGEAYRG4gtn26SB38+JslU
|
||||
eU6hJkB2E7BNZXRtpiDM7rsejOtzsIROdLeIztSyIyTl/sY4Az9nfgRiJFyHsPsJ
|
||||
ILRRkquCzkXbzzdjS8AqPPIzt+JZdp+ZZS2H3gSeld4We8rkm5CzBef7pzeP6ZKZ
|
||||
WGYnw1Et9dtflSAmfDb6i4Rr5Y3mPLk2OzIeYebZ0fCGmyrpJ7QlRfYqJNJ7JMH9
|
||||
DOmsSNVUvFRR+b0FnT414uSg4Q79cYXWsJ/Wi28PIOQF0nQwtPIKly2x1kB4NE7P
|
||||
CItXy8VJ//q0/2ijHB3ZQIiMkj78TVePCAC6TQT4RnBgWS0HeItBKZJYCcyvhe72
|
||||
6H9qzOVsIKHgxnfbRON9tZOWxpxIdnbFsaE5TsiXp+80SsaHhxcxuAyjh0M0CaKu
|
||||
lh3z9FJmZW8CrxIA1G1sQePxqF3iObVhqJPqp8G7N6UC1wBnhJWmnBKTYm1iHs6P
|
||||
pj8ggpyFTT55UxGeRklLUyoSxSnqSE7Oj2zluLvBFHPi1KAMlEg=
|
||||
=HVQ5
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
|
||||
RSL 2.7
|
||||
|
||||
|
||||
35
MainForm.Designer.cs
generated
35
MainForm.Designer.cs
generated
@@ -41,6 +41,8 @@
|
||||
this.copyBulkObbButton = new System.Windows.Forms.Button();
|
||||
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();
|
||||
@@ -92,6 +94,7 @@
|
||||
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
||||
this.gamesPictureBox = 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();
|
||||
@@ -239,7 +242,7 @@
|
||||
this.getApkButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
|
||||
this.getApkButton.Size = new System.Drawing.Size(218, 28);
|
||||
this.getApkButton.TabIndex = 2;
|
||||
this.getApkButton.Text = "Extract App to Desktop";
|
||||
this.getApkButton.Text = "Upload Selected App";
|
||||
this.getApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.getApkButton.UseVisualStyleBackColor = false;
|
||||
this.getApkButton.Click += new System.EventHandler(this.getApkButton_Click);
|
||||
@@ -343,6 +346,8 @@
|
||||
//
|
||||
this.panel1.AutoScroll = true;
|
||||
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
|
||||
this.panel1.Controls.Add(this.ULLabel);
|
||||
this.panel1.Controls.Add(this.ULGif);
|
||||
this.panel1.Controls.Add(this.BatteryLbl);
|
||||
this.panel1.Controls.Add(this.pictureBox5);
|
||||
this.panel1.Controls.Add(this.downloadingLabel);
|
||||
@@ -366,6 +371,29 @@
|
||||
this.panel1.Size = new System.Drawing.Size(218, 721);
|
||||
this.panel1.TabIndex = 73;
|
||||
//
|
||||
// ULLabel
|
||||
//
|
||||
this.ULLabel.AutoSize = true;
|
||||
this.ULLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.ULLabel.ForeColor = System.Drawing.Color.Snow;
|
||||
this.ULLabel.Location = new System.Drawing.Point(154, 683);
|
||||
this.ULLabel.Name = "ULLabel";
|
||||
this.ULLabel.Size = new System.Drawing.Size(64, 13);
|
||||
this.ULLabel.TabIndex = 87;
|
||||
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;
|
||||
@@ -1260,6 +1288,7 @@
|
||||
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);
|
||||
@@ -1304,7 +1333,6 @@
|
||||
private System.Windows.Forms.Button ADBWirelessDisable;
|
||||
private System.Windows.Forms.Label freeDisclaimer;
|
||||
private System.Windows.Forms.ComboBox devicesComboBox;
|
||||
private System.Windows.Forms.ComboBox remotesList;
|
||||
private System.Windows.Forms.Button QuestOptionsButton;
|
||||
private System.Windows.Forms.Button ThemeChangerButton;
|
||||
private System.Windows.Forms.ListBox gamesQueListBox;
|
||||
@@ -1338,6 +1366,9 @@
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.Label BatteryLbl;
|
||||
private System.Windows.Forms.PictureBox pictureBox5;
|
||||
public System.Windows.Forms.ComboBox remotesList;
|
||||
private System.Windows.Forms.PictureBox ULGif;
|
||||
private System.Windows.Forms.Label ULLabel;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
4978
MainForm.cs
4978
MainForm.cs
File diff suppressed because it is too large
Load Diff
10
Properties/Resources.Designer.cs
generated
10
Properties/Resources.Designer.cs
generated
@@ -60,6 +60,16 @@ namespace AndroidSideloader.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
public static System.Drawing.Bitmap ajax_loader {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ajax-loader", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -130,6 +130,9 @@
|
||||
<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>
|
||||
@@ -139,7 +142,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="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 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>
|
||||
</root>
|
||||
26
Properties/Settings.Designer.cs
generated
26
Properties/Settings.Designer.cs
generated
@@ -601,7 +601,7 @@ namespace AndroidSideloader.Properties {
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool BMBFchecked {
|
||||
get {
|
||||
return ((bool)(this["BMBFchecked"]));
|
||||
@@ -610,5 +610,29 @@ namespace AndroidSideloader.Properties {
|
||||
this["BMBFchecked"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string GamesList {
|
||||
get {
|
||||
return ((string)(this["GamesList"]));
|
||||
}
|
||||
set {
|
||||
this["GamesList"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UploadedGameList {
|
||||
get {
|
||||
return ((bool)(this["UploadedGameList"]));
|
||||
}
|
||||
set {
|
||||
this["UploadedGameList"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,6 +147,12 @@
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="BMBFchecked" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="GamesList" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="UploadedGameList" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
|
||||
@@ -38,9 +38,6 @@ namespace AndroidSideloader
|
||||
{
|
||||
if (!MainForm.HasInternet) return new ProcessOutput("", "No internet");
|
||||
|
||||
//Set the password for rclone configs
|
||||
Environment.SetEnvironmentVariable("RCLONE_CRYPT_REMOTE", rclonepw);
|
||||
Environment.SetEnvironmentVariable("RCLONE_CONFIG_PASS", rclonepw);
|
||||
ProcessOutput prcoutput = new ProcessOutput();
|
||||
//Rclone output is unicode, else it will show garbage instead of unicode characters
|
||||
rclone.StartInfo.StandardOutputEncoding = Encoding.UTF8;
|
||||
@@ -90,7 +87,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") || error.Contains("directory not found")))
|
||||
if (error.Contains("400 Bad Request") || error.Contains("cannot fetch token") || error.Contains("authError") || error.Contains("quota") || error.Contains("exceeded") || error.Contains("directory not found") || error.Contains("couldn't list"))
|
||||
{
|
||||
string oldRemote = MainForm.currentRemote;
|
||||
try
|
||||
@@ -111,8 +108,10 @@ namespace AndroidSideloader
|
||||
if (!output.Contains("Game Name;Release Name;") && !output.Contains("package:"))
|
||||
Logger.Log($"Rclone error: {error}\nRclone Output: {output}");
|
||||
if (error.Contains("There is not enough space"))
|
||||
{
|
||||
FlexibleMessageBox.Show("There isn't enough space on your PC to properly install this game. Please have at least 2x the size of the game you are trying to download/install available on the drive where Rookie is installed.", "NOT ENOUGH SPACE");
|
||||
return prcoutput;
|
||||
}
|
||||
return prcoutput;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
BIN
Resources/ajax-loader.gif
Normal file
BIN
Resources/ajax-loader.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 723 B |
@@ -220,7 +220,7 @@ namespace AndroidSideloader
|
||||
|
||||
private void bmbfBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.BMBFchecked = nodevicemodeBox.Checked;
|
||||
Properties.Settings.Default.BMBFchecked = bmbfBox.Checked;
|
||||
Properties.Settings.Default.Save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,10 +35,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
|
||||
}
|
||||
|
||||
//List of all installed package names from connected device
|
||||
public static Dictionary<string, string> InstalledPackages = new Dictionary<string, string>(); //Packagename and Version
|
||||
//public static List<string> InstalledPackageNames = new List<string>();
|
||||
|
||||
//Remove folder from device
|
||||
//public static List<string> InstalledPackageNames = new List<string>(); //Remove folder from device
|
||||
public static ProcessOutput RemoveFolder(string path)
|
||||
{
|
||||
ADB.WakeDevice();
|
||||
|
||||
@@ -7,6 +7,15 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace AndroidSideloader
|
||||
{
|
||||
class rcloneFolder
|
||||
{
|
||||
public string Path { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Size { get; set; }
|
||||
public string ModTime { get; set; }
|
||||
|
||||
}
|
||||
|
||||
class SideloaderRCLONE
|
||||
{
|
||||
public static List<string> RemotesList = new List<string>();
|
||||
@@ -38,12 +47,12 @@ namespace AndroidSideloader
|
||||
|
||||
public static void UpdateNouns(string remote)
|
||||
{
|
||||
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/nouns\" \"{Nouns}\"");
|
||||
}
|
||||
|
||||
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/nouns\" \"{Nouns}\"");
|
||||
}
|
||||
|
||||
public static void UpdateGamePhotos(string remote)
|
||||
{
|
||||
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\"");
|
||||
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\"");
|
||||
}
|
||||
|
||||
public static void UpdateGameNotes(string remote)
|
||||
@@ -74,24 +83,54 @@ namespace AndroidSideloader
|
||||
|
||||
public static void initGames(string remote)
|
||||
{
|
||||
if (remote.Contains("08"))
|
||||
Program.form.SwitchMirrors();
|
||||
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");
|
||||
|
||||
foreach (string gameProperty in gamePropertiesLine.Split(';'))
|
||||
{
|
||||
gameProperties.Add(gameProperty);
|
||||
}
|
||||
gameProperties.Add("Last Updated");
|
||||
|
||||
|
||||
tempGameList = Utilities.StringUtilities.RemoveEverythingBeforeFirst(tempGameList, "\n");
|
||||
|
||||
List<rcloneFolder> gameFolders = JsonConvert.DeserializeObject<List<rcloneFolder>>(RCLONE.runRcloneCommand($"lsjson \"{remote}:{RcloneGamesFolder}\"").Output);
|
||||
if (gameFolders == null || gameFolders.Count < 1)
|
||||
{
|
||||
Program.form.SwitchMirrors();
|
||||
gameFolders = JsonConvert.DeserializeObject<List<rcloneFolder>>(RCLONE.runRcloneCommand($"lsjson \"{remote}:{RcloneGamesFolder}\"").Output);
|
||||
}
|
||||
|
||||
|
||||
foreach (string game in tempGameList.Split('\n'))
|
||||
{
|
||||
if (game.Length > 1)
|
||||
games.Add(game.Split(';'));
|
||||
{
|
||||
string[] splitGame = game.Split(';');
|
||||
|
||||
//gameFolder.find();
|
||||
Array.Resize(ref splitGame, splitGame.Length + 1);
|
||||
|
||||
var gameSynced = gameFolders.Exists((predicate) => predicate.Path == splitGame[1]);
|
||||
if (gameSynced)
|
||||
{
|
||||
var gameFolder = gameFolders.Find((predicate) => predicate.Path == splitGame[1]);
|
||||
//splitGame[6] = gameFolder.ModTime;
|
||||
string gametime = Utilities.StringUtilities.RemoveEverythingAfterLast(gameFolder.ModTime, ":");
|
||||
gametime = gametime.Replace("T", " ");
|
||||
splitGame[splitGame.Length - 1] = gametime;
|
||||
games.Add(splitGame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Output
|
||||
@@ -100,12 +139,20 @@ namespace AndroidSideloader
|
||||
//{
|
||||
// Console.WriteLine($"gameProperty: {s}");
|
||||
//}
|
||||
|
||||
|
||||
|
||||
foreach (string[] s in games)
|
||||
{
|
||||
string output = "";
|
||||
for (int i = 0; i < gameProperties.Count; i++)
|
||||
output += s[i] + " ";
|
||||
//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.7.1";
|
||||
static readonly public string LocalVersion = "2.8.4";
|
||||
public static string currentVersion = string.Empty;
|
||||
public static string changelog = string.Empty;
|
||||
|
||||
|
||||
36
Utilities/UploadGame.cs
Normal file
36
Utilities/UploadGame.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AndroidSideloader.Utilities
|
||||
{
|
||||
class UploadGame
|
||||
{
|
||||
private string uploadcommand;
|
||||
public string Uploadcommand
|
||||
{
|
||||
get => uploadcommand;
|
||||
set => uploadcommand = value;
|
||||
}
|
||||
private string pckgcommand;
|
||||
public string Pckgcommand
|
||||
{
|
||||
get => pckgcommand;
|
||||
set => pckgcommand = value;
|
||||
}
|
||||
private string uploadgamename;
|
||||
public string Uploadgamename
|
||||
{
|
||||
get => uploadgamename;
|
||||
set => uploadgamename = value;
|
||||
}
|
||||
private ulong uploadversion;
|
||||
public ulong Uploadversion
|
||||
{
|
||||
get => uploadversion;
|
||||
set => uploadversion = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,25 +1,28 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
RSL 2.8.3
|
||||
+ Hotfix to update the exclusion list of games we need updates for.
|
||||
|
||||
RSL 2.7.1
|
||||
RSL 2.8.2
|
||||
|
||||
= Fixed apk path for in-place reinstall. Should work correctly now.
|
||||
+ Added automatic upload to Google shared drive
|
||||
for clean game files donation.
|
||||
+ Added uploading GIF for duration of upload.
|
||||
+ Added warning messages when user attempts
|
||||
to close Rookie while games are download, installing,
|
||||
or uploading.
|
||||
= Threaded clean file zipping and uploading
|
||||
so user can continue to use Rookie while game
|
||||
is uploading.
|
||||
|
||||
|
||||
P.S. We are looking for volunteers for the next
|
||||
beta which will automatically detect new games
|
||||
installed on user's headset and suggest them for
|
||||
donation. Message https://t.me/Harryeffingpotter or
|
||||
https://t.me/pmowpmow on Telegram to join the beta
|
||||
test!
|
||||
|
||||
HFP
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEOGwkACgkQx/Rql1Vo
|
||||
czfPHw//eXtKkM1g/mjz43/BLTjhT1PTrwvolCmds+LzMTHT1EfDyouJBZ2XxnXQ
|
||||
NiZkk9SR3m/VmJSr0FO7p7F9Ab07xEUIv280C7Mbqyr0KEPiQTvrlnL/eX4sx/Px
|
||||
1pmDCuPUL42u2zo4famGxDvduoVToyPrIzzv3QYt8qJGEAYRG4gtn26SB38+JslU
|
||||
eU6hJkB2E7BNZXRtpiDM7rsejOtzsIROdLeIztSyIyTl/sY4Az9nfgRiJFyHsPsJ
|
||||
ILRRkquCzkXbzzdjS8AqPPIzt+JZdp+ZZS2H3gSeld4We8rkm5CzBef7pzeP6ZKZ
|
||||
WGYnw1Et9dtflSAmfDb6i4Rr5Y3mPLk2OzIeYebZ0fCGmyrpJ7QlRfYqJNJ7JMH9
|
||||
DOmsSNVUvFRR+b0FnT414uSg4Q79cYXWsJ/Wi28PIOQF0nQwtPIKly2x1kB4NE7P
|
||||
CItXy8VJ//q0/2ijHB3ZQIiMkj78TVePCAC6TQT4RnBgWS0HeItBKZJYCcyvhe72
|
||||
6H9qzOVsIKHgxnfbRON9tZOWxpxIdnbFsaE5TsiXp+80SsaHhxcxuAyjh0M0CaKu
|
||||
lh3z9FJmZW8CrxIA1G1sQePxqF3iObVhqJPqp8G7N6UC1wBnhJWmnBKTYm1iHs6P
|
||||
pj8ggpyFTT55UxGeRklLUyoSxSnqSE7Oj2zluLvBFHPi1KAMlEg=
|
||||
=HVQ5
|
||||
-----END PGP SIGNATURE-----
|
||||
P.S MOVED PGP SIGNATURE TO CHANGELOGHISTORY.TXT @
|
||||
https://github.com/nerdunit/androidsideloader
|
||||
Reference in New Issue
Block a user