Compare commits

...

102 Commits

Author SHA1 Message Date
pmow
fb1a16b861 changelog update 2021-10-28 00:24:15 -04:00
pmow
311b9bd4da changelog 2021-10-28 00:21:23 -04:00
pmow
58e1b1d5d2 2.10.3 2021-10-28 00:19:47 -04:00
pmow
9d6eef85f1 Merge pull request #93 from asphalt123/master
Add offline mode to install games locally when no mirrors with the --offline switch
2021-10-26 20:49:09 -04:00
=
275344d421 Add offline mode to install games locally when no mirrors 2021-10-24 15:13:28 +02:00
nerdunit
e911970c8d Update README.md 2021-10-07 12:35:22 -07:00
William Swartwood
eb5df74dc5 RSL 2.10.2
= Fixed issue where same new apps were being
asked for before 72 hr window if not marked as
free.
= Changed 7zip compression level to Store for
faster zipping for donations (since apks are
already compressed the file size only changes
1-2MB at most, so upload time will be virtually
the same).

HFP
2021-10-05 03:30:25 -04:00
William Swartwood
95d4623e6c RSL 2.10.1
= Fixed sort by Size (MB).
= Fixed issue where game list column headers
were appearing as a game in the games list.

HFP
2021-10-02 01:37:02 -04:00
William Swartwood
8c8e97c610 Last minute touch-ups. Changed version number to 2.10.0 2021-09-29 23:01:58 -04:00
William Swartwood
b68903bc92 Fixed Themeing Issues. Ready for Release! 2021-09-29 22:40:27 -04:00
William Swartwood
bff901dd69 2.10 Finalized 2021-09-29 20:57:14 -04:00
William Swartwood
5dc4273d96 + Added code to allow removing downloading game from queue as long as it's the only queue item.
= Fixed code for column headers.
2021-09-29 03:52:42 -04:00
William Swartwood
a7622a8c5e RSL 2.10.0 beta
+ Added code to store wireless ADB connect command in StoredIP.txt so RSL updates will no longer wipe Wireless ADB settings.
+ Added code to prefer wired if wireless ADB is setup but user plugs device in via USB.
+ Added new Updater form for RSL updates.
+ Added new Donor form with listview so all detected donatable apps will appear in a list.
+ Added NewApps list so users can select free/non-VR apps. This will then upload to pre-determined debuglogs server (can be set in custom rclone config).
+ Threaded entire list population procedure so RSL will no longer freeze when the list is being populated.
+ Added Pull to Desktop option if user wishes to just pull an app without uploading.
= Fixed OBB drag and drop and Copy OBB button.
- Removed gridlines for main updates list for cleaner look.
2021-09-28 23:17:33 -04:00
William Swartwood
8ecad85d3f donor form and update form 2021-09-15 03:34:22 -04:00
William Swartwood
4955178426 Started copying new updater form for asking for game updates, will work on it this weekend. 2021-09-10 04:56:36 -04:00
William Swartwood
e211546923 new forms WIP 2021-09-09 17:22:23 -04:00
nerdunit
055481f8a3 Update README.md 2021-09-08 07:04:38 -07:00
William Swartwood
b84727fcd8 mostly done 2.9.9 2021-09-03 16:51:50 -04:00
William Swartwood
59097dd8d7 test2 2021-09-03 08:32:58 -04:00
William Swartwood
cc9dc38eb4 test 2021-09-03 08:24:32 -04:00
William Swartwood
85b7200d25 2.9.9 2021-09-03 07:57:42 -04:00
harryeffinpotter
349c9941bf newest adb, without directory 2021-09-03 00:19:01 -04:00
William Swartwood
7646edcd23 ninjafix dragdrop 2021-09-02 06:35:05 -04:00
William Swartwood
d5976fb379 dragdrop ninjafix 2021-09-02 06:21:40 -04:00
William Swartwood
a93666b2af RSL 2.9.8
+ Added timer that detects if user has uploaded an
update to an app, if they have it will wait til the
set amount of time passes to ask again.

+ When new app is detected user is now asked if it
is a paid app.

= Fixed debuglog/crashlog upload.

= After sending debuglog to server RSL will now properly
copy Debug Log ID to clipboard.

HFP
2021-09-02 06:12:50 -04:00
William Swartwood
e715bed254 aded code to ask every 48 hours for any new app the user clicks NO on when asked if it is actually a paid VR app and code to ask for game updates every 72 hours after user clicks YES to upload an update. 2021-09-02 05:24:36 -04:00
harryeffinpotter
1af1acea40 2.9.7
2.9.7
2021-08-31 07:17:54 -04:00
harryeffinpotter
060cc07592 2.9.7 2021-08-31 07:16:25 -04:00
William Swartwood
d3c012cad2 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.9.7

= Fixed bug that caused error message to appear
when no device is connected to PC.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEuDXUACgkQx/Rql1Vo
czfmuRAAmwwn2DE1Qu0sDcWFhFF91ApPkjKNbWS1m+Kqi5Zu+Yb1XB3R4U7CVb8n
SfzR3khr0CD9EodJJZkwTmZJYABgNNy1jCp2HsEYG1DhJUfcJ1uIjdwvPqQpqex5
unGiLusEr1WpNp1Vuk9rBvvZOcH1ci/mRWqWdj6W6CLzZ5R3TeN0fKIFJ4B7ea7m
zRNGBA6i3YkP9jbUy16w8J6mYGzvHLg+ZfASG4jCOSyo4p+RQNWhDJEugjw+YImb
vQWiGedfr2c945Bo8Noaul8Pjh61ds1uN4AkobTVWNJIY/IpREFFjY/hoc/fhx9s
H3JPdJi3iaKq0dqhyNp8nlm4sv3y6bX9hXc0YWQMXjkzLg5ug1hHEMIIVk+tS+uU
bf8h+dVshYovE+N+4fjSz+hG9kzE9I6nvtI+gLpTJdxCyCXjjxlldrmuVE6nMd83
bDkKMJvb7Eo9KdIHmxs97TSZcjdfJEazzVXbs+dDmEJ9rGJYFIqydTQ/Pol4afvw
/tr0AmYUxCnkLgufmKjeX3Z/UVAzAs02MuT/Z639YwNoOtvg1bUzwWAzUQLwMdqV
P+d0xJQSEEr65GiwgdSsQY1R/uaGnggTXwIQwmkZPjJuUyNDD6h0zRcEKplDt7nd
jgjJJbVGLafcGLE1OahLlPnbMB24lWvfQM9ST0GuYWaINHCrQcI=
=XacL
-----END PGP SIGNATURE-----
2021-08-31 07:13:49 -04:00
William Swartwood
20e74eade2 RookieList FIX 2021-08-31 06:34:57 -04:00
William Swartwood
d3f9499f03 RSL 2.9.6
=Fixed obb copy for similarly named titles.
=Added packagename to shared zips.
=Fixed laggy upload when sharing apps.
2021-08-30 22:28:19 -04:00
William Swartwood
f99c57eb60 obb install fix and packagename to zip title 2021-08-30 20:29:03 -04:00
pmow
d7074325f4 show version on titlebar 2021-08-30 13:35:13 -04:00
pmow
1ba6fe5260 complete hotfix 2.9.5 implementation 2021-08-30 13:01:19 -04:00
konqi
ee6d62950d down we go 2021-08-30 13:03:01 +02:00
konqi
f8fb2b5483 version++; 2.9.5 2021-08-30 12:27:49 +02:00
konqi
164dc070bd fix false error of dns on start up 2021-08-30 11:09:21 +02:00
William Swartwood
7539b5c507 fix the fix 2021-08-29 23:02:29 -04:00
William Swartwood
68be50b26e adb2 to fix update to new adb folder 2021-08-29 23:02:29 -04:00
harryeffinpotter
6cbe06f394 adb2 for new version 2021-08-29 22:45:51 -04:00
harryeffinpotter
a9f2db6380 old adb replaced due to issue 2021-08-29 22:43:16 -04:00
William Swartwood
4a492ffcd2 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.9.4

= Changed install.txt logic to search
for any .7z files and use Zip Extract
function from GeneralUtilities, should
fix version issues with users who have
a newer 7zip installed than the 7zip
exe included with install.txt games.

= Fully moved ADB folder to
C:\RSL\platform-rools and removed
adb folder from Rookie directory.
Rookie will do this automatically upon
first launch after updating. This will
make updating to future versions of ADB
much smoother. This should also fix issues
caused by having multiple version of
adb.exe clashing and fix AAPT issues as
well.

= Updated 7z.exe and 7z.dll on Github.

HFP
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEsQnoACgkQx/Rql1Vo
czeKPRAAi0l9Ti06d48p0vd6Rziw3mHLVXg5dDOZWyrNULu1Y8axnSCVnZOVduVD
ftY0fVjTNNv7aU+fyWtH2Gr33CtJ6DvaQpj5RIsFiZpiTeDN3cOq2Ina55jtVvEl
ZrBVlLdXtv/L/W3ltrMzc/sNnJhrEfBXq7lNDFMj7IT31miphRZ1X9pgIdqGIpdE
gwcVxxkOu/5PXMzR3+eclpVePeagtJQNBH8dYUBQ9OziKObpzAfVYvoYS94MTYUY
ZdoHP5tfXEsuW0tQ6G1dvGrIi+ty8EJWX3GS42mkPW6xlyKbSOdu/IQa4KFPmpkK
7QwCMDzU5FgxJhg4+j35z/4BxJUzUHeTnp2xQYw/HE+GWdiJklIpZoOeqFQ+QLy/
6jwyhqcPD7cni2HMrCi4HxT0GcuVV5jrqqBAtCHdecglH90EMBCS9DrvmZyw1JgA
b9bCPQwWvVRLFw8HfiybiqVM98C2kW3TUsprGJOcnT6l1SzKlHEwiSMJSTVWshuu
bG8Q19gfhKSLEjTdjKVYV9WDHp8it+lrF6ETdneP4kcSsLhigYSgz0AeETx62Ugh
D13MyxcS6K9XqoRGy5Dr3gL/qkT0I5T6dsWL6vj9o317uexIO9sPkmrGTktbGUn1
heW2jD324PwyuuPxxoqM1lVKVquUIS0Difx+cqlJHY0lWqIk/Ck=
=lZeM
-----END PGP SIGNATURE-----
2021-08-29 22:33:38 -04:00
harryeffinpotter
b5c66b50b9 adb changed to one universal dir 2021-08-29 21:21:03 -04:00
harryeffinpotter
ebfe5ace65 Updated 7z exe and dll 2021-08-29 21:17:16 -04:00
William Swartwood
c242dc6f6d -----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-----
2021-08-28 00:45:39 -04:00
konqi
bcfcc43956 sort by size 2021-08-28 04:10:57 +02:00
konqi
ab6507965b Now rookie fails if game list is empty. Also refactores some things to make it more eficient 2021-08-28 03:41:14 +02:00
William Swartwood
78b816c5e6 -----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-----
2021-08-27 05:58:45 -04:00
William Swartwood
ec32535419 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
seperated by new lines to clipboard.

+ Added ALT + L shortcut to copy list of game names to
a paragraph copied 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
2021-08-26 07:06:01 -04:00
William Swartwood
c607d1a2fd aapt badging added to get actual release name for new games, duplicate code put in to ask for whitelist first cuz im dumb. 2021-08-25 02:57:08 -04:00
harryeffinpotter
81c1e61d8b Merge pull request #83 from konqiDAM/master
I haven't tried to get an empty list, if rclone fails maybe it gives a null pointer
2021-08-24 18:09:31 -04:00
konqi
1dc0e38865 . 2021-08-24 23:55:16 +02:00
konqi
19dcacfbbe ask every 24h for game list 2021-08-24 23:52:11 +02:00
konqi
10d8498f1b add whitelist and ask for games 2021-08-24 23:21:53 +02:00
konqi
d3620bf033 happy pmow noises 2021-08-24 22:20:46 +02:00
konqi
467041825c not read header 2021-08-24 22:03:31 +02:00
William Swartwood
fa380c75f7 RSL 2.9.0 2021-08-24 04:17:15 -04:00
William Swartwood
2882737958 2.9 2021-08-24 03:35:54 -04:00
harryeffinpotter
aebc719f0b Added a text file that indicates ADB version. 2021-08-24 01:55:41 -04:00
harryeffinpotter
d21b72758b ADB Zip Update 2021-08-24 01:51:17 -04:00
harryeffinpotter
40cc97aedd AAPT.exe for drag+drop sig mismatch auto reinstall 2021-08-24 00:22:33 -04:00
William Swartwood
9a897954b4 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.8.7

= Added code made by Ivan that makes
RSL load up much faster.
= Added confirmation dialog when using
Upload App button in case of accidental
misclicks.

HFP

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEhgj8ACgkQx/Rql1Vo
czc+TA/5ARiMcBdvxbKjB6jZKFDGZvEh0IpPyHRJzLpuZhHI+qR91P3UI9fXCrQ6
Vzi6Nc0I3YMhPIpNnp9uxWkNfeIUDTdBUi+wwIpMopupVxLCEJkR7ZGkjJHFWPYn
Hm19BLmmv9dctJwQlPLyaDgnb0+GKDRzZF8xHKBopbmModbhHwnt0UHTmodD4syc
DinfaVpM+RwGZOptUyzwqLR51aQb03JrbHS3gkB40EbsIr6brZd50lahSvVMW8W4
Btc3gf0rig+BrjXgUkNFlZ1PZ+jM1+12dWflYNvMYCoQ7bRc7Kds7IqCiPIweRF1
2YR5jBh52C2ChhY3sfbc8G6VkbXW7N6ktz/11mrIc7Mc7X4ibpsDzQCUyDiuXNwi
wm3ikq5liQYlM/I/awutD8yDcJPGEoUui8wYehwi23Pzujdh74bBYd9F6cQLg7Tb
AsRLvEDY/n7gsDzqdt/oqUkGtt0x4c0K5ZPEIe9pcQvfNln7j/Mf3BNC4HZRkeei
+FIyuhVf/w4dcz3xm1g5060N2eQLgXCk7690aak3l9ucghivUFlrKGe8vRk7qtE6
FebUemHtTgurKz1bm8XCZjfvq0IR7MY+iGgIfKtXbM8SqjxIDhE7P1QuGXeZD9y3
nkjY4+FHkT7BXSlOUpQ/6tR0wGYxtrxuNfwlXKGEqJlzPBbmCAY=
=Zdt7
-----END PGP SIGNATURE-----
2021-08-21 19:21:36 -04:00
William Swartwood
2e151c7137 Changes by Ivan and HFP added for newest update. 2021-08-21 18:44:02 -04:00
harryeffinpotter
84d6b14e36 Merge pull request #80 from konqiDAM/master
Rclone is async at start and refactored when asking for updates
2021-08-21 15:25:36 -04:00
konqi
97d25c8e9c Now rclone is async on start, so it should load a bit faster. Also refactored a bit the code when the user is asked to upload updated games, so it loads the list before 2021-08-21 19:44:32 +02:00
pmow
82cf72c677 typo correction 2021-08-19 18:09:17 -04:00
William Swartwood
3777b9237b RSL 2.8.6
+ Added Set username option to Quest
Options. This will work for all apps.

HFP
2021-08-21 02:54:39 -04:00
William Swartwood
2ed7034284 RSL 2.8.5
+ Added OPT-IN installed packages check,
this will be used to add common free apps
to a blacklist so a future version of RSL
can ask users to donate new apps.

= Fixed logic for apk signature mismatch
automatic reinstall.

= Increased timer for apk installation
failure to 3 minutes.

= Fixed blacklist implementation for
updates to apps already on RSL.

- - Removed 2nd confirmation dialog for
app uninstalls.

HFP
2021-08-20 03:56:48 -04:00
William Swartwood
98dc7f4738 2.8.4* 2021-08-19 20:24:08 -04:00
pmow
12efbac58a Update packagelist upload message, fixed debug exe from 2.8.3 2021-08-19 18:17:04 -04:00
pmow
00cfc35102 2.8.3 hotfix for blacklist not updating 2021-08-19 16:32:23 -04:00
pmow
31d352a79e Merge pull request #79 from konqiDAM/master
ask user to upload list of installed games
2021-08-19 15:51:14 -04:00
konqi
753e1620ed blacklist download enable 2021-08-19 21:48:13 +02:00
konqi
597caad073 Merge branch 'master' into master 2021-08-19 20:00:14 +02:00
konqi
5b04c0feeb adb 2021-08-19 19:58:44 +02:00
konqi
0d0ce30e65 asks user to upload logs when closing rsl 2021-08-19 19:43:07 +02:00
konqi
5117435c8a ask user to upload installed games 2021-08-19 11:17:26 +02:00
William Swartwood
383e721f4b ADB SDK Update 2021-08-19 05:01:53 -04:00
William Swartwood
1aaa19a969 HFP thanks update 2021-08-19 04:46:48 -04:00
William Swartwood
770df54403 Beta version with new game detection, added detected new packages to log file 2021-08-19 02:29:03 -04:00
William Swartwood
3e67b331ef Autoupload WITHOUT new game detection (for live release) 2021-08-19 02:23:43 -04:00
harryeffinpotter
26442e9516 Merge pull request #78 from konqiDAM/master
upload not listed games
2021-08-18 22:34:07 -04:00
konqi
3cd715afd9 upload not listed games 2021-08-19 04:23:33 +02:00
harryeffinpotter
0ecdaab240 Merge pull request #77 from konqiDAM/master
refactored codee to allow unlimited games upload in case user has multiple updated games
2021-08-18 19:07:15 -04:00
konqi
801ec1a874 fix or when checking null 2021-08-18 22:54:36 +02:00
konqi
ebf0f9372b refactored so upload uses a class and a list, now unlimited upload posible 2021-08-18 22:52:16 +02:00
konqi
06c534dc50 Merge branch 'master' of https://github.com/nerdunit/androidsideloader into nerdunit-master
# Conflicts:
#	MainForm.Designer.cs
2021-08-18 16:14:05 +02:00
Harry Fn Potter
04289885c2 Auto upload in progress 2021-08-18 10:05:18 -04:00
konqi
8e7b9490de Merge branch 'nerdunit:master' into master 2021-08-15 19:26:00 +02:00
konqi
cec1ff48fd added Enable Passthrough API 2021-08-15 19:21:34 +02:00
Harry Fn Potter
85fad7d3ad -----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-----
2021-08-15 12:33:16 -04:00
Harry Fn Potter
028c44ba64 -----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-----
2021-08-15 12:20:03 -04:00
Harry Fn Potter
7923adb4fb -----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/Rql1VoczcFAmEYjekACgkQx/Rql1Vo
czfNHA//duDNUGGUEaITUfCpqfVPkrd/S/EcPAztVw0AP4eq+f4Nn7tu5JEuhXf4
M2hg7kQhXFc6H3WadI/Code26AgL+qomLeR3nqSGwGt2jzBsTqXJo33KTAOP4/Br
GiyUh4ijPfDgjTOYuUApR/w/hNhYw/rWwiBrtyhnErGEQcge90U2fsJJdlO/zvdX
HfhbJnDCd6OKWlhAJDJyp6HZ4P0Nzoyo1stit+agLGa5YzT71ZYAVuKNVZtrrD68
ZZY3Atd+c1fuNRi1q7djC5v4KoikXAZ+xbfT9YN5WVQETKHIVtaEuw+LtCSIta8X
aU7bntHUkHghHgZagFp9eQ5442sHYQ8yXBhZ/nMM3prIllPHsCNSZ/Xun2FjkOVQ
cDPeSg5QH5eWH8huyxPGIahroiS99MJj67HqN+kWYwmKqL/FsP2fpq3KNFO4Myaj
vbT1QT2VFE86c34Pnvk2wFAZl0uh/h1gcH1ZLYHcibTsBlBCyVtAEu4P1d919P0T
8tWinS5F8as/VEsLp1gu82z/CyXPhJFgamZcN887C1HgtkyYQYqQnXNtrijjwR1x
07A+A1K6hFqE0v4k/IfT+rVlKRDo5PE2PGIcStTskheVeE9dNzpKoI/eKr3bFdLn
43MQdyJJJcc1Gm14zN6Oq5dIsMqSRyvmjy+ihIu+UDc777TIW2E=
=FKLT
-----END PGP SIGNATURE-----
2021-08-15 00:55:10 -04:00
harryeffinpotter
4b9d00a042 Merge pull request #72 from trainwrck/modified-date
Main table: modified date
2021-08-14 15:02:19 -04:00
Harry Fn Potter
0df0384f96 -----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-----
2021-08-12 14:02:13 -04:00
nerdunit
418a5ebc33 Merge pull request #74 from PaulIRL/patch-1
Update README.md
2021-08-12 08:25:51 -07:00
PaulIRL
43e2343676 Update README.md 2021-08-12 08:22:29 -07:00
trainwrck
5402dadbd9 Main table: modified date
Added modfiied date to main table
2021-08-09 23:43:30 +02:00
harryeffinpotter
8e3faf4682 Merge pull request #69 from konqiDAM/master
Second column now is wider
2021-08-08 15:14:06 -04:00
Harry Fn Potter
26db46e844 -----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-----
2021-08-07 01:42:59 -04:00
konqi
88bbbb2ced Merge branch 'nerdunit:master' into master 2021-08-06 20:54:26 +02:00
konqi
cbd54f7319 column width set to 270 2021-08-06 16:36:18 +02:00
48 changed files with 6146 additions and 2959 deletions

BIN
7z.dll

Binary file not shown.

BIN
7z.exe

Binary file not shown.

166
ADB.cs
View File

@@ -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\\platform-tools";
public static string adbFilePath = adbFolderPath + "\\adb.exe";
public static string DeviceID = "";
public static string package = "";
@@ -67,7 +68,7 @@ namespace AndroidSideloader
}
else
adb.WaitForExit();
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
if (error.Contains("ADB_VENDOR_KEYS") && !Properties.Settings.Default.adbdebugwarned)
{
DialogResult dialogResult = FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.Cancel)
@@ -90,10 +91,6 @@ namespace AndroidSideloader
public static ProcessOutput RunAdbCommandToStringWOADB(string result, string path)
{
string command = result;
Properties.Settings.Default.ADBFolder = adbFolderPath;
Properties.Settings.Default.ADBPath = adbFilePath;
Properties.Settings.Default.Save();
string logcmd = command;
if (logcmd.Contains(Environment.CurrentDirectory))
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
@@ -160,10 +157,6 @@ namespace AndroidSideloader
public static ProcessOutput RunCommandToString(string result, string path = "")
{
string command = result;
Properties.Settings.Default.ADBFolder = adbFolderPath;
Properties.Settings.Default.ADBPath = adbFilePath;
Properties.Settings.Default.Save();
string logcmd = command;
if (logcmd.Contains(Environment.CurrentDirectory))
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
@@ -223,7 +216,6 @@ namespace AndroidSideloader
{
WakeDevice();
ProcessOutput output = new ProcessOutput("", "");
output += RunAdbCommandToString($"shell pm uninstall -k --user 0 {package}");
output += RunAdbCommandToString($"shell pm uninstall {package}");
return output;
}
@@ -273,111 +265,22 @@ 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"))
{
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)
{
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)
{
Properties.Settings.Default.IPAddress = "";
Properties.Settings.Default.Save();
WakeDevice();
}
if (dialogResult2 == DialogResult.Cancel)
{
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);
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();
}
}
}
}
}
RunAdbCommandToString("shell input keyevent KEYCODE_WAKEUP");
if (!String.IsNullOrEmpty(Properties.Settings.Default.IPAddress) && !Properties.Settings.Default.Wired)
RunAdbCommandToString(Properties.Settings.Default.IPAddress);
}
public static ProcessOutput Sideload(string path = "", string packagename = "")
public static ProcessOutput Sideload(string path, string packagename = "")
{
WakeDevice();
ProcessOutput ret = new ProcessOutput();
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
ret += RunAdbCommandToString($"install -g \"{path}\"");
string out2 = ret.Output + ret.Error;
if (out2.Contains("failed"))
{
@@ -389,39 +292,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)

BIN
Ad.7z Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -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>
@@ -161,7 +161,26 @@
<ItemGroup>
<Compile Include="ADB.cs" />
<Compile Include="ColumnSort.cs" />
<Compile Include="Donors.cs" />
<Compile Include="DonorsListView.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DonorsListView.Designer.cs">
<DependentUpon>DonorsListView.cs</DependentUpon>
</Compile>
<Compile Include="FlexibleMessageBox.cs" />
<Compile Include="NewApps.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="NewApps.Designer.cs">
<DependentUpon>NewApps.cs</DependentUpon>
</Compile>
<Compile Include="UpdateForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UpdateForm.Designer.cs">
<DependentUpon>UpdateForm.cs</DependentUpon>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
@@ -211,6 +230,17 @@
<Compile Include="SelectFolder.cs" />
<Compile Include="Utilities\StringUtilities.cs" />
<Compile Include="Utilities\GeneralUtilities.cs" />
<Compile Include="Utilities\UpdateGameData.cs" />
<Compile Include="Utilities\UploadGame.cs" />
<EmbeddedResource Include="DonorsListView.resx">
<DependentUpon>DonorsListView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="NewApps.resx">
<DependentUpon>NewApps.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateForm.resx">
<DependentUpon>UpdateForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
<SubType>Designer</SubType>
@@ -244,6 +274,8 @@
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\DataSources\AndroidSideloader.Properties.Resources.datasource" />
<None Include="Properties\DataSources\AndroidSideloader.Properties.Settings.datasource" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -262,10 +294,13 @@
<Content Include="changelog.txt" />
<Content Include="icon.ico" />
<Content Include="ChangelogHistory.txt" />
<None Include="Resources\UpdatesKey.png" />
<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" />
<None Include="Resources\gametoupload.png" />
<Content Include="Resources\redkey.png" />
<None Include="Resources\greenkey.png" />
<None Include="Resources\orangekey.png" />

View File

@@ -32,26 +32,8 @@
<setting name="CallUpgrade" serializeAs="String">
<value>True</value>
</setting>
<setting name="BackColor" serializeAs="String">
<value>45, 45, 45</value>
</setting>
<setting name="ButtonColor" serializeAs="String">
<value>ActiveCaptionText</value>
</setting>
<setting name="SubButtonColor" serializeAs="String">
<value>64, 64, 64</value>
</setting>
<setting name="TextBoxColor" serializeAs="String">
<value>45, 45, 45</value>
</setting>
<setting name="ComboBoxColor" serializeAs="String">
<value>45, 45, 45</value>
</setting>
<setting name="FontColor" serializeAs="String">
<value>White</value>
</setting>
<setting name="FontStyle" serializeAs="String">
<value>Microsoft Sans Serif, 11pt</value>
<value>Microsoft Sans Serif, 11.25pt</value>
</setting>
<setting name="BackPicturePath" serializeAs="String">
<value />
@@ -147,7 +129,7 @@
<value>False</value>
</setting>
<setting name="QblindOn" serializeAs="String">
<value>False</value>
<value>True</value>
</setting>
<setting name="adbdebugwarned" serializeAs="String">
<value>False</value>
@@ -156,8 +138,62 @@
<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>
<setting name="GlobalUsername" serializeAs="String">
<value />
</setting>
<setting name="lastTimeShared" serializeAs="String">
<value />
</setting>
<setting name="AutoReinstall" serializeAs="String">
<value>False</value>
</setting>
<setting name="NonAppPackages" serializeAs="String">
<value />
</setting>
<setting name="LastLaunch" serializeAs="String">
<value>04/20/1969 16:20:00</value>
</setting>
<setting name="SubmittedUpdates" serializeAs="String">
<value />
</setting>
<setting name="ListUpped" serializeAs="String">
<value>False</value>
</setting>
<setting name="LastLaunch2" serializeAs="String">
<value>04/20/1969 16:20:00</value>
</setting>
<setting name="Wired" serializeAs="String">
<value>False</value>
</setting>
<setting name="FontColor" serializeAs="String">
<value>White</value>
</setting>
<setting name="ComboBoxColor" serializeAs="String">
<value>40, 40, 40</value>
</setting>
<setting name="SubButtonColor" serializeAs="String">
<value>40, 40, 40</value>
</setting>
<setting name="TextBoxColor" serializeAs="String">
<value>29, 29, 29</value>
</setting>
<setting name="ButtonColor" serializeAs="String">
<value>50, 50, 50</value>
</setting>
<setting name="BackColor" serializeAs="String">
<value>50, 50, 50</value>
</setting>
<setting name="AppPackages" serializeAs="String">
<value />
</setting>
</AndroidSideloader.Properties.Settings>
<AndroidADB.Sideloader.Properties.Settings>
<setting name="checkForUpdates" serializeAs="String">
@@ -216,4 +252,4 @@
</setting>
</AndroidADB.Sideloader.Properties.Settings>
</userSettings>
</configuration>
</configuration>

View File

@@ -1,4 +1,813 @@
-----BEGIN PGP SIGNED MESSAGE-----
RSL 2.10.3
Added offline mode merge.
~pmow
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.10.2
= Fixed issue where same new apps were being
asked for before 72 hr window if not marked as
free..
= Changed 7zip compression level to Store for
faster zipping for donations (since apks are
already compressed the file size only changes
1-2MB at most, so upload time will be virtually
the same).
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmFb+0gACgkQx/Rql1Vo
czedmBAAloms6WvjP1glyASuzm4wzyFtrf/yhDGpgXIeVJMoZ9tbp9SncvB+C4j5
uL9D/3lnZjhqulTHjxocccuKdp4iawHTlROFX6zWMOK2eGHY3rcDl0ZISxXNHvkw
YqoaDqXxk0Ib6+FY7RoINKKHGOnRLRuWivpWjhVDBpMt6A9PSmGpFAghrFmpgNqI
5+dGvXEgQiuK5INhA9pipM5d++X7EKQ3NyW9RKkeUduYyEKJ9nH6JbmTNm3VbvAP
l718n5MObvVGbRYgd/CCvAF8oIUoj5mBig/yFqJOHCeEZPEfRP4NHuxwpprtaotM
I6D3nBAvUldDy4B8tCJnlg0P6BAqg5AffcJyn5zoCPsgINcGMQfm5dFfcGN6Ckwv
cZ4G1eGxRgI+hkWmMVjZb3+r4T2lCWgdGWpE4EsdKRg6Q0ZaXZa8Hwm/YcM2N8lm
n5+Li2qXO9uRalCZZEMArFx6BpmvG6nT1bT5hLOFfN2XUsQ5ZK2vlxBPeT7sKWU5
L7l/WaLRmFlb4fKo/5kv0eYZMCa9TmpXo8MFIwH7V01InrWhB0p6cZA5j4DhVm/x
2zBVEoEYRVPnyfHYCc79xXFkF9v5Xq0GHeGC7DHqveMqx0VTj/kBlL18fYsHjXkL
YrvgSQ2gDv9IA02J+BuQq8dWFl7pWSCXULdb2y0yJA0lXe3mk7Y=
=qetN
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.10.1
= Fixed sort by Size (MB).
= Fixed issue where game list column headers
were appearing as a game in the games list.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmFX75kACgkQx/Rql1Vo
czewPw//c8KDn9EdatBCeH3lWCkrACrxAEtUAhv55Gu+KCZFw4t5YKFvuE0L+tL+
K5FYT225TVycWKos2LN2e5lRP1LZJPQ/xFQAon8sG/GgujtubgX/JPwpWKn0kl8B
2QZXwhrDA2wM1Cn78cuC6zpaQjbiofoaMWH9J8q/1nkjvXmxijoMGkz37raNfnas
sEr66FCyRb5naDujiNAXLg/wZokbWLirmupQLFb11ai6ahVExgqM+mPqNIadzSBW
3I0KMYBQ5zFNQCdjcAYOTIWBUaF+ObjdjsNhZNr2axmoxdcPvwG2ToAXHJjXDaIz
3iNRQRfBg3LobCBtZEjXT/DHlBWAP9++bacgNoB6VFEjStMfQqduYgUz2tuj0Zv0
OjtWnU/Fc8kAK3l2a+aGFKkBmW6dHtFhWzt9WpRiDJ3JXnjBXahy0Zhd1X1/g4dd
8ORzAbRj6cRbW8M42awqecN6pU3PxKdZBG4m0yX44uDXqsKHLWjufuWcc8p+Q3pE
h5TkYFfr7rpPAK6Qh5nRKJQPoSelruR7v4GMqfQIDbt267PTViSn+29EYh4Jn+Y8
YQoDC2ba+iYbqBez2ypBRgXiAk6lOmESKs+v77QAnx8pqprFLx3fkulB6gczwGwZ
B1Uq6SQR1i8IXGs3l8/bYByKBp/Xt9X+JkJggbj5UKOdeNsGTyA=
=Pn1f
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.10.0
+ Added code to store wireless ADB connect command in
StoredIP.txt so RSL updates will no longer wipe Wireless
ADB settings.
+ Added code to prefer wired if wireless ADB is setup
but user plugs device in via USB.
+ Added new Updater form for RSL updates.
+ Added new Donor form with listview so all detected
donatable apps will appear in a list.
+ Added NewApps list so users can select free/non-VR
apps. This will then upload to pre-determined debuglogs
server (so the packagenames can be added to blacklist).
+ Threaded entire list population procedure so RSL will
no longer freeze when the list is being populated.
+ Added Pull to Desktop option if user wishes to just
pull an app without uploading.
+ Added code to allow removing currently downloading
app as long as all other items in queue have been removed
first.
= Fixed logic for listview columns (removed duplicate
column headers when expanding RSL borders.
= Fixed OBB drag and drop and Copy OBB button.
= Colorblind mode switched on by default.
- - Removed gridlines from main updates list for cleaner
look.
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmFVDWAACgkQx/Rql1Vo
czcJCQ//RH66MUjjVqjCbVAj8XkIJfltZ0g8MhPANrlHQforWlvewpzSHV561cwv
yYxlbM84UQhzjgayBeLHXjbeMbvjJk/1lE1x5EWbZ4hOLVaGseG4ffM+O+OyCIi3
m4O9Z3Xj2+W9/YPjSxQ971IiaxjWeWPBZgM8NYhdzv5lQ9Khq1Y+gcIb0hGbXIgy
CEiFuBifEn89cJl66TqsIyPP1dBKYSJcon/sGgjlW+2iKptrUD4J1Gy6YkQLlYPI
pzMPYP9gsXFq4ihNULsFYW4phEA2S2S6EKzCLODSoAcleuDvFboJiG3dD5xsMYam
EEvtt4vDNPyVLmjgBiGWrPs9yApL7Z5al+nqdg+MxHzZGb/WVVi1K18UI5iCa92P
7pYmY5IA20nFfT+8VBPh6t+aAQxlAAXRHeTSAT1qH2RyTd17FgX5AjQLANf7pY1X
x/emyue8BcoLci5nfnsstRtzXAzkCps6KJLSpRTcjfCCfzkR6azdSCl++p0+rmL6
bfbpdw6WR8R+g+An2WSs+nqj02GIcutX3XXlbk18bIsLTQUj7cWrLXDoj06RJNUo
knEWvLsv911TlZkwnh4D4UQXJQHL/9LXWbzcQ5FrhpMUqLJ4LuqhBvPRnUrSh49/
VGm0e1mdsuOJAhi6IDN+0xEq8dLahpMGDlK6VbxEfswY0J3rVSE=
=gISr
-----END PGP SIGNATURE-----
RSL 2.9.9
- Fixed startup crash after updating.
- Fixed adb version clashing issues.
-HFP
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.9.8
+ Added timer that detects if user has uploaded an
update to an app, if they have it will wait til the
set amount of time passes to ask again.
+ When new app is detected user is now asked if it
is a app.
= Fixed debuglog/crashlog upload.
= After sending debuglog to server RSL will now properly
copy Debug Log ID to clipboard.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEwowQACgkQx/Rql1Vo
czfJ2A//d/BMeO3USIMSQxO5McixrdkmY+VdNBK5q3tfAo2BTgEN7N2Ty2jGc3mz
jIpVCT14PdVCVoQYI5PbzkjvTnaqp8SkCdYqHONELOld/sENOdKJJuo9bIQmy/7r
oT1DTJJH993RZmJ5qn3TxBddvY7Ie97W84I20suydBo4MheHadyQtGJLXaJRhJpT
fjSEElYMb9jupeAT2A+HTdny6hV/dWu7nyJmS677V8a8uk8kGi3zm0bS1pX728Ew
sbBvaexqzlU/JOeiZCKyJL7P1TLQkQUxE3q7kg/h1d0laznYCjMn3nV0IBt2/+E1
e+uVmWvuDBXQjp1QthAZ8fYhPjgjhDtu0dgsilXefIV1QHmTaIvw8CvyqBl8LfSJ
9xCm8Z2GGCoGsPnNqHK95dRvcuK82k81fPuZ/LqNArrLerJZKY5YCRPleW77v9LR
45K3wJYYXXntnzr7czKVw93qByaPZzXB/DcAEdbBEWdzJ2VLCzXZSpS45wf8i7jO
7R4lvNlbp8ff2K+1hnIaJ9+n0RSuPvmVjP8uLxs9Hb4NyoWjLbZTxMhaF6BQA/wu
z1r8ZBbxr/Q3ekjutLZY/tytTt6KPCPhaIAm2/In1qnbBHzOGnnCCRfr9D5XRkV4
Ht4qqc/NHpTax/+qgnLlda/UkmG3ZwN/JAz/SZpEMqXEGO5t4vc=
=sTUc
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.9.7
= Fixed bug that caused error message to appear
when no device is connected to PC.
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEuDXUACgkQx/Rql1Vo
czfmuRAAmwwn2DE1Qu0sDcWFhFF91ApPkjKNbWS1m+Kqi5Zu+Yb1XB3R4U7CVb8n
SfzR3khr0CD9EodJJZkwTmZJYABgNNy1jCp2HsEYG1DhJUfcJ1uIjdwvPqQpqex5
unGiLusEr1WpNp1Vuk9rBvvZOcH1ci/mRWqWdj6W6CLzZ5R3TeN0fKIFJ4B7ea7m
zRNGBA6i3YkP9jbUy16w8J6mYGzvHLg+ZfASG4jCOSyo4p+RQNWhDJEugjw+YImb
vQWiGedfr2c945Bo8Noaul8Pjh61ds1uN4AkobTVWNJIY/IpREFFjY/hoc/fhx9s
H3JPdJi3iaKq0dqhyNp8nlm4sv3y6bX9hXc0YWQMXjkzLg5ug1hHEMIIVk+tS+uU
bf8h+dVshYovE+N+4fjSz+hG9kzE9I6nvtI+gLpTJdxCyCXjjxlldrmuVE6nMd83
bDkKMJvb7Eo9KdIHmxs97TSZcjdfJEazzVXbs+dDmEJ9rGJYFIqydTQ/Pol4afvw
/tr0AmYUxCnkLgufmKjeX3Z/UVAzAs02MuT/Z639YwNoOtvg1bUzwWAzUQLwMdqV
P+d0xJQSEEr65GiwgdSsQY1R/uaGnggTXwIQwmkZPjJuUyNDD6h0zRcEKplDt7nd
jgjJJbVGLafcGLE1OahLlPnbMB24lWvfQM9ST0GuYWaINHCrQcI=
=XacL
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.9.6
=Fixed obb copy for similarly named apps.
=Added packagename to shared app zips.
=Fixed laggy upload when sharing apps.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEtk1MACgkQx/Rql1Vo
czcn4g//RvtKxuXtBNxisnxncuXkq559ZX2zb7AN2mf31fUmv3lHtF2IVJnXfb0Z
gSPJocUNgO7Hf3jyAoKF+zRxF2TrSsg48S17DWFWxxMZ6fA6we6yWh7Gk7FYTUin
r8uoq1IyF0YMix4NRIinCO+2NFo5aniNi8N1R3IW8F11aeN0i4FRICgpIVuBdzxV
LCg1Q4vAbWHtOOFH3YZvNBkOl1GIV8IYQT4Kr0y7MShl3C7IsVDFsdR2nfScQRhL
iDGH2VXULWm/pUk9AVMQsq3AezVyoONIQEjzs5Wz6D/yiB4faZ9VDLmJ4KbXCsfG
FS6JYh8fnJvt2iTZ0YaIsKm1FeuCISdOioTqcpNd+DvKxySw8rJv2t6yRSV5u2l3
ZxPXp48DLJCkgSQSJMeG/JiNZigDzG0ydenRYZkZtpWNsDRVUx/F/REKXevvlLIj
G/Ng0og85tl6XypFzWMMR6ISE3Cj6xkzSkkXluSelZRdx9NeV2UKl5D07tZ5V8f4
VooJqK1qBn+OXhdPRHIm8pOicvUwKaKCrIrWi2yyvFHDaTQDpUo1jc2WEqCBwSoZ
/f/R5G7lM0KdWXVdMSZleNoO2lhUujS40uQ4ycelzBlzm0qMotpeq9E/QHlCQ3d3
pe7uMX6RDlrH09iWG55XHHWXSfDKHFMhPztRcI6apFR3hVA/fHE=
=Ty3D
-----END PGP SIGNATURE-----
RSL 2.9.5
Hotfix for online issue.
-pmow
RSL 2.9.4
= Changed install.txt logic to search
for any .7z files and use Zip Extract
function from GeneralUtilities, should
fix version issues with users who have
a newer 7zip installed than the 7zip
exe included with install.txt games.
= Fully moved ADB folder to
C:\RSL\platform-rools and removed
adb folder from Rookie directory.
Rookie will do this automatically upon
first launch after updating. This will
make updating to future versions of ADB
much smoother. This should also fix issues
caused by having multiple version of
adb.exe clashing and fix AAPT issues as
well.
= Updated 7z.exe and 7z.dll on Github.
HFP
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.9.4
= Changed install.txt logic to search
for any .7z files and use Zip Extract
function from GeneralUtilities, should
fix version issues with users who have
a newer 7zip installed than the 7zip
exe included with install.txt games.
= Fully moved ADB folder to
C:\RSL\platform-rools and removed
adb folder from Rookie directory.
Rookie will do this automatically upon
first launch after updating. This will
make updating to future versions of ADB
much smoother. This should also fix issues
caused by having multiple version of
adb.exe clashing and fix AAPT issues as
well.
= Updated 7z.exe and 7z.dll on Github.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEsQnoACgkQx/Rql1Vo
czeKPRAAi0l9Ti06d48p0vd6Rziw3mHLVXg5dDOZWyrNULu1Y8axnSCVnZOVduVD
ftY0fVjTNNv7aU+fyWtH2Gr33CtJ6DvaQpj5RIsFiZpiTeDN3cOq2Ina55jtVvEl
ZrBVlLdXtv/L/W3ltrMzc/sNnJhrEfBXq7lNDFMj7IT31miphRZ1X9pgIdqGIpdE
gwcVxxkOu/5PXMzR3+eclpVePeagtJQNBH8dYUBQ9OziKObpzAfVYvoYS94MTYUY
ZdoHP5tfXEsuW0tQ6G1dvGrIi+ty8EJWX3GS42mkPW6xlyKbSOdu/IQa4KFPmpkK
7QwCMDzU5FgxJhg4+j35z/4BxJUzUHeTnp2xQYw/HE+GWdiJklIpZoOeqFQ+QLy/
6jwyhqcPD7cni2HMrCi4HxT0GcuVV5jrqqBAtCHdecglH90EMBCS9DrvmZyw1JgA
b9bCPQwWvVRLFw8HfiybiqVM98C2kW3TUsprGJOcnT6l1SzKlHEwiSMJSTVWshuu
bG8Q19gfhKSLEjTdjKVYV9WDHp8it+lrF6ETdneP4kcSsLhigYSgz0AeETx62Ugh
D13MyxcS6K9XqoRGy5Dr3gL/qkT0I5T6dsWL6vj9o317uexIO9sPkmrGTktbGUn1
heW2jD324PwyuuPxxoqM1lVKVquUIS0Difx+cqlJHY0lWqIk/Ck=
=lZeM
-----END PGP SIGNATURE-----
-----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
+ 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 AAPT to repo along with a timer + logic to
detect packagename for automatic reinstall when drag
and dropped installs fail.
+ Implemented Size(MB) column to see app size prior
to clicking Download and Install.
= Cleaned up automatic reinstall on apk installation
failure for Download and Install, it should work for
most users now.
= 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
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEkn0oACgkQx/Rql1Vo
czf7Mg//cU+DnFex+on9JBI5+K2bRfmp6RUhYHQKXD7V/od4vMxWP2jXt7F6ebat
32KI9GeQfCubRuFEJKBRQ5BfsZXqZtWbLoYtSfrPsk6fz5JzK5PfzAayRLEmS3nV
+3Gu7w7wxlseo+IzN95mvEZOYOaFnv7rieGJsXoEUVh0xZnCF7CzTe6MZ6JSdpCY
LUWOiZ2Krxc8W/tD45JLGSxHkMpFlnZO9DLISyN65SdkvjcridbpTWSMiQJPh5KA
jTiOM4PzOZo6YCoTsIWy4rvhkIqhdNJdJZK4qb0vN40wvqgbFI7c7yh/rcb/xi7R
Ruva6Z2zIJi122lEsohG9TfeNODxIuPGR0rLAJDuSPpri0ukxLMIHPg0ViBQ2Z7D
jPmDnEQDKPfaj1gbvAXuk5qd8ogOM3CCpBoaHt3tMFhuCUgxPYx5RxMPjdn8bOvR
fjkEfMdvS55pI04seQued6KIlYnkkUGntIcSbBJfVhW8pev2iPxICC3Rn4ejSAnM
J3fIjLsUbHxM501HgM8ttWjniEb5ExGFUI/PvF7rNw2WjYT8wJltv8PUWNZoQYy/
Upif9IzLVORN9TsrnbxUQBtOZgmvfbCbj+rotYhvj6igo1C3ZX8t001CknljNBCU
/9Y18yJRWJ7BpbEbzYpKBofphZzaWI9GN2hM6wV18An8sMEbb4A=
=kVMl
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEkntYACgkQx/Rql1Vo
czdB/g/9FHUbQt4tTHitnCBjfKmxRY5qcmmvSQM1LRKxoWqOMgl6wmX/oJQFnR1/
DL+zc5nf1Qmjll7OyLEZbft2p0+KnGuGNCcB4aB36VcsMEED6j6L63OZeI045KY6
cMAmcyR0A/OcfsiqaHjXVOyp8yI4RCGa/M2HwBvZOypxbdTKlftdQEOQ9bVFxV8p
1L0NuhHpfewnke1WG3MRjiXlu44athOYh6fACO0/+TTJwmtD6w9A9fc+0A70jqp6
pz9WVKzrnVFnq5CbHSQIrmDoQfiqyIxUEmrMKcZipjHfkVa0ZZ5Jjp9QuIozEskp
rLxoCawe2NmfHhe4frxF6ngRCVD0Xcn8YmgQAbts+5+PqnvK+DyL0C53BkONUeCp
ODAqiTjqWWfsILkpphPDQI4/WWjKURLTKFbse5jboBHNeF810y9gfBC0xHS8MeGO
k//02mbJ7gHonRBpuNy0ba80tRHYtzr4OL/gd9YUyVd2AYP/GEptIoWM7ESqR1Hy
g7oxD8JGR/WgLIJD1stYC3eh2Fy36J6oJPUvT85EUbPznY7UIL+upT/9wrXPzZqd
iI4o8DkPq/9yMEWBwV8cikgllx+KXWgwHbG8lY0uvuxPX26UscGyY1bNytb/WMfG
lJaztf9Yo7uBrSIdicEeED1BN+/q/QmsNzR9mpFrqfrqyDB91yA=
=z7JR
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.8.7
= Added code made by Ivan that makes
RSL load up much faster.
= Added confirmation dialog when using
Upload App button in case of accidental
misclicks.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEhgj8ACgkQx/Rql1Vo
czc+TA/5ARiMcBdvxbKjB6jZKFDGZvEh0IpPyHRJzLpuZhHI+qR91P3UI9fXCrQ6
Vzi6Nc0I3YMhPIpNnp9uxWkNfeIUDTdBUi+wwIpMopupVxLCEJkR7ZGkjJHFWPYn
Hm19BLmmv9dctJwQlPLyaDgnb0+GKDRzZF8xHKBopbmModbhHwnt0UHTmodD4syc
DinfaVpM+RwGZOptUyzwqLR51aQb03JrbHS3gkB40EbsIr6brZd50lahSvVMW8W4
Btc3gf0rig+BrjXgUkNFlZ1PZ+jM1+12dWflYNvMYCoQ7bRc7Kds7IqCiPIweRF1
2YR5jBh52C2ChhY3sfbc8G6VkbXW7N6ktz/11mrIc7Mc7X4ibpsDzQCUyDiuXNwi
wm3ikq5liQYlM/I/awutD8yDcJPGEoUui8wYehwi23Pzujdh74bBYd9F6cQLg7Tb
AsRLvEDY/n7gsDzqdt/oqUkGtt0x4c0K5ZPEIe9pcQvfNln7j/Mf3BNC4HZRkeei
+FIyuhVf/w4dcz3xm1g5060N2eQLgXCk7690aak3l9ucghivUFlrKGe8vRk7qtE6
FebUemHtTgurKz1bm8XCZjfvq0IR7MY+iGgIfKtXbM8SqjxIDhE7P1QuGXeZD9y3
nkjY4+FHkT7BXSlOUpQ/6tR0wGYxtrxuNfwlXKGEqJlzPBbmCAY=
=Zdt7
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.8.6
+ Added Set username option to Quest
Options. This will work for all apps.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEgoXkACgkQx/Rql1Vo
czexgg/+P9mlydoik903J8wSbVvVvRhxypl+TI7ijkwU++qm4iGCc1ntqz/E/yAZ
SpVjfuGpr3GV/B3ZkCKKvwvrwUr11CJFteoQ++HVmDlRwUu0DpNFIwiIi46E2ca8
28Y3+A55WeNMFcLEBTB8nLUd7++YVhPs4ZKNOkCu+OYGMZN/2B6kPS9674YvRCZv
7yqxmYBs5tVXHqoFJEGC6fMIfMN7rF1zkZ5u5qOpOeGGkFOeCyrtv/7fY7XmL9Qj
i3mPOn8OV7N8wMoXt1j7cagdmYh2rwK90raCovItqWmCoy2HoBtxM6624+q5kt0i
2ne5s/p3yiwlW4tRFHsCzseN3N6gEv3kQ2gSN5JDfyUlTOZwMrYyWvNHrYsuJH/U
ibxPQFInULg2RmuARvRZRngtvxPIQsANuFyzCU2jGUOPvrtHfDtvnAL1WtHZtmga
x1iiw86GKfvmkqPq9Sz6NXczCOyE6d7knfGNNqK5Ec7D2I/O2aw/9Ssz1TiAhj9S
vIiw0ABOTI0VrSic63y0qkShq81BcaYd7IFX2r++JnC+LEoYuA9EriaqKqwCLgLU
ghwBYOSnkh7/mGu7eBF8SzYk3QlhC5+5IcsQtwNT97Z2DqVxzlT0CwFot9puObnO
AkeRZ5JtDd9w3RmjcMIVVpqyUvC8guDlBgMsrwFNiRcxyY08+es=
=T/ZC
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.8.5
+ Added OPT-IN installed packages check,
this will be used to add common free apps
to a blacklist so a future version of RSL
can ask users to donate new apps.
= Fixed logic for apk signature mismatch
automatic reinstall.
= Increased timer for apk installation
failure to 3 minutes.
= Fixed blacklist implementation for
updates to apps already on RSL.
- - Removed 2nd confirmation dialog for
app uninstalls.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEfX4kACgkQx/Rql1Vo
czch2BAAgPAPx8ziiX8e+IH9wBTBbj+Z9V8/GCaehCYd2SdOi9n4rHwzKL2S96mb
VAyEuYyEnPc+sGIIVoUczAeoBOFpt6rwVwAysHfX85+MFcaJ8x/k5iAHwUYUDbaS
retbuPO4YIsPHI38DWscOO0G/uD+caa5sf6/hYr6wLhIIozAmE3L9XtUuYO6kKSo
m2hBAf728MWODRHH0G6+ktJG1sL1l5x66A+wvRkKHoYZFGLrAM126yGWIQlmWdtN
F2AzBPXvIX09wtpiXQwLAc0GNF/wrazd8A5d9l0c+Rkl2lmist5k9xBD+MAbehdb
QI1QgKXDvEZIp/+B4BgaB193HxZZFphVkRtera8mlohmiHVzunFcpHonOrc90jjk
7fAMiieR/EgaRGXux9a24s/q32L/dHxqUtZfHhYbgRtWe4Kcm9AbVkLDVSAPiQik
5k8fFRkokRQVgd5i/G0fzMPLHfKIn9afQ5oli7WxL761JQcx7HDb6/HS0BKiyZWN
CsAxNjHt+4B/k5lvJNSCJL8mjQMjTViiPNYE9OmM6SzttvYtn8NGE6+fKb/e5x7+
DjQuOVZ3b6TtKnvmx/Q5TbF82P23p9I6Aa32mMO8edD2CYKIF8bmDNlSGjWs3EC9
OxsIksCmNIb4pxY25ejlN/X92/75YNsxrI+dYhXJPMOm39WQtVY=
=EPMk
-----END PGP SIGNATURE-----
RSL 2.8.4
+ Hotfix to update the exclusion list of games we need updates for.
-----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
+ Added BMBF drag and drop option for Quest users
in SETTINGS menu.If users drag and drop BMBF song
zip files onto rookie either one by one, an entire
folder, or many zips at once Rookie will automatically
extract the files to a folder then push the folder
to your device then delete the extraction folder.
+ Added automatic timeout during APK install that
will ask user if they'd like Rookie to automatically
uninstall and reinstall the app. Rookie will check
for save data and copy it to a folder temporarily
then put it back after reinstall.
= Cleaned up startup tasks so booting Rookie should
be faster.
= Added automatic deletion of previous crashlog to
decrease clutter in Rookie directory.
= Added automatic installed app refresh after drag
and drop.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmENfVMACgkQx/Rql1Vo
czcxaw//bTVxR5gt1F4c+gDT80dVfJa1Js3h5vSjGgCHjQdmsU6eaU5BQGoUorkw
6ewYF48jt84xDNj/VirkeqHV95mvsj9sksi+mxvELnAa0NdRVYj0DCqZWB/mNDfx
lYZGp2SwiGK3a6KfMpPcbi2IEWqc9ZWpdazIDy6l3oGSBAYaoVqfjl+CJQQpomIJ
x7f67Ei633dyhu8+0612LVu+tZ4ibN2pAAu1Dd5+uvlODUiYLPadhZkLwk+CYC6p
ifs/1qB/fsXJS6YJyPCmuZCbYN//jLCD9ECQ5cqZbTTU82Ub2lDE+TcdO/CsxSxU
pueIxZ+7C5TceiNzsDfKfeCWu65hZlBW1xKReDtLPFzZdZuyXYTI0v00kvapwJIO
C9Eq2qxZvdnp05tw8nY1V4Ae5Jl6oLN0BwWSZv50NhQ4Dpmbl8pemk1r5iZsRhGA
MWQCytBCaX/3EpJda8ifGJxj3kOno2ewbwXdZEMN7QqWt1scN9HxNXFWEJwO29HV
pT6ra3T0OrOBLmCQGt4w71HGFK2t+c7aPq0yI/sayguB9zjR/GpTyekg7nHXZh9g
c+WD5umN2xA0LuLjvvePKhhKTBT6ebmQJh1CRNIRtA150ULbnTAIpZJTDZyhcLXi
IUfWyWPA4G3GsRUqGWf97O2G2bIbbIzLeg3uEdxF7T9LOigYgpU=
=Rwj0
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.6

View File

@@ -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);
}
}

63
Donors.cs Normal file
View File

@@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AndroidSideloader
{
class Donors
{
public static int GameNameIndex = 0;
public static int PackageNameIndex = 1;
public static int VersionCodeIndex = 2;
public static int UpdateOrNew = 3;
/* Game Name
* Package Name
* Version Code
* Update or New app
*/
public static List<string> newAppProperties = new List<string>();
public static List<string> donorGameProperties = new List<string>();
public static List<string[]> donorGames = new List<string[]>();
public static List<string[]> newApps = new List<string[]>();
public static void initDonorGames()
{
donorGameProperties.Clear();
donorGames.Clear();
if (!MainForm.DonorApps.Equals(""))
{
string[] gameListSplited = MainForm.DonorApps.Split(new[] { '\n' });
foreach (string game in gameListSplited)
{
if (game.Length > 1)
{
string[] splitGame = game.Split(';');
donorGames.Add(splitGame);
}
}
}
}
public static void initNewApps()
{
newApps.Clear();
if (!DonorsListViewForm.newAppsForList.Equals(""))
{
string[] newListSplited = DonorsListViewForm.newAppsForList.Split(new[] { '\n' });
foreach (string game in newListSplited)
{
if (game.Length > 1)
{
string[] splitGame = game.Split(';');
newApps.Add(splitGame);
}
}
}
}
}
}

295
DonorsListView.Designer.cs generated Normal file
View File

@@ -0,0 +1,295 @@

namespace AndroidSideloader
{
partial class DonorsListViewForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.DonorsListView = new System.Windows.Forms.ListView();
this.GameNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.PackageNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VersionCodeIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.UpdateOrNew = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.panel1 = new System.Windows.Forms.Panel();
this.SkipButton = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.bothdet = new System.Windows.Forms.Label();
this.newdet = new System.Windows.Forms.Label();
this.upddet = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.TimerDesc = new System.Windows.Forms.Label();
this.DonateButton = new System.Windows.Forms.Button();
this.DonationTimer = new System.Windows.Forms.Timer(this.components);
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// DonorsListView
//
this.DonorsListView.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
this.DonorsListView.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.DonorsListView.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.DonorsListView.CausesValidation = false;
this.DonorsListView.CheckBoxes = true;
this.DonorsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.GameNameIndex,
this.PackageNameIndex,
this.VersionCodeIndex,
this.UpdateOrNew});
this.DonorsListView.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonorsListView.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonorsListView.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonorsListView.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.DonorsListView.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.DonorsListView.FullRowSelect = true;
this.DonorsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.DonorsListView.HideSelection = false;
this.DonorsListView.ImeMode = System.Windows.Forms.ImeMode.On;
this.DonorsListView.Location = new System.Drawing.Point(6, 6);
this.DonorsListView.MinimumSize = new System.Drawing.Size(100, 100);
this.DonorsListView.Name = "DonorsListView";
this.DonorsListView.RightToLeftLayout = true;
this.DonorsListView.Size = new System.Drawing.Size(419, 219);
this.DonorsListView.TabIndex = 0;
this.DonorsListView.TileSize = new System.Drawing.Size(100, 100);
this.DonorsListView.UseCompatibleStateImageBehavior = false;
this.DonorsListView.View = System.Windows.Forms.View.Details;
this.DonorsListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.DonorsListView_ItemChecked);
this.DonorsListView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.DonorsListView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.DonorsListView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
//
// GameNameIndex
//
this.GameNameIndex.Text = "Game Name";
this.GameNameIndex.Width = 219;
//
// PackageNameIndex
//
this.PackageNameIndex.DisplayIndex = 2;
this.PackageNameIndex.Text = "Packagename";
this.PackageNameIndex.Width = 0;
//
// VersionCodeIndex
//
this.VersionCodeIndex.DisplayIndex = 3;
this.VersionCodeIndex.Text = "Version";
this.VersionCodeIndex.Width = 113;
//
// UpdateOrNew
//
this.UpdateOrNew.DisplayIndex = 1;
this.UpdateOrNew.Text = "Donation Type";
this.UpdateOrNew.Width = 85;
//
// panel1
//
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.panel1.Controls.Add(this.SkipButton);
this.panel1.Controls.Add(this.panel2);
this.panel1.Controls.Add(this.bothdet);
this.panel1.Controls.Add(this.newdet);
this.panel1.Controls.Add(this.upddet);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.TimerDesc);
this.panel1.Controls.Add(this.DonateButton);
this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel1.Location = new System.Drawing.Point(-7, -7);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(463, 345);
this.panel1.TabIndex = 1;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
//
// SkipButton
//
this.SkipButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.SkipButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.SkipButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.SkipButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.SkipButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.SkipButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.SkipButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.SkipButton.Location = new System.Drawing.Point(22, 277);
this.SkipButton.Name = "SkipButton";
this.SkipButton.Size = new System.Drawing.Size(102, 36);
this.SkipButton.TabIndex = 1;
this.SkipButton.Text = "Skip";
this.SkipButton.UseVisualStyleBackColor = true;
this.SkipButton.Click += new System.EventHandler(this.SkipButton_Click);
//
// panel2
//
this.panel2.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.panel2.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel2.Controls.Add(this.DonorsListView);
this.panel2.Location = new System.Drawing.Point(16, 43);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(430, 230);
this.panel2.TabIndex = 2;
//
// bothdet
//
this.bothdet.AutoSize = true;
this.bothdet.BackColor = System.Drawing.Color.Transparent;
this.bothdet.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.25F, System.Drawing.FontStyle.Bold);
this.bothdet.Location = new System.Drawing.Point(125, 7);
this.bothdet.Name = "bothdet";
this.bothdet.Size = new System.Drawing.Size(213, 17);
this.bothdet.TabIndex = 3;
this.bothdet.Text = "Updates/new apps detected!";
this.bothdet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.bothdet.Visible = false;
this.bothdet.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.bothdet.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.bothdet.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
//
// newdet
//
this.newdet.AutoSize = true;
this.newdet.BackColor = System.Drawing.Color.Transparent;
this.newdet.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.25F, System.Drawing.FontStyle.Bold);
this.newdet.Location = new System.Drawing.Point(156, 7);
this.newdet.Name = "newdet";
this.newdet.Size = new System.Drawing.Size(150, 17);
this.newdet.TabIndex = 3;
this.newdet.Text = "New apps detected!";
this.newdet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.newdet.Visible = false;
this.newdet.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.newdet.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.newdet.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
//
// upddet
//
this.upddet.AutoSize = true;
this.upddet.BackColor = System.Drawing.Color.Transparent;
this.upddet.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.25F, System.Drawing.FontStyle.Bold);
this.upddet.Location = new System.Drawing.Point(163, 7);
this.upddet.Name = "upddet";
this.upddet.Size = new System.Drawing.Size(136, 17);
this.upddet.TabIndex = 3;
this.upddet.Text = "Updates detected";
this.upddet.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.upddet.Visible = false;
this.upddet.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.upddet.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.upddet.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
//
// label2
//
this.label2.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.25F, System.Drawing.FontStyle.Bold);
this.label2.Location = new System.Drawing.Point(101, 23);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(261, 17);
this.label2.TabIndex = 3;
this.label2.Text = "All RSL apps are donated by users";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.label2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.label2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
//
// TimerDesc
//
this.TimerDesc.AutoSize = true;
this.TimerDesc.BackColor = System.Drawing.Color.Transparent;
this.TimerDesc.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TimerDesc.Location = new System.Drawing.Point(36, 321);
this.TimerDesc.Name = "TimerDesc";
this.TimerDesc.Size = new System.Drawing.Size(390, 13);
this.TimerDesc.TabIndex = 3;
this.TimerDesc.Text = "Don\'t share free apps. RSL will extract/upload apps in background.";
this.TimerDesc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.TimerDesc.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.TimerDesc.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.TimerDesc.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
//
// DonateButton
//
this.DonateButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.DonateButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonateButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonateButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DonateButton.Enabled = false;
this.DonateButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.DonateButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.DonateButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.DonateButton.Location = new System.Drawing.Point(130, 277);
this.DonateButton.Name = "DonateButton";
this.DonateButton.Size = new System.Drawing.Size(311, 36);
this.DonateButton.TabIndex = 1;
this.DonateButton.Text = "Automatically share selected apps";
this.DonateButton.UseVisualStyleBackColor = true;
this.DonateButton.Click += new System.EventHandler(this.DonateButton_Click);
//
// DonorsListViewForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Gainsboro;
this.ClientSize = new System.Drawing.Size(449, 336);
this.ControlBox = false;
this.Controls.Add(this.panel1);
this.ForeColor = System.Drawing.Color.White;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "DonorsListViewForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.TopMost = true;
this.Load += new System.EventHandler(this.DonorsListViewForm_Load);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseMove);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DonorsListViewForm_MouseUp);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListView DonorsListView;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Button DonateButton;
private System.Windows.Forms.Label TimerDesc;
private System.Windows.Forms.ColumnHeader GameNameIndex;
private System.Windows.Forms.ColumnHeader PackageNameIndex;
private System.Windows.Forms.ColumnHeader VersionCodeIndex;
private System.Windows.Forms.ColumnHeader UpdateOrNew;
public System.Windows.Forms.Timer DonationTimer;
private System.Windows.Forms.Button SkipButton;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label bothdet;
private System.Windows.Forms.Label newdet;
private System.Windows.Forms.Label upddet;
private System.Windows.Forms.Panel panel2;
}
}

171
DonorsListView.cs Normal file
View File

@@ -0,0 +1,171 @@
using AndroidSideloader.Utilities;
using JR.Utils.GUI.Forms;
using Newtonsoft.Json;
using SergeUtils;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.NetworkInformation;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AndroidSideloader
{
public partial class DonorsListViewForm : Form
{
private bool mouseDown;
private Point lastLocation;
public DonorsListViewForm()
{
InitializeComponent();
Donors.initDonorGames();
List<ListViewItem> DGameList = new List<ListViewItem>();
foreach (string[] release in Donors.donorGames)
{
ListViewItem DGame = new ListViewItem(release);
DGameList.Add(DGame);
}
ListViewItem[] arr = DGameList.ToArray();
DonorsListView.BeginUpdate();
DonorsListView.Items.Clear();
DonorsListView.Items.AddRange(arr);
DonorsListView.EndUpdate();
}
public static string DonorsLocal = MainForm.DonorApps;
public static bool ifuploads = false;
public static string newAppsForList = "";
private void DonorsListViewForm_Load(object sender, EventArgs e)
{
MainForm.updatesnotified = true;
if (MainForm.updates && MainForm.newapps)
bothdet.Visible = true;
else if (MainForm.updates && !MainForm.newapps)
upddet.Visible = true;
else
newdet.Visible = true;
foreach (ListViewItem listItem in DonorsListView.Items)
{
if (listItem.SubItems[Donors.UpdateOrNew].Text.Contains("Update"))
listItem.BackColor = Color.FromArgb(0, 79, 97);
}
}
private async void DonateButton_Click(object sender, EventArgs e)
{
if (DonorsListView.CheckedItems.Count > 0)
{
bool uncheckednewapps = false;
foreach (ListViewItem listItem in DonorsListView.Items)
{
if (!listItem.Checked)
{
if (listItem.SubItems[Donors.UpdateOrNew].Text.Contains("New"))
{
uncheckednewapps = true;
newAppsForList += listItem.SubItems[Donors.GameNameIndex].Text + ";" + listItem.SubItems[Donors.PackageNameIndex].Text + "\n";
}
}
}
if (uncheckednewapps)
{
NewApps NewAppForm = new NewApps();
NewAppForm.ShowDialog();
this.Hide();
}
else
this.Hide();
int count = 0;
count = DonorsListView.CheckedItems.Count;
string[] gamesToUpload;
gamesToUpload = new string[count];
for (int i = 0; i < count; i++)
{
ulong vcode = Convert.ToUInt64(DonorsListView.CheckedItems[i].SubItems[Donors.VersionCodeIndex].Text);
if (DonorsListView.CheckedItems[i].SubItems[Donors.UpdateOrNew].Text.Contains("Update"))
await Program.form.extractAndPrepareGameToUploadAsync(DonorsListView.CheckedItems[i].SubItems[Donors.GameNameIndex].Text, DonorsListView.CheckedItems[i].SubItems[Donors.PackageNameIndex].Text, vcode, true);
else
await Program.form.extractAndPrepareGameToUploadAsync(DonorsListView.CheckedItems[i].SubItems[Donors.GameNameIndex].Text, DonorsListView.CheckedItems[i].SubItems[Donors.PackageNameIndex].Text, vcode, false);
ifuploads = true;
}
}
if (ifuploads)
{
MainForm.DoUpload();
}
this.Close();
}
private void DonorsListView_ItemChecked(object sender, ItemCheckedEventArgs e)
{
if (DonorsListView.CheckedItems.Count == 0)
{
SkipButton.Enabled = true;
DonateButton.Enabled = false;
}
else
{
DonateButton.Enabled = true;
SkipButton.Enabled = false;
}
}
private void SkipButton_Click(object sender, EventArgs e)
{
bool uncheckednewapps = false;
foreach (ListViewItem listItem in DonorsListView.Items)
{
if (!listItem.Checked)
{
if (listItem.SubItems[Donors.UpdateOrNew].Text.Contains("New"))
{
uncheckednewapps = true;
newAppsForList += listItem.SubItems[Donors.GameNameIndex].Text + ";" + listItem.SubItems[Donors.PackageNameIndex].Text + "\n";
}
}
}
if (uncheckednewapps)
{
NewApps NewAppForm = new NewApps();
NewAppForm.ShowDialog();
}
this.Close();
}
private void DonorsListViewForm_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
lastLocation = e.Location;
}
private void DonorsListViewForm_MouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
this.Location = new Point(
(this.Location.X - lastLocation.X) + e.X, (this.Location.Y - lastLocation.Y) + e.Y);
this.Update();
}
}
private void DonorsListViewForm_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
}
}

123
DonorsListView.resx Normal file
View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="DonationTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

309
MainForm.Designer.cs generated
View File

@@ -36,11 +36,13 @@
this.restorebutton = new System.Windows.Forms.Button();
this.getApkButton = new System.Windows.Forms.Button();
this.uninstallAppButton = new System.Windows.Forms.Button();
this.sideloadFolderButton = new System.Windows.Forms.Button();
this.pullAppToDesktopBtn = new System.Windows.Forms.Button();
this.progressBar = new System.Windows.Forms.ProgressBar();
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();
@@ -68,6 +70,12 @@
this.devicesComboBox = new System.Windows.Forms.ComboBox();
this.remotesList = new System.Windows.Forms.ComboBox();
this.gamesListView = new System.Windows.Forms.ListView();
this.GameNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ReleaseNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.PackageNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VersionCodeIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ReleaseAPKPathIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VersionNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.searchTextBox = new System.Windows.Forms.TextBox();
this.gamesQueueLabel = new System.Windows.Forms.Label();
this.MountButton = new System.Windows.Forms.Button();
@@ -87,16 +95,22 @@
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.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();
@@ -112,11 +126,11 @@
this.m_combo.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.m_combo.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.m_combo.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.m_combo.Location = new System.Drawing.Point(227, 8);
this.m_combo.Location = new System.Drawing.Point(224, 9);
this.m_combo.Name = "m_combo";
this.m_combo.Size = new System.Drawing.Size(353, 26);
this.m_combo.Size = new System.Drawing.Size(356, 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
//
@@ -132,7 +146,7 @@
this.startsideloadbutton.Location = new System.Drawing.Point(0, 140);
this.startsideloadbutton.Name = "startsideloadbutton";
this.startsideloadbutton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.startsideloadbutton.Size = new System.Drawing.Size(218, 28);
this.startsideloadbutton.Size = new System.Drawing.Size(221, 28);
this.startsideloadbutton.TabIndex = 5;
this.startsideloadbutton.Text = "Sideload APK";
this.startsideloadbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -153,7 +167,7 @@
this.devicesbutton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.devicesbutton.Location = new System.Drawing.Point(0, 0);
this.devicesbutton.Name = "devicesbutton";
this.devicesbutton.Size = new System.Drawing.Size(218, 28);
this.devicesbutton.Size = new System.Drawing.Size(221, 28);
this.devicesbutton.TabIndex = 0;
this.devicesbutton.Text = "RECONNECT DEVICE";
this.devicesbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -174,7 +188,7 @@
this.obbcopybutton.Location = new System.Drawing.Point(0, 0);
this.obbcopybutton.Name = "obbcopybutton";
this.obbcopybutton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.obbcopybutton.Size = new System.Drawing.Size(218, 28);
this.obbcopybutton.Size = new System.Drawing.Size(221, 28);
this.obbcopybutton.TabIndex = 0;
this.obbcopybutton.Text = "Copy OBB";
this.obbcopybutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -195,7 +209,7 @@
this.backupbutton.Location = new System.Drawing.Point(0, 28);
this.backupbutton.Name = "backupbutton";
this.backupbutton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.backupbutton.Size = new System.Drawing.Size(218, 28);
this.backupbutton.Size = new System.Drawing.Size(221, 28);
this.backupbutton.TabIndex = 1;
this.backupbutton.Text = "Backup Gamedata";
this.backupbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -216,7 +230,7 @@
this.restorebutton.Location = new System.Drawing.Point(0, 0);
this.restorebutton.Name = "restorebutton";
this.restorebutton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.restorebutton.Size = new System.Drawing.Size(218, 28);
this.restorebutton.Size = new System.Drawing.Size(221, 28);
this.restorebutton.TabIndex = 0;
this.restorebutton.Text = "Restore Gamedata";
this.restorebutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -237,9 +251,9 @@
this.getApkButton.Location = new System.Drawing.Point(0, 56);
this.getApkButton.Name = "getApkButton";
this.getApkButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.getApkButton.Size = new System.Drawing.Size(218, 28);
this.getApkButton.Size = new System.Drawing.Size(221, 28);
this.getApkButton.TabIndex = 2;
this.getApkButton.Text = "Extract App to Desktop";
this.getApkButton.Text = "Share Selected App";
this.getApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.getApkButton.UseVisualStyleBackColor = false;
this.getApkButton.Click += new System.EventHandler(this.getApkButton_Click);
@@ -258,33 +272,33 @@
this.uninstallAppButton.Location = new System.Drawing.Point(0, 84);
this.uninstallAppButton.Name = "uninstallAppButton";
this.uninstallAppButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.uninstallAppButton.Size = new System.Drawing.Size(218, 28);
this.uninstallAppButton.Size = new System.Drawing.Size(221, 28);
this.uninstallAppButton.TabIndex = 3;
this.uninstallAppButton.Text = "Uninstall Selected App";
this.uninstallAppButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.uninstallAppButton.UseVisualStyleBackColor = false;
this.uninstallAppButton.Click += new System.EventHandler(this.uninstallAppButton_Click);
//
// sideloadFolderButton
// pullAppToDesktopBtn
//
this.sideloadFolderButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.sideloadFolderButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadFolderButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadFolderButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadFolderButton.Dock = System.Windows.Forms.DockStyle.Top;
this.sideloadFolderButton.FlatAppearance.BorderSize = 0;
this.sideloadFolderButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.sideloadFolderButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.sideloadFolderButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.sideloadFolderButton.Location = new System.Drawing.Point(0, 112);
this.sideloadFolderButton.Name = "sideloadFolderButton";
this.sideloadFolderButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.sideloadFolderButton.Size = new System.Drawing.Size(218, 28);
this.sideloadFolderButton.TabIndex = 4;
this.sideloadFolderButton.Text = "Sideload Folder (recursive)";
this.sideloadFolderButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.sideloadFolderButton.UseVisualStyleBackColor = false;
this.sideloadFolderButton.Click += new System.EventHandler(this.sideloadFolderButton_Click);
this.pullAppToDesktopBtn.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.pullAppToDesktopBtn.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.pullAppToDesktopBtn.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.pullAppToDesktopBtn.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.pullAppToDesktopBtn.Dock = System.Windows.Forms.DockStyle.Top;
this.pullAppToDesktopBtn.FlatAppearance.BorderSize = 0;
this.pullAppToDesktopBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.pullAppToDesktopBtn.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.pullAppToDesktopBtn.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.pullAppToDesktopBtn.Location = new System.Drawing.Point(0, 112);
this.pullAppToDesktopBtn.Name = "pullAppToDesktopBtn";
this.pullAppToDesktopBtn.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.pullAppToDesktopBtn.Size = new System.Drawing.Size(221, 28);
this.pullAppToDesktopBtn.TabIndex = 4;
this.pullAppToDesktopBtn.Text = "Pull App To Desktop";
this.pullAppToDesktopBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.pullAppToDesktopBtn.UseVisualStyleBackColor = false;
this.pullAppToDesktopBtn.Click += new System.EventHandler(this.pullAppToDesktopBtn_Click);
//
// progressBar
//
@@ -292,9 +306,9 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.progressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.progressBar.ForeColor = System.Drawing.Color.Purple;
this.progressBar.Location = new System.Drawing.Point(224, 441);
this.progressBar.Location = new System.Drawing.Point(224, 436);
this.progressBar.Name = "progressBar";
this.progressBar.Size = new System.Drawing.Size(371, 25);
this.progressBar.Size = new System.Drawing.Size(374, 34);
this.progressBar.TabIndex = 7;
//
// copyBulkObbButton
@@ -311,7 +325,7 @@
this.copyBulkObbButton.Location = new System.Drawing.Point(0, 28);
this.copyBulkObbButton.Name = "copyBulkObbButton";
this.copyBulkObbButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.copyBulkObbButton.Size = new System.Drawing.Size(218, 28);
this.copyBulkObbButton.Size = new System.Drawing.Size(221, 28);
this.copyBulkObbButton.TabIndex = 1;
this.copyBulkObbButton.Text = "Recursive Copy OBB";
this.copyBulkObbButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -325,13 +339,12 @@
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.downloadInstallGameButton.Enabled = false;
this.downloadInstallGameButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.downloadInstallGameButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.downloadInstallGameButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.downloadInstallGameButton.Location = new System.Drawing.Point(601, 439);
this.downloadInstallGameButton.Location = new System.Drawing.Point(601, 436);
this.downloadInstallGameButton.Name = "downloadInstallGameButton";
this.downloadInstallGameButton.Size = new System.Drawing.Size(369, 30);
this.downloadInstallGameButton.Size = new System.Drawing.Size(369, 34);
this.downloadInstallGameButton.TabIndex = 8;
this.downloadInstallGameButton.Text = "Download and Install Game/Add to Queue";
this.downloadInstallGameButton.UseVisualStyleBackColor = false;
@@ -342,7 +355,9 @@
// panel1
//
this.panel1.AutoScroll = true;
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
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);
@@ -358,32 +373,54 @@
this.panel1.Controls.Add(this.diskLabel);
this.panel1.Controls.Add(this.speedLabel);
this.panel1.Controls.Add(this.etaLabel);
this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Margin = new System.Windows.Forms.Padding(2);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(218, 721);
this.panel1.Size = new System.Drawing.Size(221, 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;
this.BatteryLbl.BackColor = System.Drawing.Color.Transparent;
this.BatteryLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.BatteryLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.BatteryLbl.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.BatteryLbl.Location = new System.Drawing.Point(156, 580);
this.BatteryLbl.Location = new System.Drawing.Point(170, 635);
this.BatteryLbl.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.BatteryLbl.Name = "BatteryLbl";
this.BatteryLbl.Size = new System.Drawing.Size(47, 17);
this.BatteryLbl.Size = new System.Drawing.Size(0, 13);
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.Location = new System.Drawing.Point(166, 629);
this.pictureBox5.Margin = new System.Windows.Forms.Padding(2);
this.pictureBox5.Name = "pictureBox5";
this.pictureBox5.Size = new System.Drawing.Size(55, 29);
@@ -415,7 +452,7 @@
this.aboutBtn.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.aboutBtn.Location = new System.Drawing.Point(0, 596);
this.aboutBtn.Name = "aboutBtn";
this.aboutBtn.Size = new System.Drawing.Size(218, 28);
this.aboutBtn.Size = new System.Drawing.Size(221, 28);
this.aboutBtn.TabIndex = 5;
this.aboutBtn.Text = "ABOUT";
this.aboutBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -436,7 +473,7 @@
this.settingsButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.settingsButton.Location = new System.Drawing.Point(0, 568);
this.settingsButton.Name = "settingsButton";
this.settingsButton.Size = new System.Drawing.Size(218, 28);
this.settingsButton.Size = new System.Drawing.Size(221, 28);
this.settingsButton.TabIndex = 4;
this.settingsButton.Text = "SETTINGS";
this.settingsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -457,7 +494,7 @@
this.otherContainer.Location = new System.Drawing.Point(0, 401);
this.otherContainer.Margin = new System.Windows.Forms.Padding(2);
this.otherContainer.Name = "otherContainer";
this.otherContainer.Size = new System.Drawing.Size(218, 167);
this.otherContainer.Size = new System.Drawing.Size(221, 167);
this.otherContainer.TabIndex = 80;
//
// InstallQUset
@@ -474,7 +511,7 @@
this.InstallQUset.Location = new System.Drawing.Point(0, 140);
this.InstallQUset.Name = "InstallQUset";
this.InstallQUset.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.InstallQUset.Size = new System.Drawing.Size(218, 28);
this.InstallQUset.Size = new System.Drawing.Size(221, 28);
this.InstallQUset.TabIndex = 5;
this.InstallQUset.Text = "Install QU Setting";
this.InstallQUset.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -495,7 +532,7 @@
this.removeQUSetting.Location = new System.Drawing.Point(0, 112);
this.removeQUSetting.Name = "removeQUSetting";
this.removeQUSetting.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.removeQUSetting.Size = new System.Drawing.Size(218, 28);
this.removeQUSetting.Size = new System.Drawing.Size(221, 28);
this.removeQUSetting.TabIndex = 4;
this.removeQUSetting.Text = "Remove QU Setting";
this.removeQUSetting.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -516,7 +553,7 @@
this.ThemeChangerButton.Location = new System.Drawing.Point(0, 84);
this.ThemeChangerButton.Name = "ThemeChangerButton";
this.ThemeChangerButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.ThemeChangerButton.Size = new System.Drawing.Size(218, 28);
this.ThemeChangerButton.Size = new System.Drawing.Size(221, 28);
this.ThemeChangerButton.TabIndex = 3;
this.ThemeChangerButton.Text = "Theme Changer";
this.ThemeChangerButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -537,7 +574,7 @@
this.QuestOptionsButton.Location = new System.Drawing.Point(0, 56);
this.QuestOptionsButton.Name = "QuestOptionsButton";
this.QuestOptionsButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.QuestOptionsButton.Size = new System.Drawing.Size(218, 28);
this.QuestOptionsButton.Size = new System.Drawing.Size(221, 28);
this.QuestOptionsButton.TabIndex = 2;
this.QuestOptionsButton.Text = "Quest Options";
this.QuestOptionsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -558,7 +595,7 @@
this.ADBWirelessDisable.Location = new System.Drawing.Point(0, 28);
this.ADBWirelessDisable.Name = "ADBWirelessDisable";
this.ADBWirelessDisable.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.ADBWirelessDisable.Size = new System.Drawing.Size(218, 28);
this.ADBWirelessDisable.Size = new System.Drawing.Size(221, 28);
this.ADBWirelessDisable.TabIndex = 1;
this.ADBWirelessDisable.Text = "Disable WIreless ADB";
this.ADBWirelessDisable.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -579,7 +616,7 @@
this.ADBWirelessEnable.Location = new System.Drawing.Point(0, 0);
this.ADBWirelessEnable.Name = "ADBWirelessEnable";
this.ADBWirelessEnable.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.ADBWirelessEnable.Size = new System.Drawing.Size(218, 28);
this.ADBWirelessEnable.Size = new System.Drawing.Size(221, 28);
this.ADBWirelessEnable.TabIndex = 0;
this.ADBWirelessEnable.Text = "Enable Wireless ADB";
this.ADBWirelessEnable.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -602,7 +639,7 @@
this.otherDrop.Margin = new System.Windows.Forms.Padding(2);
this.otherDrop.Name = "otherDrop";
this.otherDrop.Padding = new System.Windows.Forms.Padding(7, 0, 0, 0);
this.otherDrop.Size = new System.Drawing.Size(218, 28);
this.otherDrop.Size = new System.Drawing.Size(221, 28);
this.otherDrop.TabIndex = 3;
this.otherDrop.Text = "> OTHER";
this.otherDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -619,7 +656,7 @@
this.backupContainer.Location = new System.Drawing.Point(0, 313);
this.backupContainer.Margin = new System.Windows.Forms.Padding(2);
this.backupContainer.Name = "backupContainer";
this.backupContainer.Size = new System.Drawing.Size(218, 60);
this.backupContainer.Size = new System.Drawing.Size(221, 60);
this.backupContainer.TabIndex = 76;
//
// backupDrop
@@ -638,7 +675,7 @@
this.backupDrop.Margin = new System.Windows.Forms.Padding(2);
this.backupDrop.Name = "backupDrop";
this.backupDrop.Padding = new System.Windows.Forms.Padding(7, 0, 0, 0);
this.backupDrop.Size = new System.Drawing.Size(218, 28);
this.backupDrop.Size = new System.Drawing.Size(221, 28);
this.backupDrop.TabIndex = 2;
this.backupDrop.Text = "> BACKUP";
this.backupDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -651,7 +688,7 @@
this.sideloadContainer.Controls.Add(this.UpdateGamesButton);
this.sideloadContainer.Controls.Add(this.listApkButton);
this.sideloadContainer.Controls.Add(this.startsideloadbutton);
this.sideloadContainer.Controls.Add(this.sideloadFolderButton);
this.sideloadContainer.Controls.Add(this.pullAppToDesktopBtn);
this.sideloadContainer.Controls.Add(this.uninstallAppButton);
this.sideloadContainer.Controls.Add(this.getApkButton);
this.sideloadContainer.Controls.Add(this.copyBulkObbButton);
@@ -661,7 +698,7 @@
this.sideloadContainer.Location = new System.Drawing.Point(0, 56);
this.sideloadContainer.Margin = new System.Windows.Forms.Padding(2);
this.sideloadContainer.Name = "sideloadContainer";
this.sideloadContainer.Size = new System.Drawing.Size(218, 229);
this.sideloadContainer.Size = new System.Drawing.Size(221, 229);
this.sideloadContainer.TabIndex = 74;
//
// UpdateGamesButton
@@ -678,7 +715,7 @@
this.UpdateGamesButton.Location = new System.Drawing.Point(0, 196);
this.UpdateGamesButton.Name = "UpdateGamesButton";
this.UpdateGamesButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.UpdateGamesButton.Size = new System.Drawing.Size(218, 28);
this.UpdateGamesButton.Size = new System.Drawing.Size(221, 28);
this.UpdateGamesButton.TabIndex = 7;
this.UpdateGamesButton.Text = "Refresh Update List";
this.UpdateGamesButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -699,7 +736,7 @@
this.listApkButton.Location = new System.Drawing.Point(0, 168);
this.listApkButton.Name = "listApkButton";
this.listApkButton.Padding = new System.Windows.Forms.Padding(23, 0, 0, 0);
this.listApkButton.Size = new System.Drawing.Size(218, 28);
this.listApkButton.Size = new System.Drawing.Size(221, 28);
this.listApkButton.TabIndex = 6;
this.listApkButton.Text = "Refresh All";
this.listApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -722,7 +759,7 @@
this.sideloadDrop.Margin = new System.Windows.Forms.Padding(2);
this.sideloadDrop.Name = "sideloadDrop";
this.sideloadDrop.Padding = new System.Windows.Forms.Padding(7, 0, 0, 0);
this.sideloadDrop.Size = new System.Drawing.Size(218, 28);
this.sideloadDrop.Size = new System.Drawing.Size(221, 28);
this.sideloadDrop.TabIndex = 1;
this.sideloadDrop.Text = "> SIDELOAD";
this.sideloadDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -736,7 +773,7 @@
this.diskLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.diskLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.diskLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.diskLabel.Location = new System.Drawing.Point(7, 622);
this.diskLabel.Location = new System.Drawing.Point(4, 623);
this.diskLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.diskLabel.Name = "diskLabel";
this.diskLabel.Size = new System.Drawing.Size(77, 18);
@@ -780,7 +817,7 @@
this.freeDisclaimer.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.freeDisclaimer.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.freeDisclaimer.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.freeDisclaimer.Location = new System.Drawing.Point(277, 554);
this.freeDisclaimer.Location = new System.Drawing.Point(289, 556);
this.freeDisclaimer.Name = "freeDisclaimer";
this.freeDisclaimer.Size = new System.Drawing.Size(246, 40);
this.freeDisclaimer.TabIndex = 79;
@@ -821,10 +858,10 @@
this.devicesComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.devicesComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.devicesComboBox.FormattingEnabled = true;
this.devicesComboBox.Location = new System.Drawing.Point(227, 39);
this.devicesComboBox.Location = new System.Drawing.Point(224, 39);
this.devicesComboBox.Margin = new System.Windows.Forms.Padding(2);
this.devicesComboBox.Name = "devicesComboBox";
this.devicesComboBox.Size = new System.Drawing.Size(161, 26);
this.devicesComboBox.Size = new System.Drawing.Size(164, 26);
this.devicesComboBox.TabIndex = 1;
this.devicesComboBox.Text = "Select your device";
this.devicesComboBox.SelectedIndexChanged += new System.EventHandler(this.devicesComboBox_SelectedIndexChanged);
@@ -851,16 +888,24 @@
this.gamesListView.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.gamesListView.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.gamesListView.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.gamesListView.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.gamesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.GameNameIndex,
this.ReleaseNameIndex,
this.PackageNameIndex,
this.VersionCodeIndex,
this.ReleaseAPKPathIndex,
this.VersionNameIndex});
this.gamesListView.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.gamesListView.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.gamesListView.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.gamesListView.HideSelection = false;
this.gamesListView.Location = new System.Drawing.Point(224, 71);
this.gamesListView.Location = new System.Drawing.Point(224, 70);
this.gamesListView.Name = "gamesListView";
this.gamesListView.Size = new System.Drawing.Size(746, 360);
this.gamesListView.TabIndex = 6;
this.gamesListView.UseCompatibleStateImageBehavior = false;
this.gamesListView.View = System.Windows.Forms.View.Details;
this.gamesListView.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
this.gamesListView.SelectedIndexChanged += new System.EventHandler(this.gamesListView_SelectedIndexChanged);
this.gamesListView.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
@@ -868,6 +913,37 @@
this.gamesListView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.gamesListView_KeyPress);
this.gamesListView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.gamesListView_MouseDoubleClick);
//
// GameNameIndex
//
this.GameNameIndex.Text = "Game Name";
this.GameNameIndex.Width = 121;
//
// ReleaseNameIndex
//
this.ReleaseNameIndex.Text = "Release Name";
this.ReleaseNameIndex.Width = 244;
//
// PackageNameIndex
//
this.PackageNameIndex.Text = "Package Name";
this.PackageNameIndex.Width = 87;
//
// VersionCodeIndex
//
this.VersionCodeIndex.Text = "Version";
this.VersionCodeIndex.Width = 75;
//
// ReleaseAPKPathIndex
//
this.ReleaseAPKPathIndex.Text = "Last Updated";
this.ReleaseAPKPathIndex.Width = 132;
//
// VersionNameIndex
//
this.VersionNameIndex.Text = "Size (MB)";
this.VersionNameIndex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
this.VersionNameIndex.Width = 66;
//
// searchTextBox
//
this.searchTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -952,9 +1028,9 @@
this.notesRichTextBox.ReadOnly = true;
this.notesRichTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.notesRichTextBox.ShowSelectionMargin = true;
this.notesRichTextBox.Size = new System.Drawing.Size(369, 67);
this.notesRichTextBox.Size = new System.Drawing.Size(369, 66);
this.notesRichTextBox.TabIndex = 10;
this.notesRichTextBox.Text = "\n\n\n TIP: PRESS F1 TO SEE A LIST OF SHORTCUTS";
this.notesRichTextBox.Text = "\n\n\n TIP: PRESS F1 TO SEE A LIST OF SHORTCUTS";
//
// DragDropLbl
//
@@ -994,9 +1070,9 @@
this.pictureBox1.ErrorImage = null;
this.pictureBox1.ImageLocation = global::AndroidSideloader.Properties.Settings.Default.BackPicturePath;
this.pictureBox1.InitialImage = null;
this.pictureBox1.Location = new System.Drawing.Point(217, -2);
this.pictureBox1.Location = new System.Drawing.Point(218, -15);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(764, 718);
this.pictureBox1.Size = new System.Drawing.Size(767, 751);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 74;
this.pictureBox1.TabStop = false;
@@ -1033,9 +1109,10 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label4.AutoSize = true;
this.label4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.label4.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.label4.Location = new System.Drawing.Point(506, 283);
this.label4.Location = new System.Drawing.Point(509, 284);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(183, 17);
this.label4.TabIndex = 90;
@@ -1061,7 +1138,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(825, 7);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(145, 17);
this.label6.TabIndex = 90;
@@ -1074,7 +1151,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;
@@ -1121,7 +1198,7 @@
this.ADBcommandbox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ADBcommandbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.ADBcommandbox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.ADBcommandbox.Location = new System.Drawing.Point(485, 250);
this.ADBcommandbox.Location = new System.Drawing.Point(484, 250);
this.ADBcommandbox.MaximumSize = new System.Drawing.Size(231, 26);
this.ADBcommandbox.MinimumSize = new System.Drawing.Size(231, 26);
this.ADBcommandbox.Name = "ADBcommandbox";
@@ -1139,6 +1216,7 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label11.AutoSize = true;
this.label11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.label11.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.label11.Location = new System.Drawing.Point(528, 285);
@@ -1155,6 +1233,7 @@
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label9.AutoSize = true;
this.label9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.label9.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.label9.Location = new System.Drawing.Point(514, 206);
@@ -1165,13 +1244,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(767, 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;
//
@@ -1179,9 +1299,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;
//
@@ -1199,9 +1319,9 @@
//
this.gamesPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.gamesPictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.gamesPictureBox.Location = new System.Drawing.Point(224, 474);
this.gamesPictureBox.Location = new System.Drawing.Point(224, 475);
this.gamesPictureBox.Name = "gamesPictureBox";
this.gamesPictureBox.Size = new System.Drawing.Size(371, 214);
this.gamesPictureBox.Size = new System.Drawing.Size(374, 214);
this.gamesPictureBox.TabIndex = 84;
this.gamesPictureBox.TabStop = false;
this.gamesPictureBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
@@ -1217,9 +1337,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);
@@ -1246,11 +1368,12 @@
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";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Rookie\'s Sideloader";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.Load += new System.EventHandler(this.Form1_Load);
@@ -1260,11 +1383,14 @@
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();
@@ -1283,7 +1409,7 @@
private System.Windows.Forms.Button getApkButton;
private SergeUtils.EasyCompletionComboBox m_combo;
private System.Windows.Forms.Button uninstallAppButton;
private System.Windows.Forms.Button sideloadFolderButton;
private System.Windows.Forms.Button pullAppToDesktopBtn;
private System.Windows.Forms.ProgressBar progressBar;
private System.Windows.Forms.Button copyBulkObbButton;
private System.Windows.Forms.Button downloadInstallGameButton;
@@ -1304,7 +1430,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 +1463,18 @@
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;
private System.Windows.Forms.PictureBox pictureBox6;
private System.Windows.Forms.PictureBox pictureBox7;
private System.Windows.Forms.Label label10;
public System.Windows.Forms.ColumnHeader GameNameIndex;
public System.Windows.Forms.ColumnHeader ReleaseNameIndex;
private System.Windows.Forms.ColumnHeader PackageNameIndex;
private System.Windows.Forms.ColumnHeader VersionCodeIndex;
private System.Windows.Forms.ColumnHeader ReleaseAPKPathIndex;
public System.Windows.Forms.ColumnHeader VersionNameIndex;
}
}

File diff suppressed because it is too large Load Diff

156
NewApps.Designer.cs generated Normal file
View File

@@ -0,0 +1,156 @@

namespace AndroidSideloader
{
partial class NewApps
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.NewAppsListView = new System.Windows.Forms.ListView();
this.GameNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.PackageNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.NewAppsButton = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// NewAppsListView
//
this.NewAppsListView.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
this.NewAppsListView.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.NewAppsListView.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.NewAppsListView.CausesValidation = false;
this.NewAppsListView.CheckBoxes = true;
this.NewAppsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.GameNameIndex,
this.PackageNameIndex});
this.NewAppsListView.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.NewAppsListView.ForeColor = System.Drawing.Color.White;
this.NewAppsListView.FullRowSelect = true;
this.NewAppsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.NewAppsListView.HideSelection = false;
this.NewAppsListView.Location = new System.Drawing.Point(3, 5);
this.NewAppsListView.Name = "NewAppsListView";
this.NewAppsListView.RightToLeftLayout = true;
this.NewAppsListView.Size = new System.Drawing.Size(288, 167);
this.NewAppsListView.TabIndex = 1;
this.NewAppsListView.UseCompatibleStateImageBehavior = false;
this.NewAppsListView.View = System.Windows.Forms.View.Details;
this.NewAppsListView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label2_MouseDown);
this.NewAppsListView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label2_MouseMove);
this.NewAppsListView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.label2_MouseUp);
//
// GameNameIndex
//
this.GameNameIndex.Text = "Game Name";
this.GameNameIndex.Width = 284;
//
// PackageNameIndex
//
this.PackageNameIndex.Width = 0;
//
// NewAppsButton
//
this.NewAppsButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.NewAppsButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.NewAppsButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.NewAppsButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.NewAppsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.NewAppsButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.NewAppsButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.NewAppsButton.Location = new System.Drawing.Point(12, 212);
this.NewAppsButton.Name = "NewAppsButton";
this.NewAppsButton.Size = new System.Drawing.Size(288, 29);
this.NewAppsButton.TabIndex = 2;
this.NewAppsButton.Text = "Accept";
this.NewAppsButton.UseVisualStyleBackColor = true;
this.NewAppsButton.Click += new System.EventHandler(this.DonateButton_Click);
this.NewAppsButton.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label2_MouseDown);
this.NewAppsButton.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label2_MouseMove);
this.NewAppsButton.MouseUp += new System.Windows.Forms.MouseEventHandler(this.label2_MouseUp);
//
// panel2
//
this.panel2.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.panel2.Controls.Add(this.NewAppsListView);
this.panel2.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel2.Location = new System.Drawing.Point(9, 31);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(295, 175);
this.panel2.TabIndex = 8;
//
// label2
//
this.label2.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.25F, System.Drawing.FontStyle.Bold);
this.label2.ForeColor = System.Drawing.SystemColors.ControlLightLight;
this.label2.Location = new System.Drawing.Point(28, 7);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(256, 17);
this.label2.TabIndex = 9;
this.label2.Text = "Check box of all free/non-VR apps";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label2_MouseDown);
this.label2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label2_MouseMove);
this.label2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.label2_MouseUp);
//
// NewApps
//
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(313, 248);
this.ControlBox = false;
this.Controls.Add(this.label2);
this.Controls.Add(this.NewAppsButton);
this.Controls.Add(this.panel2);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Name = "NewApps";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.TopMost = true;
this.Load += new System.EventHandler(this.NewApps_Load);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label2_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label2_MouseMove);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.label2_MouseUp);
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ListView NewAppsListView;
private System.Windows.Forms.ColumnHeader GameNameIndex;
private System.Windows.Forms.Button NewAppsButton;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ColumnHeader PackageNameIndex;
}
}

83
NewApps.cs Normal file
View File

@@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AndroidSideloader
{
public partial class NewApps : Form
{
private bool mouseDown;
private Point lastLocation;
public NewApps()
{
InitializeComponent();
}
private void label2_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
lastLocation = e.Location;
}
private void label2_MouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
this.Location = new Point(
(this.Location.X - lastLocation.X) + e.X, (this.Location.Y - lastLocation.Y) + e.Y);
this.Update();
}
}
private void label2_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
private void DonateButton_Click(object sender, EventArgs e)
{
string HWID = SideloaderUtilities.UUID();
foreach (ListViewItem listItem in NewAppsListView.Items)
{
if (listItem.Checked)
{
Properties.Settings.Default.NonAppPackages += listItem.SubItems[Donors.PackageNameIndex].Text + ";" + HWID + "\n";
Properties.Settings.Default.Save();
}
else
{
Properties.Settings.Default.AppPackages += listItem.SubItems[Donors.PackageNameIndex].Text + "\n";
Properties.Settings.Default.Save();
}
}
MainForm.newpackageupload();
this.Close();
}
private void NewApps_Load(object sender, EventArgs e)
{
NewAppsListView.Items.Clear();
Donors.initNewApps();
List<ListViewItem> NewAppList = new List<ListViewItem>();
foreach (string[] release in Donors.newApps)
{
ListViewItem NGame = new ListViewItem(release);
if (!NewAppList.Contains(NGame))
NewAppList.Add(NGame);
}
ListViewItem[] arr = NewAppList.ToArray();
NewAppsListView.BeginUpdate();
NewAppsListView.Items.Clear();
NewAppsListView.Items.AddRange(arr);
NewAppsListView.EndUpdate();
}
}
}

120
NewApps.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -14,12 +14,12 @@ namespace AndroidSideloader
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
static void Main()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
form = new MainForm();
Application.Run(form);
//form.Show();

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="Resources" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>AndroidSideloader.Properties.Resources, Properties.Resources.Designer.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="Settings" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>AndroidSideloader.Properties.Settings, Properties.Resources.Designer.cs.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@@ -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>
@@ -100,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>
@@ -139,5 +159,15 @@ namespace AndroidSideloader.Properties {
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap UpdatesKey {
get {
object obj = ResourceManager.GetObject("UpdatesKey", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@@ -124,12 +124,21 @@
<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="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>
<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="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="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 +148,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="UpdatesKey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdatesKey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -109,79 +109,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("45, 45, 45")]
public global::System.Drawing.Color BackColor {
get {
return ((global::System.Drawing.Color)(this["BackColor"]));
}
set {
this["BackColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("ActiveCaptionText")]
public global::System.Drawing.Color ButtonColor {
get {
return ((global::System.Drawing.Color)(this["ButtonColor"]));
}
set {
this["ButtonColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("64, 64, 64")]
public global::System.Drawing.Color SubButtonColor {
get {
return ((global::System.Drawing.Color)(this["SubButtonColor"]));
}
set {
this["SubButtonColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("45, 45, 45")]
public global::System.Drawing.Color TextBoxColor {
get {
return ((global::System.Drawing.Color)(this["TextBoxColor"]));
}
set {
this["TextBoxColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("45, 45, 45")]
public global::System.Drawing.Color ComboBoxColor {
get {
return ((global::System.Drawing.Color)(this["ComboBoxColor"]));
}
set {
this["ComboBoxColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("White")]
public global::System.Drawing.Color FontColor {
get {
return ((global::System.Drawing.Color)(this["FontColor"]));
}
set {
this["FontColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 11pt")]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 11.25pt")]
public global::System.Drawing.Font FontStyle {
get {
return ((global::System.Drawing.Font)(this["FontStyle"]));
@@ -565,7 +493,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool QblindOn {
get {
return ((bool)(this["QblindOn"]));
@@ -601,7 +529,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 +538,220 @@ 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;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string GlobalUsername {
get {
return ((string)(this["GlobalUsername"]));
}
set {
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;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string NonAppPackages {
get {
return ((string)(this["NonAppPackages"]));
}
set {
this["NonAppPackages"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("04/20/1969 16:20:00")]
public global::System.DateTime LastLaunch {
get {
return ((global::System.DateTime)(this["LastLaunch"]));
}
set {
this["LastLaunch"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string SubmittedUpdates {
get {
return ((string)(this["SubmittedUpdates"]));
}
set {
this["SubmittedUpdates"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ListUpped {
get {
return ((bool)(this["ListUpped"]));
}
set {
this["ListUpped"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("04/20/1969 16:20:00")]
public global::System.DateTime LastLaunch2 {
get {
return ((global::System.DateTime)(this["LastLaunch2"]));
}
set {
this["LastLaunch2"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool Wired {
get {
return ((bool)(this["Wired"]));
}
set {
this["Wired"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("White")]
public global::System.Drawing.Color FontColor {
get {
return ((global::System.Drawing.Color)(this["FontColor"]));
}
set {
this["FontColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("40, 40, 40")]
public global::System.Drawing.Color ComboBoxColor {
get {
return ((global::System.Drawing.Color)(this["ComboBoxColor"]));
}
set {
this["ComboBoxColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("40, 40, 40")]
public global::System.Drawing.Color SubButtonColor {
get {
return ((global::System.Drawing.Color)(this["SubButtonColor"]));
}
set {
this["SubButtonColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("29, 29, 29")]
public global::System.Drawing.Color TextBoxColor {
get {
return ((global::System.Drawing.Color)(this["TextBoxColor"]));
}
set {
this["TextBoxColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("50, 50, 50")]
public global::System.Drawing.Color ButtonColor {
get {
return ((global::System.Drawing.Color)(this["ButtonColor"]));
}
set {
this["ButtonColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("50, 50, 50")]
public global::System.Drawing.Color BackColor {
get {
return ((global::System.Drawing.Color)(this["BackColor"]));
}
set {
this["BackColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string AppPackages {
get {
return ((string)(this["AppPackages"]));
}
set {
this["AppPackages"] = value;
}
}
}
}

View File

@@ -23,26 +23,8 @@
<Setting Name="CallUpgrade" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="BackColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">45, 45, 45</Value>
</Setting>
<Setting Name="ButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">ActiveCaptionText</Value>
</Setting>
<Setting Name="SubButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">64, 64, 64</Value>
</Setting>
<Setting Name="TextBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">45, 45, 45</Value>
</Setting>
<Setting Name="ComboBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">45, 45, 45</Value>
</Setting>
<Setting Name="FontColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">White</Value>
</Setting>
<Setting Name="FontStyle" Type="System.Drawing.Font" Scope="User">
<Value Profile="(Default)">Microsoft Sans Serif, 11pt</Value>
<Value Profile="(Default)">Microsoft Sans Serif, 11.25pt</Value>
</Setting>
<Setting Name="BackPicturePath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
@@ -138,7 +120,7 @@
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="QblindOn" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="adbdebugwarned" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
@@ -147,7 +129,61 @@
<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>
<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>
<Setting Name="NonAppPackages" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="LastLaunch" Type="System.DateTime" Scope="User">
<Value Profile="(Default)">04/20/1969 16:20:00</Value>
</Setting>
<Setting Name="SubmittedUpdates" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ListUpped" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="LastLaunch2" Type="System.DateTime" Scope="User">
<Value Profile="(Default)">04/20/1969 16:20:00</Value>
</Setting>
<Setting Name="Wired" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="FontColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">White</Value>
</Setting>
<Setting Name="ComboBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">40, 40, 40</Value>
</Setting>
<Setting Name="SubButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">40, 40, 40</Value>
</Setting>
<Setting Name="TextBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">29, 29, 29</Value>
</Setting>
<Setting Name="ButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">50, 50, 50</Value>
</Setting>
<Setting Name="BackColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">50, 50, 50</Value>
</Setting>
<Setting Name="AppPackages" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

102
QuestForm.Designer.cs generated
View File

@@ -59,16 +59,17 @@ namespace AndroidSideloader
this.label6 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.ResolutionLabel = new System.Windows.Forms.Label();
this.GlobalUsername = new System.Windows.Forms.TextBox();
this.FOVy = new System.Windows.Forms.TextBox();
this.FOVx = new System.Windows.Forms.TextBox();
this.UsrBox = new System.Windows.Forms.TextBox();
this.ResBox = new System.Windows.Forms.TextBox();
this.TextureResTextBox = new System.Windows.Forms.TextBox();
this.QUEnable = new System.Windows.Forms.Button();
this.WifiWake = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.QURfrRt = new System.Windows.Forms.ComboBox();
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
this.WifiWake = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
@@ -213,14 +214,15 @@ namespace AndroidSideloader
// button3
//
this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button3.Enabled = false;
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.button3.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.button3.Location = new System.Drawing.Point(101, 702);
this.button3.Location = new System.Drawing.Point(278, 700);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(169, 25);
this.button3.Size = new System.Drawing.Size(81, 25);
this.button3.TabIndex = 17;
this.button3.Text = "CUSTOM USER.JSON";
this.button3.Text = "APPLY";
this.button3.UseVisualStyleBackColor = false;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
@@ -230,11 +232,11 @@ namespace AndroidSideloader
this.label12.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label12.ForeColor = System.Drawing.Color.LightCyan;
this.label12.Location = new System.Drawing.Point(93, 656);
this.label12.Location = new System.Drawing.Point(121, 656);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(185, 20);
this.label12.Size = new System.Drawing.Size(128, 20);
this.label12.TabIndex = 6;
this.label12.Text = "Set custom user.json*";
this.label12.Text = "Set username*";
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label13
@@ -243,11 +245,11 @@ namespace AndroidSideloader
this.label13.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label13.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label13.Location = new System.Drawing.Point(53, 678);
this.label13.Location = new System.Drawing.Point(83, 678);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(265, 16);
this.label13.Size = new System.Drawing.Size(204, 16);
this.label13.TabIndex = 6;
this.label13.Text = "*For games that don\'t work with QU settings.";
this.label13.Text = "*For games not released by -QU.";
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// DeleteShots
@@ -333,7 +335,7 @@ namespace AndroidSideloader
"4"});
this.CPUComboBox.Location = new System.Drawing.Point(13, 123);
this.CPUComboBox.Name = "CPUComboBox";
this.CPUComboBox.Size = new System.Drawing.Size(346, 28);
this.CPUComboBox.Size = new System.Drawing.Size(346, 26);
this.CPUComboBox.TabIndex = 2;
this.CPUComboBox.Text = "Select CPU level (0 for default)";
//
@@ -355,7 +357,7 @@ namespace AndroidSideloader
"4"});
this.GPUComboBox.Location = new System.Drawing.Point(13, 94);
this.GPUComboBox.Name = "GPUComboBox";
this.GPUComboBox.Size = new System.Drawing.Size(346, 28);
this.GPUComboBox.Size = new System.Drawing.Size(346, 26);
this.GPUComboBox.TabIndex = 1;
this.GPUComboBox.Text = "Select GPU level (0 for default)";
//
@@ -369,7 +371,7 @@ namespace AndroidSideloader
this.label7.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label7.Location = new System.Drawing.Point(13, 532);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(59, 20);
this.label7.Size = new System.Drawing.Size(63, 18);
this.label7.TabIndex = 3;
this.label7.Text = "Fov - X";
this.label7.Visible = false;
@@ -384,7 +386,7 @@ namespace AndroidSideloader
this.label8.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label8.Location = new System.Drawing.Point(191, 532);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(59, 20);
this.label8.Size = new System.Drawing.Size(62, 18);
this.label8.TabIndex = 3;
this.label8.Text = "Fov - Y";
this.label8.Visible = false;
@@ -399,7 +401,7 @@ namespace AndroidSideloader
this.label9.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label9.Location = new System.Drawing.Point(12, 583);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(105, 20);
this.label9.Size = new System.Drawing.Size(107, 18);
this.label9.TabIndex = 3;
this.label9.Text = "Refresh Rate";
this.label9.Visible = false;
@@ -414,7 +416,7 @@ namespace AndroidSideloader
this.label6.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label6.Location = new System.Drawing.Point(93, 484);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(185, 20);
this.label6.Size = new System.Drawing.Size(194, 18);
this.label6.TabIndex = 3;
this.label6.Text = "Enter Custom Username";
this.label6.Visible = false;
@@ -429,7 +431,7 @@ namespace AndroidSideloader
this.label5.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.label5.Location = new System.Drawing.Point(16, 434);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(362, 20);
this.label5.Size = new System.Drawing.Size(385, 18);
this.label5.TabIndex = 3;
this.label5.Text = "Custom Resolution Width (Height auto calculated)";
this.label5.Visible = false;
@@ -444,10 +446,24 @@ namespace AndroidSideloader
this.ResolutionLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.ResolutionLabel.Location = new System.Drawing.Point(9, 180);
this.ResolutionLabel.Name = "ResolutionLabel";
this.ResolutionLabel.Size = new System.Drawing.Size(166, 20);
this.ResolutionLabel.Size = new System.Drawing.Size(175, 18);
this.ResolutionLabel.TabIndex = 3;
this.ResolutionLabel.Text = "Resolution (0=default)";
//
// GlobalUsername
//
this.GlobalUsername.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GlobalUsername.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.GlobalUsername.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.GlobalUsername.Location = new System.Drawing.Point(12, 701);
this.GlobalUsername.Name = "GlobalUsername";
this.GlobalUsername.Size = new System.Drawing.Size(262, 24);
this.GlobalUsername.TabIndex = 12;
this.GlobalUsername.TextChanged += new System.EventHandler(this.GlobalUsername_TextChanged);
//
// FOVy
//
this.FOVy.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
@@ -458,7 +474,7 @@ namespace AndroidSideloader
this.FOVy.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.FOVy.Location = new System.Drawing.Point(189, 507);
this.FOVy.Name = "FOVy";
this.FOVy.Size = new System.Drawing.Size(169, 26);
this.FOVy.Size = new System.Drawing.Size(169, 24);
this.FOVy.TabIndex = 12;
this.FOVy.Text = "0";
this.FOVy.Visible = false;
@@ -474,7 +490,7 @@ namespace AndroidSideloader
this.FOVx.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.FOVx.Location = new System.Drawing.Point(13, 507);
this.FOVx.Name = "FOVx";
this.FOVx.Size = new System.Drawing.Size(169, 26);
this.FOVx.Size = new System.Drawing.Size(169, 24);
this.FOVx.TabIndex = 11;
this.FOVx.Text = "0";
this.FOVx.Visible = false;
@@ -490,7 +506,7 @@ namespace AndroidSideloader
this.UsrBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.UsrBox.Location = new System.Drawing.Point(13, 459);
this.UsrBox.Name = "UsrBox";
this.UsrBox.Size = new System.Drawing.Size(345, 26);
this.UsrBox.Size = new System.Drawing.Size(345, 24);
this.UsrBox.TabIndex = 10;
this.UsrBox.Text = "0";
this.UsrBox.Visible = false;
@@ -506,7 +522,7 @@ namespace AndroidSideloader
this.ResBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.ResBox.Location = new System.Drawing.Point(13, 409);
this.ResBox.Name = "ResBox";
this.ResBox.Size = new System.Drawing.Size(345, 26);
this.ResBox.Size = new System.Drawing.Size(345, 24);
this.ResBox.TabIndex = 9;
this.ResBox.Text = "0";
this.ResBox.Visible = false;
@@ -522,7 +538,7 @@ namespace AndroidSideloader
this.TextureResTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.TextureResTextBox.Location = new System.Drawing.Point(13, 152);
this.TextureResTextBox.Name = "TextureResTextBox";
this.TextureResTextBox.Size = new System.Drawing.Size(167, 26);
this.TextureResTextBox.Size = new System.Drawing.Size(167, 24);
this.TextureResTextBox.TabIndex = 3;
this.TextureResTextBox.Text = "0";
//
@@ -544,6 +560,23 @@ namespace AndroidSideloader
this.QUEnable.Visible = false;
this.QUEnable.Click += new System.EventHandler(this.QUEnable_Click);
//
// WifiWake
//
this.WifiWake.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.WifiWake.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.WifiWake.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.WifiWake.Location = new System.Drawing.Point(189, 180);
this.WifiWake.Name = "WifiWake";
this.WifiWake.Size = new System.Drawing.Size(170, 25);
this.WifiWake.TabIndex = 4;
this.WifiWake.Text = "ENABLE WIFI WAKE";
this.WifiWake.UseVisualStyleBackColor = false;
this.WifiWake.Click += new System.EventHandler(this.WifiWake_Click);
//
// button1
//
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
@@ -578,7 +611,7 @@ namespace AndroidSideloader
"120"});
this.QURfrRt.Location = new System.Drawing.Point(13, 555);
this.QURfrRt.Name = "QURfrRt";
this.QURfrRt.Size = new System.Drawing.Size(170, 28);
this.QURfrRt.Size = new System.Drawing.Size(170, 26);
this.QURfrRt.TabIndex = 13;
this.QURfrRt.Text = "0";
this.QURfrRt.Visible = false;
@@ -600,27 +633,10 @@ namespace AndroidSideloader
"120"});
this.RefreshRateComboBox.Location = new System.Drawing.Point(13, 65);
this.RefreshRateComboBox.Name = "RefreshRateComboBox";
this.RefreshRateComboBox.Size = new System.Drawing.Size(346, 28);
this.RefreshRateComboBox.Size = new System.Drawing.Size(346, 26);
this.RefreshRateComboBox.TabIndex = 0;
this.RefreshRateComboBox.Text = "Select refresh rate";
//
// WifiWake
//
this.WifiWake.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.WifiWake.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.WifiWake.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.WifiWake.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.WifiWake.Location = new System.Drawing.Point(189, 180);
this.WifiWake.Name = "WifiWake";
this.WifiWake.Size = new System.Drawing.Size(170, 25);
this.WifiWake.TabIndex = 4;
this.WifiWake.Text = "ENABLE WIFI WAKE";
this.WifiWake.UseVisualStyleBackColor = false;
this.WifiWake.Click += new System.EventHandler(this.WifiWake_Click);
//
// QuestForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -654,6 +670,7 @@ namespace AndroidSideloader
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.ResolutionLabel);
this.Controls.Add(this.GlobalUsername);
this.Controls.Add(this.FOVy);
this.Controls.Add(this.FOVx);
this.Controls.Add(this.UsrBox);
@@ -719,6 +736,7 @@ namespace AndroidSideloader
private Label label15;
private Label label16;
private Button WifiWake;
private TextBox GlobalUsername;
}
}

View File

@@ -210,6 +210,8 @@ namespace AndroidSideloader
{
if (Properties.Settings.Default.delsh)
DeleteShots.Checked = true;
else
DeleteShots.Checked = false;
if (Properties.Settings.Default.QUsett)
{
ResBox.Text = Properties.Settings.Default.QUres;
@@ -219,10 +221,9 @@ namespace AndroidSideloader
QURfrRt.Text = Properties.Settings.Default.QUhz;
QUon.Checked = true;
if (settingsexist)
QUSon = true;
QUSon = true;
}
GlobalUsername.Text = Properties.Settings.Default.GlobalUsername;
}
private void ResBox_TextChanged(object sender, EventArgs e)
@@ -308,8 +309,15 @@ namespace AndroidSideloader
}
private void button3_Click(object sender, EventArgs e)
{
UsernameForm Form = new UsernameForm();
Form.Show();
if (GlobalUsername.Text.Contains(" "))
{
MessageBox.Show("Usernames with a space are not permitted.", "Detected a space in username!");
}
else
{
ADB.RunAdbCommandToString($"shell settings put global username {GlobalUsername.Text}");
MessageBox.Show($"Username set as {GlobalUsername.Text}", "Success");
}
}
@@ -336,5 +344,15 @@ namespace AndroidSideloader
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
MessageBox.Show("Wake on Wifi enabled!\n\nNOTE: This requires having wireless ADB enabled to work. (Obviously)");
}
private void GlobalUsername_TextChanged(object sender, EventArgs e)
{
if (GlobalUsername.TextLength > 0)
button3.Enabled = true;
else
button3.Enabled = false;
Properties.Settings.Default.GlobalUsername = GlobalUsername.Text;
Properties.Settings.Default.Save();
}
}
}

View File

@@ -36,11 +36,8 @@ namespace AndroidSideloader
//Run rclone command
public static ProcessOutput runRcloneCommand(string command, string bandwithLimit = "")
{
if (!MainForm.HasInternet) return new ProcessOutput("", "No internet");
if (!MainForm.HasInternet || MainForm.isOffline) 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;
@@ -80,7 +77,6 @@ namespace AndroidSideloader
rclone.StartInfo.CreateNoWindow = false;
rclone.StartInfo.UseShellExecute = false;
rclone.Start();
rclone.StandardInput.WriteLine(command);
rclone.StandardInput.Flush();
rclone.StandardInput.Close();
@@ -90,12 +86,13 @@ 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("Failed to"))
{
string oldRemote = MainForm.currentRemote;
try
{
Program.form.SwitchMirrors();
}
catch
{
@@ -108,11 +105,13 @@ namespace AndroidSideloader
prcoutput.Output = output;
prcoutput.Error = error;
}
if (!output.Contains("Game Name;Release Name;") && !output.Contains("package:"))
if (!output.Contains("Game Name;Release Name;") && !output.Contains("package:") && !output.Contains(".meta"))
Logger.Log($"Rclone error: {error}\nRclone Output: {output}");
if (error.Contains("There is not enough space"))
if (output.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;
}
}

View File

@@ -1,10 +1,19 @@
# androidsideloader
![GitHub last commit](https://img.shields.io/github/last-commit/nerdunit/androidsideloader)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/nerdunit/androidsideloader)
[![Downloads](https://img.shields.io/github/downloads/nerdunit/androidsideloader/total.svg)](https://github.com/nerdunit/androidsideloader/releases)
![Issues](https://img.shields.io/github/issues/nerdunit/androidsideloader)
This app might get detected as malware, however both the sideloader and the sideloader launcher are open source
## !IMPORTANT!
This app may be buggy and have problems, I will recode it from scratch ~~when MAUI will be released (This september) and a linux port will be available, making RSL cross-platform.~~
Since microsoft delayed MAUI and they don't support linux, I decided to try to rewrite it in go, a language that I started learning recently, so there is no ETA for that.
### This app might get detected as malware, however both the sideloader and the sideloader launcher are open source
https://www.virustotal.com/gui/file/977105693610cf360fc29339b918e224180ba393ba05a64b6255af3845cbf376/relations
Special thanks to
## Special thanks to
- [Everyone who donated!](https://raw.githubusercontent.com/nerdunit/androidsideloader/master/donators.txt)
- pmow for all of his work, including rclone, wonka and other projects
- flow for being friendly and helping every one
@@ -15,4 +24,4 @@ Special thanks to
- [rclone](https://rclone.org/) team for [rclone](https://rclone.org/) :D
- [erike](https://stackoverflow.com/users/57611/erike) for the folder browser dialog code
- Serge Weinstock for developing SergeUtils, which is used to search the combo box
- https://www.c-sharpcorner.com/members/mike-gold2 for the scrollable message box
- https://www.c-sharpcorner.com/members/mike-gold2 for the scrollable message box

BIN
Resources/UpdatesKey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
Resources/ajax-loader.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

BIN
Resources/gametoupload.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

View File

@@ -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
@@ -57,7 +58,7 @@
this.checkForUpdatesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(12, 12);
this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(148, 22);
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(165, 22);
this.checkForUpdatesCheckBox.TabIndex = 0;
this.checkForUpdatesCheckBox.Text = "Check for updates";
this.checkForUpdatesCheckBox.UseVisualStyleBackColor = true;
@@ -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;
@@ -87,7 +88,7 @@
this.enableMessageBoxesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(12, 39);
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(347, 22);
this.enableMessageBoxesCheckBox.TabIndex = 1;
this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = true;
@@ -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;
@@ -117,7 +118,7 @@
this.deleteAfterInstallCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(12, 65);
this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(327, 22);
this.deleteAfterInstallCheckBox.TabIndex = 3;
this.deleteAfterInstallCheckBox.Text = "Delete games after download and install";
this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = true;
@@ -130,7 +131,7 @@
this.updateConfigCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.updateConfigCheckBox.Location = new System.Drawing.Point(12, 92);
this.updateConfigCheckBox.Name = "updateConfigCheckBox";
this.updateConfigCheckBox.Size = new System.Drawing.Size(208, 22);
this.updateConfigCheckBox.Size = new System.Drawing.Size(235, 22);
this.updateConfigCheckBox.TabIndex = 6;
this.updateConfigCheckBox.Text = "Update config automatically";
this.updateConfigCheckBox.UseVisualStyleBackColor = true;
@@ -143,7 +144,7 @@
this.userJsonOnGameInstall.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.userJsonOnGameInstall.Location = new System.Drawing.Point(12, 119);
this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
this.userJsonOnGameInstall.Size = new System.Drawing.Size(275, 22);
this.userJsonOnGameInstall.TabIndex = 9;
this.userJsonOnGameInstall.Text = "Push random user.json on install";
this.userJsonOnGameInstall.UseVisualStyleBackColor = true;
@@ -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,9 +168,9 @@
this.label1.AutoSize = true;
this.label1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label1.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.label1.Location = new System.Drawing.Point(40, 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.Size = new System.Drawing.Size(281, 18);
this.label1.TabIndex = 12;
this.label1.Text = "Download speed limiter, 0 to disable";
//
@@ -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;
@@ -301,7 +302,7 @@
this.CblindBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.CblindBox.Location = new System.Drawing.Point(12, 145);
this.CblindBox.Name = "CblindBox";
this.CblindBox.Size = new System.Drawing.Size(182, 22);
this.CblindBox.Size = new System.Drawing.Size(204, 22);
this.CblindBox.TabIndex = 9;
this.CblindBox.Text = "Enable colorblind mode";
this.CblindBox.UseVisualStyleBackColor = true;
@@ -315,7 +316,7 @@
this.nodevicemodeBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.nodevicemodeBox.Location = new System.Drawing.Point(12, 196);
this.nodevicemodeBox.Name = "nodevicemodeBox";
this.nodevicemodeBox.Size = new System.Drawing.Size(181, 22);
this.nodevicemodeBox.Size = new System.Drawing.Size(202, 22);
this.nodevicemodeBox.TabIndex = 9;
this.nodevicemodeBox.Text = "Enable no device mode";
this.nodevicemodeBox.UseVisualStyleBackColor = true;
@@ -328,18 +329,32 @@
this.bmbfBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.bmbfBox.Location = new System.Drawing.Point(12, 170);
this.bmbfBox.Name = "bmbfBox";
this.bmbfBox.Size = new System.Drawing.Size(281, 22);
this.bmbfBox.Size = new System.Drawing.Size(316, 22);
this.bmbfBox.TabIndex = 9;
this.bmbfBox.Text = "Enable BMBF song zips drag and drop";
this.bmbfBox.UseVisualStyleBackColor = true;
this.bmbfBox.CheckedChanged += new System.EventHandler(this.bmbfBox_CheckedChanged);
//
// 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(322, 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);
@@ -366,6 +382,7 @@
this.MaximizeBox = false;
this.Name = "SettingsForm";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Settings";
this.TopMost = true;
this.Load += new System.EventHandler(this.SettingsForm_Load);
@@ -398,5 +415,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;
}
}

View File

@@ -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)
{
@@ -62,8 +63,8 @@ namespace AndroidSideloader
{
if (File.Exists($"{Properties.Settings.Default.CurrentLogPath}"))
{
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.CurrentLogPath}\" RSL-debuglogs:DebugLogs/");
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.CurrentLogPath}\" VRP-debuglogs:DebugLogs");
Clipboard.SetText(DebugID.Text);
MessageBox.Show($"Your debug log has been copied to the server. Please mention your DebugLog ID ({Properties.Settings.Default.CurrentLogName}) to the Mods (it has been automatically copied to your clipboard).");
}
}
@@ -220,9 +221,30 @@ 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();
}
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;
}
}
}
}

View File

@@ -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();
@@ -56,14 +53,14 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
ADB.WakeDevice();
ProcessOutput output = new ProcessOutput();
var commands = File.ReadAllLines(path);
string currfolder = Path.GetDirectoryName(path);
string[] zipz = Directory.GetFiles(currfolder, "*.7z", SearchOption.AllDirectories);
foreach (string zip in zipz)
{
Utilities.Zip.ExtractFile($"{zip}", currfolder);
}
foreach (string cmd in commands)
{
if (cmd.Contains("7z.exe"))
{
Program.form.ChangeTitle($"Running {cmd}");
Logger.Log($"Logging command: {cmd} from file: {path}");
ADB.RunCommandToString(cmd, path);
}
if (cmd.StartsWith("adb"))
{
string replacement = "";
@@ -129,25 +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);
DialogResult dialogResult = FlexibleMessageBox.Show($"Are you sure you want to uninstall {packageName}? this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
if (dialogResult != DialogResult.Yes)
return output;
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;
}
@@ -188,7 +182,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk"))
File.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk");
output += ADB.RunAdbCommandToString("pull " + apkPath); //pull apk
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}"))
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
@@ -202,9 +196,9 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
{
foreach (string[] game in SideloaderRCLONE.games)
{
if (gameName.Contains(game[SideloaderRCLONE.GameNameIndex]))
if (gameName.Equals(game[SideloaderRCLONE.GameNameIndex]))
return game[SideloaderRCLONE.PackageNameIndex];
if (gameName.Contains(game[SideloaderRCLONE.ReleaseNameIndex]))
if (gameName.Equals(game[SideloaderRCLONE.ReleaseNameIndex]))
return game[SideloaderRCLONE.PackageNameIndex];
}
return gameName;
@@ -214,7 +208,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
{
foreach (string[] game in SideloaderRCLONE.games)
{
if (gameName.Contains(game[SideloaderRCLONE.PackageNameIndex]))
if (gameName.Equals(game[SideloaderRCLONE.PackageNameIndex]))
return game[SideloaderRCLONE.ReleaseNameIndex];
}
return gameName;
@@ -224,9 +218,9 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
{
foreach (string[] game in SideloaderRCLONE.games)
{
if (gameName.Contains(game[SideloaderRCLONE.GameNameIndex]))
if (gameName.Equals(game[SideloaderRCLONE.GameNameIndex]))
return game[SideloaderRCLONE.GameNameIndex];
if (gameName.Contains(game[SideloaderRCLONE.ReleaseNameIndex]))
if (gameName.Equals(game[SideloaderRCLONE.ReleaseNameIndex]))
return game[SideloaderRCLONE.GameNameIndex];
}
return gameName;
@@ -253,12 +247,17 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
{
if (!File.Exists("Sideloader Launcher.exe"))
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/Sideloader%20Launcher.exe", "Sideloader Launcher.exe");
if (!Directory.Exists(ADB.adbFolderPath)) //if there is no adb folder, download and extract
if (!File.Exists("C:\\RSL\\platform-tools\\aug2021.txt") || !File.Exists("C:\\RSL\\platform-tools\\adb.exe")) //if adb is not updated, download and auto extract
{
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/adb.7z", "adb.7z");
Utilities.Zip.ExtractFile(Environment.CurrentDirectory + "\\adb.7z", Environment.CurrentDirectory);
File.Delete("adb.7z");
if (Directory.Exists($"C:\\RSL\\2.8.2"))
Directory.Delete("C:\\RSL\\2.8.2", true);
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\adb"))
Directory.Delete($"{Properties.Settings.Default.MainDir}\\adb", true);
if (!Directory.Exists("C:\\RSL\\platform-tools"))
Directory.CreateDirectory("C:\\RSL\\platform-tools");
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/adb2.zip", "Ad.7z");
Utilities.Zip.ExtractFile(Environment.CurrentDirectory + "\\Ad.7z", "C:\\RSL\\platform-tools");
File.Delete("Ad.7z");
}
if (!Directory.Exists(Environment.CurrentDirectory + "\\rclone"))

View File

@@ -2,11 +2,21 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
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>();
@@ -17,9 +27,9 @@ namespace AndroidSideloader
public static int GameNameIndex = 0;
public static int ReleaseNameIndex = 1;
public static int ReleaseAPKPathIndex = 2;
public static int PackageNameIndex = 3;
public static int VersionCodeIndex = 4;
public static int PackageNameIndex = 2;
public static int VersionCodeIndex = 3;
public static int ReleaseAPKPathIndex = 4;
public static int VersionNameIndex = 5;
public static List<string> gameProperties = new List<string>();
@@ -38,12 +48,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)
@@ -76,49 +86,25 @@ namespace AndroidSideloader
{
gameProperties.Clear();
games.Clear();
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/GameList.txt\"").Output;
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/VRP-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);
File.WriteAllText("VRP-GamesList.txt", tempGameList);
}
tempGameList = Utilities.StringUtilities.RemoveEverythingBeforeFirst(tempGameList, "\n");
foreach (string game in tempGameList.Split('\n'))
if (!tempGameList.Equals(""))
{
if (game.Length > 1)
games.Add(game.Split(';'));
string[] gameListSplited = tempGameList.Split(new[] { '\n' });
gameListSplited = gameListSplited.Skip(1).ToArray();
foreach (string game in gameListSplited)
{
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
public static long GetFolderSize(string FolderName, string remote)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{
try
{
dynamic results = JsonConvert.DeserializeObject<dynamic>(RCLONE.runRcloneCommand($"size \"{remote}:{RcloneGamesFolder}/{FolderName}\" --json").Output);
long gameSize = results.bytes.ToObject<long>();
return gameSize / 1000000;
}
catch { return 0; }
}
public static void updateConfig(string remote)
@@ -134,7 +120,6 @@ namespace AndroidSideloader
if (!string.Equals(localHash, hash))
{
RCLONE.runRcloneCommand(string.Format($"copy \"{remote}:Quest Homebrew/Sideloading Methods/1. Rookie Sideloader - VRP Edition/VRP.download.config\" \"{Environment.CurrentDirectory}\\rclone\""));
RCLONE.killRclone();
File.WriteAllText(Environment.CurrentDirectory + "\\rclone\\hash.txt", hash);
}
}

177
UpdateForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,177 @@

namespace AndroidSideloader
{
partial class UpdateForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SkipUpdate = new System.Windows.Forms.Label();
this.CurVerLabel = new System.Windows.Forms.Label();
this.YesUpdate = new System.Windows.Forms.Button();
this.UpdateVerLabel = new System.Windows.Forms.Label();
this.panel3 = new System.Windows.Forms.Panel();
this.UpdateTextBox = new System.Windows.Forms.RichTextBox();
this.panel1 = new System.Windows.Forms.Panel();
this.panel3.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// SkipUpdate
//
this.SkipUpdate.AutoSize = true;
this.SkipUpdate.BackColor = System.Drawing.Color.Transparent;
this.SkipUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
this.SkipUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))));
this.SkipUpdate.Location = new System.Drawing.Point(386, 279);
this.SkipUpdate.Name = "SkipUpdate";
this.SkipUpdate.Size = new System.Drawing.Size(64, 13);
this.SkipUpdate.TabIndex = 4;
this.SkipUpdate.Text = "skip for now";
this.SkipUpdate.Click += new System.EventHandler(this.SkipUpdate_Click);
//
// CurVerLabel
//
this.CurVerLabel.AutoSize = true;
this.CurVerLabel.BackColor = System.Drawing.Color.Transparent;
this.CurVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.CurVerLabel.ForeColor = System.Drawing.SystemColors.Control;
this.CurVerLabel.Location = new System.Drawing.Point(21, 245);
this.CurVerLabel.Name = "CurVerLabel";
this.CurVerLabel.Size = new System.Drawing.Size(94, 15);
this.CurVerLabel.TabIndex = 2;
this.CurVerLabel.Text = "Current Version:";
//
// YesUpdate
//
this.YesUpdate.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.YesUpdate.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.YesUpdate.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.YesUpdate.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.YesUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.YesUpdate.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.YesUpdate.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.YesUpdate.Location = new System.Drawing.Point(339, 245);
this.YesUpdate.Name = "YesUpdate";
this.YesUpdate.Size = new System.Drawing.Size(111, 31);
this.YesUpdate.TabIndex = 0;
this.YesUpdate.Text = "Update Now";
this.YesUpdate.UseVisualStyleBackColor = false;
this.YesUpdate.Click += new System.EventHandler(this.YesUpdate_Click);
//
// UpdateVerLabel
//
this.UpdateVerLabel.AutoSize = true;
this.UpdateVerLabel.BackColor = System.Drawing.Color.Transparent;
this.UpdateVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.UpdateVerLabel.ForeColor = System.Drawing.SystemColors.Control;
this.UpdateVerLabel.Location = new System.Drawing.Point(21, 261);
this.UpdateVerLabel.Name = "UpdateVerLabel";
this.UpdateVerLabel.Size = new System.Drawing.Size(94, 15);
this.UpdateVerLabel.TabIndex = 3;
this.UpdateVerLabel.Text = "Update Version:";
//
// panel3
//
this.panel3.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.panel3.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel3.Controls.Add(this.UpdateTextBox);
this.panel3.Location = new System.Drawing.Point(21, 19);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(432, 218);
this.panel3.TabIndex = 0;
//
// UpdateTextBox
//
this.UpdateTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.UpdateTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.UpdateTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.UpdateTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.25F);
this.UpdateTextBox.ForeColor = System.Drawing.Color.White;
this.UpdateTextBox.Location = new System.Drawing.Point(12, 8);
this.UpdateTextBox.Margin = new System.Windows.Forms.Padding(6);
this.UpdateTextBox.Name = "UpdateTextBox";
this.UpdateTextBox.ReadOnly = true;
this.UpdateTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.UpdateTextBox.Size = new System.Drawing.Size(408, 200);
this.UpdateTextBox.TabIndex = 1;
this.UpdateTextBox.Text = "";
this.UpdateTextBox.TextChanged += new System.EventHandler(this.UpdateTextBox_TextChanged);
this.UpdateTextBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.UpdateTextBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.UpdateTextBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
//
// panel1
//
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.UpdateVerLabel);
this.panel1.Controls.Add(this.YesUpdate);
this.panel1.Controls.Add(this.CurVerLabel);
this.panel1.Controls.Add(this.SkipUpdate);
this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel1.Location = new System.Drawing.Point(-6, -6);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(474, 305);
this.panel1.TabIndex = 5;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
//
// UpdateForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(29)))), ((int)(((byte)(29)))));
this.ClientSize = new System.Drawing.Size(462, 291);
this.ControlBox = false;
this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Name = "UpdateForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.TopMost = true;
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
this.panel3.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label SkipUpdate;
private System.Windows.Forms.Label CurVerLabel;
private System.Windows.Forms.Button YesUpdate;
private System.Windows.Forms.Label UpdateVerLabel;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.RichTextBox UpdateTextBox;
private System.Windows.Forms.Panel panel1;
}
}

65
UpdateForm.cs Normal file
View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AndroidSideloader
{
public partial class UpdateForm : Form
{
private bool mouseDown;
private Point lastLocation;
public UpdateForm()
{
InitializeComponent();
this.CenterToScreen();
CurVerLabel.Text += " " + Updater.LocalVersion;
UpdateVerLabel.Text += " " + Updater.currentVersion;
UpdateTextBox.Text = Updater.changelog;
}
private void YesUpdate_Click(object sender, EventArgs e)
{
Updater.doUpdate();
this.Close();
}
private void SkipUpdate_Click(object sender, EventArgs e)
{
this.Close();
}
private void UpdateTextBox_TextChanged(object sender, EventArgs e)
{
}
private void UpdateForm_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
lastLocation = e.Location;
}
private void UpdateForm_MouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
this.Location = new Point(
(this.Location.X - lastLocation.X) + e.X, (this.Location.Y - lastLocation.Y) + e.Y);
this.Update();
}
}
private void UpdateForm_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
}
}

120
UpdateForm.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -17,7 +17,7 @@ namespace AndroidSideloader
private static string RawGitHubUrl;
private static string GitHubUrl;
static readonly public string LocalVersion = "2.7";
static readonly public string LocalVersion = "2.10.3";
public static string currentVersion = string.Empty;
public static string changelog = string.Empty;
@@ -41,26 +41,26 @@ namespace AndroidSideloader
RawGitHubUrl = $"https://raw.githubusercontent.com/nerdunit/androidsideloader";
GitHubUrl = $"https://github.com/nerdunit/androidsideloader";
if (IsUpdateAvailable())
doUpdate();
{
UpdateForm upForm = new UpdateForm();
upForm.ShowDialog(); ;
}
}
//If the user wants to update
private static void doUpdate()
public static void doUpdate()
{
DialogResult dialogResult = FlexibleMessageBox.Show($"There is a new update you have version {LocalVersion}, do you want to update?\nCHANGELOG\n{changelog}", $"Version {currentVersion} is available", MessageBoxButtons.YesNo);
if (dialogResult != DialogResult.Yes)
return;
//Download new sideloader with version appended to file name so there is no chance of overwriting the current exe
try
{
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

View File

@@ -105,7 +105,7 @@ namespace AndroidSideloader.Utilities
{
public static void ExtractFile(string sourceArchive, string destination)
{
if (!File.Exists(Environment.CurrentDirectory + "\\7z.exe"))
if (!File.Exists(Environment.CurrentDirectory + "\\7z.exe") || !File.Exists(Environment.CurrentDirectory + "\\7z.dll"))
{
WebClient client = new WebClient();
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.exe", "7z.exe");

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AndroidSideloader.Utilities
{
class UpdateGameData
{
public UpdateGameData(String gameName, String packageName, ulong installedVersionInt)
{
this.GameName = gameName;
this.Packagename = packageName;
this.InstalledVersionInt = installedVersionInt;
}
public string GameName { get; set; }
public string Packagename { get; set; }
public ulong InstalledVersionInt { get; set; }
}
}

34
Utilities/UploadGame.cs Normal file
View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AndroidSideloader.Utilities
{
class UploadGame
{
public UploadGame(string Uploadcommand, string Pckgcommand, string Uploadgamename, ulong Uploadversion, bool isUpdate)
{
this.Uploadcommand = Uploadcommand;
this.Pckgcommand = Pckgcommand;
this.Uploadgamename = Uploadgamename;
this.Uploadversion = Uploadversion;
this.isUpdate = isUpdate;
}
public UploadGame()
{
}
public bool isUpdate { get; set; }
public string Uploadcommand { get; set; }
public string Pckgcommand { get; set; }
public string Uploadgamename { get; set; }
public ulong Uploadversion { get; set; }
}
}

BIN
aapt.exe Normal file

Binary file not shown.

BIN
adb.7z

Binary file not shown.

BIN
adb2.zip Normal file

Binary file not shown.

View File

@@ -1,42 +1,6 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
RSL 2.10.3
Imported offline mode commit.
This update allows you to run with a --offline switch to circumvent Google Drive mirrors in the case of a quota meltdown.
RSL 2.7
+ Added BMBF drag and drop option for Quest users
in SETTINGS menu.If users drag and drop BMBF song
zip files onto rookie either one by one, an entire
folder, or many zips at once Rookie will automatically
extract the files to a folder then push the folder
to your device then delete the extraction folder.
+ Added automatic timeout during APK install that
will ask user if they'd like Rookie to automatically
uninstall and reinstall the app. Rookie will check
for save data and copy it to a folder temporarily
then put it back after reinstall.
= Cleaned up startup tasks so booting Rookie should
be faster.
= Added automatic deletion of previous crashlog to
decrease clutter in Rookie directory.
= Added automatic installed app refresh after drag
and drop.
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmENfVMACgkQx/Rql1Vo
czcxaw//bTVxR5gt1F4c+gDT80dVfJa1Js3h5vSjGgCHjQdmsU6eaU5BQGoUorkw
6ewYF48jt84xDNj/VirkeqHV95mvsj9sksi+mxvELnAa0NdRVYj0DCqZWB/mNDfx
lYZGp2SwiGK3a6KfMpPcbi2IEWqc9ZWpdazIDy6l3oGSBAYaoVqfjl+CJQQpomIJ
x7f67Ei633dyhu8+0612LVu+tZ4ibN2pAAu1Dd5+uvlODUiYLPadhZkLwk+CYC6p
ifs/1qB/fsXJS6YJyPCmuZCbYN//jLCD9ECQ5cqZbTTU82Ub2lDE+TcdO/CsxSxU
pueIxZ+7C5TceiNzsDfKfeCWu65hZlBW1xKReDtLPFzZdZuyXYTI0v00kvapwJIO
C9Eq2qxZvdnp05tw8nY1V4Ae5Jl6oLN0BwWSZv50NhQ4Dpmbl8pemk1r5iZsRhGA
MWQCytBCaX/3EpJda8ifGJxj3kOno2ewbwXdZEMN7QqWt1scN9HxNXFWEJwO29HV
pT6ra3T0OrOBLmCQGt4w71HGFK2t+c7aPq0yI/sayguB9zjR/GpTyekg7nHXZh9g
c+WD5umN2xA0LuLjvvePKhhKTBT6ebmQJh1CRNIRtA150ULbnTAIpZJTDZyhcLXi
IUfWyWPA4G3GsRUqGWf97O2G2bIbbIzLeg3uEdxF7T9LOigYgpU=
=Rwj0
-----END PGP SIGNATURE-----
~pmow

View File

@@ -1 +1 @@
2.7
2.10.3