Compare commits

...

27 Commits
v1.1 ... v1.6

Author SHA1 Message Date
nerdunit
3eb88329b6 Update donators.txt 2020-07-21 06:33:24 -07:00
nerdunit
2f6e196ea3 Add files via upload 2020-07-21 06:30:32 -07:00
nerdunit
aa8185abea Add files via upload 2020-07-21 06:21:05 -07:00
nerdunit
683c3b87b5 Add files via upload 2020-07-20 14:54:58 -07:00
nerdunit
49f7bc9470 Update version 2020-07-20 14:17:52 -07:00
nerdunit
ceb2e5954e 1.5 2020-07-20 14:16:59 -07:00
nerdunit
6eba1c46bf Add files via upload 2020-07-18 04:46:02 -07:00
nerdunit
781ffbbc90 Update version 2020-07-18 04:45:46 -07:00
nerdunit
6690099982 Add files via upload 2020-07-17 13:55:34 -07:00
nerdunit
6726de7d26 Update donators.txt 2020-07-17 13:55:04 -07:00
nerdunit
401c9c22dd Update donators.txt 2020-07-17 13:50:26 -07:00
nerdunit
6e6341e11f Add files via upload 2020-07-17 13:47:37 -07:00
nerdunit
cc09e41622 Add files via upload 2020-07-17 13:08:53 -07:00
nerdunit
059d195f21 Add files via upload 2020-07-17 12:31:32 -07:00
nerdunit
cf334f00cd Add files via upload 2020-07-16 12:36:19 -07:00
nerdunit
f0af68b228 Add files via upload 2020-07-16 12:01:21 -07:00
nerdunit
92a1da1939 v1.3 2020-07-16 11:45:15 -07:00
nerdunit
bfce0e54ec Update version 2020-07-16 11:45:12 -07:00
nerdunit
66c4ad7377 Update version 2020-07-14 13:36:26 -07:00
nerdunit
897ea3b1df 1.2 2020-07-14 13:34:43 -07:00
nerdunit
53f7855009 Update version 2020-07-14 03:26:21 -07:00
nerdunit
722dfefeb7 Update version 2020-07-14 03:26:11 -07:00
nerdunit
b86e21080b Delete Changelog.txt 2020-07-14 03:19:54 -07:00
nerdunit
8621fa7008 Update README.md 2020-07-14 03:05:09 -07:00
nerdunit
f60ff2ef96 Update README.md 2020-07-14 03:04:25 -07:00
nerdunit
a86dba2e52 1.1 2020-07-14 03:02:30 -07:00
nerdunit
bd0ec85135 Update version 2020-07-14 03:01:14 -07:00
29 changed files with 2230 additions and 437 deletions

View File

@@ -109,6 +109,9 @@
<Reference Include="MetroFramework.Fonts, Version=1.2.0.3, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
<HintPath>packages\MetroFramework.Fonts.1.2.0.3\lib\net40\MetroFramework.Fonts.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="SergeUtils">
<HintPath>.\SergeUtils.dll</HintPath>
</Reference>
@@ -123,6 +126,9 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="UHWID">
<HintPath>packages\UHWID.dll</HintPath>
</Reference>
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
@@ -133,12 +139,24 @@
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="ImageForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ImageForm.Designer.cs">
<DependentUpon>ImageForm.cs</DependentUpon>
</Compile>
<Compile Include="SettingsForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SettingsForm.Designer.cs">
<DependentUpon>SettingsForm.cs</DependentUpon>
</Compile>
<Compile Include="ThemeForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ThemeForm.Designer.cs">
<DependentUpon>ThemeForm.cs</DependentUpon>
</Compile>
<Compile Include="TroubleshootForm.cs">
<SubType>Form</SubType>
</Compile>
@@ -158,6 +176,9 @@
<DependentUpon>Form1.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ImageForm.resx">
<DependentUpon>ImageForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
@@ -171,6 +192,9 @@
<EmbeddedResource Include="SettingsForm.resx">
<DependentUpon>SettingsForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ThemeForm.resx">
<DependentUpon>ThemeForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="TroubleshootForm.resx">
<DependentUpon>TroubleshootForm.cs</DependentUpon>
</EmbeddedResource>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
</Project>

View File

@@ -25,6 +25,37 @@
<setting name="deleteAllAfterInstall" serializeAs="String">
<value>True</value>
</setting>
<setting name="BackColor" serializeAs="String">
<value>45, 45, 45</value>
</setting>
<setting name="PanelColor" serializeAs="String">
<value>ActiveCaptionText</value>
</setting>
<setting name="ButtonColor" serializeAs="String">
<value>ActiveCaptionText</value>
</setting>
<setting name="SubButtonColor" serializeAs="String">
<value>64, 64, 64</value>
</setting>
<setting name="TextBoxColor" serializeAs="String">
<value>45, 45, 45</value>
</setting>
<setting name="ComboBoxColor" serializeAs="String">
<value>45, 45, 45</value>
</setting>
<setting name="FontColor" serializeAs="String">
<value>White</value>
</setting>
<setting name="FontStyle" serializeAs="String">
<value>Microsoft Sans Serif, 11.25pt</value>
</setting>
<setting name="BackPicturePath" serializeAs="String">
<value>
</value>
</setting>
<setting name="autoUpdateConfig" serializeAs="String">
<value>True</value>
</setting>
</AndroidSideloader.Properties.Settings>
</userSettings>
</configuration>

View File

@@ -1,123 +0,0 @@
= Fixed infinite update message
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, VRP:Quest Games
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 Creat 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

420
Form1.Designer.cs generated
View File

@@ -40,13 +40,14 @@
this.launchApkButton = new System.Windows.Forms.Button();
this.uninstallAppButton = new System.Windows.Forms.Button();
this.sideloadFolderButton = new System.Windows.Forms.Button();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.progressBar = new System.Windows.Forms.ProgressBar();
this.copyBulkObbButton = new System.Windows.Forms.Button();
this.DragDropLbl = new System.Windows.Forms.Label();
this.downloadInstallGameButton = new System.Windows.Forms.Button();
this.gamesComboBox = new SergeUtils.EasyCompletionComboBox();
this.panel1 = new System.Windows.Forms.Panel();
this.donateButton = new System.Windows.Forms.Button();
this.themesbutton = new System.Windows.Forms.Button();
this.aboutBtn = new System.Windows.Forms.Button();
this.settingsButton = new System.Windows.Forms.Button();
this.troubleshootButton = new System.Windows.Forms.Button();
@@ -57,214 +58,257 @@
this.sideloadContainer = new System.Windows.Forms.Panel();
this.listApkButton = new System.Windows.Forms.Button();
this.sideloadDrop = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.etaLabel = new System.Windows.Forms.Label();
this.speedLabel = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
this.backupContainer.SuspendLayout();
this.sideloadContainer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// m_combo
//
this.m_combo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.m_combo.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.m_combo.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.m_combo.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.m_combo.Font = new System.Drawing.Font("Arial", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.m_combo.ForeColor = System.Drawing.Color.White;
this.m_combo.Location = new System.Drawing.Point(284, 13);
this.m_combo.Location = new System.Drawing.Point(284, 14);
this.m_combo.Margin = new System.Windows.Forms.Padding(4);
this.m_combo.Name = "m_combo";
this.m_combo.Size = new System.Drawing.Size(568, 24);
this.m_combo.TabIndex = 16;
this.m_combo.Size = new System.Drawing.Size(685, 24);
this.m_combo.TabIndex = 19;
this.m_combo.Text = "Select an app from here...";
//
// startsideloadbutton
//
this.startsideloadbutton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.startsideloadbutton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.startsideloadbutton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.startsideloadbutton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.startsideloadbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.startsideloadbutton.FlatAppearance.BorderSize = 0;
this.startsideloadbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.startsideloadbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.startsideloadbutton.ForeColor = System.Drawing.Color.White;
this.startsideloadbutton.Location = new System.Drawing.Point(0, 175);
this.startsideloadbutton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.startsideloadbutton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.startsideloadbutton.Location = new System.Drawing.Point(0, 170);
this.startsideloadbutton.Margin = new System.Windows.Forms.Padding(4);
this.startsideloadbutton.Name = "startsideloadbutton";
this.startsideloadbutton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.startsideloadbutton.Size = new System.Drawing.Size(267, 35);
this.startsideloadbutton.TabIndex = 4;
this.startsideloadbutton.Size = new System.Drawing.Size(267, 34);
this.startsideloadbutton.TabIndex = 7;
this.startsideloadbutton.Text = "Sideload APK";
this.startsideloadbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.startsideloadbutton.UseVisualStyleBackColor = true;
this.startsideloadbutton.UseVisualStyleBackColor = false;
this.startsideloadbutton.Click += new System.EventHandler(this.startsideloadbutton_Click);
//
// devicesbutton
//
this.devicesbutton.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.devicesbutton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.devicesbutton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.devicesbutton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.devicesbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.devicesbutton.FlatAppearance.BorderSize = 0;
this.devicesbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.devicesbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.devicesbutton.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.devicesbutton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.devicesbutton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.devicesbutton.Location = new System.Drawing.Point(0, 0);
this.devicesbutton.Margin = new System.Windows.Forms.Padding(4);
this.devicesbutton.Name = "devicesbutton";
this.devicesbutton.Size = new System.Drawing.Size(267, 35);
this.devicesbutton.TabIndex = 1;
this.devicesbutton.Size = new System.Drawing.Size(267, 34);
this.devicesbutton.TabIndex = 0;
this.devicesbutton.Text = "ADB DEVICES";
this.devicesbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.devicesbutton.UseVisualStyleBackColor = true;
this.devicesbutton.UseVisualStyleBackColor = false;
this.devicesbutton.Click += new System.EventHandler(this.devicesbutton_Click);
//
// obbcopybutton
//
this.obbcopybutton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.obbcopybutton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.obbcopybutton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.obbcopybutton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.obbcopybutton.Dock = System.Windows.Forms.DockStyle.Top;
this.obbcopybutton.FlatAppearance.BorderSize = 0;
this.obbcopybutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.obbcopybutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.obbcopybutton.ForeColor = System.Drawing.Color.White;
this.obbcopybutton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.obbcopybutton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.obbcopybutton.Location = new System.Drawing.Point(0, 0);
this.obbcopybutton.Margin = new System.Windows.Forms.Padding(4);
this.obbcopybutton.Name = "obbcopybutton";
this.obbcopybutton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.obbcopybutton.Size = new System.Drawing.Size(267, 35);
this.obbcopybutton.TabIndex = 5;
this.obbcopybutton.Size = new System.Drawing.Size(267, 34);
this.obbcopybutton.TabIndex = 2;
this.obbcopybutton.Text = "Copy Obb";
this.obbcopybutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.obbcopybutton.UseVisualStyleBackColor = true;
this.obbcopybutton.UseVisualStyleBackColor = false;
this.obbcopybutton.Click += new System.EventHandler(this.obbcopybutton_Click);
//
// backupbutton
//
this.backupbutton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.backupbutton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupbutton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupbutton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.backupbutton.FlatAppearance.BorderSize = 0;
this.backupbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.backupbutton.ForeColor = System.Drawing.Color.White;
this.backupbutton.Location = new System.Drawing.Point(0, 35);
this.backupbutton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.backupbutton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.backupbutton.Location = new System.Drawing.Point(0, 34);
this.backupbutton.Margin = new System.Windows.Forms.Padding(4);
this.backupbutton.Name = "backupbutton";
this.backupbutton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.backupbutton.Size = new System.Drawing.Size(267, 35);
this.backupbutton.TabIndex = 9;
this.backupbutton.Size = new System.Drawing.Size(267, 34);
this.backupbutton.TabIndex = 11;
this.backupbutton.Text = "Backup Gamedata";
this.backupbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.backupbutton.UseVisualStyleBackColor = true;
this.backupbutton.UseVisualStyleBackColor = false;
this.backupbutton.Click += new System.EventHandler(this.backupbutton_Click);
//
// restorebutton
//
this.restorebutton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.restorebutton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.restorebutton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.restorebutton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.restorebutton.Dock = System.Windows.Forms.DockStyle.Top;
this.restorebutton.FlatAppearance.BorderSize = 0;
this.restorebutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.restorebutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.restorebutton.ForeColor = System.Drawing.Color.White;
this.restorebutton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.restorebutton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.restorebutton.Location = new System.Drawing.Point(0, 0);
this.restorebutton.Margin = new System.Windows.Forms.Padding(4);
this.restorebutton.Name = "restorebutton";
this.restorebutton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.restorebutton.Size = new System.Drawing.Size(267, 35);
this.restorebutton.Size = new System.Drawing.Size(267, 34);
this.restorebutton.TabIndex = 10;
this.restorebutton.Text = "Restore Gamedata";
this.restorebutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.restorebutton.UseVisualStyleBackColor = true;
this.restorebutton.UseVisualStyleBackColor = false;
this.restorebutton.Click += new System.EventHandler(this.restorebutton_Click);
//
// getApkButton
//
this.getApkButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.getApkButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.getApkButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.getApkButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.getApkButton.Dock = System.Windows.Forms.DockStyle.Top;
this.getApkButton.FlatAppearance.BorderSize = 0;
this.getApkButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.getApkButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.getApkButton.ForeColor = System.Drawing.Color.White;
this.getApkButton.Location = new System.Drawing.Point(0, 70);
this.getApkButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.getApkButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.getApkButton.Location = new System.Drawing.Point(0, 68);
this.getApkButton.Margin = new System.Windows.Forms.Padding(4);
this.getApkButton.Name = "getApkButton";
this.getApkButton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.getApkButton.Size = new System.Drawing.Size(267, 35);
this.getApkButton.TabIndex = 13;
this.getApkButton.Size = new System.Drawing.Size(267, 34);
this.getApkButton.TabIndex = 4;
this.getApkButton.Text = "Get Apk";
this.getApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.getApkButton.UseVisualStyleBackColor = true;
this.getApkButton.UseVisualStyleBackColor = false;
this.getApkButton.Click += new System.EventHandler(this.getApkButton_Click);
//
// launchPackageTextBox
//
this.launchPackageTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.launchPackageTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.launchPackageTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.launchPackageTextBox.ForeColor = System.Drawing.Color.White;
this.launchPackageTextBox.Location = new System.Drawing.Point(597, 148);
this.launchPackageTextBox.Location = new System.Drawing.Point(714, 150);
this.launchPackageTextBox.Margin = new System.Windows.Forms.Padding(4);
this.launchPackageTextBox.Name = "launchPackageTextBox";
this.launchPackageTextBox.Size = new System.Drawing.Size(255, 22);
this.launchPackageTextBox.TabIndex = 68;
this.launchPackageTextBox.TabIndex = 23;
this.launchPackageTextBox.Text = "de.eye_interactive.atvl.settings";
//
// launchApkButton
//
this.launchApkButton.Location = new System.Drawing.Point(597, 175);
this.launchApkButton.Location = new System.Drawing.Point(714, 177);
this.launchApkButton.Margin = new System.Windows.Forms.Padding(4);
this.launchApkButton.Name = "launchApkButton";
this.launchApkButton.Size = new System.Drawing.Size(255, 25);
this.launchApkButton.TabIndex = 69;
this.launchApkButton.TabIndex = 24;
this.launchApkButton.Text = "Launch Apk By Package Name";
this.launchApkButton.UseVisualStyleBackColor = true;
this.launchApkButton.Click += new System.EventHandler(this.launchApkButton_Click);
//
// uninstallAppButton
//
this.uninstallAppButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.uninstallAppButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.uninstallAppButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.uninstallAppButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.uninstallAppButton.Dock = System.Windows.Forms.DockStyle.Top;
this.uninstallAppButton.FlatAppearance.BorderSize = 0;
this.uninstallAppButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.uninstallAppButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.uninstallAppButton.ForeColor = System.Drawing.Color.White;
this.uninstallAppButton.Location = new System.Drawing.Point(0, 105);
this.uninstallAppButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.uninstallAppButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.uninstallAppButton.Location = new System.Drawing.Point(0, 102);
this.uninstallAppButton.Margin = new System.Windows.Forms.Padding(4);
this.uninstallAppButton.Name = "uninstallAppButton";
this.uninstallAppButton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.uninstallAppButton.Size = new System.Drawing.Size(267, 35);
this.uninstallAppButton.TabIndex = 14;
this.uninstallAppButton.Size = new System.Drawing.Size(267, 34);
this.uninstallAppButton.TabIndex = 5;
this.uninstallAppButton.Text = "Uninstall App";
this.uninstallAppButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.uninstallAppButton.UseVisualStyleBackColor = true;
this.uninstallAppButton.UseVisualStyleBackColor = false;
this.uninstallAppButton.Click += new System.EventHandler(this.uninstallAppButton_Click);
//
// sideloadFolderButton
//
this.sideloadFolderButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.sideloadFolderButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadFolderButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadFolderButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadFolderButton.Dock = System.Windows.Forms.DockStyle.Top;
this.sideloadFolderButton.FlatAppearance.BorderSize = 0;
this.sideloadFolderButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.sideloadFolderButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.sideloadFolderButton.ForeColor = System.Drawing.Color.White;
this.sideloadFolderButton.Location = new System.Drawing.Point(0, 140);
this.sideloadFolderButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.sideloadFolderButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.sideloadFolderButton.Location = new System.Drawing.Point(0, 136);
this.sideloadFolderButton.Margin = new System.Windows.Forms.Padding(4);
this.sideloadFolderButton.Name = "sideloadFolderButton";
this.sideloadFolderButton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.sideloadFolderButton.Size = new System.Drawing.Size(267, 35);
this.sideloadFolderButton.TabIndex = 7;
this.sideloadFolderButton.Size = new System.Drawing.Size(267, 34);
this.sideloadFolderButton.TabIndex = 6;
this.sideloadFolderButton.Text = "Sideload Folder";
this.sideloadFolderButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.sideloadFolderButton.UseVisualStyleBackColor = true;
this.sideloadFolderButton.UseVisualStyleBackColor = false;
this.sideloadFolderButton.Click += new System.EventHandler(this.sideloadFolderButton_Click);
//
// progressBar1
// progressBar
//
this.progressBar1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.progressBar1.ForeColor = System.Drawing.Color.Purple;
this.progressBar1.Location = new System.Drawing.Point(284, 45);
this.progressBar1.Margin = new System.Windows.Forms.Padding(4);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(568, 25);
this.progressBar1.TabIndex = 23;
this.progressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.progressBar.ForeColor = System.Drawing.Color.Purple;
this.progressBar.Location = new System.Drawing.Point(284, 46);
this.progressBar.Margin = new System.Windows.Forms.Padding(4);
this.progressBar.Name = "progressBar";
this.progressBar.Size = new System.Drawing.Size(685, 25);
this.progressBar.TabIndex = 20;
//
// copyBulkObbButton
//
this.copyBulkObbButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.copyBulkObbButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.copyBulkObbButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.copyBulkObbButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.copyBulkObbButton.Dock = System.Windows.Forms.DockStyle.Top;
this.copyBulkObbButton.FlatAppearance.BorderSize = 0;
this.copyBulkObbButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.copyBulkObbButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.copyBulkObbButton.ForeColor = System.Drawing.Color.White;
this.copyBulkObbButton.Location = new System.Drawing.Point(0, 35);
this.copyBulkObbButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.copyBulkObbButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.copyBulkObbButton.Location = new System.Drawing.Point(0, 34);
this.copyBulkObbButton.Margin = new System.Windows.Forms.Padding(4);
this.copyBulkObbButton.Name = "copyBulkObbButton";
this.copyBulkObbButton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.copyBulkObbButton.Size = new System.Drawing.Size(267, 35);
this.copyBulkObbButton.TabIndex = 8;
this.copyBulkObbButton.Size = new System.Drawing.Size(267, 34);
this.copyBulkObbButton.TabIndex = 3;
this.copyBulkObbButton.Text = "Copy Bulk Obb";
this.copyBulkObbButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.copyBulkObbButton.UseVisualStyleBackColor = true;
this.copyBulkObbButton.UseVisualStyleBackColor = false;
this.copyBulkObbButton.Click += new System.EventHandler(this.copyBulkObbButton_Click);
//
// DragDropLbl
@@ -276,7 +320,7 @@
this.DragDropLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.DragDropLbl.Name = "DragDropLbl";
this.DragDropLbl.Size = new System.Drawing.Size(394, 69);
this.DragDropLbl.TabIndex = 27;
this.DragDropLbl.TabIndex = 25;
this.DragDropLbl.Text = "DragDropLBL";
this.DragDropLbl.Visible = false;
//
@@ -285,29 +329,33 @@
this.downloadInstallGameButton.Location = new System.Drawing.Point(284, 113);
this.downloadInstallGameButton.Margin = new System.Windows.Forms.Padding(4);
this.downloadInstallGameButton.Name = "downloadInstallGameButton";
this.downloadInstallGameButton.Size = new System.Drawing.Size(568, 28);
this.downloadInstallGameButton.TabIndex = 71;
this.downloadInstallGameButton.Size = new System.Drawing.Size(685, 28);
this.downloadInstallGameButton.TabIndex = 22;
this.downloadInstallGameButton.Text = "Download and Install Game";
this.downloadInstallGameButton.UseVisualStyleBackColor = true;
this.downloadInstallGameButton.Click += new System.EventHandler(this.downloadInstallGameButton_Click);
//
// gamesComboBox
//
this.gamesComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.gamesComboBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
this.gamesComboBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.gamesComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.gamesComboBox.Font = new System.Drawing.Font("Arial", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.gamesComboBox.ForeColor = System.Drawing.Color.White;
this.gamesComboBox.Location = new System.Drawing.Point(284, 81);
this.gamesComboBox.Margin = new System.Windows.Forms.Padding(4);
this.gamesComboBox.Name = "gamesComboBox";
this.gamesComboBox.Size = new System.Drawing.Size(568, 24);
this.gamesComboBox.TabIndex = 72;
this.gamesComboBox.Size = new System.Drawing.Size(685, 24);
this.gamesComboBox.Sorted = true;
this.gamesComboBox.TabIndex = 21;
this.gamesComboBox.Text = "Select a game from here...";
//
// panel1
//
this.panel1.AutoScroll = true;
this.panel1.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.PanelColor;
this.panel1.Controls.Add(this.donateButton);
this.panel1.Controls.Add(this.themesbutton);
this.panel1.Controls.Add(this.aboutBtn);
this.panel1.Controls.Add(this.settingsButton);
this.panel1.Controls.Add(this.troubleshootButton);
@@ -318,6 +366,7 @@
this.panel1.Controls.Add(this.sideloadContainer);
this.panel1.Controls.Add(this.sideloadDrop);
this.panel1.Controls.Add(this.devicesbutton);
this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "PanelColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
@@ -332,99 +381,140 @@
this.donateButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.donateButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.donateButton.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.donateButton.Location = new System.Drawing.Point(0, 608);
this.donateButton.Location = new System.Drawing.Point(0, 635);
this.donateButton.Margin = new System.Windows.Forms.Padding(4);
this.donateButton.Name = "donateButton";
this.donateButton.Size = new System.Drawing.Size(267, 58);
this.donateButton.TabIndex = 89;
this.donateButton.TabIndex = 18;
this.donateButton.Text = "DONATE";
this.donateButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.donateButton.UseVisualStyleBackColor = true;
this.donateButton.Click += new System.EventHandler(this.donateButton_Click);
//
// themesbutton
//
this.themesbutton.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.themesbutton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.themesbutton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.themesbutton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.themesbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.themesbutton.FlatAppearance.BorderSize = 0;
this.themesbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.themesbutton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.themesbutton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.themesbutton.Location = new System.Drawing.Point(0, 601);
this.themesbutton.Margin = new System.Windows.Forms.Padding(4);
this.themesbutton.Name = "themesbutton";
this.themesbutton.Size = new System.Drawing.Size(267, 34);
this.themesbutton.TabIndex = 17;
this.themesbutton.Text = "THEMES";
this.themesbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.themesbutton.UseVisualStyleBackColor = false;
this.themesbutton.Click += new System.EventHandler(this.themesbutton_Click);
//
// aboutBtn
//
this.aboutBtn.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.aboutBtn.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.aboutBtn.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.aboutBtn.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.aboutBtn.Dock = System.Windows.Forms.DockStyle.Top;
this.aboutBtn.FlatAppearance.BorderSize = 0;
this.aboutBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.aboutBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.aboutBtn.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.aboutBtn.Location = new System.Drawing.Point(0, 573);
this.aboutBtn.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.aboutBtn.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.aboutBtn.Location = new System.Drawing.Point(0, 567);
this.aboutBtn.Margin = new System.Windows.Forms.Padding(4);
this.aboutBtn.Name = "aboutBtn";
this.aboutBtn.Size = new System.Drawing.Size(267, 35);
this.aboutBtn.TabIndex = 88;
this.aboutBtn.Size = new System.Drawing.Size(267, 34);
this.aboutBtn.TabIndex = 16;
this.aboutBtn.Text = "ABOUT";
this.aboutBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.aboutBtn.UseVisualStyleBackColor = true;
this.aboutBtn.UseVisualStyleBackColor = false;
this.aboutBtn.Click += new System.EventHandler(this.aboutBtn_Click);
//
// settingsButton
//
this.settingsButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.settingsButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.settingsButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.settingsButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.settingsButton.Dock = System.Windows.Forms.DockStyle.Top;
this.settingsButton.FlatAppearance.BorderSize = 0;
this.settingsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.settingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.settingsButton.ForeColor = System.Drawing.SystemColors.MenuBar;
this.settingsButton.Location = new System.Drawing.Point(0, 538);
this.settingsButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.settingsButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.settingsButton.Location = new System.Drawing.Point(0, 533);
this.settingsButton.Margin = new System.Windows.Forms.Padding(4);
this.settingsButton.Name = "settingsButton";
this.settingsButton.Size = new System.Drawing.Size(267, 35);
this.settingsButton.TabIndex = 87;
this.settingsButton.Size = new System.Drawing.Size(267, 34);
this.settingsButton.TabIndex = 15;
this.settingsButton.Text = "SETTINGS";
this.settingsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.settingsButton.UseVisualStyleBackColor = true;
this.settingsButton.UseVisualStyleBackColor = false;
this.settingsButton.Click += new System.EventHandler(this.settingsButton_Click);
//
// troubleshootButton
//
this.troubleshootButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.troubleshootButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.troubleshootButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.troubleshootButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.troubleshootButton.Dock = System.Windows.Forms.DockStyle.Top;
this.troubleshootButton.FlatAppearance.BorderSize = 0;
this.troubleshootButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.troubleshootButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.troubleshootButton.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.troubleshootButton.Location = new System.Drawing.Point(0, 503);
this.troubleshootButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.troubleshootButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.troubleshootButton.Location = new System.Drawing.Point(0, 499);
this.troubleshootButton.Margin = new System.Windows.Forms.Padding(4);
this.troubleshootButton.Name = "troubleshootButton";
this.troubleshootButton.Size = new System.Drawing.Size(267, 35);
this.troubleshootButton.TabIndex = 86;
this.troubleshootButton.Size = new System.Drawing.Size(267, 34);
this.troubleshootButton.TabIndex = 14;
this.troubleshootButton.Text = "TROUBLESHOOT";
this.troubleshootButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.troubleshootButton.UseVisualStyleBackColor = true;
this.troubleshootButton.UseVisualStyleBackColor = false;
this.troubleshootButton.Click += new System.EventHandler(this.troubleshootButton_Click);
//
// checkHashButton
//
this.checkHashButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.checkHashButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkHashButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkHashButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkHashButton.Dock = System.Windows.Forms.DockStyle.Top;
this.checkHashButton.FlatAppearance.BorderSize = 0;
this.checkHashButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.checkHashButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.checkHashButton.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.checkHashButton.Location = new System.Drawing.Point(0, 468);
this.checkHashButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.checkHashButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.checkHashButton.Location = new System.Drawing.Point(0, 465);
this.checkHashButton.Margin = new System.Windows.Forms.Padding(4);
this.checkHashButton.Name = "checkHashButton";
this.checkHashButton.Size = new System.Drawing.Size(267, 35);
this.checkHashButton.TabIndex = 80;
this.checkHashButton.Size = new System.Drawing.Size(267, 34);
this.checkHashButton.TabIndex = 13;
this.checkHashButton.Text = "VIEW HASH";
this.checkHashButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.checkHashButton.UseVisualStyleBackColor = true;
this.checkHashButton.UseVisualStyleBackColor = false;
this.checkHashButton.Click += new System.EventHandler(this.checkHashButton_Click);
//
// userjsonButton
//
this.userjsonButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.userjsonButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.userjsonButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.userjsonButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.userjsonButton.Dock = System.Windows.Forms.DockStyle.Top;
this.userjsonButton.FlatAppearance.BorderSize = 0;
this.userjsonButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.userjsonButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.userjsonButton.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.userjsonButton.Location = new System.Drawing.Point(0, 433);
this.userjsonButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.userjsonButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.userjsonButton.Location = new System.Drawing.Point(0, 431);
this.userjsonButton.Margin = new System.Windows.Forms.Padding(4);
this.userjsonButton.Name = "userjsonButton";
this.userjsonButton.Size = new System.Drawing.Size(267, 35);
this.userjsonButton.TabIndex = 81;
this.userjsonButton.Size = new System.Drawing.Size(267, 34);
this.userjsonButton.TabIndex = 12;
this.userjsonButton.Text = "USER.JSON";
this.userjsonButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.userjsonButton.UseVisualStyleBackColor = true;
this.userjsonButton.UseVisualStyleBackColor = false;
this.userjsonButton.Click += new System.EventHandler(this.userjsonButton_Click);
//
// backupContainer
@@ -433,28 +523,32 @@
this.backupContainer.Controls.Add(this.backupbutton);
this.backupContainer.Controls.Add(this.restorebutton);
this.backupContainer.Dock = System.Windows.Forms.DockStyle.Top;
this.backupContainer.Location = new System.Drawing.Point(0, 356);
this.backupContainer.Location = new System.Drawing.Point(0, 353);
this.backupContainer.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.backupContainer.Name = "backupContainer";
this.backupContainer.Size = new System.Drawing.Size(267, 77);
this.backupContainer.Size = new System.Drawing.Size(267, 78);
this.backupContainer.TabIndex = 76;
//
// backupDrop
//
this.backupDrop.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.backupDrop.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupDrop.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupDrop.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.backupDrop.FlatAppearance.BorderSize = 0;
this.backupDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.backupDrop.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.backupDrop.Location = new System.Drawing.Point(0, 321);
this.backupDrop.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.backupDrop.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.backupDrop.Location = new System.Drawing.Point(0, 319);
this.backupDrop.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.backupDrop.Name = "backupDrop";
this.backupDrop.Padding = new System.Windows.Forms.Padding(9, 0, 0, 0);
this.backupDrop.Size = new System.Drawing.Size(267, 35);
this.backupDrop.TabIndex = 75;
this.backupDrop.Size = new System.Drawing.Size(267, 34);
this.backupDrop.TabIndex = 9;
this.backupDrop.Text = "BACKUP";
this.backupDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.backupDrop.UseVisualStyleBackColor = true;
this.backupDrop.UseVisualStyleBackColor = false;
this.backupDrop.Click += new System.EventHandler(this.backupDrop_Click);
//
// sideloadContainer
@@ -468,7 +562,7 @@
this.sideloadContainer.Controls.Add(this.copyBulkObbButton);
this.sideloadContainer.Controls.Add(this.obbcopybutton);
this.sideloadContainer.Dock = System.Windows.Forms.DockStyle.Top;
this.sideloadContainer.Location = new System.Drawing.Point(0, 70);
this.sideloadContainer.Location = new System.Drawing.Point(0, 68);
this.sideloadContainer.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.sideloadContainer.Name = "sideloadContainer";
this.sideloadContainer.Size = new System.Drawing.Size(267, 251);
@@ -476,60 +570,109 @@
//
// listApkButton
//
this.listApkButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
this.listApkButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.listApkButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.listApkButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.listApkButton.Dock = System.Windows.Forms.DockStyle.Top;
this.listApkButton.FlatAppearance.BorderSize = 0;
this.listApkButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.listApkButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.listApkButton.ForeColor = System.Drawing.Color.White;
this.listApkButton.Location = new System.Drawing.Point(0, 210);
this.listApkButton.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.listApkButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.listApkButton.Location = new System.Drawing.Point(0, 204);
this.listApkButton.Margin = new System.Windows.Forms.Padding(4);
this.listApkButton.Name = "listApkButton";
this.listApkButton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.listApkButton.Size = new System.Drawing.Size(267, 35);
this.listApkButton.TabIndex = 15;
this.listApkButton.Size = new System.Drawing.Size(267, 34);
this.listApkButton.TabIndex = 8;
this.listApkButton.Text = "Refresh Apk, Games";
this.listApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.listApkButton.UseVisualStyleBackColor = true;
this.listApkButton.UseVisualStyleBackColor = false;
this.listApkButton.Click += new System.EventHandler(this.listApkButton_Click);
//
// sideloadDrop
//
this.sideloadDrop.BackColor = global::AndroidSideloader.Properties.Settings.Default.ButtonColor;
this.sideloadDrop.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadDrop.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadDrop.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.sideloadDrop.FlatAppearance.BorderSize = 0;
this.sideloadDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.sideloadDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.sideloadDrop.ForeColor = System.Drawing.SystemColors.ButtonFace;
this.sideloadDrop.Location = new System.Drawing.Point(0, 35);
this.sideloadDrop.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.sideloadDrop.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.sideloadDrop.Location = new System.Drawing.Point(0, 34);
this.sideloadDrop.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.sideloadDrop.Name = "sideloadDrop";
this.sideloadDrop.Padding = new System.Windows.Forms.Padding(9, 0, 0, 0);
this.sideloadDrop.Size = new System.Drawing.Size(267, 35);
this.sideloadDrop.TabIndex = 2;
this.sideloadDrop.Size = new System.Drawing.Size(267, 34);
this.sideloadDrop.TabIndex = 1;
this.sideloadDrop.Text = "SIDELOAD";
this.sideloadDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.sideloadDrop.UseVisualStyleBackColor = true;
this.sideloadDrop.UseVisualStyleBackColor = false;
this.sideloadDrop.Click += new System.EventHandler(this.sideloadContainer_Click);
//
// pictureBox1
//
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
this.pictureBox1.DataBindings.Add(new System.Windows.Forms.Binding("ImageLocation", global::AndroidSideloader.Properties.Settings.Default, "BackPicturePath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.pictureBox1.ErrorImage = null;
this.pictureBox1.ImageLocation = global::AndroidSideloader.Properties.Settings.Default.BackPicturePath;
this.pictureBox1.InitialImage = null;
this.pictureBox1.Location = new System.Drawing.Point(264, 0);
this.pictureBox1.Margin = new System.Windows.Forms.Padding(4);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(718, 788);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 74;
this.pictureBox1.TabStop = false;
//
// etaLabel
//
this.etaLabel.AutoSize = true;
this.etaLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.etaLabel.ForeColor = System.Drawing.Color.White;
this.etaLabel.Location = new System.Drawing.Point(281, 186);
this.etaLabel.Name = "etaLabel";
this.etaLabel.Size = new System.Drawing.Size(295, 36);
this.etaLabel.TabIndex = 75;
this.etaLabel.Text = "ETA: HH:MM:SS Left";
//
// speedLabel
//
this.speedLabel.AutoSize = true;
this.speedLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.speedLabel.ForeColor = System.Drawing.Color.White;
this.speedLabel.Location = new System.Drawing.Point(281, 150);
this.speedLabel.Name = "speedLabel";
this.speedLabel.Size = new System.Drawing.Size(300, 36);
this.speedLabel.TabIndex = 76;
this.speedLabel.Text = "DLS: Speed in MBPS";
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
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(862, 786);
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.ClientSize = new System.Drawing.Size(982, 786);
this.Controls.Add(this.speedLabel);
this.Controls.Add(this.etaLabel);
this.Controls.Add(this.panel1);
this.Controls.Add(this.gamesComboBox);
this.Controls.Add(this.downloadInstallGameButton);
this.Controls.Add(this.DragDropLbl);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.progressBar);
this.Controls.Add(this.launchApkButton);
this.Controls.Add(this.launchPackageTextBox);
this.Controls.Add(this.m_combo);
this.HelpButton = true;
this.Controls.Add(this.pictureBox1);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximumSize = new System.Drawing.Size(880, 1216);
this.MinimumSize = new System.Drawing.Size(880, 539);
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(1000, 833);
this.MinimumSize = new System.Drawing.Size(879, 833);
this.Name = "Form1";
this.Text = "Rookie SideLoader";
this.Load += new System.EventHandler(this.Form1_Load);
@@ -540,6 +683,7 @@
this.panel1.ResumeLayout(false);
this.backupContainer.ResumeLayout(false);
this.sideloadContainer.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -557,7 +701,7 @@
private System.Windows.Forms.Button launchApkButton;
private System.Windows.Forms.Button uninstallAppButton;
private System.Windows.Forms.Button sideloadFolderButton;
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.ProgressBar progressBar;
private System.Windows.Forms.Button copyBulkObbButton;
private System.Windows.Forms.Label DragDropLbl;
private System.Windows.Forms.Button downloadInstallGameButton;
@@ -571,9 +715,13 @@
private System.Windows.Forms.Button listApkButton;
private System.Windows.Forms.Button checkHashButton;
private System.Windows.Forms.Button troubleshootButton;
private System.Windows.Forms.Button donateButton;
private System.Windows.Forms.Button aboutBtn;
private System.Windows.Forms.Button settingsButton;
private System.Windows.Forms.Button themesbutton;
private System.Windows.Forms.Button donateButton;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label etaLabel;
private System.Windows.Forms.Label speedLabel;
}
}

491
Form1.cs
View File

@@ -3,7 +3,9 @@ using System.Diagnostics;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Management;
using System.ComponentModel;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Timers;
@@ -12,6 +14,9 @@ using System.Windows.Threading;
using System.Net;
using SergeUtils;
using JR.Utils.GUI.Forms;
using Newtonsoft.Json;
/* <a target="_blank" href="https://icons8.com/icons/set/van">Van icon</a> icon by <a target="_blank" href="https://icons8.com">Icons8</a>
* The icon of the app contains an icon made by icon8.com
@@ -29,10 +34,11 @@ namespace AndroidSideloader
#endif
string path;
string result;
string obbPath = "";
string allText;
bool is1April = false;
public static string debugPath = "debug.log";
public static string adbPath = Environment.CurrentDirectory + "\\adb\\";
string[] line;
@@ -41,15 +47,12 @@ namespace AndroidSideloader
{
InitializeComponent();
//calling the design to hide the pannels until onclick
customizeDesign();
CustomizeDesign();
Timer99.Tick += Timer99_Tick; // don't freeze the ui
Timer99.Interval = new TimeSpan(0, 0, 0, 0, 1024);
Timer99.IsEnabled = true;
Timer99.Stop();
}
public void changeTitle(string txt)
public void ChangeTitle(string txt)
{
if (this.InvokeRequired)
this.Invoke(new Action(() => this.Text = txt));
@@ -58,13 +61,13 @@ namespace AndroidSideloader
}
//adding the styling to the form
private void customizeDesign()
private void CustomizeDesign()
{
sideloadContainer.Visible = false;
backupContainer.Visible = false;
}
private void hideSubMenu()
private void HideSubMenu()
{
if (sideloadContainer.Visible == true)
{
@@ -76,11 +79,10 @@ namespace AndroidSideloader
}
}
//does the fancy stuff
private void showSubMenu(Panel subMenu)
private void ShowSubMenu(Panel subMenu)
{
if (subMenu.Visible == false)
{
hideSubMenu();
subMenu.Visible = true;
}
else
@@ -89,30 +91,39 @@ namespace AndroidSideloader
}
}
public void changeStyle(int style)
public void ChangeStyle(int style)
{
if (progressBar1.InvokeRequired)
if (style==1)
{
if (style == 1)
progressBar1.Invoke(new Action(() => progressBar1.Style = ProgressBarStyle.Marquee));
else if (style == 0)
progressBar1.Invoke(new Action(() => progressBar1.Style = ProgressBarStyle.Continuous));
if (progressBar.InvokeRequired)
{
progressBar.Invoke(new Action(() => progressBar.Style = ProgressBarStyle.Marquee));
}
else
{
progressBar.Style = ProgressBarStyle.Marquee;
}
}
else if (style == 1)
progressBar1.Style = ProgressBarStyle.Marquee;
else
progressBar1.Style = ProgressBarStyle.Continuous;
{
if (progressBar.InvokeRequired)
{
progressBar.Invoke(new Action(() => progressBar.Style = ProgressBarStyle.Continuous));
}
else
{
progressBar.Style = ProgressBarStyle.Continuous;
}
}
}
public void runAdbCommand(string command)
public void RunAdbCommand(string command)
{
changeStyle(1);
ChangeStyle(1);
oldTitle = this.Text;
changeTitle("Rookie's Sideloader | Running command " + command);
ChangeTitle("Rookie's Sideloader | Running command " + command);
Process cmd = new Process();
cmd.StartInfo.FileName = Environment.CurrentDirectory + "\\adb\\adb.exe";
@@ -137,21 +148,30 @@ namespace AndroidSideloader
sw.Close();
line = allText.Split('\n');
changeTitle(oldTitle);
changeStyle(0);
ChangeTitle(oldTitle);
ChangeStyle(0);
}
private void sideload(string path)
void AprilPrank()
{
if (is1April)
{
ImageForm Form = new ImageForm();
Form.Show();
this.Invoke(() => { this.Hide(); });
return;
}
}
private void Sideload(string path)
{
Thread t1 = new Thread(() =>
{
runAdbCommand("install -g -d -r " + '"' + path + '"');
RunAdbCommand("install -g -d -r " + '"' + path + '"');
});
t1.IsBackground = true;
t1.Start();
t1.Join();
if (allText.Length == 0)
notify("Install Failed, apk may be corrupt");
}
private async void startsideloadbutton_Click(object sender, EventArgs e)
@@ -167,17 +187,18 @@ namespace AndroidSideloader
else
return;
}
AprilPrank();
await Task.Run(() => Sideload(path));
await Task.Run(() => sideload(path));
notify(allText);
if (!is1April)
notify(allText);
}
private void devicesbutton_Click(object sender, EventArgs e)
{
runAdbCommand("devices");
RunAdbCommand("devices");
changeTitlebarToDevice();
ChangeTitlebarToDevice();
notify(allText);
}
@@ -195,9 +216,9 @@ namespace AndroidSideloader
public void ExtractFile(string sourceArchive, string destination)
{
changeStyle(1);
ChangeStyle(1);
oldTitle = this.Text;
changeTitle("Rookie's Sideloader | Extracting archive " + sourceArchive);
ChangeTitle("Rookie's Sideloader | Extracting archive " + sourceArchive);
string zPath = "7z.exe"; //add to proj and set CopyToOuputDir
ProcessStartInfo pro = new ProcessStartInfo();
pro.WindowStyle = ProcessWindowStyle.Hidden;
@@ -205,15 +226,15 @@ namespace AndroidSideloader
pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination);
Process x = Process.Start(pro);
x.WaitForExit();
changeStyle(0);
changeTitle(oldTitle);
ChangeStyle(0);
ChangeTitle(oldTitle);
}
private void obbcopy(string obbPath)
{
Thread t1 = new Thread(() =>
{
runAdbCommand("push " + '"' + obbPath + '"' + " /sdcard/Android/obb");
RunAdbCommand("push " + '"' + obbPath + '"' + " /sdcard/Android/obb");
});
t1.IsBackground = true;
t1.Start();
@@ -239,7 +260,7 @@ namespace AndroidSideloader
notify(allText);
}
private void changeTitlebarToDevice()
private void ChangeTitlebarToDevice()
{
if (line[1].Length > 1)
this.Text = "Rookie's Sideloader | Device Connected with ID | " + line[1].Replace("device", "");
@@ -255,6 +276,9 @@ namespace AndroidSideloader
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(Environment.CurrentDirectory + "\\7z.exe"))
{
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.exe", "7z.exe");
@@ -308,12 +332,32 @@ namespace AndroidSideloader
}
}
}
int TimerMs = 1024;
void SetTimerSpeed()
{
var donators = client.GetStringAsync("https://raw.githubusercontent.com/nerdunit/androidsideloader/master/donators.txt").Result.Split('\n');
foreach (string line in donators)
{
if (line.Contains(HWID))
{
TimerMs = Int32.Parse(line.Split(';')[1]);
}
}
}
//A lot of stuff to do when the form loads, centers the program,
private void Form1_Load(object sender, EventArgs e)
{
this.CenterToScreen();
SetTimerSpeed();
etaLabel.Text = "";
speedLabel.Text = "";
if (File.Exists(debugPath))
File.Delete(debugPath); //clear debug.log each start
@@ -323,14 +367,15 @@ namespace AndroidSideloader
if (Properties.Settings.Default.checkForUpdates == true)
checkForUpdate();
runAdbCommand("devices"); //check if there is any device connected
changeTitlebarToDevice();
RunAdbCommand("devices"); //check if there is any device connected
ChangeTitlebarToDevice();
if (line[1].Length > 1) //check for device connected
if (Properties.Settings.Default.firstRun == true)
{
MessageBox.Show("YOU CAN NOW DRAG AND DROP TO INSTALL APK'S AND OBB FOLDERS!");
FlexibleMessageBox.Show("For one click download and install games you need an rclone config");
UsernameForm.createUserJson(randomString(16));
UsernameForm.pushUserJson();
UsernameForm.deleteUserJson();
Properties.Settings.Default.firstRun = false;
Properties.Settings.Default.Save();
}
@@ -339,7 +384,7 @@ namespace AndroidSideloader
listappsBtn();
}
readonly string localVersion = "1.5";
void intToolTips()
{
ToolTip ListDevicesToolTip = new ToolTip();
@@ -360,13 +405,17 @@ namespace AndroidSideloader
uninstallAppToolTip.SetToolTip(this.uninstallAppButton, "Uninstalls selected app");
ToolTip userjsonToolTip = new ToolTip();
userjsonToolTip.SetToolTip(this.userjsonButton, "After you enter your username it will create an user.json file needed for some games");
ToolTip etaToolTip = new ToolTip();
etaToolTip.SetToolTip(this.etaLabel, "Estimated time when game will finish download, updates every 5 seconds, format is HH:MM:SS");
ToolTip dlsToolTip = new ToolTip();
dlsToolTip.SetToolTip(this.speedLabel, "Current download speed, updates every second, in mbps");
}
void checkForUpdate()
{
try
{
string localVersion = "1.0";
HttpClient client = new HttpClient();
string currentVersion = client.GetStringAsync("https://raw.githubusercontent.com/nerdunit/androidsideloader/master/version").Result;
currentVersion = currentVersion.Remove(currentVersion.Length - 1);
@@ -410,7 +459,7 @@ namespace AndroidSideloader
MessageBox.Show("Action Started, may take some time...");
Thread t1 = new Thread(() =>
{
runAdbCommand("pull " + '"' + "/sdcard/Android/data" + '"');
RunAdbCommand("pull " + '"' + "/sdcard/Android/data" + '"');
});
t1.IsBackground = true;
t1.Start();
@@ -438,7 +487,7 @@ namespace AndroidSideloader
{
Thread t1 = new Thread(() =>
{
runAdbCommand("push " + '"' + obbPath + '"' + " /sdcard/Android/");
RunAdbCommand("push " + '"' + obbPath + '"' + " /sdcard/Android/");
});
t1.IsBackground = true;
t1.Start();
@@ -468,14 +517,14 @@ namespace AndroidSideloader
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell pm list packages");
RunAdbCommand("shell pm list packages");
});
t1.IsBackground = true;
t1.Start();
t1.Join();
}
public string[] getGames()
public async Task<string[]> getGames()
{
string command = "cat \"VRP:Quest Games/APK_packagenames.txt\" --config .\\a";
@@ -495,11 +544,12 @@ namespace AndroidSideloader
var games = cmd.StandardOutput.ReadToEnd().Split('\n');
cmd.WaitForExit();
return games;
}
private async void listappsBtn()
{
var games = getGames();
var games = getGames().Result;
allText = "";
@@ -507,23 +557,32 @@ namespace AndroidSideloader
await Task.Run(() => listapps());
foreach (string obj in line)
for (int i= 0; i < line.Length; i++)
{
if (obj.Length > 9)
if (line[i].Length > 9)
{
string packageName = obj.Remove(0, 8);
packageName = packageName.Remove(packageName.Length - 1);
line[i] = line[i].Remove(0, 8);
line[i] = line[i].Remove(line[i].Length - 1);
foreach (string game in games)
{
if (packageName.Length > 0 && game.Contains(packageName))
if (line[i].Length > 0 && game.Contains(line[i]))
{
var foo = game.Split(';');
packageName = foo[0];
line[i] = foo[0];
}
}
m_combo.Items.Add(packageName);
}
}
Array.Sort(line);
foreach (string game in line)
{
if (game.Length > 0)
m_combo.Items.Add(game);
}
m_combo.MatchingMethod = StringMatchingMethod.NoWildcards;
}
@@ -531,7 +590,7 @@ namespace AndroidSideloader
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell pm path " + package);
RunAdbCommand("shell pm path " + package);
});
t1.IsBackground = true;
t1.Start();
@@ -540,13 +599,13 @@ namespace AndroidSideloader
private void pullapk(string apkPath)
{
Thread t2 = new Thread(() =>
Thread t1 = new Thread(() =>
{
runAdbCommand("pull " + apkPath);
RunAdbCommand("pull " + apkPath);
});
t2.IsBackground = true;
t2.Start();
t2.Join();
t1.IsBackground = true;
t1.Start();
t1.Join();
}
private async void getApkButton_Click(object sender, EventArgs e)
@@ -559,7 +618,7 @@ namespace AndroidSideloader
return;
}
string[] games = getGames();
var games = getGames().Result;
string packageName = m_combo.SelectedItem.ToString();
@@ -589,7 +648,6 @@ namespace AndroidSideloader
if (File.Exists(Environment.CurrentDirectory + "\\" + packageName + ".apk"))
File.Delete(Environment.CurrentDirectory + "\\" + packageName + ".apk");
File.Move(Environment.CurrentDirectory + "\\adb\\" + currApkPath, Environment.CurrentDirectory + "\\" + packageName + ".apk");
notify(allText);
@@ -599,15 +657,17 @@ namespace AndroidSideloader
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell am start -n " + launchPackageTextBox.Text);
RunAdbCommand("shell am start -n " + launchPackageTextBox.Text);
});
t1.IsBackground = true;
t1.Start();
}
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
async Task<string> getpackagename()
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{
string[] games = getGames();
var games = getGames().Result;
string packageName = m_combo.SelectedItem.ToString();
@@ -634,9 +694,12 @@ namespace AndroidSideloader
string packageName = await getpackagename();
packageName = packageName.Split(';')[2];
try
{
packageName = packageName.Split(';')[2];
} catch { }
DialogResult dialogResult = MessageBox.Show("Are you sure you want to uninstall " + packageName + " this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
DialogResult dialogResult = MessageBox.Show("Are you sure you want to uninstall " + packageName + ", this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
if (dialogResult != DialogResult.Yes)
return;
@@ -648,6 +711,15 @@ namespace AndroidSideloader
await Task.Run(() => removeFolder("/sdcard/Android/obb/" + packageName + "/"));
uninstallText += allText;
dialogResult = MessageBox.Show("Do you want to remove savedata for " + packageName + ", this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
await Task.Run(() => removeFolder("/sdcard/Android/data/" + packageName + "/"));
await Task.Run(() => removeFolder("/sdcard/Android/data/" + packageName));
}
notify(uninstallText);
}
@@ -655,7 +727,7 @@ namespace AndroidSideloader
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell rm -r " + path);
RunAdbCommand("shell rm -r " + path);
});
t1.IsBackground = true;
t1.Start();
@@ -666,7 +738,7 @@ namespace AndroidSideloader
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell pm uninstall -k --user 0 " + package);
RunAdbCommand("shell pm uninstall -k --user 0 " + package);
});
t1.IsBackground = true;
t1.Start();
@@ -697,7 +769,7 @@ namespace AndroidSideloader
string extension = Path.GetExtension(files[i]);
if (extension == ".apk")
{
await Task.Run(() => sideload(files[i]));
await Task.Run(() => Sideload(files[i]));
}
}
for (int i = 0; i < childDirectories.Length; i++)
@@ -721,9 +793,6 @@ namespace AndroidSideloader
private void copyBulkObbButton_Click(object sender, EventArgs e)
{
//bool result = experimentalFeatureAccept("THIS IS AN EXPERIMENTAL FEATURE AND MIGHT NOT WORK, DO YOU WANT TO CONTINUE?");
//if (result == false)
// return;
var dialog = new FolderSelectDialog
{
@@ -759,32 +828,31 @@ namespace AndroidSideloader
}
}
public void checkHashFunc(string file)
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
public async Task<string> checkHashFunc(string file)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{
using (FileStream stream = File.OpenRead(file))
using (var md5 = MD5.Create())
{
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(file))
{
using (var hashStream = File.OpenRead(file))
{
result = BitConverter.ToString(md5.ComputeHash(hashStream)).Replace("-", "").ToLowerInvariant();
}
return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLower();
}
}
}
private async void Form1_DragDrop(object sender, DragEventArgs e)
{
AprilPrank();
bool ok = false;
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string file in files)
{
Console.WriteLine(file);
string extension = Path.GetExtension(file);
if (extension == ".apk")
{
ok = true;
await Task.Run(() => sideload(file));
await Task.Run(() => Sideload(file));
}
else if (Directory.Exists(file))
{
@@ -793,7 +861,7 @@ namespace AndroidSideloader
}
}
DragDropLbl.Visible = false;
if (ok)
if (ok && !is1April)
notify("Done");
}
string oldTitle;
@@ -803,30 +871,33 @@ namespace AndroidSideloader
oldTitle = this.Text;
DragDropLbl.Visible = true;
DragDropLbl.Text = "Drag apk or obb";
changeTitle(DragDropLbl.Text);
ChangeTitle(DragDropLbl.Text);
}
private void Form1_DragLeave(object sender, EventArgs e)
{
changeTitle(oldTitle);
ChangeTitle(oldTitle);
DragDropLbl.Visible = false;
}
private void Form1_Shown(object sender, EventArgs e)
{
Timer99.Start();
Debug.WriteLine(TimerMs);
Timer99.Tick += Timer99_Tick; // don't freeze the ui
Timer99.Interval = new TimeSpan(0, 0, 0, 0, TimerMs);
if (TimerMs != 0)
Timer99.Start();
DateTime today = DateTime.Today;
if (today.Month == 4 && today.Day == 1)
is1April = true;
initGames();
}
void initGames()
string runRcloneCommand(string command)
{
gamesComboBox.Invoke(() => { gamesComboBox.Items.Clear(); });
string command = "lsf --config .\\a --dirs-only \"VRP:Quest Games\" --drive-acknowledge-abuse";
Console.WriteLine(command);
wait = true;
Process cmd = new Process();
cmd.StartInfo.FileName = Environment.CurrentDirectory + "\\rclone\\rclone.exe";
cmd.StartInfo.Arguments = command;
@@ -834,35 +905,48 @@ namespace AndroidSideloader
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.WorkingDirectory = Environment.CurrentDirectory + "\\rclone";
cmd.StartInfo.CreateNoWindow = true;
if (debugMode == true)
cmd.StartInfo.CreateNoWindow = false;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine(command);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
var games = cmd.StandardOutput.ReadToEnd().Split('\n');
cmd.WaitForExit();
var output = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();
wait = false;
return output;
}
void initGames()
{
gamesComboBox.Invoke(() => { gamesComboBox.Items.Clear(); });
var games = runRcloneCommand("lsf --config .\\a --dirs-only \"VRP:Quest Games\" --drive-acknowledge-abuse").Split('\n');
Debug.WriteLine("Loaded following games: ");
foreach (string game in games)
{
if (!game.StartsWith("."))
if (!game.StartsWith(".") && game.Length>1)
{
string currGame = game;
if (currGame.Length > 0)
currGame = currGame.Remove(currGame.Length - 1);
gamesComboBox.Invoke(() => { gamesComboBox.Items.Add(currGame); });
Debug.WriteLine(game);
gamesComboBox.Invoke(() => { gamesComboBox.Items.Add(game.Remove(game.Length - 1)); });
}
}
Debug.WriteLine(wrDelimiter);
}
string wrDelimiter = "-------";
private void sideloadContainer_Click(object sender, EventArgs e)
{
showSubMenu(sideloadContainer);
ShowSubMenu(sideloadContainer);
}
private void backupDrop_Click(object sender, EventArgs e)
{
showSubMenu(backupContainer);
ShowSubMenu(backupContainer);
}
private void settingsButton_Click(object sender, EventArgs e)
@@ -873,22 +957,24 @@ namespace AndroidSideloader
private void aboutBtn_Click(object sender, EventArgs e)
{
string about = @"Finally 1.0
string about = $@"Finally {localVersion}
- Software orignally coded by rookie.lol
- Thanks to pmow for all of his work, including rclone, wonka and other projects
- Thanks to flow for being friendly and helping every one
- Thanks to succ for creating and maintaining the server
- Thanks to badcoder5000 for redesigning the UI
- Thanks to gotard for the theme changer
- Thanks to 7zip team for 7zip :)
- Thanks to rclone team for rclone :D
- Thanks to https://stackoverflow.com/users/57611/erike for the folder browser dialog code
- Thanks to Serge Weinstock for developing SergeUtils, which is used to search the combo box
- Thanks to Mike Gold https://www.c-sharpcorner.com/members/mike-gold2 for the scrollable message box
- Thanks to https://github.com/davcs86 for the hwid lib
- The icon of the app contains an icon made by icon8.com";
FlexibleMessageBox.Show(about);
}
bool wait = false;
bool wait;
private async void checkHashButton_Click(object sender, EventArgs e)
{
@@ -905,34 +991,34 @@ namespace AndroidSideloader
return;
}
oldTitle = this.Text;
changeTitle("Checking hash of file " + file);
changeStyle(1);
ChangeTitle("Checking hash of file " + file);
ChangeStyle(1);
await Task.Run(() => checkHashFunc(file));
Clipboard.SetText(result);
string hash = await checkHashFunc(file);
Clipboard.SetText(hash);
changeStyle(0);
changeTitle(oldTitle);
FlexibleMessageBox.Show("The selected file hash is " + result + " and it was copied to clipboard");
ChangeStyle(0);
ChangeTitle(oldTitle);
FlexibleMessageBox.Show("The selected file hash is " + hash + " and it was copied to clipboard");
}
private void userjsonButton_Click(object sender, EventArgs e)
{
UsernameForm usernameForm1 = new UsernameForm();
usernameForm1.Show();
UsernameForm form = new UsernameForm();
form.Show();
}
public static readonly string HWID = UHWID.UHWIDEngine.SimpleUid;
private void donateButton_Click(object sender, EventArgs e)
{
Clipboard.SetText("rookie.lol#0001");
notify("Ask rookie.lol#0001 or pmow#1706 where you can donate");
notify("Ask rookie.lol#0001 or pmow#1706 where you can donate, hwid: " + HWID);
}
private async void listApkButton_Click(object sender, EventArgs e)
{
changeStyle(1);
ChangeStyle(1);
await Task.Run(() => initGames());
changeStyle(0);
ChangeStyle(0);
listappsBtn();
}
@@ -943,62 +1029,153 @@ namespace AndroidSideloader
form.Show();
}
public string randomString(int length) //this is code from hidden tear lmao
{
string valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
StringBuilder res = new StringBuilder();
Random rnd = new Random();
int randomInteger = rnd.Next(0, valid.Length);
while (0 < length--)
{
res.Append(valid[randomInteger]);
randomInteger = rnd.Next(0, valid.Length);
}
return res.ToString();
}
private static readonly HttpClient client = new HttpClient();
bool updatedConfig = false;
async Task updateConfig()
{
updatedConfig = true;
//string rcloneConfigPath = Environment.CurrentDirectory + "\\rclone\\a";
//string localHash = await checkHashFunc(rcloneConfigPath);
//string hash = runRcloneCommand("md5sum --config .\\a \"VRP:Quest Homebrew/Sideloading Methods/1. Rookie Sideloader - VRP Edition/a\"");
//hash = hash.Substring(0, hash.LastIndexOf(" ")); //remove stuff after hash
//Debug.WriteLine("The local file hash is " + localHash + " and the current a file hash is " + hash);
//if (!string.Equals(localHash, hash))
//{
runRcloneCommand(string.Format("copy \"VRP:Quest Homebrew/Sideloading Methods/1. Rookie Sideloader - VRP Edition/a\" \"{0}\" --config .\\a", Environment.CurrentDirectory));
File.Delete(Environment.CurrentDirectory + "\\rclone\\a");
File.Move(Environment.CurrentDirectory + "\\a", Environment.CurrentDirectory + "\\rclone\\a");
//}
}
private async void downloadInstallGameButton_Click(object sender, EventArgs e)
{
if (updatedConfig == false && Properties.Settings.Default.autoUpdateConfig == true) //check for config only once per program open and if setting enabled
{
ChangeTitle("Rookie's Sideloader | Updating rclone config");
await Task.Run(() => updateConfig());
}
int apkNumber = 0;
int obbNumber = 0;
string gameName = gamesComboBox.SelectedItem.ToString();
changeTitle("Rookie's Sideloader | Downloading game " + gameName);
Directory.CreateDirectory(Environment.CurrentDirectory + "\\" + gameName);
string command = "copy --config .\\a \"VRP:Quest Games/" + gamesComboBox.SelectedItem.ToString() + "\" \"" + Environment.CurrentDirectory + "\\" + gameName + "\" --progress --drive-acknowledge-abuse";
string[] games;
Thread t1 = new Thread(() =>
{
changeStyle(1);
wait = true;
Process cmd = new Process();
cmd.StartInfo.FileName = Environment.CurrentDirectory + "\\rclone\\rclone.exe";
cmd.StartInfo.Arguments = command;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.WorkingDirectory = Environment.CurrentDirectory + "\\rclone";
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine(command);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
var games = cmd.StandardOutput.ReadToEnd().Split('\n');
cmd.WaitForExit();
wait = false;
changeStyle(0);
games = runRcloneCommand("copy --config .\\a \"VRP:Quest Games/" + gameName + "\" \"" + Environment.CurrentDirectory + "\\" + gameName + "\" --progress --drive-acknowledge-abuse --rc").Split('\n');
});
t1.IsBackground = true;
t1.Start();
await Task.Delay(500);
ChangeTitle("Rookie's Sideloader | Pushing user.json");
UsernameForm.createUserJson(randomString(16));
UsernameForm.pushUserJson();
UsernameForm.deleteUserJson();
ChangeTitle("Rookie's Sideloader | Downloading game " + gameName);
await Task.Delay(5000);
int i = 0;
while (wait)
{
await Task.Delay(25);
try
{
HttpResponseMessage response = await client.PostAsync("http://127.0.0.1:5572/core/stats", null);
string foo = await response.Content.ReadAsStringAsync();
Debug.WriteLine("RESP CONTENT " + foo);
dynamic results = JsonConvert.DeserializeObject<dynamic>(foo);
float downloadSpeed = results.speed.ToObject<float>();
long allSize = 0;
long downloaded = 0;
foreach (var obj in results.transferring)
{
allSize += obj["size"].ToObject<long>();
downloaded += obj["bytes"].ToObject<long>();
}
allSize /= 1000000;
downloaded /= 1000000;
Debug.WriteLine("Allsize: " + allSize + "\nDownloaded: " + downloaded + "\nValue: " + (((double)downloaded / (double)allSize) * 100));
try { progressBar.Value = Convert.ToInt32((((double)downloaded / (double)allSize) * 100)); } catch { }
i++;
downloadSpeed /= 1000000;
if (i == 4)
{
i = 0;
float seconds = (allSize - downloaded) / downloadSpeed;
TimeSpan time = TimeSpan.FromSeconds(seconds);
etaLabel.Text = "ETA: " + time.ToString(@"hh\:mm\:ss") + " left";
}
speedLabel.Text = "DLS: " + String.Format("{0:0.00}", downloadSpeed) + " mbps";
}
catch { }
await Task.Delay(1000);
}
progressBar.Value = 0;
ChangeTitle("Rookie's Sideloader | Installing game apk " + gameName);
etaLabel.Text = "ETA: Done";
speedLabel.Text = "DLS: Done";
AprilPrank();
string[] files = Directory.GetFiles(Environment.CurrentDirectory + "\\" + gameName);
Debug.WriteLine("Game Folder is: " + Environment.CurrentDirectory + "\\" + gameName);
Debug.WriteLine("FILES IN GAME FOLDER: ");
foreach (string file in files)
{
Debug.WriteLine(file);
string extension = Path.GetExtension(file);
if (extension == ".apk")
{
changeStyle(1);
apkNumber++;
await Task.Run(() => sideload(file));
changeStyle(0);
await Task.Run(() => Sideload(file));
}
}
Debug.WriteLine(wrDelimiter);
ChangeTitle("Rookie's Sideloader | Installing game obb " + gameName);
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory + "\\" + gameName);
foreach (string folder in folders)
@@ -1018,22 +1195,28 @@ namespace AndroidSideloader
if (isObb == true)
{
changeStyle(1);
obbNumber++;
await Task.Run(() => obbcopy(folder));
changeStyle(0);
}
}
if (Properties.Settings.Default.deleteAllAfterInstall)
{
ChangeTitle("Rookie's Sideloader | Deleting game files");
Directory.Delete(Environment.CurrentDirectory + "\\" + gameName, true);
}
ChangeTitlebarToDevice();
notify("Game downloaded and installed " + apkNumber + " apks and " + obbNumber + " obb folders");
//Environment.CurrentDirectory + "\\" + gameName
}
private void themesbutton_Click(object sender, EventArgs e)
{
themeForm themeform1 = new themeForm();
themeform1.Show();
}
}
public static class ControlExtensions

64
ImageForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,64 @@
namespace AndroidSideloader
{
partial class ImageForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.pictureBox1 = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Location = new System.Drawing.Point(13, 13);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(775, 425);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// ImageForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.pictureBox1);
this.Name = "ImageForm";
this.Text = "ImageForm";
this.TopMost = true;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ImageForm_FormClosing);
this.Load += new System.EventHandler(this.ImageForm_Load);
this.Shown += new System.EventHandler(this.ImageForm_Shown);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.PictureBox pictureBox1;
}
}

45
ImageForm.cs Normal file
View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AndroidSideloader
{
public partial class ImageForm : Form
{
public ImageForm()
{
InitializeComponent();
}
private void ImageForm_Shown(object sender, EventArgs e)
{
//this.CenterToScreen();
this.WindowState = FormWindowState.Maximized;
this.MinimumSize = this.Size;
this.MaximumSize = this.Size;
pictureBox1.Size = this.Size;
pictureBox1.Image = new Bitmap(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\warning.png");
pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
}
private void ImageForm_Load(object sender, EventArgs e)
{
}
private void ImageForm_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 obj = (Form1)Application.OpenForms["Form1"];
obj.Close();
}
}
}

120
ImageForm.resx Normal file
View File

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

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.1.1.1")]
[assembly: AssemblyFileVersion("1.1.1.1")]

View File

@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
// Ten kod został wygenerowany przez narzędzie.
// Wersja wykonawcza:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// Zmiany w tym pliku mogą spowodować nieprawidłowe zachowanie i zostaną utracone, jeśli
// kod zostanie ponownie wygenerowany.
// </auto-generated>
//------------------------------------------------------------------------------
@@ -12,7 +12,7 @@ namespace AndroidSideloader.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -73,13 +73,121 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool useTor {
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool deleteAllAfterInstall {
get {
return ((bool)(this["useTor"]));
return ((bool)(this["deleteAllAfterInstall"]));
}
set {
this["useTor"] = value;
this["deleteAllAfterInstall"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("45, 45, 45")]
public global::System.Drawing.Color BackColor {
get {
return ((global::System.Drawing.Color)(this["BackColor"]));
}
set {
this["BackColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("ActiveCaptionText")]
public global::System.Drawing.Color PanelColor {
get {
return ((global::System.Drawing.Color)(this["PanelColor"]));
}
set {
this["PanelColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("ActiveCaptionText")]
public global::System.Drawing.Color ButtonColor {
get {
return ((global::System.Drawing.Color)(this["ButtonColor"]));
}
set {
this["ButtonColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("64, 64, 64")]
public global::System.Drawing.Color SubButtonColor {
get {
return ((global::System.Drawing.Color)(this["SubButtonColor"]));
}
set {
this["SubButtonColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("45, 45, 45")]
public global::System.Drawing.Color TextBoxColor {
get {
return ((global::System.Drawing.Color)(this["TextBoxColor"]));
}
set {
this["TextBoxColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("45, 45, 45")]
public global::System.Drawing.Color ComboBoxColor {
get {
return ((global::System.Drawing.Color)(this["ComboBoxColor"]));
}
set {
this["ComboBoxColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("White")]
public global::System.Drawing.Color FontColor {
get {
return ((global::System.Drawing.Color)(this["FontColor"]));
}
set {
this["FontColor"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 11.25pt")]
public global::System.Drawing.Font FontStyle {
get {
return ((global::System.Drawing.Font)(this["FontStyle"]));
}
set {
this["FontStyle"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string BackPicturePath {
get {
return ((string)(this["BackPicturePath"]));
}
set {
this["BackPicturePath"] = value;
}
}
}

View File

@@ -14,8 +14,35 @@
<Setting Name="firstRun" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="useTor" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
<Setting Name="deleteAllAfterInstall" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="BackColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">45, 45, 45</Value>
</Setting>
<Setting Name="PanelColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">ActiveCaptionText</Value>
</Setting>
<Setting Name="ButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">ActiveCaptionText</Value>
</Setting>
<Setting Name="SubButtonColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">64, 64, 64</Value>
</Setting>
<Setting Name="TextBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">45, 45, 45</Value>
</Setting>
<Setting Name="ComboBoxColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">45, 45, 45</Value>
</Setting>
<Setting Name="FontColor" Type="System.Drawing.Color" Scope="User">
<Value Profile="(Default)">White</Value>
</Setting>
<Setting Name="FontStyle" Type="System.Drawing.Font" Scope="User">
<Value Profile="(Default)">Microsoft Sans Serif, 11.25pt</Value>
</Setting>
<Setting Name="BackPicturePath" Type="System.String" Scope="User">
<Value Profile="(Default)"> </Value>
</Setting>
</Settings>
</SettingsFile>

View File

@@ -3,7 +3,13 @@
The icon of the app contains an icon made by icon8.com
Special thanks to
- badcoder5000#4598 for the awesome ui update
- 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 team for 7zip :)
- rclone team for rclone :D
- 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
- Mike Gold https://www.c-sharpcorner.com/members/mike-gold2 for the scrollable message box
- https://www.c-sharpcorner.com/members/mike-gold2 for the scrollable message box

View File

@@ -34,6 +34,7 @@
this.copyMessageToClipboardCheckBox = new System.Windows.Forms.CheckBox();
this.resetSettingsButton = new System.Windows.Forms.Button();
this.deleteAfterInstallCheckBox = new System.Windows.Forms.CheckBox();
this.updateConfigCheckBox = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// checkForUpdatesCheckBox
@@ -56,7 +57,7 @@
this.applyButton.Margin = new System.Windows.Forms.Padding(4);
this.applyButton.Name = "applyButton";
this.applyButton.Size = new System.Drawing.Size(100, 28);
this.applyButton.TabIndex = 1;
this.applyButton.TabIndex = 5;
this.applyButton.Text = "Apply";
this.applyButton.UseVisualStyleBackColor = false;
this.applyButton.Click += new System.EventHandler(this.applyButton_Click);
@@ -68,7 +69,7 @@
this.enableMessageBoxesCheckBox.Margin = new System.Windows.Forms.Padding(4);
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(296, 21);
this.enableMessageBoxesCheckBox.TabIndex = 2;
this.enableMessageBoxesCheckBox.TabIndex = 1;
this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = true;
this.enableMessageBoxesCheckBox.CheckedChanged += new System.EventHandler(this.enableMessageBoxesCheckBox_CheckedChanged);
@@ -80,7 +81,7 @@
this.copyMessageToClipboardCheckBox.Margin = new System.Windows.Forms.Padding(4);
this.copyMessageToClipboardCheckBox.Name = "copyMessageToClipboardCheckBox";
this.copyMessageToClipboardCheckBox.Size = new System.Drawing.Size(201, 21);
this.copyMessageToClipboardCheckBox.TabIndex = 3;
this.copyMessageToClipboardCheckBox.TabIndex = 2;
this.copyMessageToClipboardCheckBox.Text = "Copy message to clipboard";
this.copyMessageToClipboardCheckBox.UseVisualStyleBackColor = true;
this.copyMessageToClipboardCheckBox.CheckedChanged += new System.EventHandler(this.copyMessageToClipboardCheckBox_CheckedChanged);
@@ -105,23 +106,37 @@
this.deleteAfterInstallCheckBox.Margin = new System.Windows.Forms.Padding(4);
this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(282, 21);
this.deleteAfterInstallCheckBox.TabIndex = 6;
this.deleteAfterInstallCheckBox.TabIndex = 3;
this.deleteAfterInstallCheckBox.Text = "Delete games after download and install";
this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = true;
this.deleteAfterInstallCheckBox.CheckedChanged += new System.EventHandler(this.deleteAfterInstallCheckBox_CheckedChanged);
//
// updateConfigCheckBox
//
this.updateConfigCheckBox.AutoSize = true;
this.updateConfigCheckBox.Location = new System.Drawing.Point(17, 131);
this.updateConfigCheckBox.Margin = new System.Windows.Forms.Padding(4);
this.updateConfigCheckBox.Name = "updateConfigCheckBox";
this.updateConfigCheckBox.Size = new System.Drawing.Size(204, 21);
this.updateConfigCheckBox.TabIndex = 6;
this.updateConfigCheckBox.Text = "Update config automatically";
this.updateConfigCheckBox.UseVisualStyleBackColor = true;
this.updateConfigCheckBox.CheckedChanged += new System.EventHandler(this.updateConfigCheckBox_CheckedChanged);
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
this.ClientSize = new System.Drawing.Size(592, 268);
this.Controls.Add(this.updateConfigCheckBox);
this.Controls.Add(this.deleteAfterInstallCheckBox);
this.Controls.Add(this.resetSettingsButton);
this.Controls.Add(this.copyMessageToClipboardCheckBox);
this.Controls.Add(this.enableMessageBoxesCheckBox);
this.Controls.Add(this.applyButton);
this.Controls.Add(this.checkForUpdatesCheckBox);
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.Margin = new System.Windows.Forms.Padding(4);
this.Name = "SettingsForm";
@@ -142,5 +157,6 @@
private System.Windows.Forms.CheckBox copyMessageToClipboardCheckBox;
private System.Windows.Forms.Button resetSettingsButton;
private System.Windows.Forms.CheckBox deleteAfterInstallCheckBox;
private System.Windows.Forms.CheckBox updateConfigCheckBox;
}
}

View File

@@ -32,6 +32,7 @@ namespace AndroidSideloader
enableMessageBoxesCheckBox.Checked = Properties.Settings.Default.enableMessageBoxes;
copyMessageToClipboardCheckBox.Checked = Properties.Settings.Default.copyMessageToClipboard;
deleteAfterInstallCheckBox.Checked = Properties.Settings.Default.deleteAllAfterInstall;
updateConfigCheckBox.Checked = Properties.Settings.Default.autoUpdateConfig;
}
void intToolTips()
@@ -81,5 +82,10 @@ namespace AndroidSideloader
{
Properties.Settings.Default.deleteAllAfterInstall = deleteAfterInstallCheckBox.Checked;
}
private void updateConfigCheckBox_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.autoUpdateConfig = updateConfigCheckBox.Checked;
}
}
}

249
ThemeForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,249 @@
namespace AndroidSideloader
{
partial class themeForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.colorDialog1 = new System.Windows.Forms.ColorDialog();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.button7 = new System.Windows.Forms.Button();
this.button8 = new System.Windows.Forms.Button();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.button9 = new System.Windows.Forms.Button();
this.button10 = new System.Windows.Forms.Button();
this.fontDialog1 = new System.Windows.Forms.FontDialog();
this.button3 = new System.Windows.Forms.Button();
this.button11 = new System.Windows.Forms.Button();
this.button12 = new System.Windows.Forms.Button();
this.button13 = new System.Windows.Forms.Button();
this.openThemeDialog = new System.Windows.Forms.OpenFileDialog();
this.SuspendLayout();
//
// colorDialog1
//
this.colorDialog1.AnyColor = true;
this.colorDialog1.FullOpen = true;
//
// button1
//
this.button1.Location = new System.Drawing.Point(13, 12);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(128, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Set backgorund color";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(13, 68);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(128, 23);
this.button2.TabIndex = 0;
this.button2.Text = "Set panel color";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button4
//
this.button4.Location = new System.Drawing.Point(13, 152);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(128, 23);
this.button4.TabIndex = 0;
this.button4.Text = "Set button color";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// button5
//
this.button5.Location = new System.Drawing.Point(13, 208);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(128, 23);
this.button5.TabIndex = 0;
this.button5.Text = "Set combobox color";
this.button5.UseVisualStyleBackColor = true;
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// button6
//
this.button6.Location = new System.Drawing.Point(13, 236);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(128, 23);
this.button6.TabIndex = 0;
this.button6.Text = "Set textbox color";
this.button6.UseVisualStyleBackColor = true;
this.button6.Click += new System.EventHandler(this.button6_Click);
//
// button7
//
this.button7.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button7.Location = new System.Drawing.Point(185, 11);
this.button7.Name = "button7";
this.button7.Size = new System.Drawing.Size(93, 52);
this.button7.TabIndex = 1;
this.button7.Text = "Save";
this.button7.UseVisualStyleBackColor = true;
this.button7.Click += new System.EventHandler(this.button7_Click);
//
// button8
//
this.button8.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button8.Location = new System.Drawing.Point(185, 69);
this.button8.Name = "button8";
this.button8.Size = new System.Drawing.Size(93, 52);
this.button8.TabIndex = 2;
this.button8.Text = "Reset";
this.button8.UseVisualStyleBackColor = true;
this.button8.Click += new System.EventHandler(this.button8_Click);
//
// openFileDialog1
//
this.openFileDialog1.Filter = "Images|*.png;*.jpg;*.bmp;*.gif";
//
// button9
//
this.button9.Location = new System.Drawing.Point(13, 40);
this.button9.Name = "button9";
this.button9.Size = new System.Drawing.Size(128, 23);
this.button9.TabIndex = 3;
this.button9.Text = "Set background picture";
this.button9.UseVisualStyleBackColor = true;
this.button9.Click += new System.EventHandler(this.button9_Click);
//
// button10
//
this.button10.Location = new System.Drawing.Point(13, 124);
this.button10.Name = "button10";
this.button10.Size = new System.Drawing.Size(128, 23);
this.button10.TabIndex = 4;
this.button10.Text = "Set font style";
this.button10.UseVisualStyleBackColor = true;
this.button10.Click += new System.EventHandler(this.button10_Click);
//
// fontDialog1
//
this.fontDialog1.Color = System.Drawing.Color.White;
this.fontDialog1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
//
// button3
//
this.button3.Location = new System.Drawing.Point(13, 96);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(128, 23);
this.button3.TabIndex = 5;
this.button3.Text = "Set font color";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button11
//
this.button11.Location = new System.Drawing.Point(13, 180);
this.button11.Name = "button11";
this.button11.Size = new System.Drawing.Size(128, 23);
this.button11.TabIndex = 6;
this.button11.Text = "Set sub-button color";
this.button11.UseVisualStyleBackColor = true;
this.button11.Click += new System.EventHandler(this.button11_Click);
//
// button12
//
this.button12.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button12.Location = new System.Drawing.Point(185, 127);
this.button12.Name = "button12";
this.button12.Size = new System.Drawing.Size(93, 52);
this.button12.TabIndex = 7;
this.button12.Text = "Export Theme";
this.button12.UseVisualStyleBackColor = true;
this.button12.Click += new System.EventHandler(this.button12_Click);
//
// button13
//
this.button13.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
this.button13.Location = new System.Drawing.Point(185, 185);
this.button13.Name = "button13";
this.button13.Size = new System.Drawing.Size(93, 52);
this.button13.TabIndex = 8;
this.button13.Text = "Import theme";
this.button13.UseVisualStyleBackColor = true;
this.button13.Click += new System.EventHandler(this.button13_Click);
//
// openThemeDialog
//
this.openThemeDialog.Filter = "Text Files|*.txt";
//
// themeForm
//
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(290, 272);
this.Controls.Add(this.button13);
this.Controls.Add(this.button12);
this.Controls.Add(this.button11);
this.Controls.Add(this.button3);
this.Controls.Add(this.button10);
this.Controls.Add(this.button9);
this.Controls.Add(this.button8);
this.Controls.Add(this.button7);
this.Controls.Add(this.button6);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
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);
}
#endregion
private System.Windows.Forms.ColorDialog colorDialog1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.Button button8;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.Button button9;
private System.Windows.Forms.Button button10;
private System.Windows.Forms.FontDialog fontDialog1;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button11;
private System.Windows.Forms.Button button12;
private System.Windows.Forms.Button button13;
private System.Windows.Forms.OpenFileDialog openThemeDialog;
}
}

199
ThemeForm.cs Normal file
View File

@@ -0,0 +1,199 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
using System.Collections.Specialized;
namespace AndroidSideloader
{
public partial class themeForm : Form
{
public themeForm()
{
InitializeComponent();
}
private void button4_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.ButtonColor = colorDialog1.Color;
}
private void button2_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.PanelColor = colorDialog1.Color;
}
private void button1_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.BackColor = colorDialog1.Color;
}
private void button7_Click(object sender, EventArgs e)
{
Properties.Settings.Default.Save();
this.Close();
}
private void button8_Click(object sender, EventArgs e)
{
Properties.Settings.Default.BackColor = Color.FromArgb(45,45,45);
Properties.Settings.Default.ComboBoxColor = Color.FromArgb(45, 45, 45);
Properties.Settings.Default.TextBoxColor = Color.FromArgb(45,45,45);
Properties.Settings.Default.ButtonColor = SystemColors.ActiveCaptionText;
Properties.Settings.Default.SubButtonColor=Color.FromArgb(64, 64, 64);
Properties.Settings.Default.PanelColor = SystemColors.ActiveCaptionText;
Properties.Settings.Default.BackPicturePath = "";
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)
Properties.Settings.Default.ComboBoxColor = colorDialog1.Color;
}
private void button6_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.TextBoxColor = colorDialog1.Color;
}
private void button9_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
String extension = Path.GetExtension(openFileDialog1.FileName);
if (File.Exists(Environment.CurrentDirectory + "\\pic" + extension))
File.Delete(Environment.CurrentDirectory + "\\pic" + extension);
File.Copy(openFileDialog1.FileName, Environment.CurrentDirectory + "\\pic" + extension);
Properties.Settings.Default.BackPicturePath = Environment.CurrentDirectory + "\\pic" + extension ;
}
}
private void button10_Click(object sender, EventArgs e)
{
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
Properties.Settings.Default.FontStyle = fontDialog1.Font;
}
}
private void button3_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
Properties.Settings.Default.FontColor = colorDialog1.Color;
}
private void button11_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
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);
String PanelColor = ColorTranslator.ToHtml(Properties.Settings.Default.PanelColor);
String TextBoxColor = ColorTranslator.ToHtml(Properties.Settings.Default.TextBoxColor);
String ComboBoxColor = ColorTranslator.ToHtml(Properties.Settings.Default.ComboBoxColor);
String ButtonColor = ColorTranslator.ToHtml(Properties.Settings.Default.ButtonColor);
String SubButtonColor = ColorTranslator.ToHtml(Properties.Settings.Default.SubButtonColor);
String FontColor = ColorTranslator.ToHtml(Properties.Settings.Default.FontColor);
var cvt = new FontConverter();
string FontStyle = cvt.ConvertToString(Properties.Settings.Default.FontStyle);
int i;
if (File.Exists(Environment.CurrentDirectory + "\\theme.txt"))
{
if (File.Exists(Environment.CurrentDirectory + "\\theme11.txt"))
MessageBox.Show("You can't export more than 12 themes, sorry :(");
else
{
for (i = 1; i <= 10; i++)
{
if (File.Exists(Environment.CurrentDirectory + "\\theme" + i + ".txt"))
continue;
else
{
break;
}
}
File.WriteAllText(Environment.CurrentDirectory + "\\theme" + i + ".txt", "#SideloaderTheme# \n" + BackColor + "\n" + PanelColor + "\n" + ButtonColor + "\n" + SubButtonColor + "\n"
+ TextBoxColor + "\n" + ComboBoxColor + "\n" + FontColor + "\n" + FontStyle);
MessageBox.Show("Theme exported as theme" + i + ".txt");
}
}
else
{
File.WriteAllText(Environment.CurrentDirectory + "\\theme.txt", "#SideloaderTheme# \n" + BackColor + "\n" + PanelColor + "\n" + ButtonColor + "\n" + SubButtonColor + "\n"
+ TextBoxColor + "\n" + ComboBoxColor + "\n" + FontColor + "\n" + FontStyle);
MessageBox.Show("Theme exported as theme.txt");
}
}
private void button13_Click(object sender, EventArgs e)
{
openThemeDialog.InitialDirectory = Environment.CurrentDirectory;
if (openThemeDialog.ShowDialog() == DialogResult.OK) {
using (StreamReader sr = new StreamReader(openThemeDialog.FileName))
{
StringCollection myCol = new StringCollection();
myCol.AddRange(File.ReadAllLines(openThemeDialog.FileName));
if (myCol.Contains("#SideloaderTheme# "))
{
String[] settings = new String[myCol.Count];
myCol.CopyTo(settings, 0);
Color BackColor = ColorTranslator.FromHtml(settings[1]);
Color PanelColor = ColorTranslator.FromHtml(settings[2]);
Color ButtonColor = ColorTranslator.FromHtml(settings[3]);
Color SubButtonColor = ColorTranslator.FromHtml(settings[4]);
Color TextBoxColor = ColorTranslator.FromHtml(settings[5]);
Color ComboBoxColor = ColorTranslator.FromHtml(settings[6]);
Color FontColor = ColorTranslator.FromHtml(settings[7]);
Properties.Settings.Default.BackColor = BackColor;
Properties.Settings.Default.PanelColor = PanelColor;
Properties.Settings.Default.ButtonColor = ButtonColor;
Properties.Settings.Default.SubButtonColor = SubButtonColor;
Properties.Settings.Default.TextBoxColor = TextBoxColor;
Properties.Settings.Default.ComboBoxColor = ComboBoxColor;
Properties.Settings.Default.FontColor = FontColor;
System.ComponentModel.TypeConverter converter =
System.ComponentModel.TypeDescriptor.GetConverter(typeof(Font));
var cvt = new FontConverter();
Font f = cvt.ConvertFromString(settings[8]) as Font;
Properties.Settings.Default.FontStyle = f;
}
else
MessageBox.Show("The file you've selected is not a Rookie Sideloader theme file!");
}
}
}
}
}

132
ThemeForm.resx Normal file
View File

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

82
TroubleshootForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,82 @@
namespace AndroidSideloader
{
partial class TroubleshootForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.askTextBox = new MetroFramework.Controls.MetroTextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// askTextBox
//
this.askTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.askTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.askTextBox.Location = new System.Drawing.Point(9, 10);
this.askTextBox.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.askTextBox.Name = "askTextBox";
this.askTextBox.Size = new System.Drawing.Size(582, 19);
this.askTextBox.TabIndex = 0;
this.askTextBox.Text = "Ask me any question about sideloading";
//
// button1
//
this.button1.Location = new System.Drawing.Point(9, 34);
this.button1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(582, 22);
this.button1.TabIndex = 1;
this.button1.Text = "Ask the software";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// TroubleshootForm
//
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(602, 72);
this.Controls.Add(this.button1);
this.Controls.Add(this.askTextBox);
this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.MaximumSize = new System.Drawing.Size(618, 111);
this.MinimumSize = new System.Drawing.Size(618, 111);
this.Name = "TroubleshootForm";
this.ShowIcon = false;
this.Text = "TroubleshootForm (WIP)";
this.Load += new System.EventHandler(this.TroubleshootForm_Load);
this.ResumeLayout(false);
}
#endregion
private MetroFramework.Controls.MetroTextBox askTextBox;
private System.Windows.Forms.Button button1;
}
}

View File

@@ -39,7 +39,22 @@ https://t.me/questgameclub/thxdonate
https://t.me/questgameclub/play
https://t.me/questgameclub/love
https://t.me/questgameclub/vip
https://t.me/questgameclub/thxdonatetome");
https://t.me/questgameclub/thxdonatetome
NEW PASSWORDS
t.me/questgameclub/thx/donate/pass
t.me/questgameclub/donate
t.me/questgameclub/thxdonatevip
t.me/questgameclub/thxdonatetome
https://t.me/questgameclub/thxdonate
t.me/questgameclub/thxdonate
t.me/questgameclub/thxdonateclub
t.me/questgameclub/thx/donate/vip
t.me/questgameclub/donate/thx
t.me/questgameclub/thx/donate
t.me/questgameclub/donateclub
t.me/questgameclub/donatevip
t.me/questgameclub/thx/donate/vip
t.me/questgameclub/thx/donate/quest");
else
Form1.notify("Sorry I'm too dumb to answer that right now, please ask flow, if flow can't figure it out nobody can");

120
TroubleshootForm.resx Normal file
View File

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

85
UsernameForm.Designer.cs generated Normal file
View File

@@ -0,0 +1,85 @@
namespace AndroidSideloader
{
partial class UsernameForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBox1.ForeColor = System.Drawing.Color.White;
this.textBox1.Location = new System.Drawing.Point(13, 13);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(400, 20);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "Enter your username here";
//
// button1
//
this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.button1.ForeColor = System.Drawing.Color.White;
this.button1.Location = new System.Drawing.Point(13, 39);
this.button1.Margin = new System.Windows.Forms.Padding(0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(400, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Create User.Json";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// UsernameForm
//
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(424, 72);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
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(440, 111);
this.MinimumSize = new System.Drawing.Size(440, 111);
this.Name = "UsernameForm";
this.ShowIcon = false;
this.Text = "USER.JSON";
this.Load += new System.EventHandler(this.usernameForm_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
}
}

90
UsernameForm.cs Normal file
View File

@@ -0,0 +1,90 @@
using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.IO;
namespace AndroidSideloader
{
public partial class UsernameForm : Form
{
public UsernameForm()
{
InitializeComponent();
}
string defaultText;
private void usernameForm_Load(object sender, EventArgs e)
{
defaultText = textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == defaultText || textBox1.Text.Length == 0)
{
MessageBox.Show("Please enter your username first");
return;
}
createUserJson(textBox1.Text);
pushUserJson();
deleteUserJson();
Form1.notify("Done");
}
public static void pushUserJson()
{
runAdbCommand("push \"" + Environment.CurrentDirectory + "\\user.json\" " + " /sdcard/");
runAdbCommand("push \"" + Environment.CurrentDirectory + "\\vrmoo.cn.json\" " + " /sdcard/");
runAdbCommand("push \"" + Environment.CurrentDirectory + "\\qq1091481055.json\" " + " /sdcard/");
runAdbCommand("push \"" + Environment.CurrentDirectory + "\\dollarvr.com.json\" " + " /sdcard/");
}
public static void deleteUserJson()
{
File.Delete("user.json");
File.Delete("vrmoo.cn.json");
File.Delete("qq1091481055.json");
File.Delete("dollarvr.com.json");
}
public static void createUserJson(string username)
{
File.WriteAllText("user.json", "{\"username\":\"" + username + "\"}");
File.WriteAllText("vrmoo.cn.json", "{\"username\":\"" + username + "\"}");
File.WriteAllText("qq1091481055.json", "{\n \"username\":\"" + username + "\"\n }");
File.WriteAllText("dollarvr.com.json", "{\n \"username\":\"" + username + "\"\n }");
}
public static void runAdbCommand(string command)
{
Process cmd = new Process();
cmd.StartInfo.FileName = Environment.CurrentDirectory + "\\adb\\adb.exe";
cmd.StartInfo.Arguments = command;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.WorkingDirectory = Form1.adbPath;
cmd.Start();
cmd.StandardInput.WriteLine(command);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
string allText = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();
StreamWriter sw = File.AppendText(Form1.debugPath);
sw.Write("Action name = " + command + '\n');
sw.Write(allText);
sw.Write("\n--------------------------------------------------------------------\n");
sw.Flush();
sw.Close();
}
}
}

120
UsernameForm.resx Normal file
View File

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

View File

@@ -1,5 +1,35 @@
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
= Fixed a problem when deleting an app
1.0
+ Added games auto download
@@ -118,4 +148,7 @@
+ Renamed buttons
0.1
+ Initial Release
+ Initial Release
HF - Hot Fix
SU - Small Update

6
donators.txt Normal file
View File

@@ -0,0 +1,6 @@
CC0E0834BFEBFBFF000906E9;5000;ROOKIE.LOL
184204E0178BFBFF00870F10;0;Flow
E5148390BFEBFBFF000906EA;250;Gotard
5ECC5497178BFBFF00870F10;1024;Saidis21
B0374BE2BFEBFBFF00040651;0;ecirbaf
926C60A8178BFBFF00800F82;250;ThePhantomPickaxe

View File

@@ -6,4 +6,5 @@
<package id="MetroFramework.Design" version="1.2.0.3" targetFramework="net452" />
<package id="MetroFramework.Fonts" version="1.2.0.3" targetFramework="net452" />
<package id="MetroFramework.RunTime" version="1.2.0.3" targetFramework="net452" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net452" />
</packages>

BIN
secret Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

View File

@@ -1 +1 @@
1.0HF1
1.5