Compare commits

...

160 Commits

Author SHA1 Message Date
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
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
Harry Fn Potter
d02505b172 -----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-----
2021-08-06 14:41:09 -04:00
konqi
cbd54f7319 column width set to 270 2021-08-06 16:36:18 +02:00
Harry Fn Potter
258c251567 2.6 2021-08-03 17:57:33 -04:00
Harry Fn Potter
1f851470e0 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.6

+ Added No Device mode for those who wish to download games
overnight without interruption.
+ Added automatic config update at launch.
+ Added a unique HWID generator that will generate a unique
number based on your  PC's components and then encrypt it
with SHA256. This is so donors can be anonymously identified
for the purpose of future benefits/recognition. Once.the HWID
is generated RSL then creates  a text file named HWID to put
with the  clean files in the zip. Users can see their unique
HWID at any time by pressing CTRL+H  in Rookie. Your unique HWID
will always be the same.
= Added version code to any zip files created during clean files
prep.
= Added boolean to check if user has been asked to send clean
files, if they have it won't appear again for some time.
= Fixed OBB installation for Install+Download.

HFP

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEJuZYACgkQx/Rql1Vo
cze1yg//Yyw+tRfA3hLxLQejXhj/LyFsGOoTCyqTVQDuUtxZxyMAFUN3SCd5sC3h
byVpcoDMaBMGoOgE3FnpEvObd3SHVaB3xqw902saHPAhzuujv4Ru25ou+xRDU8c6
+xXPQ3O4ocgHwlFP+nCVx3eXai8Dz/2OUc6JC2PfpjU/xj3B6cs/ExSrxoHqyCJL
g5lntpE0dFQboe6gu7uEQn2Qal1Gsn2+MqCqQZh1dBIpF/gEPD8/q40St/lN7cdY
jm1lVxW3By7muxlh9wcRYsxQk78cb49+Vsa+EcxS6GK0m8Hibp8nS7RoHFMBtC1i
hgIZW5lt1cCj5WlwI3/t+vLR4Ia/eh7Vi0EiyVGhiOIQvCR2+PpkWWrVDe3zoXUX
n68zFZlL2yoaCXg5AWPp3KiQff3uxlBD58fzNZRtKzjFPNmcYR6x7PcHfai76+JD
aE36aC8Q3aMCaIaH+gH+eAhl+mzyX1Vhdl9NLLHLUXZwBnSA9drMHJsVMh6SOQiC
VMiv1vMXJllKq/7W7EGr1fWFGuPJk6FFjT1g+3+2d71yVKyPL+99JQg7UJzp112w
7ZUAD6Wt8lpW66I2zpcOBPwpoAlxg2uJy2Nc38axfrBpHsscNrYIXFMHEprLG+Xk
PqnfDHPtP1sUxe2uiZTQj3JjlEnb4ES/xBdvSPacc53+fBPs0yM=
=BAUp
-----END PGP SIGNATURE-----
2021-08-03 17:53:27 -04:00
Harry Fn Potter
0070e44917 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.5.1

+ Added PARTIAL SEARCH compatibility to Quick Search. Quick
Search now works if users type one word or one part of a word
that matches a release. For example if an app was named
"Supercool Awesome Application", typing "Application",
"Awesome", or even "Cool" would work as it works with parts of
words as well.

NOTE:As a reminder you can open Quick Search with F2, CTRL+F
or by cllicking on the Quick Search magnifying glass icon.

+ Added a blocklist for apps that can't be updated for various
reasons. This will prevent users from being asked to send apps
that cannot be used.
+ Added .png support for gameslist thumbnails.
+ Added tip under Notes section at launch to remind users they
can press F1 to view all of the program shortcuts added in a
prior update.
= Some minor syntax updates.

HFP

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEGqr8ACgkQx/Rql1Vo
czftJA//ePxg5+fuAoYNfl2D8yKpzhkvQldkdZia1GJiHBb4CJBwdhMDpDeNhKzO
ziJ5yBNLqx6wWSbHV70PF4fagASA81FeLbJxdJX4gFgtX9MpzoR2ppK+Gy1UYVGw
ij1fjQIIIHXyAVDgaS4DcRQrgxtc6R2G3iey3EBaxtaWDh2cR3sWdR6QMcZSJ/0S
/QLXROCCCIHc1mTsf37b2qQVQ/v2Yk/UAGSV6/VdN78QE7Z8dPqCLZvM+10mfXTE
AOJ6WkZBVA7HkpRgEGVtTLor+kwDROshkq+eM7yMREFv6GwHtd5H0hHGhRr/FoVW
E99TfabD9Rd5P7tvcYm2c6Diu7yz2ai7l7N6G77wr+lOfsmIniHeUYEWsPOcZHQH
P+0Xvx84cHj6Dd2+zfCWcI/jPamfgzgxrBS/pSXJ5ktdrCiJRnqeU9FhJxhGF002
7+iIZTumhAU4ab8LhSzkMg+hwhzTrhmgbeZE1jdwLiLQ3vyYszEB5zflubt86pLq
WXVvupQKtCGek1B3ETvU2YzNaQe6vVjqrh0sHkwgYgwfhLg9+gc+c3Rtq6ighqfc
KNDocmVcNOJMNkre/DOTmVU6ULg22pXlj0PgWkxph/vt1SegMbPMVGUJD0ncIqL8
eQbzNOltkzALWel4S2Itvv/JgoDU1YDupJmZNh66ihKBuIdcT0k=
=wU75
-----END PGP SIGNATURE-----
2021-08-01 10:27:04 -04:00
harryeffinpotter
596e126d2b v2.5 2021-07-31 11:52:12 -04:00
Harry Fn Potter
5a6ccf423a -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.5

+ Upgraded Extract APK from device to Extract APP to Desktop. RSL will now automatically extract the APK file, then extract the obb if there is any for the selected app, then it will compress both into a zip file and place it on the desktop so users can share their apps without issue.
+ Added automatic detection of apps that are more updated than the database user is connecting to, and if they are a pop up will ask if user wants to share the app.
= Fixed issue where copying a folder containing an obb folder via drag and drop would cause the containing folder to be copied to the obb folder as well.
= Changelog.txt now only contains the 3 most recent updates including the most current, the older changelogs can be found in the ChangelogHistory text file.

HFP

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmEFcMEACgkQx/Rql1Vo
czdoWA//cbngmK/it4fy6Hy/5JMGubJvCb0Ar+KY0UCO5FR60Q+ADCrkhPDEaWif
xnM+h4CLqyHUD0NipUxsjZ4j25VRMA20eTy3jiLKSZKq6P6KD+oRv0Tx3vTEs61U
wJdQsWK81cC9+BnhCBDuWpDJ/nCqO9ZJBYdKX0+KuYTVZwaaZSfMXD1dgQsrCQCq
zU5kgrsl+LDUJknnpfda521pbACgHlZ/Cb3bztqgnSviF38jFuYsJe7hJVjsINYz
j6HtmT+vn3Rxhk6uRTtUNhM1YVvuKzsZtUNvqd7cjT3FJXWuuoP8mgdauSahVnpQ
jMLu/dMLx0PkRXox/D8/69tDA1dxNZozXvws0OQfmNlzLfLGPZdVSWVjfU+P0feA
hMZiVICyAAJPnzfNAfVq2yDpU5wJbAhj3qG+Lj9Ox4dpmn7AUrjoUCFZxhZIZJi1
KKKz+7Q9ZDkcFODCUzZAdrI0MP7MNrsfPl8jxSCLYFe6LUIOfTAakBkxOY9x02lF
x08jfbpAsJHU3Wm8bruk+nkB+65J5kqsLkJk2n4yrkW3QtIo9xul/z9vgZKo75S6
LkPCpNo2w5gtx7+8Jv65Z/BlueUVmVWUHhQ2gHRkXenkg3McEZpqwKInqQSZkHpZ
USckVtW+iteVVR0yf+hFPRGp+Shz6/GIn9YnwVQCT2DK+ih9zD4=
=0bPq
-----END PGP SIGNATURE-----
2021-07-31 11:50:15 -04:00
Harry Fn Potter
efadb70d72 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.4.8

= Fixed wake on wifi prompt after enabling Wireless ADB.
= Gave user an option to back out of automatic wireless
ADB connection restore after device is rebooted or has
gone idle.

HFP

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD+JLIACgkQx/Rql1Vo
czcd7Q//TbRjq1ePpP3PFUm+IDFt4HRnwFOyuS8/LVOh1FPUc66vXEh/BtzK5xgN
ZPe4QRojSnZPzizkqzMnsXxhiFlwu+3Y3uA+S5JmdisfE0A0DaU9JBNv0IPCsQBG
A3azgQrN/8waq+R1A/uK9mvcO1033cTV8SkTRIWqBSjcOBT+hdvL4UngAPgrYUvp
GqYMx4/qNq8SyoYkY3VCN4LtX3iswPQkHxjwT1LB08gltMP7Hoxpaz5B1QJiC0gZ
NRAWEOMSuhdZC1X87lo08hPMwUJrt12PDzHrrDjOz8eUSUtEqjqKHY0HTpyJ5wvK
i5t0hvVC6bwXIRKeI7I8RESqGYoQYAoQDOHWMZ2fgclYOwjevMaE/1qbBpOmwBgz
3g2UM7OH5DU2b+4Er+lrHEZSplVdC9fjifGEUjm8sD2Q+sW8PaJV0wtAMYy9mIzd
pTrQE7rYGYllPJ8XAhzzLtGYXCwlrBeMdYhGjxmVet4+dtMEXAksemIq24PNxp2M
1FEcM3+jLpi0GJ+PBF9qSR70ZrKwmQcgu2miVVxoYrRA5WADp3fI5VxbdAqxwOgl
3SrI4htTvu2mBQ5x6wiWVXsWbEsDvCnx2+46FWVutdEc0QKGsmcm2znb6VjBc+Ho
w3osj+rHbWYArCWjEYdezsP1aPRAs3Uly5tJrg4Q0wd9lxJHiaU=
=ljkJ
-----END PGP SIGNATURE-----
2021-07-25 23:00:26 -04:00
harryeffinpotter
b1595931c4 2.4.7 2021-07-25 06:13:39 -04:00
Harry Fn Potter
1e3a9a5a84 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.4.7

+ Added battery percentage to stats on bottom left.
= Fixed using ENTER key to install option.
= Fixed  using Enter to install from Quick Search.
= Fixed install feed message when using Enter to Install.
= All important message boxes will remain on top
until user selects an option..
= Settings form and Quest Options form will remain on top
until closed.
= Fixed changelog formatting so updater box isn't so wide.

HFP

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD9N54ACgkQx/Rql1Vo
czfz2g/+OEMxQBKrmWaeXpe4CD1jXs92P/JMU6DPBepNNiKtE+ltX1iG/I1Ft/04
JzFLJqqQsVKP9HceZBkNie87C4YdTu5Z3LUEOS626IVlEx1t0cxXilsVeXWrFSSJ
IyAgRbXZKQRVF+nhR0yXLUSjAQqlxLTuu9kxCXOHBPSqw+MmDCukUat9SoJUFpRO
+bteP/Y+ihUHHaBcD9AizJJpTzuCgKrKUtyNDPcXPIcOoosx459+tsG+mOAilEay
UHMwQoe21//mJJSsaCPPNYOWkY/BV1JNA4dDE+eBoK02U+SXVyh50eO1LFlV1wDd
0XL0O2npdVKjhszpWk2LuyErhaRB6EDMJvNvA8RgWHMF8gR20NPPM183ui79XRr1
bPpAXWbNEVn1OOOcAD+wTwLB6BCc1ryuI4zTHejQufWLQdVMaWKxhREo7bqTWTh+
4WPLZEC3JOy4uODb2tTJLz0qCBaxXNdr0usVxbO5OaGSKOBsJ2GsBlfBTNCr6If6
tMMi2DXSTYAuIgESCqFo4cEz2YGEmOrIqQ7nx9tBhGV2bfnClBbbiYAmM15ifRHG
QHmGhak7h/NFTawOGrS4BV2HfViBR1ef7FJ9v3T4chVJN+ED9tLpfMNKuTLOZ3at
dwUOnA4jfDJL2g5YV8ebiAzPS75FSSrQ2wfcyYYyywTdlBc5K58=
=0eX4
-----END PGP SIGNATURE-----
2021-07-25 06:10:49 -04:00
harryeffinpotter
e0e9a68cb9 2.4.6
added colorblind mode.
2021-07-23 18:35:14 -04:00
Harry Fn Potter
19c90f0ad4 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.4.6

+ Added a colorblind mode for the update list. It can be found in the SETTINGS menu.

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD7Q1UACgkQx/Rql1Vo
czeuyw/9Grjaeaz0fpM1eq4luU2sKUGReCEjRzZlWv++KqJoLY5BxUZ7rkrrb5jD
oZ5yK88er1lgsii1YBMBjr4ub7K7LEJ13KCagCUJX2wjG1FUGbGtiIdfFf+ryFky
2+OfA3thCxmVCbRRHKzYQ7fks0rd1D62S4qQO/xFE1QbckPSFInLz6wno++WP4iT
Ht7g4us8IKs51kGbjGx5EuA9suG5bDQrrx6QoUMORIEGMVJdoUX286KIUpS6iy1G
nMS/kQePg45+2Y6GDDgCtfRDjqie4J2U3UpXaBQnYAr0tcW116Q54VB9d6aArmKu
DfC/JnUCes3eN9Y/vxHXytoy7RLy+VRQiZw0C6deX4N+XrmPXSGsZboU/YMpFKsV
/6q5EXc0SPDK409HSiFCi5GinIp8mnuGJnIRcwWFFxU9kYBMOjTBA2wHSEcneoZa
8aDYd0fTLNyh/W/vwYnH989ihXWg+reHAyeGym+0u9TUqeWAwbGzyoYaLCri36pK
Pp0pQGOQgt/+s+9evKtMt7YcvnadvdoA2FowVp71HlR23fZb9yLctRPI/cJd6U57
3DBOiPJDb8U4pCo7xf3GZgluBRc/KMGqMysi4S3Hpez2yZ68gvGJh5F7f8OVyGHt
CwVhODnbDlX5W8hYMF23K4B8zSaZpnVJQXYQS5SCzPagg/Pbt8E=
=Glvg
-----END PGP SIGNATURE-----
2021-07-23 18:32:26 -04:00
harryeffinpotter
bcc7499807 2.4.5 2021-07-21 16:09:57 -04:00
Harry Fn Potter
0716ca27c4 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.5.5

= fixed issue where removing userfolder from adb command changes broke install.txt

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

iQIyBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD4fh4ACgkQx/Rql1Vo
czdrvg/3ZzJNCs7+G7Nq4jGNWokm8xNPD8b8YY1zsZy5Vbort0OQVwL875E2UvpS
HDutQWKi9LgUsKRqgXm0T/O/11jTkYqGWowFa9lvuhmFYNiHo+GXirA0Mcsjoxbm
mNp8PI3TE9NjuDj55P4LXXv4v6qngzXsD1A+EqXq/43nKhuv/QWq2rrG52P24MLE
cCK8O1Ir2S0ZpZH5Q/WoeiBJRID+j/ydVuJaXpC95SoBN9TmbSEnAh65gZ5P4eiJ
oYSvgyNtG9y9I5vjTOR3P4khhWhA0NQBNiQPPdi3LuucYcTdKsQb3y3BOQ8ei3Yn
tHxA73Xdfk0mbSlk0GggSUKOLcD4Ij4QQsva4YwG786J2qGf/QvKC0ujf5B/ezzC
bPmWPVl9qJJ+2CVBZ1DuUP/G7+teEz4IGo9VTgiqiwUT61mRv8o7CIdG1RYCNobo
yMX+cHB08KgUb8NE26NrjEm6mqd4AWgvL4Zj/OdKTBdZ/R02WEvQkJgLRji2AZqn
f35TyYxSW64vhOCk1nMpcSJzGfRV0MwA3UU9WOko33ukikXp22dTXtT0LMY2qqZI
vDS7eXHHLI+ctb+gVNms7FagQbDYChSRKy0S5EX6e2EkBGz6jVxfg2lXNfkTHK2V
K8YZkfI5Rx/PKc3pNDIIrdx6h/ya8eEiBCJZ6scLbJvyzNYpfw==
=jTyb
-----END PGP SIGNATURE-----
2021-07-21 16:08:34 -04:00
harryeffinpotter
652d7cb290 2.4.4 2021-07-21 14:13:59 -04:00
harryeffinpotter
919286f85c v2.4.4
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.4.4

= Updated logs to remove all instances of windows user folder for privacy purposes.

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD4Ym8ACgkQx/Rql1Vo
czfCuA//elSOQ1dUQactp0BZ7cdpDcgoW4YwpEzddc96PwVYULsRxNnREIWKTrjg
2IGDhR53M9kTpsQ51lFwn+IAanKSl7dTsMh+yJDuZenKJga6eECaxiDHPu6JWnQY
Hy/zA012f8qoMfK/w0Ti2X3ITMtHGDqhewU9KdNGQNuAp8bH8o6lyqV01QFvyts+
FTGVB/76I9/OpffDX3fTxTS8PYJvGNAArowAOvYFhf2JcjdjpULo/oH9BVAoCoGT
8XmTYU/rAukmpWy3ensq0FxtjdD/tJt2NKgJcEzJDpkuxMYdzWUW7Sum+mexyX7k
VErW/s3w3rUHM/xW7NZgmRcpAqSRwpvvrSFxAKmGXNxEYmWrJ1jM5Nt6zjxzgk8J
0W7v1M+e/qoUz1HB42Fk++lWENhvZcjJkdRIh8NfjufiA5jc0cZXyZMJClXvMA1K
kG2PP4OqPnUNZdSPUafSGGjKlkr35tRV8SY1mx9phnMGgMZaVk6V0TPKVjHTfSsV
FBlFBuUl4EoQUz5bKUNhVszz3Y70aTBRk2M31GjojaBpOrHIj2Z0YiWoFp5maD2o
cfQ4HjhHAQAqyoD4ID9phgP9UOa0T9eoc1otkzCfRMAkBPS2DysFPpqNCdKOuuJy
gtfsvQxhALWe1qdDohIOekb2exmKj4NREGI5UjtgT+7Uf13s0Jo=
=8ePT
-----END PGP SIGNATURE-----
2021-07-21 14:11:27 -04:00
Harry Fn Potter
3be98530b6 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.4.4

= Updated logs to remove all instances of windows user folder for privacy purposes.

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD4Ym8ACgkQx/Rql1Vo
czfCuA//elSOQ1dUQactp0BZ7cdpDcgoW4YwpEzddc96PwVYULsRxNnREIWKTrjg
2IGDhR53M9kTpsQ51lFwn+IAanKSl7dTsMh+yJDuZenKJga6eECaxiDHPu6JWnQY
Hy/zA012f8qoMfK/w0Ti2X3ITMtHGDqhewU9KdNGQNuAp8bH8o6lyqV01QFvyts+
FTGVB/76I9/OpffDX3fTxTS8PYJvGNAArowAOvYFhf2JcjdjpULo/oH9BVAoCoGT
8XmTYU/rAukmpWy3ensq0FxtjdD/tJt2NKgJcEzJDpkuxMYdzWUW7Sum+mexyX7k
VErW/s3w3rUHM/xW7NZgmRcpAqSRwpvvrSFxAKmGXNxEYmWrJ1jM5Nt6zjxzgk8J
0W7v1M+e/qoUz1HB42Fk++lWENhvZcjJkdRIh8NfjufiA5jc0cZXyZMJClXvMA1K
kG2PP4OqPnUNZdSPUafSGGjKlkr35tRV8SY1mx9phnMGgMZaVk6V0TPKVjHTfSsV
FBlFBuUl4EoQUz5bKUNhVszz3Y70aTBRk2M31GjojaBpOrHIj2Z0YiWoFp5maD2o
cfQ4HjhHAQAqyoD4ID9phgP9UOa0T9eoc1otkzCfRMAkBPS2DysFPpqNCdKOuuJy
gtfsvQxhALWe1qdDohIOekb2exmKj4NREGI5UjtgT+7Uf13s0Jo=
=8ePT
-----END PGP SIGNATURE-----
2021-07-21 14:09:58 -04:00
harryeffinpotter
b4e21a9d5b 2.4.3
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.4.3

= Moved nouns.txt library to a more suitable location.

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD4T5kACgkQx/Rql1Vo
czd9Ew/+LvPnoSuNl3ynFRAjTs8Yo1r2FCY82UfWLLddYTc4waH4s2HZQkUyFBGo
emkvZUa/TZuYGzNLAB4JpPDYYONyF2LmOx8z0Pwtp1+RoEJbGe7WsZa3oF+PQ2AU
+1+hE0u8RW546uaGdzyToX3N5JnPAA2MctG0+3X5J+k8C+CHWgMJyoDnoz62b2Qb
gER2HZMBlrebJwSJto+tKeLRDk2FI4UmQDu2CQpvlwkQMwa98ORRrulaO4LOEH3I
z5S6WyxlcF0Cy4dwD5PVsx4YTHn7Rjy9HHniMYe+vv7LQOz6w+DZZQv6x1BZ2xSF
ZqS76T3x5XAVpcH2JX7gce7dTFVpft/P/C/vOVAa8E2pUp3stuUFoIyVoeWPwgvJ
3wkJFeoG4umlLQZY934Mb6Hb2tu38xlcQd/xsO3aZRPUOZBuYMcbpf8V7qv7f+p+
YDSXwI92ostB3RNkXlUy2onSWrXoLQF70lq3zaNcUeyQt6HILc80h1pXC6VWnITz
RRH9ojt6CWLyzIXKgqdKWKVJJQ5GIR0YITk4kMyGqM/CP3pUPCUKPAVbWK4ajoGA
1A2JBniQwYmCj+vkfQDpwkacK3zmYy/JRpTYdyj7BuOXjGnPpberjdd+jpgGBRCH
IeOpD/kmWaKm5lH1KmEOPGe86bhpQstOba7EsiBM4/x6QpoqVOU=
=yWnO
-----END PGP SIGNATURE-----
2021-07-21 12:51:17 -04:00
Harry Fn Potter
6d3885dc48 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.4.3

= Moved nouns.txt library to a more suitable location.

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmD4T5kACgkQx/Rql1Vo
czd9Ew/+LvPnoSuNl3ynFRAjTs8Yo1r2FCY82UfWLLddYTc4waH4s2HZQkUyFBGo
emkvZUa/TZuYGzNLAB4JpPDYYONyF2LmOx8z0Pwtp1+RoEJbGe7WsZa3oF+PQ2AU
+1+hE0u8RW546uaGdzyToX3N5JnPAA2MctG0+3X5J+k8C+CHWgMJyoDnoz62b2Qb
gER2HZMBlrebJwSJto+tKeLRDk2FI4UmQDu2CQpvlwkQMwa98ORRrulaO4LOEH3I
z5S6WyxlcF0Cy4dwD5PVsx4YTHn7Rjy9HHniMYe+vv7LQOz6w+DZZQv6x1BZ2xSF
ZqS76T3x5XAVpcH2JX7gce7dTFVpft/P/C/vOVAa8E2pUp3stuUFoIyVoeWPwgvJ
3wkJFeoG4umlLQZY934Mb6Hb2tu38xlcQd/xsO3aZRPUOZBuYMcbpf8V7qv7f+p+
YDSXwI92ostB3RNkXlUy2onSWrXoLQF70lq3zaNcUeyQt6HILc80h1pXC6VWnITz
RRH9ojt6CWLyzIXKgqdKWKVJJQ5GIR0YITk4kMyGqM/CP3pUPCUKPAVbWK4ajoGA
1A2JBniQwYmCj+vkfQDpwkacK3zmYy/JRpTYdyj7BuOXjGnPpberjdd+jpgGBRCH
IeOpD/kmWaKm5lH1KmEOPGe86bhpQstOba7EsiBM4/x6QpoqVOU=
=yWnO
-----END PGP SIGNATURE-----
2021-07-21 12:49:13 -04:00
pmow
8aff424ccc add nouns text file 2021-07-20 08:26:26 -04:00
Harry Fn Potter
f50ebdd28c Fixed QU Settings config installing when not set. 2021-07-20 04:00:31 -04:00
harryeffinpotter
5608565275 2.4.2
2.4.2
2021-07-20 02:18:56 -04:00
Harry Fn Potter
9f783b3b1a 2.4.2 2021-07-20 02:17:18 -04:00
harryeffinpotter
02156985aa 2.4.1 2021-07-20 01:26:34 -04:00
Harry Fn Potter
a81cb1e496 2.4.1 2021-07-20 01:25:09 -04:00
harryeffinpotter
688bf0a274 2.4hf 2021-07-20 01:23:00 -04:00
Harry Fn Potter
5d84133c3e Fixed issues with debuglog and crashlog upload. Both can now be shared with moderation staff without issue. 2021-07-20 01:16:46 -04:00
Harry Fn Potter
8e9e5cfb88 crashfix if no nouns.txt 2021-07-18 23:06:05 -04:00
Harry Fn Potter
3d19cab51c updater wont work with 3 digits or HF for some reason. 2021-07-18 20:18:54 -04:00
Harry Fn Potter
e8a3f5e34e 2.3HF1 2021-07-18 20:13:44 -04:00
Harry Fn Potter
e1ed9af1d7 Added check for nouns.txt 2021-07-18 20:09:00 -04:00
Harry Fn Potter
d154d67c57 BeugLog server support, MAJOR OBB BREAK FIX. 2021-07-18 19:42:10 -04:00
Harry Fn Potter
fb9d4ab0d3 Fixed debuglog code issues until server until debuglog server is live 2021-07-18 01:25:27 -04:00
harryeffinpotter
2f34ac8848 Merge pull request #67 from SamHoque/master
bugs/download-progress-bar-not-working-as-intended
2021-07-17 20:13:25 -04:00
Harry Fn Potter
9e352c3144 changelog to add 2.1.1 hotfix 2021-07-17 15:45:13 -04:00
Harry Fn Potter
b07e6bc12c 2.2.1 2021-07-17 15:43:10 -04:00
Harry Fn Potter
f8ee9b493a -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.2

+ Added custom naming scheme to Debug Log. Debug Log now uses 2 random nouns as its name when generated.
+ Added shortcut commands. Press F1 to see list of shortcuts.

  F1  = Shortcuts List
  F2  = Search
  F3  = Quest Options
  F4  = Rookie Settings
  F5  = Refresh Games List
  F11 = Copy Debug log to Desktop.
  F12 = Copy Crash Log to Desktop (if one exists).

  CTRL + R  = Run custom ADB command.
  CTRL + F  = Search
  CTRL + P  = Copy package name of selected game to Clipboard.
  CTRL + F4 = Restart program.

+ Added ability to upload debug logs to remote server (the server should be updated to reflect this sometime this week!)
= If Install.txt exists apk install and Obb copy will only be run from install.txt - this is to prevent double copy of obb files or double install of APKS.
= Fixed issue where if user started DL+install on one title then quickly selected a different title in the games list it would download the newly selected item instead of the originally intended item.
= Fixed issue that caused download progress bar to not work if multiple items were queued.
= Fixed other obb copying issues.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmDzKesACgkQx/Rql1Vo
czeiXQ/+OsH5CdnShheJR85/uIkVLGDf75Hkybj7k+5gV688imYwWbCRarudqa8k
aVC5g69mdKD8rD8DzWjccpFwxvOSq5MRQMWB/Nl/M2142Rnr1M4WdP6xEmMq1qmQ
X39T3tdpgxxKyDPIt4EX/iLT6qSHdB69qFtMeEoOsHmisqGDFDCHGs835VUUL9FU
PaZ218Dd07r9/W9cJKX5EI/ihWZ5lv+0defBofQu2A8GCOXzuWIudLtcG5uYIJwO
9frevYIKteuq+MmcXedgu3uWUb0CnQ+tEyShPYjTdrFdMJYgFrOzIIlogBWK5fm3
cp8YSzeHJpBnD8qQar/W92WTTzvWd7I9vk7YB/Pdn6MIzzTJX540R2fu2rwsYBCG
DciqA8+V5sDx5eRmrcUxrmxrsDMPlbpqos0R+yujCHyiLHzt1d/oEohZ/mNw24y4
3MrjGyzlJqRZZFnaMLGNooLBrT9EeGcTXk/MgJjSO1XQjCVAWmrrsEHCXqcKwi8i
IW5OMKld80wqWr79LRF6dPxjcuwRgVE8mNd6G6qedX5TXvqjHUEVymMLFFvhVQnQ
QnOHX0HzWXF/64ghD6r3OR4pQ8C5xb7Z6tEwXX7soQVo610m7nJT1zaHm2m9HSJN
AA1bdfK9SEKXl3KJT7SCEnQ/2ED6Qr/VBFXcJB/10Il/n8AdJ2o=
=DFRR
-----END PGP SIGNATURE-----v
2021-07-17 15:08:55 -04:00
Sam Hoque
d66e6f55d3 bugs/download-progress-bar-not-working-as-intended
- Fixed the progress bar being stuck in marquee mode.
2021-07-17 14:25:05 +06:00
harryeffinpotter
25358d3a6d Merge pull request #66 from SamHoque/bugs/fix-download-games-dialog
bugs/fix-download-games-dialog
2021-07-17 04:16:29 -04:00
Sam Hoque
8088c2cf11 bugs/fix-download-games-dialog
- Recreated branch https://github.com/nerdunit/androidsideloader/pull/61 created by @dkgitdev since the branch had some merge conflicts, that was too long to resolve.
2021-07-17 14:15:57 +06:00
Harry Fn Potter
3b684142e9 Log upload 2021-07-17 02:47:12 -04:00
harryeffinpotter
e0945a71ac Merge pull request #64 from SamHoque/master
Tidied up mirror drop down
2021-07-17 02:44:23 -04:00
harryeffinpotter
a63b8b2a5c Merge pull request #65 from SamHoque/bug/fix-crashes
bug/fix-crashes
2021-07-17 02:44:07 -04:00
Sam Hoque
69dfd9ca00 bug/fix-crashes
- Fixes two crashes that occurs when closing the application
2021-07-17 11:26:08 +06:00
Sam Hoque
ebacfc0e42 Tidied up mirror drop down
- Replaced the "VRP-mirror" text to be an empty string inside `remoteList.items`
- Changed `currentRemote` to concat ` "VRP-mirror" ` before the currently selected `remotelist` item
2021-07-17 11:05:57 +06:00
Harry Fn Potter
9a3e9617b5 F3 and F4 now open Rookie Settings and Quest Options, respectively. 2021-07-17 00:28:38 -04:00
Harry Fn Potter
20607bf3b4 Logger update. 2021-07-17 00:16:42 -04:00
Harry Fn Potter
063b0d05d5 Hotkeys update, fixed obb loading taking forever. 2021-07-17 00:15:25 -04:00
Harry Fn Potter
306e2eb19b 2.1.6
bug fix
2021-07-14 07:02:25 -04:00
Harry Fn Potter
119a95406e -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.1.5

+ Added Releasename to installing messages and download size message.
= Mulitple bugfixes.

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmDums0ACgkQx/Rql1Vo
czc+PRAAmKSXHjNqO6JXpUKIQczrs3q15yZztgmOQMULNUImis3+/ykOxsMJit1A
W6ORtj3i2VH0TDBx/hhRghMPo+dNilyKnCWm928mXc3taMOEOKu+Dz8WfhnuNp0A
ENmV5fKfuChqrn/6jkUY8UG12NM0eu3A+7fH6LvRADxRxESVH81JUtcf4bSAlier
JuL/q67nv8mThFS3tRtjjvmu0nQMCUcvagfwRNFOUW0aob7NBAp6wxTsbxZo0yEq
oVOxyTAOR84IGHpWeDKDyMw+AySMnHQXl9Ty385zg4eHZr/l1uQcK61uNfiqVCK+
Pag6I1+vLs/3Z3v6qD84iUnis/RV2lqiZcenNeTHQgBKzSsxegB5t0WaID7qlnec
655QnEUbLbIxENS7HodMR1+CzWKgmmYpIH9jV+vH0+mTaKnAYmW56q/ae8OmjXqw
6NXSfog3Dv7U8Imq21Q8glxt/CXh1fY0I8JLxpMjbwEDm56fvvzdRAeE3TeXJR0y
CD9HbH/G8oH/OhLaj1UR5y9FR3PLIBhHmnl9VHtxcvv/nrHMQHbM9bAjPUpNdnSg
30yZxPw/eqv8KLhGxxc+cBnXv3p5bNf2j27gY1Q8XbgcL8PAM6NlVBN/9oaDQ5cL
r5Cc4d5r9F+Q+QrhpZlw3jshHdoVKqgc4ut6xBAWulztNWNvLok=
=tySN
-----END PGP SIGNATURE-----
2021-07-14 04:24:54 -04:00
Harry Fn Potter
2bd4bda513 2.1.5 many bugfixes added gamename to installation messaging. 2021-07-14 04:23:44 -04:00
Harry Fn Potter
4126c82f4d updater fix 2021-07-12 06:29:13 -04:00
Harry Fn Potter
d35fed0217 2.1.4
2.1.3.2 wouldnt work with updater.
2021-07-12 06:21:07 -04:00
Harry Fn Potter
111d3a7176 -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

RSL 2.1.3.2

+ Added checkbox to enable Enter to Download+Install.
= Fixed crash that occurred when user held down up arrow or down arrow on gamelist.
= Fixed all issues with Install.txt path.
= Clicking out of search box now closes it.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmDsFZ8ACgkQx/Rql1Vo
czcwJg/+PFiXfh6PPZNIRf2Zeht7WN8oxuUFV907KnD5+gKD0rzNd1NzgrcPOgAh
/oJakvY6ryLyaopJFZ8bm7++tQ3w6mbnzPaGweNoOF7/oLDb9NKVlK5/VjA3JPPN
QtOebRgBsigoRGGTq0s7ZRZV99vtSm2R1+1z9qlEu5Fm2hEiIggLvSBdGWDhbGnZ
jnvAZixeYgR+R6x4MZTsDao+qIYMio7heiVdN03gQ4hAaPbZ/I6s3cS+K33k02Nz
IEATqkwoLOevmN/D773A0cMzh/ZQWs557E3aKtwB+EHo/0ucCk0WaMSt4WdH8Qqe
WWF6+UT8FEEN2M76SQrg80xBj3QxzfIi92c231rVvtHMiVn5qUhTrDYb2wqx7J99
cJeMgANBmWSBZRBNW7jwhAxUVXE9vE8eqBza9MarXbJaLtq3Mf0ECLWvFPllA8dU
lnBcdSuTESvZkBAokkCwEJOb7sootBpEz5BZtE268mZEfsHUGWo3/VZDrJ7lLXJW
mEE2aCcHpNWysa9CsSee/QWNgLH2v+9PM3r/1SJyQ23C2hwyQI+F2lkch8Ar5Qfn
YxMWnhAcYXTRtcxY0s7xuhpUr/TGc6m9QY6NeVYMvb3g1gbmGOyyN/MELNOkEF/l
FXnrY4AfaNTs6EL6/id/viGcHc1MnnjgzlTNg5rgoxtFrHdVwP4=
=o0TQ
-----END PGP SIGNATURE-----
2021-07-12 06:17:21 -04:00
Harry Fn Potter
5e235c5125 Search will now select games at bottom of list too.
Added hidden shortcut CTRL+P which will turn on a property that copies the packagename of selected games to the clipboard.
2021-07-10 13:06:33 -04:00
Harry Fn Potter
9ccf7811e5 2.1.1H wouldnt work so, 2.1.3 2021-07-10 06:28:09 -04:00
harryeffinpotter
93d606bcac remove newline 2021-07-10 06:24:30 -04:00
Harry Fn Potter
8d0eb4a84d version code HF 2021-07-10 06:18:35 -04:00
Harry Fn Potter
6f20154599 Hotfix - adb kill server was running BEFORE adb was copied to correct directory. It's not an RSL update without one program breaking bug! 2021-07-10 06:18:19 -04:00
Harry Fn Potter
bbe84000b7 Fixed crash when clicking DragDrop label during load. 2021-07-10 05:34:29 -04:00
Harry Fn Potter
30ead79ed1 version # 2021-07-10 05:25:30 -04:00
Harry Fn Potter
97b6da3abe 2.1.2 ALL issues fixed. 2021-07-10 05:18:13 -04:00
Harry Fn Potter
6c2a7413b4 Fixed all merge/branch destruction. 2021-07-10 01:17:25 -04:00
Harry Fn Potter
744ce530dc + Added optional Wake on Wifi setting so Wireless ADB will still connect as long as device is not powered off or dead.
+ RSL will now automatically choose any Oculus device over devices made by other manufacturers if more than one ADB device is present.
= Fixed Download+Install QUSettings application if QUSettings are set.
= Fixed Pull APK from device.
2021-07-09 05:38:39 -04:00
Harry Fn Potter
8a299748aa Revert "Revert "Revert "jkvhguyghkijhijbklbkhjlhiulj"""
This reverts commit e76f619311.
2021-07-09 04:22:23 -04:00
Harry Fn Potter
e76f619311 Revert "Revert "jkvhguyghkijhijbklbkhjlhiulj""
This reverts commit b3ea6cacae.
2021-07-09 01:45:48 -04:00
Harry Fn Potter
b3ea6cacae Revert "jkvhguyghkijhijbklbkhjlhiulj"
This reverts commit 0acc36feed.
2021-07-09 01:40:01 -04:00
Harry Fn Potter
93a4629739 Revert "jbh"
This reverts commit bf41013add.
2021-07-09 01:40:01 -04:00
harryeffinpotter
93263a4afe Add files via upload 2021-07-09 01:04:16 -04:00
harryeffinpotter
23990935d1 2.1.1HF1 2021-07-09 01:01:12 -04:00
Harry Fn Potter
bf41013add jbh 2021-07-08 14:01:22 -04:00
Harry Fn Potter
0acc36feed jkvhguyghkijhijbklbkhjlhiulj 2021-07-08 13:57:03 -04:00
Harry Fn Potter
3301227163 Revert "Last minute patches/fixes. + changelog update."
This reverts commit aba08c9ec70941d0c9f1173bd50c00715c48dc43.
2021-07-08 13:57:03 -04:00
Harry Fn Potter
45d1981451 Last minute patches/fixes. + changelog update. 2021-07-08 13:57:03 -04:00
Harry Fn Potter
f22636d81f Updated version number to push update, added Not enough storage message boxes from both RCLONE (pc space too low) and ADB (android device space too low) 2021-07-08 13:57:03 -04:00
Harry Fn Potter
bd8e94c210 Cleaned up a ton of code, fixed 2x crash errors from last update. Added timestamp to crashlog and debuglog, removed wall of test (gameslist entire contents) from debuglog to make it easier to read. 2021-07-08 13:57:03 -04:00
Harry Fn Potter
cac88cae92 + Added optional Wake on Wifi setting so Wireless ADB will still connect as long as device is not powered off or dead.
+ RSL will now automatically choose any Oculus device over devices made by other manufacturers if more than one ADB device is present.
= Fixed Download+Install QUSettings application if QUSettings are set.
= Fixed Pull APK from device.
2021-07-08 13:57:03 -04:00
Harry Fn Potter
4370e922ef test 2021-07-08 13:57:03 -04:00
Harry Fn Potter
caa4f78943 Major rollup update 2021-07-08 13:52:28 -04:00
Harry Fn Potter
d3b988546f Revert "Forked RSL for quest settings standalone purposes then completely forgot what branch I was on. Here's like 10 updates in one."
This reverts commit cbdde48344.
2021-07-08 13:38:32 -04:00
Harry Fn Potter
cbdde48344 Forked RSL for quest settings standalone purposes then completely forgot what branch I was on. Here's like 10 updates in one. 2021-07-08 13:33:16 -04:00
harryeffinpotter
3b830d9f67 update 2021-07-07 14:36:16 -04:00
harryeffinpotter
7572ddb84e 2.1.1HF1 2021-07-07 14:34:55 -04:00
harryeffinpotter
7c6f05361e 2.1.1HF1 2021-07-07 14:32:43 -04:00
harryeffinpotter
5b54f195f1 2.1.1 2021-07-05 17:46:47 -04:00
harryeffinpotter
bd71e07b19 hf5
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Update RSL2.1HF5

Fixed ADB path for usernames containing spaces. ADB now located at c:\RSL\VersionNumber\ADB

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

iQIzBAEBCAAdFiEEKjgtlwMyrpVu4TGfx/Rql1VoczcFAmDdNvsACgkQx/Rql1Vo
czdIWQ/+OvvchZOuwMZJvd6d/N4WmBUPKm3TzyiF5JM/STLEbLIHB1p6LQg+6J3K
3d9x3mQmu/gMHMumsfmuOuHHI7OOs9CLOVY2UFm7CqTnDf7iCxl8+6/iQw48yfj9
63qwUKZdLueRX9IqtcV2MwZJP7eKdZmtv6ALyRbjWmo2fgbm/Fs1U+TfGnlY7qLg
wIascv5DuKRyHvRzlgdn6OqmewWTxHDOTwCTjodROIK9guCELNYhEWv/TtgMldv9
gz1Lr8KZOcxNltpvstJgdbeFy61LK67su0rKZHsGMu4x0hDe4YOyjyMDtXrVJ0VH
SJBqDgSKD3HE/MNYkCWusqs7np2XKXC8hP6nm2QO9zM44d+UWDfrJbwvvw6QUoez
Iqk/PskC3sF7kWAv4O+LRmLDlrHD2RG5TkkE4ohiIi4D4VaNEx4QyVf6INN+A9xd
IxcvXC9QkFwffUD93cThEdLNRnrnzZSsUFMRh3XrvPbq2wfvWjqZX1EGfD7ug0Mf
r9uPX4RdILvsXeybefiiwLiw3UNMJtUlaKDvqIit5S78BIP6DY+dGnMMRIQJa1vd
XBPnIHyifzvl1nyYd6TWCFRuOzZLYirv4Ug6xS1/KzyURXIz2P0EEhDURJAR/q+M
ZmqSO2eQo64B7Dfa9oRLKkZRfhWFgtYA9QKm9ei7tOPbnJ+2718=
=o5Nr
-----END PGP SIGNATURE-----
2021-06-30 23:34:43 -04:00
Harry Fn Potter
5b5ce78471 changelog hf5 with sig 2021-06-30 23:31:46 -04:00
Harry Fn Potter
c96a98b38a Merge branch 'master' of https://github.com/nerdunit/androidsideloader 2021-06-30 23:29:16 -04:00
Harry Fn Potter
b0bb41732d ADB path fix once and for all. 2021-06-30 23:29:04 -04:00
harryeffinpotter
c6ef62c6ca 2.1HF4 2021-06-29 06:37:48 -04:00
Harry Fn Potter
0b04783962 Changelog update. 2021-06-29 06:33:21 -04:00
Harry Fn Potter
5fab216798 Updated version # in updater. 2021-06-29 06:28:08 -04:00
Harry Fn Potter
a37c843a99 Update RSL2.1HF4 - RSL now copies ADB files to AppData\Roaming\RSL\Version\ADB 2021-06-29 06:24:46 -04:00
harryeffinpotter
222edcd6a8 2.1 hf3 2021-06-20 17:49:13 -04:00
harryeffinpotter
130140727b testing something 2021-06-20 17:47:00 -04:00
harryeffinpotter
5ec2f260fc hf3 2021-06-20 17:41:37 -04:00
Harry Fn Potter
a7ad7c0a83 Fixed install.txt AGAIN. The spaghetti code is spaghetti code. 2021-06-20 17:31:15 -04:00
Harry Fn Potter
bd511d28a8 FINALLY back to normal. JFC. 2021-06-20 12:29:26 -04:00
Harry Fn Potter
75a75bd627 Missing bracket in mainform. 2021-06-19 23:05:09 -04:00
Harry Fn Potter
0bc0f6668a fixed obb install.txt. Fixed adb errors. Should be all good meow. Also fixed wireless causing program freeze if IP changed. 2021-06-19 23:03:18 -04:00
Harry Fn Potter
f72c6b8d95 updater 2021-06-19 20:03:50 -04:00
Harry Fn Potter
3952931831 Merge fixes 2021-06-19 20:02:39 -04:00
Harry Fn Potter
9346b75916 Fixes 2021-06-19 20:01:12 -04:00
Harry Fn Potter
b9e98894e9 Fixed all issues. 2021-06-19 20:00:18 -04:00
Harry Fn Potter
c2b4fb499c Merge branch 'master' of https://github.com/nerdunit/androidsideloader 2021-06-19 04:09:08 -04:00
Harry Fn Potter
e040e36564 Install.txt was using cmd exe , made it use adb exe and added another function for cmd only purposes for 7zip extracts during install.txt 2021-06-19 04:08:56 -04:00
harryeffinpotter
459a496bbb 2.1.2HF 2021-06-17 04:24:54 -04:00
harryeffinpotter
e8fcae997b 2.2 2021-06-17 04:22:20 -04:00
Harry Fn Potter
9912af4acc Updater revert 2021-06-17 04:17:37 -04:00
harryeffinpotter
f243853fca HF 2021-06-17 04:14:52 -04:00
harryeffinpotter
fc98d61304 removed v 2021-06-17 04:12:14 -04:00
Harry Fn Potter
d38af14ed4 Merge branch 'master' of https://github.com/nerdunit/androidsideloader 2021-06-17 04:09:49 -04:00
Harry Fn Potter
17165c35a9 changelog 2021-06-17 04:09:42 -04:00
harryeffinpotter
5e30e3a22c 2.1.2 2021-06-17 04:08:28 -04:00
Harry Fn Potter
bba48c5dc5 ADB Debugging warning reimplemented. Unauthorized code section was not proccing response. 2021-06-17 04:01:15 -04:00
Harry Fn Potter
5d75edaf63 Anchor points + max/min window size for Quest options. 2021-06-16 05:58:29 -04:00
Harry Fn Potter
62d9187cfa Merge branch 'master' of https://github.com/nerdunit/androidsideloader 2021-06-16 05:38:11 -04:00
Harry Fn Potter
cf1dda5e5b 2.1.2 - in progress, still testing,
= Fixed apk drag and drop when install.txt present, apk now installs prior to following install.txt commands.
= Changed OBB procedure for drag and drop to check for com. in directory name prior to running copyObb command.
= Fixed freeze caused by having Wireless ADB enabled but device idle or rebooted.
2021-06-16 05:38:01 -04:00
harryeffinpotter
a5f6590019 v2.1.1
2.1.1
2021-06-01 12:34:02 -04:00
Harry Fn Potter
b7cd6c1cb4 Merge branch 'master' of https://github.com/nerdunit/androidsideloader 2021-06-01 12:32:04 -04:00
Harry Fn Potter
452e733b3a changed version name to 2.1.1 2021-06-01 12:31:45 -04:00
harryeffinpotter
146defaef3 update to hf2
update hf2
2021-06-01 12:17:30 -04:00
Harry Fn Potter
fb2b6c0a58 version change 2021-06-01 12:12:59 -04:00
Harry Fn Potter
cec0104b05 Merge branch 'master' of https://github.com/nerdunit/androidsideloader 2021-06-01 12:12:38 -04:00
Harry Fn Potter
7c78acb9bd HF2 Fixed QUSettings not working (due to 0's not being in unused fields), fixed backup and mount. 2021-06-01 12:12:24 -04:00
harryeffinpotter
7cad9565b2 HF 2021-05-29 10:28:06 -04:00
harryeffinpotter
a47918841f test 2021-05-29 10:07:21 -04:00
harryeffinpotter
b8e28b38ff Hotfix 2021-05-29 09:54:41 -04:00
Harry Fn Potter
2f66e7bf88 Hotfix: Font size and Install.txt automation. 2021-05-29 09:51:43 -04:00
Harry Fn Potter
30f6dc9064 Merge branch 'master' of https://github.com/nerdunit/androidsideloader 2021-05-29 08:37:25 -04:00
Harry Fn Potter
8f937ee8f3 updater /n fix. 2021-05-29 08:36:12 -04:00
harryeffinpotter
94b7aac050 fix 2021-05-29 08:34:55 -04:00
harryeffinpotter
89c58b202e 2.1 2021-05-29 08:22:04 -04:00
Harry Fn Potter
7d2f61d5ab changelog formatting 2021-05-29 08:18:28 -04:00
Harry Fn Potter
80ae3f6485 Final tweaks/beta fixes. 2021-05-29 08:17:23 -04:00
Harry Fn Potter
150485fd3a Fixed automatic backup on uninstall and install.txt output. Ready to be published, all known beta issues fixed. 2021-05-28 03:17:36 -04:00
Harry Fn Potter
1f63bebc20 Fixed break in Mount function. 2021-05-26 01:08:43 -04:00
Harry Fn Potter
cdd0a70a3e Beta test fixes and tweaks, stylized Quest Options menu, brought back user.json, added Pull videos/screenshots buttons, fixed install.txt entirely, added 7z.exe search for unzipping massive databases upon install *like HLLambda" 2021-05-26 00:36:27 -04:00
Harry Fn Potter
336d86b20b Fixed wireless ADB crash, added pull videos/screenshots from quest feature in quest options, added horizontal bars for aesthetic, added user.json button to quest options, fixed dictionary version code storing, just need to properly compare dictionary code to rclone code rather than grep for faster launch. 2021-05-25 12:16:16 -04:00
Harry Fn Potter
dea5d3db9c 2.1 ADB+QU+Install.txt+Usability update
Patch Notes:

-Added Wireless ADB that persists when PC is rebooted or ADB.exe is closed, does not persist on Android Device reboot. Either keep on charge or wake then put back on hold before sideloading. Set DHCP assigned IP for best results.
-Fixed Install.txt automation to make Manual installs automatic(ask for BMBF tester if interested, will be functional when official repo is updated.)
-Added QU Settings for their newest patch method. Can be found under Quest Options, this will allow you to change settings for any games that include "-QU" in the version/filename. Click Enable box to reveal the options.
NOTE: Clicking enable again will remove the settings file, if you re-enable you MUST click apply again for it to work.
-QU Settings are applied automatically via any games Downloaded/Installed via Rookie as long as they have been enabled and applied in Quest Options.
-They can also be applied by selecting the game you wish to add them to in the menu at the top of RSL in the main window, the same list used to uninstall games, then clicking on Install QU Setting.
-To remove a setting for a game, select it from the same menu and click Remove QU Setting.
-If you click Delete Custom Settings in Quest Options it will not delete any games installed while it was enabled, you must do this with the previously mentioned Remove QU Setting option.
-Clear Settings just clears the values entered in the fields.
-Settings entered into those fields will persist between instances of RSL.
-Added Enable Wireless ADB and Remove Wireless ADB to main menu.
-Added ">" symbols on collapsible and expandable menu items to let user know they can be expanded/collapsed.
-"Hand/Finger pointer" symbol added above clickable main menu buttons to let user know they're clickable.
-Added logic to allow entire list to load and compare installed versions with Rclone versions before populating and added informative text of this step to the bottom/title bar.
-Probably some other things I am forgetting.
2021-05-21 12:06:18 -04:00
nerdunit
402e1679e2 added back warning.png to stop crashing old sideloaders
added back warning.png to stop crashing old sideloaders, this file was displayed as a joke for april 1
2021-05-09 19:33:32 +08:00
Harry Fn Potter
9b4c8485d6 Merged Rookie's update with mine, cleaned up UI again. 2021-05-08 07:55:24 -04:00
Harry Fn Potter
8b4289d11f Design tweak (stupid scaling) 2021-05-08 04:56:46 -04:00
Harry Fn Potter
e6ff0b0ce0 Fixed backup command. Apologies for the multiple commits - tested it then accidentally changed something right before pushing. Reverted and tested. 2021-05-08 04:08:11 -04:00
Harry Fn Potter
4362d0d706 Added creation of a subfolder with current date to backup folder. Added message box with warning that it may take up to a minute. 2021-05-08 03:52:25 -04:00
Harry Fn Potter
f4d0969102 Changed backups directory to documents\RookieBackups so VRPE install doesn't remove backups. Changed mount cursor to regular arrow (accidentally set it to hourglass previously). Very minor visual design changes. 2021-05-08 01:55:46 -04:00
Rookie
f713c217e1 do internet checks 2021-04-28 16:24:57 +08:00
Rookie
89e6b84183 fixed stuff 2021-04-15 20:39:22 +08:00
Rookie
c5f7ef003a change version 2021-04-15 16:39:09 +08:00
Rookie
1276891835 change version 2021-04-15 16:32:26 +08:00
Rookie
2de54924a3 Small UI Changes
Made UI a bit bigger, re arranged some elements, games images now dispose to save some memory
2021-04-15 16:22:23 +08:00
Harry Fn Potter
7130e9e4e0 gitignorefixed 2021-04-15 02:58:34 -04:00
Harry Fn Potter
ebfafbbcb6 redesign! 2021-04-15 02:50:38 -04:00
Rookie
908ecf4a1f added packages 2021-04-14 16:38:03 +08:00
Rookie
d7213f9082 Added back readme adb 7z and launcher 2021-04-13 22:56:41 +08:00
91 changed files with 48112 additions and 1583 deletions

21
.gitignore vendored Normal file
View File

@@ -0,0 +1,21 @@
################################################################################
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
################################################################################
*.pdb
*.xml
*.xsd
bin/
adb/
rclone/
thumbnails/
notes/
.vs/
/.vs/AndroidSideloader/v16/.suo
/adb/adb.exe
installedPackages.json
AndroidSideloader.csproj.user
AndroidSideloader.csproj.user
AndroidSideloader.csproj.user
/AndroidSideloader v2.1.exe
/crashlog.txt
/debuglog.txt

View File

@@ -0,0 +1,7 @@
{
"ExpandedNodes": [
""
],
"SelectedNode": "\\Sideloader.cs",
"PreviewInSolutionExplorer": false
}

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

BIN
7z.dll Normal file

Binary file not shown.

BIN
7z.exe Normal file

Binary file not shown.

376
ADB.cs
View File

@@ -1,24 +1,40 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Windows.Forms;
using JR.Utils.GUI.Forms;
using Newtonsoft.Json;
namespace AndroidSideloader
{
class ADB
{
static Process adb = new Process();
public static string adbFolderPath = Environment.CurrentDirectory + "\\adb";
public static string adbFolderPath = "C:\\RSL\\2.1.1\\ADB";
public static string adbFilePath = adbFolderPath + "\\adb.exe";
public static string DeviceID = "";
public static string package = "";
public static ProcessOutput RunAdbCommandToString(string command)
{
Properties.Settings.Default.ADBFolder = adbFolderPath;
Properties.Settings.Default.ADBPath = adbFilePath;
Properties.Settings.Default.Save();
if (DeviceID.Length > 1)
{
command = $" -s {DeviceID} {command}";
}
if (!command.Contains("dumpsys") && !command.Contains("shell pm list packages") && !command.Contains("KEYCODE_WAKEUP"))
{
Logger.Log($"Running command {command}");
string logcmd = command;
if (logcmd.Contains(Environment.CurrentDirectory))
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
Logger.Log($"Running command: {logcmd}");
}
adb.StartInfo.FileName = adbFilePath;
adb.StartInfo.Arguments = command;
adb.StartInfo.RedirectStandardError = true;
@@ -27,7 +43,6 @@ namespace AndroidSideloader
adb.StartInfo.CreateNoWindow = true;
adb.StartInfo.UseShellExecute = false;
adb.StartInfo.WorkingDirectory = adbFolderPath;
adb.Start();
adb.StandardInput.WriteLine(command);
adb.StandardInput.Flush();
@@ -42,12 +57,167 @@ namespace AndroidSideloader
error = adb.StandardError.ReadToEnd();
}
catch { }
if (command.Contains("connect"))
{
bool graceful = adb.WaitForExit(3000); //Wait 3 secs.
if (!graceful)
{
adb.Kill();
}
}
else
adb.WaitForExit();
if (error.Contains("ADB_VENDOR_KEYS") && !Properties.Settings.Default.adbdebugwarned)
{
DialogResult dialogResult = FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.Cancel)
{
Properties.Settings.Default.adbdebugwarned = true;
Properties.Settings.Default.Save();
}
else
ADB.WakeDevice();
}
if (error.Contains("not enough storage space"))
{
FlexibleMessageBox.Show("There is not enough room on your device to install this package. Please clear AT LEAST 2x the amount of the app you are trying to install.");
}
if (!output.Contains("version") && !output.Contains("KEYCODE_WAKEUP") && !output.Contains("Filesystem") && !output.Contains("package:") && !output.Equals(null))
Logger.Log(output);
Logger.Log(error);
return new ProcessOutput(output, error);
}
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();
adb.WaitForExit();
string logcmd = command;
if (logcmd.Contains(Environment.CurrentDirectory))
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
Logger.Log($"Running command: {logcmd}");
adb.StartInfo.FileName = "cmd.exe";
adb.StartInfo.RedirectStandardError = true;
adb.StartInfo.RedirectStandardInput = true;
adb.StartInfo.RedirectStandardOutput = true;
adb.StartInfo.CreateNoWindow = true;
adb.StartInfo.UseShellExecute = false;
adb.StartInfo.WorkingDirectory = Path.GetDirectoryName(path);
adb.Start();
adb.StandardInput.WriteLine(command);
adb.StandardInput.Flush();
adb.StandardInput.Close();
string output = "";
string error = "";
try
{
output += adb.StandardOutput.ReadToEnd();
error += adb.StandardError.ReadToEnd();
}
catch { }
if (command.Contains("connect"))
{
bool graceful = adb.WaitForExit(3000);
if (!graceful)
{
adb.Kill();
}
else
adb.WaitForExit();
}
else if (command.Contains("install"))
{
bool graceful = adb.WaitForExit(120000);
if (!graceful)
{
adb.Kill();
}
else
adb.WaitForExit();
}
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
{
DialogResult dialogResult = FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.Cancel)
{
Properties.Settings.Default.adbdebugwarned = true;
Properties.Settings.Default.Save();
}
else
ADB.WakeDevice();
}
Logger.Log(output);
Logger.Log(error);
return new ProcessOutput(output, error);
}
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");
Logger.Log($"Running command: {logcmd}");
adb.StartInfo.FileName = @"C:\Windows\System32\cmd.exe";
adb.StartInfo.Arguments = command;
adb.StartInfo.RedirectStandardError = true;
adb.StartInfo.RedirectStandardInput = true;
adb.StartInfo.RedirectStandardOutput = true;
adb.StartInfo.CreateNoWindow = true;
adb.StartInfo.UseShellExecute = false;
adb.StartInfo.WorkingDirectory = Path.GetDirectoryName(path);
adb.Start();
adb.StandardInput.WriteLine(command);
adb.StandardInput.Flush();
adb.StandardInput.Close();
string output = "";
string error = "";
try
{
output += adb.StandardOutput.ReadToEnd();
error += adb.StandardError.ReadToEnd();
}
catch { }
if (command.Contains("connect"))
{
bool graceful = adb.WaitForExit(3000);
if (!graceful)
{
adb.Kill();
}
}
else
adb.WaitForExit();
if (error.Contains("ADB_VENDOR_KEYS") && Properties.Settings.Default.adbdebugwarned)
{
DialogResult dialogResult = FlexibleMessageBox.Show("Please check inside your headset for ADB DEBUGGING prompt, check box to \"Always allow from this computer.\" and hit OK.\nPlease note that even if you have done this\nbefore it will reset itself from time to time.\n\nPress CANCEL if you want to disable this prompt (FOR DEBUGGING ONLY, NOT RECOMMENDED).", "ADB Debugging not enabled.", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.Cancel)
{
Properties.Settings.Default.adbdebugwarned = true;
Properties.Settings.Default.Save();
}
else
ADB.WakeDevice();
}
Logger.Log(output);
Logger.Log(error);
return new ProcessOutput(output, error);
}
public static ProcessOutput UninstallPackage(string package)
{
@@ -105,21 +275,205 @@ namespace AndroidSideloader
public static void WakeDevice()
{
RunAdbCommandToString("shell input keyevent KEYCODE_WAKEUP");
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();
}
}
}
}
}
}
public static ProcessOutput Sideload(string path)
public static ProcessOutput Sideload(string path = "", string packagename = "")
{
WakeDevice();
return RunAdbCommandToString($"install -g -r \"{path}\"");
ProcessOutput ret = new ProcessOutput();
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
string out2 = ret.Output + ret.Error;
if (out2.Contains("failed"))
{
string BackupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
Logger.Log(out2);
if (out2.Contains("offline") && !Properties.Settings.Default.nodevicemode)
{
DialogResult dialogResult2 = FlexibleMessageBox.Show("Device is offline. Press Yes to reconnect, or if you don't wish to connect and just want to download the game (requires unchecking \"Delete games after install\" from settings menu) then press No.", "Device offline.", MessageBoxButtons.YesNoCancel);
if (dialogResult2 == DialogResult.Yes)
ADB.WakeDevice();
}
if (out2.Contains($"INSTALL_FAILED_UPDATE_INCOMPATIBLE") || out2.Contains("INSTALL_FAILED_VERSION_DOWNGRADE") || 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}\"");
return ret;
}
ret += RunAdbCommandToString($"install -g -r \"{path}\"");
}
string gamenameforQU = Sideloader.PackageNametoGameName(packagename);
if (Properties.Settings.Default.QUturnedon)
{
if (gamenameforQU.Contains("-QU") || path.Contains("-QU"))
{
string gameName = packagename;
packagename = Sideloader.gameNameToPackageName(gameName);
Program.form.ChangeTitle("Pushing Custom QU S3 Config.JSON.");
if (!Directory.Exists($"/sdcard/android/data/{packagename}"))
RunAdbCommandToString($"shell mkdir /sdcard/android/data/{packagename}");
if (!Directory.Exists($"/sdcard/android/data/{packagename}/private"))
RunAdbCommandToString($"shell mkdir /sdcard/android/data/{packagename}/private");
Random r = new Random();
int x = r.Next(999999999);
int y = r.Next(9999999);
var sum = ((long)y * (long)1000000000) + (long)x;
int x2 = r.Next(999999999);
int y2 = r.Next(9999999);
var sum2 = ((long)y2 * (long)1000000000) + (long)x2;
ADB.WakeDevice();
Properties.Settings.Default.QUStringF = $"{{\"user_id\":{sum},\"app_id\":\"{sum2}\",";
Properties.Settings.Default.Save();
string boff = Properties.Settings.Default.QUStringF + Properties.Settings.Default.QUString;
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\config.json", boff);
string blank = "";
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\delete_settings", blank);
ret += ADB.RunAdbCommandToString($"push \"{Properties.Settings.Default.MainDir}\\delete_settings\" /sdcard/android/data/{packagename}/private/delete_settings");
ret += ADB.RunAdbCommandToString($"push \"{Properties.Settings.Default.MainDir}\\config.json\" /sdcard/android/data/{packagename}/private/config.json");
}
}
Program.form.ChangeTitle("");
return ret;
}
public static ProcessOutput CopyOBB(string path)
{
WakeDevice();
if (SideloaderUtilities.CheckFolderIsObb(path))
return RunAdbCommandToString($"push \"{path}\" /sdcard/Android/obb");
return new ProcessOutput("","");
string folder = Path.GetFileName(path);
if (!folder.Contains("+") && !folder.Contains("_") && folder.Contains("."))
{
return RunAdbCommandToString($"push \"{path}\" \"/sdcard/Android/obb\"");
}
return new ProcessOutput();
}
}
}

Binary file not shown.

View File

@@ -146,6 +146,7 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -242,7 +243,6 @@
<DependentUpon>UsernameForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include=".editorconfig" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@@ -253,6 +253,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="version" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
@@ -260,6 +261,15 @@
<ItemGroup>
<Content Include="changelog.txt" />
<Content Include="icon.ico" />
<Content Include="ChangelogHistory.txt" />
<None Include="Resources\battery11.png" />
<None Include="Resources\battery.png" />
<None Include="Resources\battery1.png" />
<Content Include="Resources\bluekey.png" />
<Content Include="Resources\redkey.png" />
<None Include="Resources\greenkey.png" />
<None Include="Resources\orangekey.png" />
<None Include="Resources\SearchGlass.PNG" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">

View File

@@ -39,8 +39,8 @@ Global
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|Any CPU.Build.0 = x86|Any CPU
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x64.ActiveCfg = x86|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x64.Build.0 = x86|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.ActiveCfg = x86|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.Build.0 = x86|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.ActiveCfg = Release|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -27,7 +27,7 @@
<value>True</value>
</setting>
<setting name="userJsonOnGameInstall" serializeAs="String">
<value>True</value>
<value>False</value>
</setting>
<setting name="CallUpgrade" serializeAs="String">
<value>True</value>
@@ -51,7 +51,7 @@
<value>White</value>
</setting>
<setting name="FontStyle" serializeAs="String">
<value>Microsoft Sans Serif, 11.25pt</value>
<value>Microsoft Sans Serif, 11pt</value>
</setting>
<setting name="BackPicturePath" serializeAs="String">
<value />
@@ -63,11 +63,101 @@
<value />
</setting>
<setting name="BigFontStyle" serializeAs="String">
<value>Microsoft Sans Serif, 16pt</value>
<value>Microsoft Sans Serif, 14pt</value>
</setting>
<setting name="ResignAPKs" serializeAs="String">
<value>False</value>
</setting>
<setting name="IPAddress" serializeAs="String">
<value />
</setting>
<setting name="InstalledApps" serializeAs="String">
<value />
</setting>
<setting name="ADBPath" serializeAs="String">
<value />
</setting>
<setting name="QUsett" serializeAs="String">
<value>False</value>
</setting>
<setting name="QuChecked" serializeAs="String">
<value />
</setting>
<setting name="QUhz" serializeAs="String">
<value>0</value>
</setting>
<setting name="QUres" serializeAs="String">
<value>0</value>
</setting>
<setting name="QUy" serializeAs="String">
<value>0</value>
</setting>
<setting name="QUx" serializeAs="String">
<value>0</value>
</setting>
<setting name="QUname" serializeAs="String">
<value>Change Me</value>
</setting>
<setting name="QUString" serializeAs="String">
<value />
</setting>
<setting name="MainDir" serializeAs="String">
<value />
</setting>
<setting name="QUStringF" serializeAs="String">
<value />
</setting>
<setting name="delsh" serializeAs="String">
<value>False</value>
</setting>
<setting name="CurrPckg" serializeAs="String">
<value />
</setting>
<setting name="ADBFolder" serializeAs="String">
<value />
</setting>
<setting name="WirelessADB" serializeAs="String">
<value>False</value>
</setting>
<setting name="CurrentGamename" serializeAs="String">
<value />
</setting>
<setting name="PackageNameToCB" serializeAs="String">
<value>False</value>
</setting>
<setting name="EnterKeyInstall" serializeAs="String">
<value>False</value>
</setting>
<setting name="DownUpHeld" serializeAs="String">
<value>False</value>
</setting>
<setting name="CurrentLogPath" serializeAs="String">
<value />
</setting>
<setting name="CurrentLogName" serializeAs="String">
<value />
</setting>
<setting name="CurrentCrashPath" serializeAs="String">
<value />
</setting>
<setting name="CurrentCrashName" serializeAs="String">
<value />
</setting>
<setting name="QUturnedon" serializeAs="String">
<value>False</value>
</setting>
<setting name="QblindOn" serializeAs="String">
<value>False</value>
</setting>
<setting name="adbdebugwarned" serializeAs="String">
<value>False</value>
</setting>
<setting name="nodevicemode" serializeAs="String">
<value>False</value>
</setting>
<setting name="BMBFchecked" serializeAs="String">
<value>False</value>
</setting>
</AndroidSideloader.Properties.Settings>
<AndroidADB.Sideloader.Properties.Settings>
<setting name="checkForUpdates" serializeAs="String">

1488
ChangelogHistory.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -30,7 +30,7 @@ public class ListViewColumnSorter : IComparer
ColumnToSort = 0;
// Initialize the sort order to 'none'
OrderOfSort = SortOrder.None;
OrderOfSort = SortOrder.Ascending;
// Initialize the CaseInsensitiveComparer object
ObjectCompare = new CaseInsensitiveComparer();

View File

@@ -39,7 +39,13 @@ namespace JR.Utils.GUI.Forms
*
* FlexibleMessageBox.Show("Some text with a link: www.google.com",
* "Some caption",
* MessageBoxButtons.AbortRetryIgnore,
* MessageBoxButton
*
*
*
*
*
* s.AbortRetryIgnore,
* MessageBoxIcon.Information,
* MessageBoxDefaultButton.Button2);
*
@@ -374,6 +380,7 @@ namespace JR.Utils.GUI.Forms
//
// FlexibleMessageBoxForm
//
this.TopMost = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(260, 102);

915
MainForm.Designer.cs generated

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,7 @@ namespace AndroidSideloader
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
form = new MainForm();
Application.Run(form);
//form.Show();
@@ -28,7 +28,8 @@ namespace AndroidSideloader
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
Exception e = (Exception)args.ExceptionObject;
File.WriteAllText(Sideloader.CrashLogPath, $"Message: {e.Message}\nData: {e.Data}\nSource: {e.Source}\nTargetSite: {e.TargetSite}");
string date_time = DateTime.Now.ToString("dddd, MMMM dd @ hh:mmtt (UTC)");
File.WriteAllText(Sideloader.CrashLogPath, $"Date/Time of crash: {date_time}\nMessage: {e.Message}\nData: {e.Data}\nSource: {e.Source}\nTargetSite: {e.TargetSite}");
}
}
}

View File

@@ -59,5 +59,85 @@ namespace AndroidSideloader.Properties {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap battery {
get {
object obj = ResourceManager.GetObject("battery", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap battery1 {
get {
object obj = ResourceManager.GetObject("battery1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap battery11 {
get {
object obj = ResourceManager.GetObject("battery11", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap bluekey {
get {
object obj = ResourceManager.GetObject("bluekey", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap greenkey {
get {
object obj = ResourceManager.GetObject("greenkey", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap orangekey {
get {
object obj = ResourceManager.GetObject("orangekey", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap redkey {
get {
object obj = ResourceManager.GetObject("redkey", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap SearchGlass {
get {
object obj = ResourceManager.GetObject("SearchGlass", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@@ -117,4 +117,29 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="orangekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\orangekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="greenkey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\greenkey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="battery1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\battery11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="battery" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\battery.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SearchGlass" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SearchGlass.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="bluekey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\bluekey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
</root>

View File

@@ -12,7 +12,7 @@ namespace AndroidSideloader.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -85,7 +85,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool userJsonOnGameInstall {
get {
return ((bool)(this["userJsonOnGameInstall"]));
@@ -181,7 +181,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 11.25pt")]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 11pt")]
public global::System.Drawing.Font FontStyle {
get {
return ((global::System.Drawing.Font)(this["FontStyle"]));
@@ -229,7 +229,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 16pt")]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 14pt")]
public global::System.Drawing.Font BigFontStyle {
get {
return ((global::System.Drawing.Font)(this["BigFontStyle"]));
@@ -250,5 +250,365 @@ namespace AndroidSideloader.Properties {
this["ResignAPKs"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string IPAddress {
get {
return ((string)(this["IPAddress"]));
}
set {
this["IPAddress"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string InstalledApps {
get {
return ((string)(this["InstalledApps"]));
}
set {
this["InstalledApps"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string ADBPath {
get {
return ((string)(this["ADBPath"]));
}
set {
this["ADBPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool QUsett {
get {
return ((bool)(this["QUsett"]));
}
set {
this["QUsett"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string QuChecked {
get {
return ((string)(this["QuChecked"]));
}
set {
this["QuChecked"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public string QUhz {
get {
return ((string)(this["QUhz"]));
}
set {
this["QUhz"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public string QUres {
get {
return ((string)(this["QUres"]));
}
set {
this["QUres"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public string QUy {
get {
return ((string)(this["QUy"]));
}
set {
this["QUy"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public string QUx {
get {
return ((string)(this["QUx"]));
}
set {
this["QUx"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Change Me")]
public string QUname {
get {
return ((string)(this["QUname"]));
}
set {
this["QUname"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string QUString {
get {
return ((string)(this["QUString"]));
}
set {
this["QUString"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string MainDir {
get {
return ((string)(this["MainDir"]));
}
set {
this["MainDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string QUStringF {
get {
return ((string)(this["QUStringF"]));
}
set {
this["QUStringF"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool delsh {
get {
return ((bool)(this["delsh"]));
}
set {
this["delsh"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CurrPckg {
get {
return ((string)(this["CurrPckg"]));
}
set {
this["CurrPckg"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string ADBFolder {
get {
return ((string)(this["ADBFolder"]));
}
set {
this["ADBFolder"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool WirelessADB {
get {
return ((bool)(this["WirelessADB"]));
}
set {
this["WirelessADB"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CurrentGamename {
get {
return ((string)(this["CurrentGamename"]));
}
set {
this["CurrentGamename"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool PackageNameToCB {
get {
return ((bool)(this["PackageNameToCB"]));
}
set {
this["PackageNameToCB"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool EnterKeyInstall {
get {
return ((bool)(this["EnterKeyInstall"]));
}
set {
this["EnterKeyInstall"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DownUpHeld {
get {
return ((bool)(this["DownUpHeld"]));
}
set {
this["DownUpHeld"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CurrentLogPath {
get {
return ((string)(this["CurrentLogPath"]));
}
set {
this["CurrentLogPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CurrentLogName {
get {
return ((string)(this["CurrentLogName"]));
}
set {
this["CurrentLogName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CurrentCrashPath {
get {
return ((string)(this["CurrentCrashPath"]));
}
set {
this["CurrentCrashPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string CurrentCrashName {
get {
return ((string)(this["CurrentCrashName"]));
}
set {
this["CurrentCrashName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool QUturnedon {
get {
return ((bool)(this["QUturnedon"]));
}
set {
this["QUturnedon"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool QblindOn {
get {
return ((bool)(this["QblindOn"]));
}
set {
this["QblindOn"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool adbdebugwarned {
get {
return ((bool)(this["adbdebugwarned"]));
}
set {
this["adbdebugwarned"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool nodevicemode {
get {
return ((bool)(this["nodevicemode"]));
}
set {
this["nodevicemode"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool BMBFchecked {
get {
return ((bool)(this["BMBFchecked"]));
}
set {
this["BMBFchecked"] = value;
}
}
}
}

View File

@@ -18,7 +18,7 @@
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="userJsonOnGameInstall" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CallUpgrade" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
@@ -42,7 +42,7 @@
<Value Profile="(Default)">White</Value>
</Setting>
<Setting Name="FontStyle" Type="System.Drawing.Font" Scope="User">
<Value Profile="(Default)">Microsoft Sans Serif, 11.25pt</Value>
<Value Profile="(Default)">Microsoft Sans Serif, 11pt</Value>
</Setting>
<Setting Name="BackPicturePath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
@@ -54,10 +54,100 @@
<Value Profile="(Default)" />
</Setting>
<Setting Name="BigFontStyle" Type="System.Drawing.Font" Scope="User">
<Value Profile="(Default)">Microsoft Sans Serif, 16pt</Value>
<Value Profile="(Default)">Microsoft Sans Serif, 14pt</Value>
</Setting>
<Setting Name="ResignAPKs" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="IPAddress" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="InstalledApps" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ADBPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="QUsett" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="QuChecked" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="QUhz" Type="System.String" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="QUres" Type="System.String" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="QUy" Type="System.String" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="QUx" Type="System.String" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="QUname" Type="System.String" Scope="User">
<Value Profile="(Default)">Change Me</Value>
</Setting>
<Setting Name="QUString" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MainDir" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="QUStringF" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="delsh" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CurrPckg" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ADBFolder" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="WirelessADB" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CurrentGamename" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="PackageNameToCB" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="EnterKeyInstall" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DownUpHeld" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="CurrentLogPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="CurrentLogName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="CurrentCrashPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="CurrentCrashName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="QUturnedon" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="QblindOn" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="adbdebugwarned" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="nodevicemode" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="BMBFchecked" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

725
QuestForm.Designer.cs generated
View File

@@ -1,10 +1,14 @@
namespace AndroidSideloader
using System.Windows.Forms;
namespace AndroidSideloader
{
partial class QuestForm
{
/// <summary>
/// Required designer variable.
/// </summary>
///
private System.ComponentModel.IContainer components = null;
/// <summary>
@@ -28,98 +32,288 @@
/// </summary>
private void InitializeComponent()
{
this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
this.button1 = new System.Windows.Forms.Button();
this.TextureResTextBox = new System.Windows.Forms.TextBox();
this.ResolutionLabel = new System.Windows.Forms.Label();
this.GPUComboBox = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.ResetQU = new System.Windows.Forms.Button();
this.deleteButton = new System.Windows.Forms.Button();
this.questPics = new System.Windows.Forms.Button();
this.questVids = new System.Windows.Forms.Button();
this.label11 = new System.Windows.Forms.Label();
this.QUon = new System.Windows.Forms.CheckBox();
this.button3 = new System.Windows.Forms.Button();
this.label12 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.DeleteShots = new System.Windows.Forms.CheckBox();
this.splitter1 = new System.Windows.Forms.Splitter();
this.label10 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.label15 = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.CPUComboBox = new System.Windows.Forms.ComboBox();
this.GPUComboBox = new System.Windows.Forms.ComboBox();
this.label7 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.ResolutionLabel = new System.Windows.Forms.Label();
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.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();
//
// RefreshRateComboBox
// label1
//
this.RefreshRateComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.RefreshRateComboBox.FormattingEnabled = true;
this.RefreshRateComboBox.Items.AddRange(new object[] {
"72",
"90"});
this.RefreshRateComboBox.Location = new System.Drawing.Point(12, 12);
this.RefreshRateComboBox.Name = "RefreshRateComboBox";
this.RefreshRateComboBox.Size = new System.Drawing.Size(345, 26);
this.RefreshRateComboBox.TabIndex = 0;
this.RefreshRateComboBox.Text = "Select refresh rate";
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.LightCyan;
this.label1.Location = new System.Drawing.Point(31, 5);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(309, 20);
this.label1.TabIndex = 6;
this.label1.Text = "Temporary settings for all Quest apps";
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// button1
// label2
//
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
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(12, 138);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(87, 34);
this.button1.TabIndex = 1;
this.button1.Text = "Apply";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
this.label2.AutoSize = true;
this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label2.Location = new System.Drawing.Point(70, 28);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(231, 32);
this.label2.TabIndex = 6;
this.label2.Text = "Reboot to reset. - Turn screen off, \r\nthen back on with hold button to apply.";
this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// TextureResTextBox
// label3
//
this.TextureResTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.TextureResTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.TextureResTextBox.Location = new System.Drawing.Point(12, 108);
this.TextureResTextBox.Name = "TextureResTextBox";
this.TextureResTextBox.Size = new System.Drawing.Size(120, 24);
this.TextureResTextBox.TabIndex = 2;
this.TextureResTextBox.Text = "0";
this.label3.AutoSize = true;
this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.ForeColor = System.Drawing.Color.LightCyan;
this.label3.Location = new System.Drawing.Point(57, 339);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(256, 20);
this.label3.TabIndex = 6;
this.label3.Text = "QU Settings (for -QU releases)";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// ResolutionLabel
// label4
//
this.ResolutionLabel.AutoSize = true;
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResolutionLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.ResolutionLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.ResolutionLabel.Location = new System.Drawing.Point(135, 114);
this.ResolutionLabel.Name = "ResolutionLabel";
this.ResolutionLabel.Size = new System.Drawing.Size(222, 18);
this.ResolutionLabel.TabIndex = 3;
this.ResolutionLabel.Text = "Resolution per eye (0 for default)";
this.label4.AutoSize = true;
this.label4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label4.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label4.Location = new System.Drawing.Point(16, 363);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(338, 16);
this.label4.TabIndex = 6;
this.label4.Text = "Persists on device reboot. Enter 0 to reset any category.\r\n";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// GPUComboBox
// ResetQU
//
this.GPUComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.GPUComboBox.FormattingEnabled = true;
this.GPUComboBox.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4"});
this.GPUComboBox.Location = new System.Drawing.Point(12, 44);
this.GPUComboBox.Name = "GPUComboBox";
this.GPUComboBox.Size = new System.Drawing.Size(345, 26);
this.GPUComboBox.TabIndex = 4;
this.GPUComboBox.Text = "Select GPU level (0 for default)";
this.ResetQU.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.ResetQU.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.ResetQU.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.ResetQU.ForeColor = System.Drawing.SystemColors.ControlLight;
this.ResetQU.Location = new System.Drawing.Point(189, 555);
this.ResetQU.Name = "ResetQU";
this.ResetQU.Size = new System.Drawing.Size(168, 28);
this.ResetQU.TabIndex = 14;
this.ResetQU.Text = "RESET ALL FIELDS";
this.ResetQU.UseVisualStyleBackColor = false;
this.ResetQU.Visible = false;
this.ResetQU.Click += new System.EventHandler(this.ResetQU_click);
//
// deleteButton
//
this.deleteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.deleteButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.deleteButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.deleteButton.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.deleteButton.Location = new System.Drawing.Point(13, 606);
this.deleteButton.Name = "deleteButton";
this.deleteButton.Size = new System.Drawing.Size(167, 25);
this.deleteButton.TabIndex = 15;
this.deleteButton.Text = "DELETE SAVED SETTINGS";
this.deleteButton.UseVisualStyleBackColor = false;
this.deleteButton.Visible = false;
this.deleteButton.Click += new System.EventHandler(this.DeleteButton_Click);
//
// questPics
//
this.questPics.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.questPics.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.questPics.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.questPics.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.questPics.Location = new System.Drawing.Point(15, 265);
this.questPics.Name = "questPics";
this.questPics.Size = new System.Drawing.Size(165, 25);
this.questPics.TabIndex = 5;
this.questPics.Text = "SCREENSHOTS";
this.questPics.UseVisualStyleBackColor = false;
this.questPics.Click += new System.EventHandler(this.questPics_Click);
//
// questVids
//
this.questVids.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.questVids.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.questVids.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.5F);
this.questVids.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
this.questVids.Location = new System.Drawing.Point(189, 265);
this.questVids.Name = "questVids";
this.questVids.Size = new System.Drawing.Size(167, 25);
this.questVids.TabIndex = 6;
this.questVids.Text = "VIDEOSHOTS";
this.questVids.UseVisualStyleBackColor = false;
this.questVids.Click += new System.EventHandler(this.questVids_Click);
//
// label11
//
this.label11.AutoSize = true;
this.label11.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label11.ForeColor = System.Drawing.Color.LightCyan;
this.label11.Location = new System.Drawing.Point(26, 217);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(319, 20);
this.label11.TabIndex = 6;
this.label11.Text = "Transfer screen/videoshots to Desktop";
this.label11.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// QUon
//
this.QUon.AutoSize = true;
this.QUon.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
this.QUon.Cursor = System.Windows.Forms.Cursors.Default;
this.QUon.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.QUon.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
this.QUon.ForeColor = System.Drawing.Color.LightSkyBlue;
this.QUon.Location = new System.Drawing.Point(111, 383);
this.QUon.Name = "QUon";
this.QUon.Size = new System.Drawing.Size(148, 21);
this.QUon.TabIndex = 8;
this.QUon.Text = "Enable QU Settings";
this.QUon.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.QUon.UseVisualStyleBackColor = true;
this.QUon.CheckedChanged += new System.EventHandler(this.QUon_CheckedChanged);
//
// button3
//
this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
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.Name = "button3";
this.button3.Size = new System.Drawing.Size(169, 25);
this.button3.TabIndex = 17;
this.button3.Text = "CUSTOM USER.JSON";
this.button3.UseVisualStyleBackColor = false;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// label12
//
this.label12.AutoSize = true;
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.Name = "label12";
this.label12.Size = new System.Drawing.Size(185, 20);
this.label12.TabIndex = 6;
this.label12.Text = "Set custom user.json*";
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label13
//
this.label13.AutoSize = true;
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.Name = "label13";
this.label13.Size = new System.Drawing.Size(265, 16);
this.label13.TabIndex = 6;
this.label13.Text = "*For games that don\'t work with QU settings.";
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// DeleteShots
//
this.DeleteShots.AutoSize = true;
this.DeleteShots.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
this.DeleteShots.Cursor = System.Windows.Forms.Cursors.Default;
this.DeleteShots.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.DeleteShots.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
this.DeleteShots.ForeColor = System.Drawing.Color.LightSkyBlue;
this.DeleteShots.Location = new System.Drawing.Point(64, 296);
this.DeleteShots.Name = "DeleteShots";
this.DeleteShots.Size = new System.Drawing.Size(242, 21);
this.DeleteShots.TabIndex = 7;
this.DeleteShots.Text = "Delete files on Quest after transfer";
this.DeleteShots.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.DeleteShots.UseVisualStyleBackColor = true;
this.DeleteShots.CheckedChanged += new System.EventHandler(this.DeleteShots_CheckedChanged);
//
// splitter1
//
this.splitter1.Location = new System.Drawing.Point(0, 0);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(3, 737);
this.splitter1.TabIndex = 14;
this.splitter1.TabStop = false;
//
// label10
//
this.label10.BackColor = System.Drawing.Color.White;
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label10.Location = new System.Drawing.Point(-7, 327);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(394, 3);
this.label10.TabIndex = 15;
//
// label14
//
this.label14.BackColor = System.Drawing.Color.White;
this.label14.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label14.Location = new System.Drawing.Point(-15, 211);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(394, 3);
this.label14.TabIndex = 17;
//
// label15
//
this.label15.BackColor = System.Drawing.Color.White;
this.label15.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label15.Location = new System.Drawing.Point(-12, 646);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(394, 3);
this.label15.TabIndex = 18;
//
// label16
//
this.label16.AutoSize = true;
this.label16.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label16.ForeColor = System.Drawing.Color.LightSteelBlue;
this.label16.Location = new System.Drawing.Point(14, 241);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(343, 16);
this.label16.TabIndex = 6;
this.label16.Text = "Desktop\\Quest Screenshots Desktop\\Quest Videoshots";
this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// CPUComboBox
//
@@ -137,29 +331,350 @@
"2",
"3",
"4"});
this.CPUComboBox.Location = new System.Drawing.Point(12, 76);
this.CPUComboBox.Location = new System.Drawing.Point(13, 123);
this.CPUComboBox.Name = "CPUComboBox";
this.CPUComboBox.Size = new System.Drawing.Size(345, 26);
this.CPUComboBox.TabIndex = 5;
this.CPUComboBox.Size = new System.Drawing.Size(346, 28);
this.CPUComboBox.TabIndex = 2;
this.CPUComboBox.Text = "Select CPU level (0 for default)";
//
// GPUComboBox
//
this.GPUComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.GPUComboBox.FormattingEnabled = true;
this.GPUComboBox.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"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.TabIndex = 1;
this.GPUComboBox.Text = "Select GPU level (0 for default)";
//
// label7
//
this.label7.AutoSize = true;
this.label7.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label7.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label7.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label7.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 3;
this.label7.Text = "Fov - X";
this.label7.Visible = false;
//
// label8
//
this.label8.AutoSize = true;
this.label8.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label8.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label8.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label8.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 3;
this.label8.Text = "Fov - Y";
this.label8.Visible = false;
//
// label9
//
this.label9.AutoSize = true;
this.label9.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label9.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label9.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label9.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 3;
this.label9.Text = "Refresh Rate";
this.label9.Visible = false;
//
// label6
//
this.label6.AutoSize = true;
this.label6.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label6.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label6.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label6.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 3;
this.label6.Text = "Enter Custom Username";
this.label6.Visible = false;
//
// label5
//
this.label5.AutoSize = true;
this.label5.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label5.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.label5.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.label5.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 3;
this.label5.Text = "Custom Resolution Width (Height auto calculated)";
this.label5.Visible = false;
//
// ResolutionLabel
//
this.ResolutionLabel.AutoSize = true;
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResolutionLabel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.ResolutionLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 3;
this.ResolutionLabel.Text = "Resolution (0=default)";
//
// FOVy
//
this.FOVy.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.FOVy.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FOVy.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FOVy.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FOVy.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 12;
this.FOVy.Text = "0";
this.FOVy.Visible = false;
this.FOVy.TextChanged += new System.EventHandler(this.FOVy_TextChanged);
//
// FOVx
//
this.FOVx.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.FOVx.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FOVx.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FOVx.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.FOVx.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 11;
this.FOVx.Text = "0";
this.FOVx.Visible = false;
this.FOVx.TextChanged += new System.EventHandler(this.FOVx_TextChanged);
//
// UsrBox
//
this.UsrBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.UsrBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.UsrBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.UsrBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.UsrBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 10;
this.UsrBox.Text = "0";
this.UsrBox.Visible = false;
this.UsrBox.TextChanged += new System.EventHandler(this.UsrBox_TextChanged);
//
// ResBox
//
this.ResBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.ResBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ResBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 9;
this.ResBox.Text = "0";
this.ResBox.Visible = false;
this.ResBox.TextChanged += new System.EventHandler(this.ResBox_TextChanged);
//
// TextureResTextBox
//
this.TextureResTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.TextureResTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
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.TabIndex = 3;
this.TextureResTextBox.Text = "0";
//
// QUEnable
//
this.QUEnable.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QUEnable.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QUEnable.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.QUEnable.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.QUEnable.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.QUEnable.Location = new System.Drawing.Point(189, 606);
this.QUEnable.Name = "QUEnable";
this.QUEnable.Size = new System.Drawing.Size(170, 25);
this.QUEnable.TabIndex = 16;
this.QUEnable.Text = "APPLY";
this.QUEnable.UseVisualStyleBackColor = false;
this.QUEnable.Visible = false;
this.QUEnable.Click += new System.EventHandler(this.QUEnable_Click);
//
// button1
//
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
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(189, 152);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(169, 25);
this.button1.TabIndex = 4;
this.button1.Text = "APPLY";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// QURfrRt
//
this.QURfrRt.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.QURfrRt.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QURfrRt.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QURfrRt.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.QURfrRt.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.QURfrRt.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.QURfrRt.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.QURfrRt.FormattingEnabled = true;
this.QURfrRt.Items.AddRange(new object[] {
"0",
"72",
"90",
"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.TabIndex = 13;
this.QURfrRt.Text = "0";
this.QURfrRt.Visible = false;
this.QURfrRt.SelectedIndexChanged += new System.EventHandler(this.QURfrRt_SelectedIndexChanged);
//
// RefreshRateComboBox
//
this.RefreshRateComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.RefreshRateComboBox.FormattingEnabled = true;
this.RefreshRateComboBox.Items.AddRange(new object[] {
"72",
"90",
"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.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);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.ClientSize = new System.Drawing.Size(371, 185);
this.ClientSize = new System.Drawing.Size(370, 737);
this.Controls.Add(this.label15);
this.Controls.Add(this.label14);
this.Controls.Add(this.label10);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.questVids);
this.Controls.Add(this.questPics);
this.Controls.Add(this.button3);
this.Controls.Add(this.deleteButton);
this.Controls.Add(this.DeleteShots);
this.Controls.Add(this.QUon);
this.Controls.Add(this.ResetQU);
this.Controls.Add(this.label13);
this.Controls.Add(this.label4);
this.Controls.Add(this.label16);
this.Controls.Add(this.label2);
this.Controls.Add(this.label11);
this.Controls.Add(this.label12);
this.Controls.Add(this.label3);
this.Controls.Add(this.label1);
this.Controls.Add(this.CPUComboBox);
this.Controls.Add(this.GPUComboBox);
this.Controls.Add(this.label7);
this.Controls.Add(this.label8);
this.Controls.Add(this.label9);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.ResolutionLabel);
this.Controls.Add(this.FOVy);
this.Controls.Add(this.FOVx);
this.Controls.Add(this.UsrBox);
this.Controls.Add(this.ResBox);
this.Controls.Add(this.TextureResTextBox);
this.Controls.Add(this.QUEnable);
this.Controls.Add(this.WifiWake);
this.Controls.Add(this.button1);
this.Controls.Add(this.QURfrRt);
this.Controls.Add(this.RefreshRateComboBox);
this.MaximumSize = new System.Drawing.Size(387, 224);
this.MinimumSize = new System.Drawing.Size(387, 224);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximumSize = new System.Drawing.Size(386, 776);
this.MinimumSize = new System.Drawing.Size(386, 776);
this.Name = "QuestForm";
this.ShowIcon = false;
this.Text = "QuestForm";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Quest settings";
this.TopMost = true;
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QuestForm_FormClosed);
this.Load += new System.EventHandler(this.QuestForm_Load);
this.ResumeLayout(false);
this.PerformLayout();
@@ -173,5 +688,37 @@
private System.Windows.Forms.Label ResolutionLabel;
private System.Windows.Forms.ComboBox GPUComboBox;
private System.Windows.Forms.ComboBox CPUComboBox;
private Label label1;
private Label label2;
private Label label3;
private Label label4;
private ComboBox QURfrRt;
private TextBox ResBox;
private TextBox UsrBox;
private TextBox FOVx;
private TextBox FOVy;
private Button QUEnable;
private Button ResetQU;
private Label label5;
private Label label6;
private Label label7;
private Label label8;
private Label label9;
private Button deleteButton;
private Button questPics;
private Button questVids;
private Label label11;
private CheckBox QUon;
private Button button3;
private Label label12;
private Label label13;
private CheckBox DeleteShots;
private Splitter splitter1;
private Label label10;
private Label label14;
private Label label15;
private Label label16;
private Button WifiWake;
}
}
}

View File

@@ -1,32 +1,44 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
namespace AndroidSideloader
{
public partial class QuestForm : Form
{
public static int length = 0;
public static string[] result;
public bool settingsexist = false;
public static bool QUSon = false;
public bool delsh = false;
public QuestForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
bool ChangesMade = false;
//Quest 2 settings, might remove them in the future since some of them are broken
if (RefreshRateComboBox.SelectedIndex != -1)
{
ADB.WakeDevice();
ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {RefreshRateComboBox.SelectedItem.ToString()}");
ADB.RunAdbCommandToString($"shell settings put global 90hz_global {RefreshRateComboBox.SelectedIndex}");
ADB.RunAdbCommandToString($"shell settings put global 90hzglobal {RefreshRateComboBox.SelectedIndex}");
ChangesMade = true;
}
if (TextureResTextBox.Text.Length>0)
if (TextureResTextBox.Text.Length > 0)
{
ADB.WakeDevice();
Int32.TryParse(TextureResTextBox.Text, out int result);
ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}");
ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}");
ChangesMade = true;
@@ -47,5 +59,282 @@ namespace AndroidSideloader
if (ChangesMade)
MessageBox.Show("Settings applied!");
}
public static void setLength(int value)
{
result = new string[value];
}
public void ResetQU_click(object sender, EventArgs e)
{
ResBox.Text = ("0");
UsrBox.Text = ("Change Me");
FOVx.Text = ("0");
FOVy.Text = ("0");
QURfrRt.SelectedIndex = 0;
}
private void DeleteShots_CheckedChanged(object sender, EventArgs e)
{
if (DeleteShots.Checked)
delsh = true;
else
delsh = false;
}
private void QUon_CheckedChanged(object sender, EventArgs e)
{
if (QUon.Checked)
{
ResBox.Visible = true;
UsrBox.Visible = true;
FOVx.Visible = true;
FOVy.Visible = true;
QURfrRt.Visible = true;
ResetQU.Visible = true;
QUEnable.Visible = true;
label5.Visible = true;
label6.Visible = true;
label7.Visible = true;
label8.Visible = true;
label9.Visible = true;
label10.Visible = true;
deleteButton.Visible = true;
ResBox.Text = Properties.Settings.Default.QUres;
UsrBox.Text = Properties.Settings.Default.QUname;
FOVy.Text = Properties.Settings.Default.QUy;
FOVx.Text = Properties.Settings.Default.QUx;
QURfrRt.SelectedValue = Properties.Settings.Default.QUhz;
Properties.Settings.Default.QUturnedon = true;
}
else if (!QUon.Checked)
{
ResBox.Visible = false;
UsrBox.Visible = false;
FOVx.Visible = false;
FOVy.Visible = false;
QURfrRt.Visible = false;
ResetQU.Visible = false;
QUEnable.Visible = false;
label5.Visible = false;
label6.Visible = false;
label7.Visible = false;
label8.Visible = false;
label9.Visible = false;
label10.Visible = false;
deleteButton.Visible = false;
Properties.Settings.Default.QUturnedon = false;
MessageBox.Show("Ok, Deleted your custom settings file.\nIf you would like to re-enable return here and apply settings again");
File.Delete($"{Environment.CurrentDirectory}\\Config.Json");
File.Delete($"{Environment.CurrentDirectory}\\delete_settings");
}
}
private static readonly Random random = new Random();
private static readonly object syncLock = new object();
public static int RandomNumber(int min, int max)
{
lock (syncLock)
{ // synchronize
return random.Next(min, max);
}
}
private void QUEnable_Click(object sender, EventArgs e)
{
settingsexist = true;
MessageBox.Show("OK, any -QU packages installed will have these settings applied!\nTo delete settings: goto main app window, select a game with top menu, and click \"Remove QU Setting\"");
if (QUon.Checked)
{
Properties.Settings.Default.QUturnedon = true;
Random r = new Random();
int x = r.Next(999999999);
int y = r.Next(9999999);
var sum = ((long)y * (long)1000000000) + (long)x;
int x2 = r.Next(999999999);
int y2 = r.Next(9999999);
var sum2 = ((long)y2 * (long)1000000000) + (long)x2;
QUSon = true;
string selected = this.QURfrRt.GetItemText(this.QURfrRt.SelectedItem);
Properties.Settings.Default.QUString = $"\"refresh_rate\":{selected},\"eye_texture_width\":{ResBox.Text},\"fov_x\":{FOVx.Text},\"fov_y\":{FOVy.Text},\"username\":\"{UsrBox.Text}\"}}";
Properties.Settings.Default.QUStringF = $"{{\"user_id\":{sum},\"app_id\":\"{sum2}\",";
Properties.Settings.Default.Save();
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\delete_settings", "");
string boff = Properties.Settings.Default.QUStringF + Properties.Settings.Default.QUString;
File.WriteAllText($"{Properties.Settings.Default.MainDir}\\config.json", boff);
}
else
{
Properties.Settings.Default.QUturnedon = false;
}
}
private void QuestForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (QUon.Checked)
{
Properties.Settings.Default.QUsett = true;
Properties.Settings.Default.Save();
}
if (!QUon.Checked)
{
Properties.Settings.Default.QUsett = false;
Properties.Settings.Default.Save();
}
if (DeleteShots.Checked)
{
Properties.Settings.Default.delsh = true;
Properties.Settings.Default.Save();
}
if (!DeleteShots.Checked)
{
Properties.Settings.Default.delsh = false;
Properties.Settings.Default.Save();
}
}
private void QuestForm_Load(object sender, EventArgs e)
{
if (Properties.Settings.Default.delsh)
DeleteShots.Checked = true;
if (Properties.Settings.Default.QUsett)
{
ResBox.Text = Properties.Settings.Default.QUres;
UsrBox.Text = Properties.Settings.Default.QUname;
FOVy.Text = Properties.Settings.Default.QUy;
FOVx.Text = Properties.Settings.Default.QUx;
QURfrRt.Text = Properties.Settings.Default.QUhz;
QUon.Checked = true;
if (settingsexist)
QUSon = true;
}
}
private void ResBox_TextChanged(object sender, EventArgs e)
{
Properties.Settings.Default.QUres = ResBox.Text;
Properties.Settings.Default.Save();
}
private void UsrBox_TextChanged(object sender, EventArgs e)
{
Properties.Settings.Default.QUname = UsrBox.Text;
Properties.Settings.Default.Save();
}
private void FOVx_TextChanged(object sender, EventArgs e)
{
Properties.Settings.Default.QUx = FOVx.Text;
Properties.Settings.Default.Save();
}
private void FOVy_TextChanged(object sender, EventArgs e)
{
Properties.Settings.Default.QUy = FOVy.Text;
Properties.Settings.Default.Save();
}
private void QURfrRt_SelectedIndexChanged(object sender, EventArgs e)
{
string selected = this.QURfrRt.GetItemText(this.QURfrRt.SelectedItem);
Properties.Settings.Default.QUhz = selected;
Properties.Settings.Default.Save();
}
private void DeleteButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Ok, Deleted your custom settings file.\nIf you would like to re-enable return here and apply settings again");
File.Delete($"{Properties.Settings.Default.MainDir}\\Config.Json");
}
private void questPics_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (!Directory.Exists($"{path}\\Quest ScreenShots"))
Directory.CreateDirectory($"{path}\\Quest ScreenShots");
MessageBox.Show("Please wait until you get the message that the transfer has finished.");
ADB.WakeDevice();
Program.form.ChangeTitle("Pulling files...");
ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest ScreenShots\"");
if (delsh)
{
DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.OK)
{
ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Screenshots");
ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Screenshots");
}
}
MessageBox.Show("Transfer finished! ScreenShots can be found in a folder named Quest Screenshots on your desktop!");
Program.form.ChangeTitle("Done!");
}
private void questVids_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (!Directory.Exists($"{path}\\Quest VideoShots"))
Directory.CreateDirectory($"{path}\\Quest VideoShots");
MessageBox.Show("Please wait until you get the message that the transfer has finished.");
ADB.WakeDevice();
Program.form.ChangeTitle("Pulling files...");
ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Videoshots\" \"{path}\\Quest VideoShots\"");
if (delsh)
{
DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.OK)
{
ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Videoshots");
ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Videoshots");
}
}
MessageBox.Show("Transfer finished! VideoShots can be found in a folder named Quest VideoShots on your desktop!");
Program.form.ChangeTitle("Done!");
}
private void button3_Click(object sender, EventArgs e)
{
UsernameForm Form = new UsernameForm();
Form.Show();
}
private void Form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
protected override bool ProcessDialogKey(Keys keyData)
{
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessDialogKey(keyData);
}
private void WifiWake_Click(object sender, EventArgs e)
{
ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
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)");
}
}
}

View File

@@ -2,17 +2,21 @@
using System.Diagnostics;
using System.Text;
using System.IO;
using System.Windows.Forms;
using JR.Utils.GUI.Forms;
namespace AndroidSideloader
{
class RCLONE
{
//Kill all rclone, using a static rclone variable doesn't work for some reason #tofix
public static void killRclone()
{
foreach (var process in Process.GetProcessesByName("rclone"))
process.Kill();
}
//For custom configs that use a password
public static void Init()
{
string PwTxtPath = Path.Combine(Environment.CurrentDirectory, "rclone\\pw.txt");
@@ -22,33 +26,47 @@ namespace AndroidSideloader
}
}
//Change if you want to use a config
public static string configPath = ""; // ".\\a"
public static string rclonepw = "";
private static Process rclone = new Process();
//Run rclone command
public static ProcessOutput runRcloneCommand(string command, string bandwithLimit = "")
{
if (!MainForm.HasInternet) return new ProcessOutput("", "No internet");
//Set the password for rclone configs
Environment.SetEnvironmentVariable("RCLONE_CRYPT_REMOTE", rclonepw);
Environment.SetEnvironmentVariable("RCLONE_CONFIG_PASS", rclonepw);
ProcessOutput prcoutput = new ProcessOutput("","");
ProcessOutput prcoutput = new ProcessOutput();
//Rclone output is unicode, else it will show garbage instead of unicode characters
rclone.StartInfo.StandardOutputEncoding = Encoding.UTF8;
string originalCommand = command;
//set bandwidth limit
if (bandwithLimit.Length > 0)
{
command += $" --bwlimit={bandwithLimit}";
}
//set configpath if there is any
if (configPath.Length > 0)
{
command += $" --config {configPath}";
}
//set rclonepw
if (rclonepw.Length > 0)
command += " --ask-password=false";
Logger.Log($"Running Rclone command: {command}");
string logcmd = Utilities.StringUtilities.RemoveEverythingBeforeFirst(command, "rclone.exe");
if (logcmd.Contains($"\"{Properties.Settings.Default.CurrentLogPath}\""))
logcmd = logcmd.Replace($"\"{Properties.Settings.Default.CurrentLogPath}\"", $"\"{Properties.Settings.Default.CurrentLogName}\"");
if (logcmd.Contains(Environment.CurrentDirectory))
logcmd = logcmd.Replace($"{Environment.CurrentDirectory}", $"CurrentDirectory");
Logger.Log($"Running Rclone command: {logcmd}");
rclone.StartInfo.FileName = Environment.CurrentDirectory + "\\rclone\\rclone.exe";
rclone.StartInfo.Arguments = command;
@@ -57,6 +75,7 @@ namespace AndroidSideloader
rclone.StartInfo.RedirectStandardOutput = true;
rclone.StartInfo.WorkingDirectory = Environment.CurrentDirectory + "\\rclone";
rclone.StartInfo.CreateNoWindow = true;
//On debug we want to see when rclone is open
if (MainForm.debugMode == true)
rclone.StartInfo.CreateNoWindow = false;
rclone.StartInfo.UseShellExecute = false;
@@ -69,7 +88,9 @@ namespace AndroidSideloader
string output = rclone.StandardOutput.ReadToEnd();
string error = rclone.StandardError.ReadToEnd();
rclone.WaitForExit();
if (error.Contains("cannot fetch token") || error.Contains("authError") || (error.Contains("quota") && error.Contains("exceeded")))
//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")))
{
string oldRemote = MainForm.currentRemote;
try
@@ -87,8 +108,12 @@ namespace AndroidSideloader
prcoutput.Output = output;
prcoutput.Error = error;
}
if (!output.Contains("Game Name;Release Name;") && !output.Contains("package:"))
Logger.Log($"Rclone error: {error}\nRclone Output: {output}");
return prcoutput;
if (error.Contains("There is not enough space"))
FlexibleMessageBox.Show("There isn't enough space on your PC to properly install this game. Please have at least 2x the size of the game you are trying to download/install available on the drive where Rookie is installed.", "NOT ENOUGH SPACE");
return prcoutput;
}
}
}

21
README.md Normal file
View File

@@ -0,0 +1,21 @@
# androidsideloader
!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.
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
- [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
- succ for creating and maintaining the server
- badcoder5000 for redesigning the UI
- gotard for the theme changer
- [7zip](https://www.7-zip.org/) team for [7zip](https://www.7-zip.org/) :)
- [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

BIN
Resources/SearchGlass.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
Resources/battery.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
Resources/battery1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
Resources/battery11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
Resources/bluekey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
Resources/greenkey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

6801
Resources/nouns.txt Normal file

File diff suppressed because it is too large Load Diff

BIN
Resources/orangekey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
Resources/redkey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -8,6 +8,8 @@ namespace AndroidSideloader
/// <summary>
/// Present the Windows Vista-style open file dialog to select a folder. Fall back for older Windows Versions
/// </summary>
//Coded by Erike from stackoverflow (https://stackoverflow.com/users/57611/erike)
public class FolderSelectDialog
{
private string _initialDirectory;

221
SettingsForm.Designer.cs generated
View File

@@ -35,10 +35,19 @@
this.deleteAfterInstallCheckBox = new System.Windows.Forms.CheckBox();
this.updateConfigCheckBox = new System.Windows.Forms.CheckBox();
this.userJsonOnGameInstall = new System.Windows.Forms.CheckBox();
this.resignGamesCheckbox = new System.Windows.Forms.CheckBox();
this.BandwithTextbox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.BandwithComboBox = new System.Windows.Forms.ComboBox();
this.DebugLogCopy = new System.Windows.Forms.Button();
this.crashlogID = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.debuglogID = new System.Windows.Forms.Label();
this.DebugID = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.CblindBox = new System.Windows.Forms.CheckBox();
this.nodevicemodeBox = new System.Windows.Forms.CheckBox();
this.bmbfBox = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// checkForUpdatesCheckBox
@@ -46,7 +55,7 @@
this.checkForUpdatesCheckBox.AutoSize = true;
this.checkForUpdatesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkForUpdatesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(13, 13);
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(12, 12);
this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(148, 22);
this.checkForUpdatesCheckBox.TabIndex = 0;
@@ -63,7 +72,7 @@
this.applyButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.applyButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.applyButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.applyButton.Location = new System.Drawing.Point(12, 215);
this.applyButton.Location = new System.Drawing.Point(67, 280);
this.applyButton.Name = "applyButton";
this.applyButton.Size = new System.Drawing.Size(101, 31);
this.applyButton.TabIndex = 5;
@@ -76,7 +85,7 @@
this.enableMessageBoxesCheckBox.AutoSize = true;
this.enableMessageBoxesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.enableMessageBoxesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(13, 36);
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(12, 39);
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
this.enableMessageBoxesCheckBox.TabIndex = 1;
@@ -93,7 +102,7 @@
this.resetSettingsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.resetSettingsButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.resetSettingsButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.resetSettingsButton.Location = new System.Drawing.Point(119, 215);
this.resetSettingsButton.Location = new System.Drawing.Point(174, 280);
this.resetSettingsButton.Name = "resetSettingsButton";
this.resetSettingsButton.Size = new System.Drawing.Size(101, 31);
this.resetSettingsButton.TabIndex = 4;
@@ -106,7 +115,7 @@
this.deleteAfterInstallCheckBox.AutoSize = true;
this.deleteAfterInstallCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.deleteAfterInstallCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(13, 59);
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(12, 65);
this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
this.deleteAfterInstallCheckBox.TabIndex = 3;
@@ -119,7 +128,7 @@
this.updateConfigCheckBox.AutoSize = true;
this.updateConfigCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.updateConfigCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.updateConfigCheckBox.Location = new System.Drawing.Point(13, 83);
this.updateConfigCheckBox.Location = new System.Drawing.Point(12, 92);
this.updateConfigCheckBox.Name = "updateConfigCheckBox";
this.updateConfigCheckBox.Size = new System.Drawing.Size(208, 22);
this.updateConfigCheckBox.TabIndex = 6;
@@ -132,7 +141,7 @@
this.userJsonOnGameInstall.AutoSize = true;
this.userJsonOnGameInstall.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.userJsonOnGameInstall.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.userJsonOnGameInstall.Location = new System.Drawing.Point(12, 111);
this.userJsonOnGameInstall.Location = new System.Drawing.Point(12, 119);
this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
this.userJsonOnGameInstall.TabIndex = 9;
@@ -140,19 +149,6 @@
this.userJsonOnGameInstall.UseVisualStyleBackColor = true;
this.userJsonOnGameInstall.CheckedChanged += new System.EventHandler(this.userJsonOnGameInstall_CheckedChanged);
//
// resignGamesCheckbox
//
this.resignGamesCheckbox.AutoSize = true;
this.resignGamesCheckbox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.resignGamesCheckbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.resignGamesCheckbox.Location = new System.Drawing.Point(12, 139);
this.resignGamesCheckbox.Name = "resignGamesCheckbox";
this.resignGamesCheckbox.Size = new System.Drawing.Size(263, 22);
this.resignGamesCheckbox.TabIndex = 10;
this.resignGamesCheckbox.Text = "Resign Games Installed from rclone";
this.resignGamesCheckbox.UseVisualStyleBackColor = true;
this.resignGamesCheckbox.CheckedChanged += new System.EventHandler(this.resignGamesCheckbox_CheckedChanged);
//
// BandwithTextbox
//
this.BandwithTextbox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
@@ -161,7 +157,7 @@
this.BandwithTextbox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.BandwithTextbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.BandwithTextbox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.BandwithTextbox.Location = new System.Drawing.Point(12, 185);
this.BandwithTextbox.Location = new System.Drawing.Point(52, 248);
this.BandwithTextbox.Name = "BandwithTextbox";
this.BandwithTextbox.Size = new System.Drawing.Size(177, 24);
this.BandwithTextbox.TabIndex = 11;
@@ -171,11 +167,11 @@
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(10, 164);
this.label1.Location = new System.Drawing.Point(40, 225);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(230, 18);
this.label1.Size = new System.Drawing.Size(245, 18);
this.label1.TabIndex = 12;
this.label1.Text = "Rclone bandwith limit, 0 to disable";
this.label1.Text = "Download speed limiter, 0 to disable";
//
// BandwithComboBox
//
@@ -192,37 +188,189 @@
"K",
"M",
"G"});
this.BandwithComboBox.Location = new System.Drawing.Point(195, 183);
this.BandwithComboBox.Location = new System.Drawing.Point(235, 248);
this.BandwithComboBox.Name = "BandwithComboBox";
this.BandwithComboBox.Size = new System.Drawing.Size(55, 26);
this.BandwithComboBox.TabIndex = 13;
//
// DebugLogCopy
//
this.DebugLogCopy.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DebugLogCopy.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
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.Name = "DebugLogCopy";
this.DebugLogCopy.Size = new System.Drawing.Size(285, 31);
this.DebugLogCopy.TabIndex = 5;
this.DebugLogCopy.Text = "Send DebugLog to server.";
this.DebugLogCopy.UseVisualStyleBackColor = false;
this.DebugLogCopy.Click += new System.EventHandler(this.DebugLogCopy_click);
//
// crashlogID
//
this.crashlogID.AutoSize = true;
this.crashlogID.Location = new System.Drawing.Point(13, 441);
this.crashlogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.crashlogID.Name = "crashlogID";
this.crashlogID.Size = new System.Drawing.Size(0, 13);
this.crashlogID.TabIndex = 15;
//
// button1
//
this.button1.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
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.Name = "button1";
this.button1.Size = new System.Drawing.Size(285, 31);
this.button1.TabIndex = 5;
this.button1.Text = "Reset Debug Log";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_click);
//
// debuglogID
//
this.debuglogID.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
this.debuglogID.Location = new System.Drawing.Point(29, 436);
this.debuglogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.debuglogID.Name = "debuglogID";
this.debuglogID.Size = new System.Drawing.Size(285, 48);
this.debuglogID.TabIndex = 14;
this.debuglogID.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// DebugID
//
this.DebugID.AccessibleRole = System.Windows.Forms.AccessibleRole.Row;
this.DebugID.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.DebugID.BorderStyle = System.Windows.Forms.BorderStyle.None;
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.Margin = new System.Windows.Forms.Padding(2);
this.DebugID.Name = "DebugID";
this.DebugID.ReadOnly = true;
this.DebugID.ScrollBars = System.Windows.Forms.ScrollBars.Horizontal;
this.DebugID.Size = new System.Drawing.Size(285, 21);
this.DebugID.TabIndex = 16;
this.DebugID.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.DebugID.Click += new System.EventHandler(this.DebugID_Click);
//
// label2
//
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F);
this.label2.Location = new System.Drawing.Point(29, 507);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(284, 86);
this.label2.TabIndex = 14;
this.label2.Text = "This is your most recent CrashLogID. Click on the CrashLogID to copy it to your c" +
"lipboard.";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// textBox1
//
this.textBox1.AccessibleRole = System.Windows.Forms.AccessibleRole.Row;
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
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.Margin = new System.Windows.Forms.Padding(2);
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Horizontal;
this.textBox1.Size = new System.Drawing.Size(285, 21);
this.textBox1.TabIndex = 16;
this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
//
// CblindBox
//
this.CblindBox.AutoSize = true;
this.CblindBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.CblindBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.CblindBox.Location = new System.Drawing.Point(12, 145);
this.CblindBox.Name = "CblindBox";
this.CblindBox.Size = new System.Drawing.Size(182, 22);
this.CblindBox.TabIndex = 9;
this.CblindBox.Text = "Enable colorblind mode";
this.CblindBox.UseVisualStyleBackColor = true;
this.CblindBox.CheckedChanged += new System.EventHandler(this.CblindBox_CheckedChanged);
this.CblindBox.Click += new System.EventHandler(this.CblindBox_Click);
//
// nodevicemodeBox
//
this.nodevicemodeBox.AutoSize = true;
this.nodevicemodeBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.nodevicemodeBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.nodevicemodeBox.Location = new System.Drawing.Point(12, 196);
this.nodevicemodeBox.Name = "nodevicemodeBox";
this.nodevicemodeBox.Size = new System.Drawing.Size(181, 22);
this.nodevicemodeBox.TabIndex = 9;
this.nodevicemodeBox.Text = "Enable no device mode";
this.nodevicemodeBox.UseVisualStyleBackColor = true;
this.nodevicemodeBox.CheckedChanged += new System.EventHandler(this.nodevicemodeBox_CheckedChanged);
//
// bmbfBox
//
this.bmbfBox.AutoSize = true;
this.bmbfBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.bmbfBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.bmbfBox.Location = new System.Drawing.Point(12, 170);
this.bmbfBox.Name = "bmbfBox";
this.bmbfBox.Size = new System.Drawing.Size(281, 22);
this.bmbfBox.TabIndex = 9;
this.bmbfBox.Text = "Enable BMBF song zips drag and drop";
this.bmbfBox.UseVisualStyleBackColor = true;
this.bmbfBox.CheckedChanged += new System.EventHandler(this.bmbfBox_CheckedChanged);
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.ClientSize = new System.Drawing.Size(341, 274);
this.ClientSize = new System.Drawing.Size(342, 606);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.DebugID);
this.Controls.Add(this.crashlogID);
this.Controls.Add(this.label2);
this.Controls.Add(this.debuglogID);
this.Controls.Add(this.BandwithComboBox);
this.Controls.Add(this.label1);
this.Controls.Add(this.BandwithTextbox);
this.Controls.Add(this.resignGamesCheckbox);
this.Controls.Add(this.bmbfBox);
this.Controls.Add(this.nodevicemodeBox);
this.Controls.Add(this.CblindBox);
this.Controls.Add(this.userJsonOnGameInstall);
this.Controls.Add(this.updateConfigCheckBox);
this.Controls.Add(this.deleteAfterInstallCheckBox);
this.Controls.Add(this.enableMessageBoxesCheckBox);
this.Controls.Add(this.button1);
this.Controls.Add(this.DebugLogCopy);
this.Controls.Add(this.applyButton);
this.Controls.Add(this.checkForUpdatesCheckBox);
this.Controls.Add(this.resetSettingsButton);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ForeColor = System.Drawing.Color.White;
this.MaximumSize = new System.Drawing.Size(357, 313);
this.MinimumSize = new System.Drawing.Size(357, 313);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.Name = "SettingsForm";
this.ShowIcon = false;
this.Text = "Settings";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SettingsForm_FormClosing);
this.TopMost = true;
this.Load += new System.EventHandler(this.SettingsForm_Load);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.SettingsForm_KeyPress);
this.Leave += new System.EventHandler(this.SettingsForm_Leave);
this.ResumeLayout(false);
this.PerformLayout();
@@ -237,9 +385,18 @@
private System.Windows.Forms.CheckBox deleteAfterInstallCheckBox;
private System.Windows.Forms.CheckBox updateConfigCheckBox;
private System.Windows.Forms.CheckBox userJsonOnGameInstall;
private System.Windows.Forms.CheckBox resignGamesCheckbox;
private System.Windows.Forms.TextBox BandwithTextbox;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox BandwithComboBox;
private System.Windows.Forms.Button DebugLogCopy;
private System.Windows.Forms.Label crashlogID;
private System.Windows.Forms.Button button1;
public System.Windows.Forms.Label debuglogID;
private System.Windows.Forms.TextBox DebugID;
public System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.CheckBox CblindBox;
private System.Windows.Forms.CheckBox nodevicemodeBox;
private System.Windows.Forms.CheckBox bmbfBox;
}
}

View File

@@ -1,5 +1,6 @@
using JR.Utils.GUI.Forms;
using System;
using System.IO;
using System.Windows.Forms;
namespace AndroidSideloader
@@ -14,26 +15,33 @@ namespace AndroidSideloader
private void SettingsForm_Load(object sender, EventArgs e)
{
this.CenterToParent();
if (!string.IsNullOrEmpty(Properties.Settings.Default.CurrentLogName))
textBox1.Text = Properties.Settings.Default.CurrentCrashName;
if (!string.IsNullOrEmpty(Properties.Settings.Default.CurrentLogPath))
DebugID.Text = Properties.Settings.Default.CurrentLogName;
debuglogID.Text = "This is your DebugLogID. Click on your DebugLogID to copy it to your clipboard.";
intSettings();
intToolTips();
}
//Init form objects with values from settings
private void intSettings()
{
CblindBox.Checked = Properties.Settings.Default.QblindOn;
checkForUpdatesCheckBox.Checked = Properties.Settings.Default.checkForUpdates;
enableMessageBoxesCheckBox.Checked = Properties.Settings.Default.enableMessageBoxes;
deleteAfterInstallCheckBox.Checked = Properties.Settings.Default.deleteAllAfterInstall;
updateConfigCheckBox.Checked = Properties.Settings.Default.autoUpdateConfig;
userJsonOnGameInstall.Checked = Properties.Settings.Default.userJsonOnGameInstall;
resignGamesCheckbox.Checked = Properties.Settings.Default.ResignAPKs;
if (Properties.Settings.Default.BandwithLimit.Length>1)
nodevicemodeBox.Checked = Properties.Settings.Default.nodevicemode;
bmbfBox.Checked = Properties.Settings.Default.BMBFchecked;
if (Properties.Settings.Default.BandwithLimit.Length > 1)
{
BandwithTextbox.Text = Properties.Settings.Default.BandwithLimit.Remove(Properties.Settings.Default.BandwithLimit.Length - 1);
BandwithComboBox.Text = Properties.Settings.Default.BandwithLimit[Properties.Settings.Default.BandwithLimit.Length-1].ToString();
BandwithComboBox.Text = Properties.Settings.Default.BandwithLimit[Properties.Settings.Default.BandwithLimit.Length - 1].ToString();
}
}
void intToolTips()
@@ -46,6 +54,53 @@ namespace AndroidSideloader
deleteAfterInstallToolTip.SetToolTip(this.deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server");
}
public void DebugLogCopy_click(object sender, EventArgs e)
{
if (File.Exists($"{Properties.Settings.Default.CurrentLogPath}"))
{
RCLONE.runRcloneCommand($"copy \"{Properties.Settings.Default.CurrentLogPath}\" RSL-debuglogs:DebugLogs/");
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).");
}
}
public void button1_click(object sender, EventArgs e)
{
if (File.Exists($"{Properties.Settings.Default.CurrentLogPath}"))
File.Delete($"{Properties.Settings.Default.CurrentLogPath}");
if (File.Exists($"{Environment.CurrentDirectory}\\debuglog.txt"))
File.Delete($"{Environment.CurrentDirectory}\\debuglog.txt");
if (File.Exists($"{Environment.CurrentDirectory}\\nouns\\nouns.txt"))
{
string[] lines = File.ReadAllLines($"{Environment.CurrentDirectory}\\nouns\\nouns.txt");
Random r = new Random();
int x = r.Next(6806);
int y = r.Next(6806);
string randomnoun = lines[new Random(x).Next(lines.Length)];
string randomnoun2 = lines[new Random(y).Next(lines.Length)];
string combined = randomnoun + "-" + randomnoun2;
Properties.Settings.Default.CurrentLogPath = Environment.CurrentDirectory + "\\" + combined + ".txt";
Properties.Settings.Default.CurrentLogName = combined;
Properties.Settings.Default.Save();
DebugID.Text = combined;
this.Close();
SettingsForm Form = new SettingsForm();
Form.Show();
}
}
//Apply settings
private void applyButton_Click(object sender, EventArgs e)
{
if (BandwithTextbox.Text.Length > 0 && BandwithTextbox.Text != "0")
@@ -55,16 +110,14 @@ namespace AndroidSideloader
return;
}
else
{
Properties.Settings.Default.BandwithLimit = $"{BandwithTextbox.Text.Replace(" ", "")}{BandwithComboBox.Text}";
}
else
Properties.Settings.Default.BandwithLimit = "";
Properties.Settings.Default.Save();
}
private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
{
FlexibleMessageBox.Show("Settings applied!");
}
private void checkForUpdatesCheckBox_CheckedChanged(object sender, EventArgs e)
@@ -98,17 +151,78 @@ namespace AndroidSideloader
Properties.Settings.Default.userJsonOnGameInstall = userJsonOnGameInstall.Checked;
}
private void resignGamesCheckbox_CheckedChanged(object sender, EventArgs e)
private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e)
{
if (resignGamesCheckbox.Checked && Spoofer.spoofer.HasDependencies())
resignGamesCheckbox.Checked = true;
else if (resignGamesCheckbox.Checked)
if (e.KeyChar == (char)Keys.Escape)
{
MessageBox.Show("You are missing dependencies (install apktool aapt and jarsigner) and then restart the sideloader");
resignGamesCheckbox.Checked = false;
this.Close();
}
}
Properties.Settings.Default.ResignAPKs = resignGamesCheckbox.Checked;
private void SettingsForm_Leave(object sender, EventArgs e)
{
this.Close();
}
private void Form_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
}
protected override bool ProcessDialogKey(Keys keyData)
{
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
{
this.Close();
return true;
}
return base.ProcessDialogKey(keyData);
}
private void DebugID_Click(object sender, EventArgs e)
{
if (File.Exists(Environment.CurrentDirectory + "\\" + Properties.Settings.Default.CurrentLogName + ".txt"))
Clipboard.SetText(DebugID.Text);
MessageBox.Show("DebugLogID copied to clipboard! Paste it to a moderator/helper for assistance!");
}
private void textBox1_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Properties.Settings.Default.CurrentCrashName))
{
Clipboard.SetText(textBox1.Text);
MessageBox.Show("CrashLogID copied to clipboard! Paste it to a moderator/helper for assistance!");
}
}
private void CblindBox_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.QblindOn = CblindBox.Checked;
Properties.Settings.Default.Save();
}
private void CblindBox_Click(object sender, EventArgs e)
{
if (CblindBox.Checked)
MessageBox.Show("You must restart Rookie's Sideloader OR click Refresh Updates List for changes to take effect.\n\nNOTE: Colors in the legend at the top right of the main window of Rookie won't update until you restart the program.");
}
private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.nodevicemode = nodevicemodeBox.Checked;
Properties.Settings.Default.Save();
}
private void bmbfBox_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.BMBFchecked = nodevicemodeBox.Checked;
Properties.Settings.Default.Save();
}
}
}

BIN
Sideloader Launcher.exe Normal file

Binary file not shown.

View File

@@ -13,7 +13,7 @@ namespace AndroidSideloader
{
class Sideloader
{
public static string TempFolder = Path.Combine(Environment.CurrentDirectory, "temp");
public static string CrashLogPath = "crashlog.txt";
public static string SpooferWarning = @"Please make sure you have installed:
@@ -21,6 +21,8 @@ namespace AndroidSideloader
- Java JDK
- aapt
And all of them added to PATH, without ANY of them, the spoofer won't work!";
//push user.json to device (required for some devices like oculus quest)
public static void PushUserJsons()
{
ADB.WakeDevice();
@@ -32,44 +34,73 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
}
}
public static List<string> InstalledPackageNames = new List<string>();
//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 ProcessOutput RemoveFolder(string path)
{
ADB.WakeDevice();
return ADB.RunAdbCommandToString($"shell rm -r {path}");
}
public static ProcessOutput RunADBCommandsFromFile(string path, string RunFromPath)
public static ProcessOutput RemoveFile(string path)
{
ADB.WakeDevice();
ProcessOutput output = new ProcessOutput("","");
return ADB.RunAdbCommandToString($"shell rm -f {path}");
}
//For games that require manual install, like having another folder that isnt an obb
public static ProcessOutput RunADBCommandsFromFile(string path)
{
ADB.WakeDevice();
ProcessOutput output = new ProcessOutput();
var commands = File.ReadAllLines(path);
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"))
{
var regex = new Regex(Regex.Escape("adb"));
var command = regex.Replace(cmd, $"\"{ADB.adbFilePath}\"", 1);
Logger.Log($"Logging command: {command} from file: {path}");
string replacement = "";
string pattern = "adb";
if (ADB.DeviceID.Length > 1)
command = $" -s {ADB.DeviceID} {command}";
output += Utilities.GeneralUtilities.startProcess("cmd.exe", RunFromPath, command);
replacement = $"{Properties.Settings.Default.ADBPath} -s {ADB.DeviceID}";
else
replacement = $"{Properties.Settings.Default.ADBPath}";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(cmd, replacement);
Program.form.ChangeTitle($"Running {result}");
Logger.Log($"Logging command: {result} from file: {path}");
output += ADB.RunAdbCommandToStringWOADB(result, path);
if (output.Error.Contains("mkdir"))
output.Error = "";
if (output.Output.Contains("reserved"))
output.Output = "";
}
}
output.Output += "Custom install successful!";
return output;
}
public static ProcessOutput RecursiveOutput = new ProcessOutput("","");
//Recursive sideload any apk fileD
public static ProcessOutput RecursiveOutput = new ProcessOutput();
public static void RecursiveSideload(string FolderPath)
{
try
{
foreach (string f in Directory.GetFiles(FolderPath))
{
if (Path.GetExtension(f)==".apk")
if (Path.GetExtension(f) == ".apk")
RecursiveOutput += ADB.Sideload(f);
}
@@ -81,6 +112,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
catch (Exception ex) { Logger.Log(ex.Message); }
}
//Recursive copy any obb folder
public static void RecursiveCopyOBB(string FolderPath)
{
try
@@ -98,6 +130,7 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
catch (Exception ex) { Logger.Log(ex.Message); }
}
//uninstalls an app
public static ProcessOutput UninstallGame(string GameName)
{
ADB.WakeDevice();
@@ -111,14 +144,33 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
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);
return output;
}
public static ProcessOutput DeleteFile(string GameName)
{
ADB.WakeDevice();
ProcessOutput output = new ProcessOutput("", "");
string packageName = Sideloader.gameNameToPackageName(GameName);
DialogResult dialogResult = FlexibleMessageBox.Show($"Are you sure you want to uninstall custom QU settings for {packageName}? this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
if (dialogResult != DialogResult.Yes)
return output;
output = Sideloader.RemoveFile($"/sdcard/Android/data/{packageName}/private/Config.Json");
return output;
}
//Extracts apk from device, saves it by package name to sideloader folder
public static ProcessOutput getApk(string GameName)
{
ADB.WakeDevice();
ProcessOutput output = new ProcessOutput("", "");
@@ -131,18 +183,18 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
apkPath = apkPath.Remove(apkPath.Length - 1);
apkPath = apkPath.Remove(0, 8); //remove package:
apkPath = apkPath.Remove(apkPath.Length - 1);
if (File.Exists($"{Properties.Settings.Default.ADBFolder}\\base.apk"))
File.Delete($"{Properties.Settings.Default.ADBFolder}\\base.apk");
if (File.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk"))
File.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk");
output += ADB.RunAdbCommandToString("pull " + apkPath); //pull apk
if (Directory.Exists($"{Properties.Settings.Default.MainDir}\\{packageName}"))
Directory.Delete($"{Properties.Settings.Default.MainDir}\\{packageName}", true);
string currApkPath = apkPath;
while (currApkPath.Contains("/"))
currApkPath = currApkPath.Substring(currApkPath.IndexOf("/") + 1);
if (File.Exists(Environment.CurrentDirectory + "\\" + packageName + ".apk"))
File.Delete(Environment.CurrentDirectory + "\\" + packageName + ".apk");
File.Move(Environment.CurrentDirectory + "\\adb\\" + currApkPath, Environment.CurrentDirectory + "\\" + packageName + ".apk");
Directory.CreateDirectory($"{Properties.Settings.Default.MainDir}\\{packageName}");
File.Move($"{Properties.Settings.Default.ADBFolder}\\base.apk", $"{Properties.Settings.Default.MainDir}\\{packageName}\\{packageName}.apk");
return output;
}
@@ -150,48 +202,73 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
{
foreach (string[] game in SideloaderRCLONE.games)
{
if (gameName.Equals(game[SideloaderRCLONE.GameNameIndex]))
if (gameName.Contains(game[SideloaderRCLONE.GameNameIndex]))
return game[SideloaderRCLONE.PackageNameIndex];
if (gameName.Contains(game[SideloaderRCLONE.ReleaseNameIndex]))
return game[SideloaderRCLONE.PackageNameIndex];
}
return gameName;
}
public static string PackageNametoGameName(string gameName)
{
foreach (string[] game in SideloaderRCLONE.games)
{
if (gameName.Contains(game[SideloaderRCLONE.PackageNameIndex]))
return game[SideloaderRCLONE.ReleaseNameIndex];
}
return gameName;
}
public static string gameNameToSimpleName(string gameName)
{
foreach (string[] game in SideloaderRCLONE.games)
{
if (gameName.Contains(game[SideloaderRCLONE.GameNameIndex]))
return game[SideloaderRCLONE.GameNameIndex];
if (gameName.Contains(game[SideloaderRCLONE.ReleaseNameIndex]))
return game[SideloaderRCLONE.GameNameIndex];
}
return gameName;
}
public static string PackageNameToSimpleName(string gameName)
{
foreach (string[] game in SideloaderRCLONE.games)
{
if (gameName.Contains(game[SideloaderRCLONE.PackageNameIndex]))
return game[SideloaderRCLONE.GameNameIndex];
}
return gameName;
}
//Downloads the required files
public static void downloadFiles()
{
using (var client = new WebClient())
var client = new WebClient();
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
try
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\warning.png"))
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/secret", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\warning.png");
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
{
try
{
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");
}
catch
{
}
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(Environment.CurrentDirectory + "\\rclone"))
{
string url;
if (Environment.Is64BitOperatingSystem)
url = "https://downloads.rclone.org/v1.53.1/rclone-v1.53.1-windows-amd64.zip";
url = "https://downloads.rclone.org/v1.55.1/rclone-v1.55.1-windows-amd64.zip";
else
url = "https://downloads.rclone.org/v1.53.1/rclone-v1.53.1-windows-386.zip";
url = "https://downloads.rclone.org/v1.55.1/rclone-v1.55.1-windows-386.zip";
//Since sideloader is build for x86, it should work on both x86 and x64 so we download the according rclone version
client.DownloadFile(url, "rclone.zip");
@@ -205,13 +282,18 @@ And all of them added to PATH, without ANY of them, the spoofer won't work!";
if (folder.Contains("rclone"))
{
Directory.Move(folder, "rclone");
break;
break; //only 1 rclone folder
}
}
}
}
catch
{
FlexibleMessageBox.Show("Your internet is not working properly or rclone/github servers are down, some files may be missing (adb, rclone or launcher)");
}
}
}
}

View File

@@ -11,7 +11,7 @@ namespace AndroidSideloader
public string Output;
public string Error;
public ProcessOutput(string output, string error)
public ProcessOutput(string output = "", string error = "")
{
Output = output;
Error = error;

View File

@@ -32,9 +32,15 @@ namespace AndroidSideloader
*/
public static List<string[]> games = new List<string[]>();
public static string Nouns = Environment.CurrentDirectory + "\\nouns";
public static string ThumbnailsFolder = Environment.CurrentDirectory + "\\thumbnails";
public static string NotesFolder = Environment.CurrentDirectory + "\\notes";
public static void UpdateNouns(string remote)
{
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/nouns\" \"{Nouns}\"");
}
public static void UpdateGamePhotos(string remote)
{
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/thumbnails\" \"{ThumbnailsFolder}\"");
@@ -42,6 +48,7 @@ namespace AndroidSideloader
public static void UpdateGameNotes(string remote)
{
RCLONE.runRcloneCommand($"sync \"{remote}:{RcloneGamesFolder}/.meta/notes\" \"{NotesFolder}\"");
}
@@ -69,8 +76,9 @@ namespace AndroidSideloader
{
gameProperties.Clear();
games.Clear();
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/GameList.txt\"").Output;
//File.WriteAllText("GamesList.txt", tempGameList);
string tempGameList = RCLONE.runRcloneCommand($"cat \"{remote}:{RcloneGamesFolder}/GameList.txt\"").Output;
if (MainForm.debugMode)
File.WriteAllText("GamesList.txt", tempGameList);
string gamePropertiesLine = Utilities.StringUtilities.RemoveEverythingAfterFirst(tempGameList, "\n");
foreach (string gameProperty in gamePropertiesLine.Split(';'))
@@ -87,18 +95,16 @@ namespace AndroidSideloader
}
//Output
Console.WriteLine("Headers:");
foreach (string s in gameProperties)
{
Console.WriteLine($"gameProperty: {s}");
}
Console.WriteLine("Games");
//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] + " ";
Console.WriteLine(output);
}
}
@@ -115,7 +121,7 @@ namespace AndroidSideloader
catch { return 0; }
}
public static async Task updateConfig(string remote)
public static void updateConfig(string remote)
{
string localHash = "";
try { localHash = File.ReadAllText(Environment.CurrentDirectory + "\\rclone\\hash.txt"); } catch { } //file may not exist

View File

@@ -1,4 +1,8 @@
using System.IO;
using System;
using System.IO;
using System.Management;
using System.Security.Cryptography;
using System.Text;
namespace AndroidSideloader
{
@@ -9,9 +13,51 @@ namespace AndroidSideloader
string[] files = Directory.GetFiles(path);
foreach (string file in files)
if (file.EndsWith(".obb"))
if (file.EndsWith(".obb") || Path.GetDirectoryName(file).Contains(".") && !Path.GetDirectoryName(file).Contains("_data"))
return true;
return false;
}
public static string UUID()
{
StringBuilder sb = new StringBuilder();
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Processor");
foreach (ManagementObject queryObj in searcher.Get())
{
sb.Append(queryObj["NumberOfCores"]);
sb.Append(queryObj["ProcessorId"]);
sb.Append(queryObj["Name"]);
sb.Append(queryObj["SocketDesignation"]);
}
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_BIOS");
foreach (ManagementObject queryObj in searcher.Get())
{
sb.Append(queryObj["Manufacturer"]);
sb.Append(queryObj["Name"]);
sb.Append(queryObj["Version"]);
}
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_BaseBoard");
foreach (ManagementObject queryObj in searcher.Get())
{
sb.Append(queryObj["Product"]);
}
var bytes = Encoding.ASCII.GetBytes(sb.ToString());
SHA256Managed sha = new SHA256Managed();
byte[] hash = sha.ComputeHash(bytes);
return BitConverter.ToString(hash).Replace("-", "");
}
}
}

View File

@@ -23,6 +23,7 @@ namespace AndroidSideloader
}
string NewPackageName = PackageNameTextBox.Text;
string path;
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "Android apps (*.apk)|*.apk";
@@ -38,6 +39,7 @@ namespace AndroidSideloader
progressBar1.Style = ProgressBarStyle.Marquee;
string output = "";
//Spawn spoofer in a new thread so the ui isn't blocked
Thread t1 = new Thread(() =>
{
spoofer.Init();

1
ThemeForm.Designer.cs generated
View File

@@ -209,7 +209,6 @@
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.Name = "themeForm";
this.Text = "Create Your Theme";
this.Load += new System.EventHandler(this.themeForm_Load);
this.ResumeLayout(false);
}

View File

@@ -8,14 +8,13 @@ namespace AndroidSideloader
{
public partial class themeForm : Form
{
public themeForm()
{
InitializeComponent();
}
//Code made by @Gotard#9164 from discord (id 352745203322585088)
//Steam profile: https://steamcommunity.com/id/GotardPL/
private void button4_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
@@ -25,9 +24,7 @@ namespace AndroidSideloader
private void button1_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.BackColor = colorDialog1.Color;
Properties.Settings.Default.BackColor = colorDialog1.Color;
}
private void button7_Click(object sender, EventArgs e)
@@ -47,11 +44,8 @@ namespace AndroidSideloader
Properties.Settings.Default.FontStyle = new Font("Microsoft Sans Serif", 11, FontStyle.Regular);
Properties.Settings.Default.FontColor = Color.White;
Properties.Settings.Default.Save();
}
private void button5_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
@@ -91,11 +85,6 @@ namespace AndroidSideloader
Properties.Settings.Default.SubButtonColor = colorDialog1.Color;
}
private void themeForm_Load(object sender, EventArgs e)
{
}
private void button12_Click(object sender, EventArgs e)
{
String BackColor = ColorTranslator.ToHtml(Properties.Settings.Default.BackColor);

View File

@@ -17,50 +17,53 @@ namespace AndroidSideloader
private static string RawGitHubUrl;
private static string GitHubUrl;
static readonly public string LocalVersion = "2.0-WIP";
static readonly public string LocalVersion = "2.7.1";
public static string currentVersion = string.Empty;
public static string changelog = string.Empty;
//Check if there is a new version of the sideloader
private static bool IsUpdateAvailable()
{
HttpClient client = new HttpClient();
try
{
currentVersion = client.GetStringAsync($"{RawGitHubUrl}/master/version").Result;
if (currentVersion.Length > LocalVersion.Length)
currentVersion = currentVersion.Remove(currentVersion.Length - 1);
changelog = client.GetStringAsync($"{RawGitHubUrl}/master/changelog.txt").Result;
client.Dispose();
}
catch { return false; }
return LocalVersion != currentVersion;
}
//Call this to ask the user if they want to update
public static void Update()
{
RawGitHubUrl = $"https://raw.githubusercontent.com/{Repostory}";
GitHubUrl = $"https://github.com/{Repostory}";
RawGitHubUrl = $"https://raw.githubusercontent.com/nerdunit/androidsideloader";
GitHubUrl = $"https://github.com/nerdunit/androidsideloader";
if (IsUpdateAvailable())
doUpdate();
}
//If the user wants to update
private 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
{
using (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();
}
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
AndroidSideloader.Utilities.GeneralUtilities.Melt();
}
catch { }

View File

@@ -33,7 +33,7 @@ namespace AndroidSideloader
Thread t1 = new Thread(() =>
{
createUserJson(textBox1.Text);
});
t1.IsBackground = true;
t1.Start();
@@ -78,6 +78,6 @@ namespace AndroidSideloader
}
}
}

View File

@@ -24,7 +24,6 @@ namespace AndroidSideloader.Utilities
{
return $"com.{GeneralUtilities.randomString(rand.Next(3, 8))}.{GeneralUtilities.randomString(rand.Next(3, 8))}";
}
bool isLoading = true;
public static string CommandOutput = "";
public static string CommandError = "";
@@ -48,7 +47,6 @@ namespace AndroidSideloader.Utilities
process.WaitForExit();
Console.WriteLine("ExitCode: {0}", process.ExitCode);
process.Close();
}

View File

@@ -1,17 +1,25 @@
using System.IO;
using System;
using System.IO;
using System.Windows.Forms;
namespace AndroidSideloader
{
class Logger
{
public static string logfile = "debuglog.txt";
public string logfile = Properties.Settings.Default.CurrentLogPath;
public static bool Log(string text, bool ret = true)
{
string newline = "\n";
if (text.Length > 40 && text.Contains("\n"))
newline += "\n\n";
try { File.AppendAllText(logfile, text + newline); } catch { }
string time = DateTime.Now.ToString("hh:mmtt(UTC): ");
if (text.Length > 5)
{
string newline = "\n";
if (text.Length > 40 && text.Contains("\n"))
newline += "\n\n";
try {File.AppendAllText(Properties.Settings.Default.CurrentLogPath, time + text + newline); } catch { }
return ret;
}
return ret;
}
}

BIN
adb.7z Normal file

Binary file not shown.

BIN
androidsideloader.7z Normal file

Binary file not shown.

View File

@@ -1,552 +1,25 @@
!!!IMPORTANT!!!
THIS VERSION IS WORK IN PROGRESS DUE TO LACK OF TESTERS!
Due to how the rclone config works now, if you used Rookie's Sideloader with a custom config
Make sure to redownload the entire rclone folder from the config provider!
v2.0-WIP
Changes
+ Added update checker for games
+ Added dependency check for spoofer
+ Games now can have images
+ Replaced the gamescombo box with a listview
+ Listview marks already installed games with green and outdated ones with yellow
+ Sideloader should be faster now
+ Reduced sideloader size
+ Installing games and copying obbs tries to wake the device first
+ Sideloader calls adb usb on start now
+ ADB Output now is a proper object containing strings for stdout and stderr, handling will be easier now
+ Changed spoof on rclone install to resign, allowing users to easily update games from now on!
//You can still use the spoof button manually
= Fixed UI not starting for some people
= Refreshing mirrors now deosn't change the selected mirror
= Cleaned & reworked code in sideloader and spoofer
= Fixed Spoofer.Init() on Non-English Windows
= Fixed crash detection
= Reworked rclone config handling
= Fixed game release not existing resulted in a crash
= Sideloader false positive detections reduced
= Small ui changes, hopefully for the better
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
v1.17SU1
RSL 2.7.1
Changes
+ Added some instructions & checks for the spoofer
+ Added crash detection
= Fixed the game queue broken since 1.17
= Fixed apk path for in-place reinstall. Should work correctly now.
Date 11/19/2020
VT: https://bit.ly/3nDUMcx
MD5 Checksum: 6DA8ADBE4447A809C598379E73DC7F77
SHA-1 Checksum: 924220FE8877174CCB9732F1F99B759DD6749102
SHA-256 Checksum: 0405C389A7D84CAC0D9081BDE10D010300822B10EBC2FF94C501EC740C8CFA40
SHA-512 Checksum: E8C3A15257C30278CEBC46507B1F6049FFB5AC0D6E4FBB73E1776537F80CBEA95C8C81A3F3259F8AEEDE276EBF6D50F6945622403E9D80B5E9E0F47B050BBEA9
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
HFP
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+2aycACgkQvrtJUNxE
TxOlEw/6ArmiRFAjUNC2YaElJ7fFsXVzCaeJ680rs0CK4oX9P7YjZ46y2/VGDtX/
IAGvWCqHOIw2t0sk01/JwoyKZFERLDn2MRCj9FTPsrPA8yqveiIx/fof90QaN2Q9
4aV6ht+SSirQFWTXENboEbQSWxFHW/z5/Dud8gDBuCTuFuueBk+EAph5yI3dcjCK
naDE1gX+CE21ef84F3nGMspu2q/uCaIM2mvEWR2hBvWLsQpH7m5uQegXGYywe6YC
/8wEY2mEe0nayp/3NglDDarsPN8wx1U5i/kqS8wrzZZT49pRqKZ0wykWGfAPQsaO
txmfiwH+5cu3J/6PpAMVuNjhtL0dnR5MapsXT3CoRvSiRDl2urdYJUQj1CsYOEWP
Q4St6ISoUoANhVFRcM9mbq7clxdJnfBqdr1J0YrK804qWp3krDYv5hrpE3Puu/nA
TORsqWiHPgQQHANsNYsY4WkvLiYHWyB62Cm2NATdtaoVWzsrBgFk9xlp1oIQcMXo
RlRQZQ7tQ0VFFxaP7ARRaf9ay78geC3W/cr63JTn8Hz7Ul1h+ZRa7tb1KYvpCTnp
xC7vh3IyBwc4M7mt4CxsjdFnkO3iaDybFvlufua/5vMlt70HLdutHa7vMYSZ+GFr
HL+SrazP9o8ut2L85uBqCjWHPfgVaBaaQgk9FgZe0WQoS06fdeU=
=DIzT
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
v1.17
Please manually update to this version, as it fixes automatic updates that were broken since 1.15
Changes
+ Better game installation => no need for manual installation of games anymore
+ Added theme changer back and updated it
= Fixed updates
= Updated quest options
Date 11/14/2020
VT: https://bit.ly/3lwztcn
MD5 Checksum: CC7BF16A3D687C21208E9E986D720CAE
SHA-1 Checksum: CE0C71B4097068E84FA6FC65F4AFE69CBC79AA29
SHA-256 Checksum: D9393C28376DDE1D0582BCF939D1414879EDE6772CE82F83F54C0EA0F239B2F0
SHA-512 Checksum: 326C7A0177E9B8BCFA10CB3B8FAEA025F9C45C599DE5D46CA06DFEE427351F3AE88371C5A0827DEADF7D3F459052C421A145AA5581FE3C4BD2EFAD33BCFFC37B
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+wFCUACgkQvrtJUNxE
TxO0ThAAw6po24zaYQFa+aGrgQNuWYWRxirCkLekEgmy8XVL6Q0rgMeLeq2MrCBP
wi2eBMFlLNOXy1TXOhled89NRBiBeST2Hl4TVv0Qdavd9cSeuGD/rh/PsyxnxY2Y
RWCPeXiYOf0mN1zVylLas+2vk9o/lrNieJir1nMEvyVbUJs8lTDcBdo2vVFwHK9N
nStFPxjqRb8R6smTIsltIh4+juQQMX0GyCcEMUkb5aO6BP34Mpsoaf+9bxV/elJm
UXnFSh5pjzHhkYGKVePtoHev8aFOzLeqIrfyWRJl+7gBMgYIautaxAIE+Zsy3Sai
wxUk9HJeAYwEPhYcIJKGAy+fmeX/TePQjUqLu1Pp+sJ8orstSiMjwXr84UtvyUWZ
+gSTgsQJ1QNUlhp+eJ0D6CchkAwliUXgnpIzwyn1Jj54X3ecHNjMbc5SettlXcBG
qgy5bUx8+v4H4gHmqTyZQNv1bsvIiQlcwPPUtpSzSXrzJPfZjrqPZzUWB8/Vltqc
JIR8FxEqi7+mW6AqrhUjE74N/fFibJTEuv6RALwZIAfMYEuSeFlZlDJYZ9v3H4/X
2jd+wEksbq6uYUl2l3X/7TpMWX29paj18cLD8oTSLK/RvzLXe0hhUcvuHrMxi+14
Q+V7uZYGge4Z5PANGPhd2tSkvw4CyA25OQ868QXjqciSLTfK2SU=
=Yu78
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
v1.16
Changes
+ Speed Limiter for rclone
= Random packagenames more random now
= Bugfixes
Date 11/12/2020
VT: https://bit.ly/2K4Y5Lv
MD5 Checksum: 29978E435BF02865CE61EF6279FB42ED
SHA-1 Checksum: 2E47CFDE7549D088A102F021657E9CD6859EAC47
SHA-256 Checksum: 50057AC0DA315C492C9C45B5801AE99E65B812F5BC18E23622CCAF5FBC48760A
SHA-512 Checksum: E485ADB6088C1F7DC34B65B57A9077E876D3D576D48CCED1FCA691A113CA5F6D0F8A0D31C6C848B6719FF18B7D4C5F829B9DAA8789EA6087F8B1D41005F87A48
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+tHY0ACgkQvrtJUNxE
TxOpjRAAmjaIfvIP+HvfTMGKOEGoVRDIBqEyi8tzq8hn5Z3OadBVLkWT23WblQBw
Ur6BN1fuhH5B8ToGoqX/C1lrgXsvHNDB8frGUWnO1G1KJAQEGwKPRdKyK7YPlrYm
kK74CYuM8w7qjkhX3f50ECZ4Kj1WsE92mIHjfB1xLSGzN0o7Tr1EvFFDnuXrJ0I0
vEbeto0Qo19ORcoP7KFPgGuYmMYJQ2MuwYmWDWAdm4iL1Y9vEKZ4TsHG+KmYPdo8
19YoZj8PsgYxCBy9B+UZfkJnfF7gYKmiAsgnQviDc4BvZccfAVjmWcKkzJueDkvr
GgFmbaFE48svC2NU8Qd2gq6gIX0JrnKACZqopqgorl1817Z7Rsdh2iVwTMOvxbe7
a4kAtDN90KwuRlnwoxeCBdESDSrANbiNi1yaDZc5hr/xOxUsa1JKhk7/8mcdHj78
QoCRoji60Cq8XYeRNDXI32TkZd7ql9c64AjGH1uSySIPXfehOa+m5S53Jo2dRh5p
iI1LGHjTk7EDekIVRh/cPC+hohfUAKYbUcXp15cx0HndW5+galYIH/RAjF0L+Q1U
THz36HpKvLSsgkVkeVjPNJn9Ow6xgyByLTkHrS9D7Kj78FrKiAKr08+aI3+WCpdq
1G9HcH5VzDeZ7/jfVQPhsAn3dPxlTt6ReYzbeFkrO1UHFcTdl58=
=KyH4
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
v1.15HF1
Changes
= Bugfixes
Date 11/06/2020
VT: https://bit.ly/2GDYWRU
MD5 Checksum: F0D51FEC94F8D266390E61E89E6A2EE0
SHA-1 Checksum: 4FB43CFA6021B8360A23858169FAF15468B68EDF
SHA-256 Checksum: CBE414D9A283871099057EE5D8E56AF408996AE9C996C31F92C4DAE16D48B024
SHA-512 Checksum: F16A6B29ECABBB16D25B7F7FC52CB15AE4930B2B17ABAC791BF1F331270F40B047094FDEAF1EF834E72E26AA3A6762AF8BE13EBCB735EB1C1009F884E338D9DE
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+lfEkACgkQvrtJUNxE
TxMDDxAAg+90vrCn0PllPEezzX3AJpy7NFWhFjUlDOLzNFMPa/QdAfF6H5vhEGay
bhX2BDHKSIV86bLkyGPkGHuf3etpXvZsNAmPuDoZpZ4owd1O09DOvAHIJx8F1Eia
Jc9Zovz6lKLAeIbK9ZdChKwTG3hYLIkx3rMgtvnJkZfzUKbhdU9MP0rVEzDPkSfe
ay2CGA9xLBUhPcItUTxhANzrDpRXMGHqbi+Wrscp+KmvnjHzN3Haq2A9rsasXM5Z
RSG8ccLZiI496tJQquTvPXYcnWQQudzcf3yiicztein0xcISEat0FFIVao7TtnS4
cgitvGNtfXXauAxyzjZ7PdgrVuoAE/v4m25pzaTRy7TOfW1uTz2/6lr6tZa38+p9
Bs36KcoK64FcPWjfR7zvvmCUWT/aHlRC9FwMvBHB81WRRk6xGaKl8G2QxfKY/ATl
DNlgYXfXLzipam74XfPHiyK4Sc55WLDQxZfZfD6tqTo4u8qoDESvcEz+pbGe4Wp8
awY4FVeSP1jVQzHgWf+oMTiHm5Gb3qMLUhZ/AHidUWFLhzXmAA4YXxIHKidRjCYT
42Kzs1sjT2A5ll2V7jz4pqoRlsvRAxNZ5KgAZ2R01zo7gS1nGqjyoGq3tLWHbfJk
/kD4QlOwcv06Jvp8aHcPxpccB7KHZGoRT2PB6IQE9Gt72pmAU9c=
=f7yh
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
v1.15
Changes
+ Added a spoofer
+ Added option to auto spoof games with random package name
+ Added new username support for quest 2
= Updated drag and drop sideloading
= Fixed storage label
- Removed troubleshoot form and theme form
Date 11/04/2020
VT: https://bit.ly/3kYCQsb
MD5 Checksum: 39BAB4CEE3D0E387E770BA35F4488C2F
SHA-1 Checksum: C6F311411408BCF5A55034E7A926EA385819F348
SHA-256 Checksum: 64640374EF39DD9CFC4A613A49888E3194994AA934C5E952174A2FCF533E2D19
SHA-512 Checksum: 22769280B732821539100BFA77C67141F271DB401DB3AFB28EF285E352659F9F45A90C8ABE1C0B829770C5AE580CA76A9208505888443C22EE82AAAE7035C6F7
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+jJScACgkQvrtJUNxE
TxMTag//f570tZ4zxL1x1rdajdoYzPD6oaGIabRVPrqVogsFPuVF1Q3AOzr+nzQN
Tiq7yRPmByu/dtBGby2mqL1acQ/9TLYDtmnOAxQJqj4h0KhYlnzdCfqJJbTghtZX
cy44ZqgPW47P608+zC/NfePNt7Fq1rFKN3Bpo/ISoyi5/IVGqGq1Ix/D0SlhiM5X
5VkiY+w5S0rXuAyQ4g6/03AiI9fdNVkREhUh/tYvb7IkxaN9IDlltHByeuvekMjZ
KU+mwZ9habfthB31hp+bAXz82tbIzB4LJ1P8MNadIT8ZXG19zHEY/KlaDp2NjniV
h+V9AnxPHlcZk63yVPOywxpZcv81LflMgs9XItX+zKH7ibniBEu8jxc/2uAjrDF/
JuvnOUKTuH7S2iIzHhKLYZYHiOu8sIuwGC96Ep172PGCAkVVR6CtfNPMmVZRllsY
JG3Pxdrw526SAy3Vqixbbm79Fs1o77resqGM2zl6L7Sr6sH3VnDxabVXxALgo1pH
+LSu5rCLIIsCP1a4MAyy6UgO/+ZLrC1QazR4yY7SRQHAIM48XG4d6CznFCOjczhW
VvYL6gZD7X4xlNBqNMtih8JDHIQ1y7n1f075oCxfWwt02kXhDL/cn8+UZ17IS6EZ
zr/SLm1464/htCZgsUZgQrov6CpHX/xNqAubowkAVOdDREbwh2w=
=QKlt
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
v1.14SU1
Changes
+ Quota errors now will try to redownload the game from another mirror
= Only showing mirror remotes for apps
// Will fix device storage when I get my quest 2 and can debug adb
Date 10/18/2020
VT: https://bit.ly/3kcG62A
MD5 Checksum: 2A30E5F3DB785DC8104A2AA55A83CF53
SHA-1 Checksum: 8376E5971FC4F60995A1125DD9344E52135DB4F7
SHA-256 Checksum: FD5C74067BA00561A540DE5A4F49FA63B99C9520435A51487F997AEC569E9659
SHA-512 Checksum: 6188D6306CA2A3F25DE08E19D1F20046774F7AA30BD745ED24FC7E53126DF3950211B599E3D774F540A6C1DEC177A895FAE70FB564B6AE96F5F10ABDCB9021C1
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+MCbMACgkQvrtJUNxE
TxNMVxAAlIkoTuGTDwXRBFNanulPiYmus9UazHoVFxtG2BELk1/JLPm7dwT29FiZ
oacUhhxLAEfDm169FoPNFCH/6q74xqjACkm8FjwCoas53DekguIvrhJKA3SiBUtZ
m7+hrT3WWGxXoE3+avSFmdBWWvKVA9pNR/DHprHSoinDUvgSfwBHrWD8PtuSIlwU
/jNpzyDnmBfdT4LROq93hcfFXM+POLWs5f3rXFdT+zTZexxlRiG5h7yMmsYdwdov
4jMUSzrBpRXbmmHwDi4KLzsdOJ/5okJgRdPTZm/L1rAoJT0F7QVi2shvkoN7SIH/
Fg+k0ZrNOnlpdAJwLmJD4PkQmxv5zpGSh8w7nbQJ41HgBtTQTh3OCpRRamPzAmfo
A2n/NsYpR8J8u7kGzT1MUnUn2RL+igutSrnQl8R6yR8jFjaTt+F90pBXZ1nnY6mS
8YE9mBBK3365cYVqQzOW1TUSCSzQqwTbfKDHkKrzHQWrpQ8VNMLcJBLZwU8di+4p
u8lt1uT5MRZ+9I80YBXhwzBKkiNYOt5vHpGgt0Ib4WDS7rt/7UnzEAfl8P3VEEfX
6w1HctI2zAVWYutBMv6HL3v23cO+UT8H6Wdgxq36mlMSNiqjLIntfIRrySUOy7JV
D6LE34gzpDGsBIzrpW/Hlz4wGTi6nnY0Ke6DkA1H0UOoDN9ItI4=
=ARa/
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
v1.14
Changes
+ Added the ability to change remotes (mirrors)
+ Rclone errors are now reported properly
= Fixed some bugs
// Will fix device storage when I get my quest 2 and can debug adb
Date 10/17/2020
VT: https://bit.ly/3j8kCm8
MD5 Checksum: B862B807462CE35CC930C2B1118D5692
SHA-1 Checksum: F52C8630C89CAEDB2E90A857E494DE00B137712D
SHA-256 Checksum: 3DDFA2B4CCFC0E9F6F86E8A74E6D3511B9C643F4C4AF19D3878B8704FA360558
SHA-512 Checksum: 16A022D8A4D235D7C537D9F01FE7C5F964A67A3A8CD68B3DC17AF08D94837DAC6CE0C20557D029DC169E5616B36C2A4C36B1647CE0DF930C7694F3FEC3430E70
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl+KrhQACgkQvrtJUNxE
TxP9MRAAjZbYWkbZPK+QMqzNqsgEARs6buzrwc24dth6QEod9Fgmdg5wdinZdG8X
MK467pd9u0JqM3u8DeKSUD0GEzJZStNKsbHfjvNAF3m8toaXLncWy7MYNN9loAra
17MvUBBwB1QgsXtQ3EXT1cBbS3YkQPg5E+ayvY9ZgyiOpDK6fs1tA24NZUWc53kY
TIl5IL3mZNfJck8Xc/QkZJmkBOA89oDToLOjNmZRXXEHNT/eTS6pEkMZonWQjGqF
D2dEfQTOuIAD93JzwcP5wVJFh7z6o65/7tfguDqBsTgoRWODaY+kQJDAxoWN9w/n
nagXg/y30EmE1mWQFUYa1n0V65OzT5+J8VF53DCHkgaejYLfi0lhy8TlWQZpmzen
WJOsP1Oj3ZZ9sErO8waajDBzDZ3kU9NvAOeOblE491w0713MYZYs5BVgoyHi24xO
obcp1gpLi326fkPqajgIFpDHJ014OnaXmoY9ynW9rlZJ4rwJ7WytRDzcpfyk9LV1
G1tlcCS4c/RmuVfZi4Jh0guvOOIpJSqdG4KUtvd548sslTMdHytt+YugbKqcBAto
nWroKcsmg0swAm7YgYmQXqcpM17JC21eUgm3Bc4ZZSDtP4g3Pm7vRO1+hwUNYBE9
QeEMXYDPRsTxdpuEFsbmS/EfnndvJvl9BL92Zt4+T4ruL+II50s=
=r+0B
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
New version v1.13 Released
Changes
+ Pgp messages will be available now for every update, so you can verify updates easily
= Fixed some bugs like the rclone suicide
- Removed china detection
Date 9/10/2020
MD5 Checksum: 3834485C5AF611523460E639969284F3
SHA-1 Checksum: DAF556D34F80FDE6A6A3D8F338381030B2B19E44
SHA-256 Checksum: 063FABA6A76A98AB862BBBF6F3348F176F66FD4932075E761A5FCAA85785EE4B
SHA-512 Checksum: CC743BD95826664535239BB665934E88A25CC948B95E4A3E8B34379C1E8DEB8FED05EAD87428F4B85D5841ED9101F38E4E3DAFB0EAF3CD2F2E4314B62356104D
You can always get my public key from rookie.wtf/pgp.txt
You can verify the signed message using kleopatra for windows or dark.fail/pgp
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEG9eYw4mQVDjvGf4lvrtJUNxETxMFAl9aBpMACgkQvrtJUNxE
TxOJcA/+LEzXQtyBhZ0oj22PEk0yMLQYOBLYDB96jf39IqLQAzrIUL339jRcRKMv
yhFWXpvND1wrQl3/LNtFpBSkSnvqUXtxHWg6US+Ov3nnrEvYiwK8D9f1eC5Mt3Wy
4HZIyTh9HcrLsfbnP2kDlLOaMQSIH4rChezF79xZMcx7kRmQ0/hyXlmGAPyWs8t8
5aLxk5YUcfq1Pu+ncqeX+ihYVzQHi2eXaOAIR1rSCEXfHEg9tkRzWcma8tY29gQv
IgGwxF/YnAPOdBtzuakaT88a1MsP+tAcWxmsyvTQHrv1m0h3QPU1DxMFUfAlBjLM
5tHgTTjkXedRpR+Kga5CDuK7L5p1zVMRDINcUOf9MXV2fRurZ+OIHefAd+zbrd0n
vHi1D1sFzb/lT5LCa/vrfO9crRnLdK1EI/5HNeSj9iIdD2jEMbjSjo9yv7LA2MHi
4wnvguRpK5YUGqGc2yyCRxtyKAgXXxLBFNb5K453vdLtDukZIkhLuQVchsk4PutZ
1uIg7/ZmAIPxlEHaLckaV7QEFbq9h2hFWOsSjWAATyvnkp4nxyvAavW4zNQCbd3V
XJhimZkE+3SNAuZGw10nikVz7DFMlI0dyL+jmwIuODcFMZZwkEtBr3J/Ad9V1k+G
DFKYJpBgATHdRTwt7/zZwJCBq0ONheA/6+6VYj8x8Q5rqbiDDdc=
=xp7X
-----END PGP SIGNATURE-----
1.11HF1
= Fixed some crashes that occured when a unauthorized device was used with the sideloader
1.11
+ Added support for multiple devices
1.10SU1
+ Settings should now persist through updates
- Removed download button and hwid stuff
1.10
+ Added back the game size messagebox
+ Added support for unicode in adb
= Fixed restore gamedata
= Clicking the first game won't remove it since it causes problems
= Changed the sideloader icon
1.9SU2
+ Clicking a game on the listbox will now remove it from the list
1.9SU1
- Removed some code I forgot to remove when debugging
1.9
+ Added a queue for downloading games
+ Added a setting for disabling user.json push
1.8SU2
= Install game now won't throw an exception when a game isn't selected
1.8SU1
+ Added debug logs for rclone
1.8
+ Disk info updates every command that changes disk space
= Rclone now logs commands and output
= Changed backup button
1.7.5
+ Made sideloader even faster when opening
+ Added some chiptune music and the setting to stop it
= Fixed donator button broken in 1.7
1.7
+ Removed some freezes
+ Sideloader kills rclone on start and on close if it's open so you dont waste bandwith
+ Updating rclone config now does a hash check first
+ Refresh storage after game install and on game uninstall
1.6
+ Disk space label and check
+ Checks game size before download
= Download and install game button outputs adb log now
- Launch package name button and textbox
1.5
+ Added ETA, based on CURRENT DOWNLOAD SPEED NOT DELTA OF IT
+ Added DLS label instead of showing it in the toolbar
+ Added more indication of what the software is doing, in the toolbar
+ Added some tooltips
1.4
+ Donators can now change the speed of the donate button color change (even disable)
+ Auto update for the rclone config
+ Theme export and import buttons (by gotard)
1.3
+ Added progress bar logic for game downloading with rclone
+ Uninstalling apps now asks the user if it should also remove game data
= Sorted installed apps combobox
= Fixed uninstalling apps by package names lol nobody knew was broken
1.2
+ Added unicode support for rclone
+ Added some delay on game installation
= Fixed stuff
1.1
+ Added Themes
+ Added dollarvr user.json
+ Added user.json transfer on game download
+ Added user.json transfer on first run
= Fixed tab indexes
= Now both drop downs can be visible at the same time
1.0HF1
= Fixed a problem when deleting an app
1.0
+ Added games auto download
+ Added auto troubleshoot
+ Every app installed will have all perms granted
+ Displays apps for games instead of package names if you have rclone set up
+ Uninstall app now will also delete its obb folder
//For auto download you need an rclone config and rclone to be set up correctly
0.15HF1
+ Added list apps button back
= Fixed Uninstall apk and get apk
0.15
= MASSIVE UI REDESIGN
+ Added toggle for tor/clearnet
+ Added download games through tor but still waiting for someone to help me host the files
+ Added download with progress
= Changed adb sideload command to allow downgrades too
- Removed perms stuff, was too buggy
0.14HF1
+ Added donate button
= Fixed ui order
- Removed warning from bulk obb sideload button
0.14
+ Check file hash button
+ Added first run check (will maybe be used to create user.json files)
+ Added drag and drop for apk and obb files
+ Progress bar now works for every adb command
= Moved buttons
- Instructions button
- Removed run custom adb command button and form
0.13
+ Added vrmoo.cn.json
+ Added bulk obb copy
= Message Box now top most
0.12
+ Added settings form
+ Added progress bar (again)
+ Added a new user.json
= Fixed crash on some systems (PerformanceCounter)
= Fixed crash because of file name inconsistency
- Removed performance counters because they made the software not work for some people
0.11
+ Changed normal message boxes to flexible ones
+ Added changelog to update message
= Improved update message
- Removed progressbar
0.10
+ Added few tooltips
+ Sideload folder now works for all apks (recursive search)
= Obb copy and Sideload progress bar problems should be fixed
= Fixed user.json not working if the any of folder had spaces
= Switched back to Message Boxes
0.9
+ Added the buggy progress bar back, uses different "logic"
+ Added an icon (Increased the exe size by like 300% just with that)
+ Added sideload folder button
+ Added Create user.json button and form
+ Changed Message Boxes to notifications
0.8.5
+ Added auto update download
= Fixed a bug where if you didn't have the adb folder it would crash
0.8
+ Every command now shows progress on title bar
+ Automatically run Adb Devices and List Apps on form startup
+ You can now search the App List Combo Box
= Cleaned some code
0.7
= Fixed UI Freezes
+ Added Uninstall APK Button
+ Added Launch package Button
- Removed loading bar
0.6
+ Added List Apk Perms button
+ Added Change Permissions button
+ Added dinamically added checkbox for permisssions
= The software now downloads adb from master instead of v0.3 release
0.5
- Removed Flash Firmware
= Redesigned UI
= Reworked RunAdbCommand function (now it will be possible to do stuff I wasnt able to do before)
= Replaced Ui Buttons, still needs work
+ Added List apk button
+ Added List apk combo box
+ Added get apk function
= Cleaned a bit of code
0.4
+ Added auto download of adb archive
+ Added auto extraction of adb archive
0.3
+ Added new form, you can run custom adb commands now
+ Added recover and backup app data
- Removed Select APK and Select OBB Buttons
- Removed tooltips from removed buttons
+ Sideload APK and Copy Obb buttons now also make you select the file/folder
+ Improved firmware button
0.2
+ Added Flash Firmware button
+ Added few tooltips
+ Renamed buttons
0.1
+ Initial Release
HF - Hot Fix
SU - Small Update

34708
debuglog.txt Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,5 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<WeaverFiles Include="$(MsBuildThisFileDirectory)..\weaver\$(MSBuildThisFileName).dll" />
</ItemGroup>
</Project>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8" ?>
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:all>
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
<xs:annotation>
<xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
<xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
<xs:annotation>
<xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
<xs:annotation>
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisableCompression" type="xs:boolean">
<xs:annotation>
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisableCleanup" type="xs:boolean">
<xs:annotation>
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LoadAtModuleInit" type="xs:boolean">
<xs:annotation>
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
<xs:annotation>
<xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExcludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Unmanaged64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PreloadOrder" type="xs:string">
<xs:annotation>
<xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>

BIN
packages/Fody.6.0.0/.signature.p7s vendored Normal file

Binary file not shown.

BIN
packages/Fody.6.0.0/Fody.6.0.0.nupkg vendored Normal file

Binary file not shown.

110
packages/Fody.6.0.0/build/Fody.targets vendored Normal file
View File

@@ -0,0 +1,110 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectWeaverXml Condition="$(ProjectWeaverXml) == ''">$(ProjectDir)FodyWeavers.xml</ProjectWeaverXml>
<FodyPath Condition="$(FodyPath) == ''">$(MSBuildThisFileDirectory)..\</FodyPath>
<FodyAssemblyDirectory Condition="$(MSBuildRuntimeType) == 'Core'">$(FodyPath)netstandardtask</FodyAssemblyDirectory>
<FodyAssemblyDirectory Condition="$(MSBuildRuntimeType) != 'Core'">$(FodyPath)netclassictask</FodyAssemblyDirectory>
<FodyAssembly Condition="$(FodyAssembly) == ''">$(FodyAssemblyDirectory)\Fody.dll</FodyAssembly>
<DefaultItemExcludes>$(DefaultItemExcludes);FodyWeavers.xsd</DefaultItemExcludes>
<FodyGenerateXsd Condition="$(FodyGenerateXsd) == ''">true</FodyGenerateXsd>
<MsBuildMajorVersion>15</MsBuildMajorVersion>
<MsBuildMajorVersion Condition="'$(MSBuildVersion)' != ''">$([System.Version]::Parse($(MSBuildVersion)).Major)</MsBuildMajorVersion>
</PropertyGroup>
<ItemGroup Condition="Exists($(ProjectWeaverXml))">
<UpToDateCheckInput Include="$(ProjectWeaverXml)" />
<CustomAdditionalCompileInputs Include="$(ProjectWeaverXml)" />
</ItemGroup>
<!-- Support for NCrunch -->
<ItemGroup Condition="'$(NCrunch)' == '1' and '$(TargetFramework)' == '' and '$(TargetFrameworks)' == ''">
<None Include="$(FodyAssemblyDirectory)\*.*" />
<None Include="@(WeaverFiles)" />
</ItemGroup>
<UsingTask TaskName="Fody.WeavingTask" AssemblyFile="$(FodyAssembly)" />
<UsingTask TaskName="Fody.UpdateReferenceCopyLocalTask" AssemblyFile="$(FodyAssembly)" />
<UsingTask TaskName="Fody.VerifyTask" AssemblyFile="$(FodyAssembly)" />
<Target
Name="FodyTarget"
AfterTargets="AfterCompile"
Condition="Exists(@(IntermediateAssembly)) And $(DesignTimeBuild) != true And $(DisableFody) != true"
DependsOnTargets="$(FodyDependsOnTargets)"
Inputs="@(IntermediateAssembly);$(ProjectWeaverXml)"
Outputs="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache">
<Error Condition="($(MsBuildMajorVersion) &lt; 16)"
Text="Fody is only supported on MSBuild 16 and above. Current version: $(MsBuildMajorVersion)." />
<Fody.WeavingTask
AssemblyFile="@(IntermediateAssembly)"
IntermediateDirectory="$(ProjectDir)$(IntermediateOutputPath)"
KeyOriginatorFile="$(KeyOriginatorFile)"
AssemblyOriginatorKeyFile="$(AssemblyOriginatorKeyFile)"
ProjectDirectory="$(MSBuildProjectDirectory)"
ProjectFile="$(MSBuildProjectFullPath)"
SolutionDirectory="$(SolutionDir)"
References="@(ReferencePath)"
SignAssembly="$(SignAssembly)"
ReferenceCopyLocalFiles="@(ReferenceCopyLocalPaths)"
DefineConstants="$(DefineConstants)"
DebugType="$(DebugType)"
DocumentationFile="@(DocFileItem->'%(FullPath)')"
WeaverFiles="@(WeaverFiles)"
NCrunchOriginalSolutionDirectory="$(NCrunchOriginalSolutionDir)"
IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache"
GenerateXsd="$(FodyGenerateXsd)"
>
<Output
TaskParameter="ExecutedWeavers"
PropertyName="FodyExecutedWeavers" />
</Fody.WeavingTask>
<ItemGroup>
<FileWrites Include="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache" />
</ItemGroup>
</Target>
<Target
Name="FodyUpdateCopyLocalFilesTarget"
AfterTargets="FodyTarget"
>
<Fody.UpdateReferenceCopyLocalTask
ReferenceCopyLocalFiles="@(ReferenceCopyLocalPaths)"
IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache"
>
<Output
TaskParameter="UpdatedReferenceCopyLocalFiles"
ItemName="FodyUpdatedReferenceCopyLocalPaths" />
</Fody.UpdateReferenceCopyLocalTask>
<ItemGroup>
<ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" />
<ReferenceCopyLocalPaths Include="@(FodyUpdatedReferenceCopyLocalPaths)" />
</ItemGroup>
</Target>
<Target
Name="FodyVerifyTarget"
AfterTargets="AfterBuild"
Condition="'$(NCrunch)' != '1' And $(FodyExecutedWeavers) != '' And $(DisableFody) != true"
DependsOnTargets="$(FodyVerifyDependsOnTargets)">
<Fody.VerifyTask
ProjectDirectory="$(MSBuildProjectDirectory)"
TargetPath="$(TargetPath)"
SolutionDirectory="$(SolutionDir)"
DefineConstants="$(DefineConstants)"
NCrunchOriginalSolutionDirectory="$(NCrunchOriginalSolutionDir)"
/>
</Target>
</Project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2007 James Newton-King
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -15,6 +15,7 @@ namespace Spoofer
public static void Init()
{
//If there is no keystore or details (user and pw for keystore) generate them!
if ((File.Exists("keystore.key") == false || File.Exists("details.txt") == false) && HasDependencies())
{
var rand = new Random();
@@ -84,10 +85,8 @@ namespace Spoofer
RenameObb(obbPath, newPackageName, originalPackageName);
}
Console.WriteLine("Extracting apk...");
output += DecompileApk(apkPath);
Console.WriteLine("Spoofing apk...");
//Rename APK Packagename
string foo = File.ReadAllText($"{decompiledPath}\\AndroidManifest.xml").Replace(originalPackageName, newPackageName);
File.WriteAllText($"{decompiledPath}\\AndroidManifest.xml", foo);
@@ -99,34 +98,23 @@ namespace Spoofer
File.WriteAllText(file, foo);
}
}
Console.WriteLine("APK Spoofed");
Console.WriteLine("Rebuilding the APK...");
//spoofedApkPath = $"{Path.GetFileName(apkPath).Replace(".apk", "")}_Spoofed as {newPackageName}.apk";
spoofedApkPath = Path.GetDirectoryName(apkPath) + "\\" + spoofedFileName;
string apkDecompiledPath = Path.GetFileName(apkPath).Replace(".apk", "");
output += GeneralUtilities.startProcess("cmd.exe", folderPath, $"apktool b \"{apkDecompiledPath}\" -o \"{spoofedApkPath}\"");
Logger.Log($"apktool b \"{apkDecompiledPath}\" -o \"{spoofedApkPath}\": {output.Output} {output.Error}");
Console.WriteLine("APK Rebuilt");
//Sign the new apk
Console.WriteLine("Signing the APK...");
if (File.Exists(folderPath + "keystore.key") == false)
File.Copy("keystore.key", $"{folderPath}keystore.key");
output += SignApk(spoofedApkPath);
Console.WriteLine("APK Signed");
//Delete the copy of the key and the decompiled apk folder
Console.WriteLine("Deleting residual files...");
if (string.Equals(folderPath, Environment.CurrentDirectory + "\\") == false)
File.Delete($"{folderPath}keystore.key");
Directory.Delete(decompiledPath, true);
File.Delete(apkPath);
Console.WriteLine("Residual files deleted");
return output;
}
@@ -249,7 +237,6 @@ namespace Spoofer
{
return "PackageName ERROR";
}
Console.WriteLine($"Packagename is {originalPackageName}");
return originalPackageName;
}
}

1
version Normal file
View File

@@ -0,0 +1 @@
2.7.1

1
warning.png Normal file
View File

@@ -0,0 +1 @@
ignore this, it is for backward compatibility