Compare commits

...

14 Commits
v0.15 ... v1.1

Author SHA1 Message Date
nerdunit
2723dac64f Delete Tor.7z 2020-07-14 02:56:15 -07:00
nerdunit
df32d593f2 Update Changelog.txt 2020-07-13 01:13:38 -07:00
nerdunit
050697c2b3 Add files via upload 2020-07-12 10:40:19 -07:00
nerdunit
72efbc12ac Update version 2020-07-12 10:37:58 -07:00
nerdunit
fe44a8f501 Update version 2020-07-12 06:28:19 -07:00
nerdunit
9cd02f1860 Delete main.exe 2020-07-06 05:23:51 -07:00
nerdunit
12c1ba0c93 Add files via upload 2020-07-06 05:23:11 -07:00
nerdunit
ebbf0ae066 Delete AndroidSideloader.exe 2020-07-06 04:27:42 -07:00
nerdunit
09a98a4262 Add files via upload 2020-07-06 04:00:22 -07:00
nerdunit
e8c0e313cc v0.15HF1 2020-07-02 09:07:33 -07:00
nerdunit
7047089f0d Update version 2020-07-02 09:07:03 -07:00
nerdunit
d7ddeff532 Update README.md 2020-07-02 08:01:31 -07:00
nerdunit
7b8f806be6 v0.15 2020-07-02 08:00:15 -07:00
nerdunit
cd58002295 Update version 2020-07-02 07:59:39 -07:00
34 changed files with 1387 additions and 471 deletions

View File

@@ -64,12 +64,50 @@
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'x86|AnyCPU'">
<OutputPath>bin\x86\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'x86|x64'">
<OutputPath>bin\x64\x86\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'x86|x86'">
<OutputPath>bin\x86\x86\</OutputPath>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Costura, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
<HintPath>packages\Costura.Fody.4.1.0\lib\net40\Costura.dll</HintPath>
</Reference>
<Reference Include="MetroFramework">
<HintPath>..\Fortniteaccgen\packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.dll</HintPath>
<Reference Include="MetroFramework, Version=1.2.0.3, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
<HintPath>packages\MetroFramework.RunTime.1.2.0.3\lib\net40-Client\MetroFramework.dll</HintPath>
</Reference>
<Reference Include="MetroFramework.Design, Version=1.2.0.3, Culture=neutral, PublicKeyToken=5f91a84759bf584a, processorArchitecture=MSIL">
<HintPath>packages\MetroFramework.Design.1.2.0.3\lib\net40\MetroFramework.Design.dll</HintPath>
<Private>False</Private>
</Reference>
<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="SergeUtils">
<HintPath>.\SergeUtils.dll</HintPath>
@@ -101,17 +139,24 @@
<Compile Include="SettingsForm.Designer.cs">
<DependentUpon>SettingsForm.cs</DependentUpon>
</Compile>
<Compile Include="usernameForm.cs">
<Compile Include="TroubleshootForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="usernameForm.Designer.cs">
<DependentUpon>usernameForm.cs</DependentUpon>
<Compile Include="TroubleshootForm.Designer.cs">
<DependentUpon>TroubleshootForm.cs</DependentUpon>
</Compile>
<Compile Include="UsernameForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UsernameForm.Designer.cs">
<DependentUpon>UsernameForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SelectFolder.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
@@ -121,12 +166,16 @@
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="SettingsForm.resx">
<DependentUpon>SettingsForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="usernameForm.resx">
<DependentUpon>usernameForm.cs</DependentUpon>
<EmbeddedResource Include="TroubleshootForm.resx">
<DependentUpon>TroubleshootForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UsernameForm.resx">
<DependentUpon>UsernameForm.cs</DependentUpon>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
@@ -143,7 +192,9 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="changelog.txt" />
<Content Include="icon.ico" />
<Content Include="MetroFramework.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="packages\Fody.6.0.0\build\Fody.targets" Condition="Exists('packages\Fody.6.0.0\build\Fody.targets')" />

View File

@@ -9,18 +9,33 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
x86|Any CPU = x86|Any CPU
x86|x64 = x86|x64
x86|x86 = x86|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Debug|x64.ActiveCfg = Debug|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Debug|x64.Build.0 = Debug|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Debug|x86.ActiveCfg = Debug|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Debug|x86.Build.0 = Debug|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Release|Any CPU.Build.0 = Release|Any CPU
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Release|x64.ActiveCfg = Release|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Release|x64.Build.0 = Release|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Release|x86.ActiveCfg = Release|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.Release|x86.Build.0 = Release|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|Any CPU.ActiveCfg = x86|Any CPU
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|Any CPU.Build.0 = x86|Any CPU
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x64.ActiveCfg = x86|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x64.Build.0 = x86|x64
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.ActiveCfg = x86|x86
{CC8BE9F0-CE07-406A-A378-81D9CFE4CC1D}.x86|x86.Build.0 = x86|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -22,6 +22,9 @@
<setting name="firstRun" serializeAs="String">
<value>True</value>
</setting>
<setting name="deleteAllAfterInstall" serializeAs="String">
<value>True</value>
</setting>
</AndroidSideloader.Properties.Settings>
</userSettings>
</configuration>

View File

@@ -1,3 +1,47 @@
= 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)
@@ -76,4 +120,4 @@
+ Renamed buttons
0.1
+ Initial Release
+ Initial Release

521
Form1.Designer.cs generated
View File

@@ -35,134 +35,169 @@
this.obbcopybutton = new System.Windows.Forms.Button();
this.backupbutton = new System.Windows.Forms.Button();
this.restorebutton = new System.Windows.Forms.Button();
this.ListApps = new System.Windows.Forms.Button();
this.getApkButton = new System.Windows.Forms.Button();
this.listApkPermsButton = new System.Windows.Forms.Button();
this.changePermsBtn = new System.Windows.Forms.Button();
this.launchPackageTextBox = new System.Windows.Forms.TextBox();
this.launchApkButton = new System.Windows.Forms.Button();
this.uninstallAppButton = new System.Windows.Forms.Button();
this.sideloadFolderButton = new System.Windows.Forms.Button();
this.aboutBtn = new System.Windows.Forms.Button();
this.userjsonButton = new System.Windows.Forms.Button();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.settingsButton = new System.Windows.Forms.Button();
this.copyBulkObbButton = new System.Windows.Forms.Button();
this.checkHashButton = 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.aboutBtn = new System.Windows.Forms.Button();
this.settingsButton = new System.Windows.Forms.Button();
this.troubleshootButton = new System.Windows.Forms.Button();
this.checkHashButton = new System.Windows.Forms.Button();
this.userjsonButton = new System.Windows.Forms.Button();
this.backupContainer = new System.Windows.Forms.Panel();
this.backupDrop = new System.Windows.Forms.Button();
this.sideloadContainer = new System.Windows.Forms.Panel();
this.listApkButton = new System.Windows.Forms.Button();
this.sideloadDrop = new System.Windows.Forms.Button();
this.panel1.SuspendLayout();
this.backupContainer.SuspendLayout();
this.sideloadContainer.SuspendLayout();
this.SuspendLayout();
//
// m_combo
//
this.m_combo.Location = new System.Drawing.Point(12, 134);
this.m_combo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.m_combo.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.m_combo.ForeColor = System.Drawing.Color.White;
this.m_combo.Location = new System.Drawing.Point(284, 13);
this.m_combo.Margin = new System.Windows.Forms.Padding(4);
this.m_combo.Name = "m_combo";
this.m_combo.Size = new System.Drawing.Size(427, 21);
this.m_combo.Size = new System.Drawing.Size(568, 24);
this.m_combo.TabIndex = 16;
this.m_combo.Text = "Select an app from here...";
//
// startsideloadbutton
//
this.startsideloadbutton.Location = new System.Drawing.Point(100, 12);
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.Margin = new System.Windows.Forms.Padding(4);
this.startsideloadbutton.Name = "startsideloadbutton";
this.startsideloadbutton.Size = new System.Drawing.Size(87, 33);
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.Text = "Sideload APK";
this.startsideloadbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.startsideloadbutton.UseVisualStyleBackColor = true;
this.startsideloadbutton.Click += new System.EventHandler(this.startsideloadbutton_Click);
//
// devicesbutton
//
this.devicesbutton.Location = new System.Drawing.Point(12, 12);
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.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(82, 34);
this.devicesbutton.Size = new System.Drawing.Size(267, 35);
this.devicesbutton.TabIndex = 1;
this.devicesbutton.Text = "Adb devices";
this.devicesbutton.Text = "ADB DEVICES";
this.devicesbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.devicesbutton.UseVisualStyleBackColor = true;
this.devicesbutton.Click += new System.EventHandler(this.devicesbutton_Click);
//
// obbcopybutton
//
this.obbcopybutton.Location = new System.Drawing.Point(100, 50);
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.Location = new System.Drawing.Point(0, 0);
this.obbcopybutton.Margin = new System.Windows.Forms.Padding(4);
this.obbcopybutton.Name = "obbcopybutton";
this.obbcopybutton.Size = new System.Drawing.Size(87, 34);
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.Text = "Copy Obb";
this.obbcopybutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.obbcopybutton.UseVisualStyleBackColor = true;
this.obbcopybutton.Click += new System.EventHandler(this.obbcopybutton_Click);
//
// backupbutton
//
this.backupbutton.Location = new System.Drawing.Point(291, 13);
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.Margin = new System.Windows.Forms.Padding(4);
this.backupbutton.Name = "backupbutton";
this.backupbutton.Size = new System.Drawing.Size(80, 34);
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.Text = "Backup Gamedata";
this.backupbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.backupbutton.UseVisualStyleBackColor = true;
this.backupbutton.Click += new System.EventHandler(this.backupbutton_Click);
//
// restorebutton
//
this.restorebutton.Location = new System.Drawing.Point(291, 50);
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.Location = new System.Drawing.Point(0, 0);
this.restorebutton.Margin = new System.Windows.Forms.Padding(4);
this.restorebutton.Name = "restorebutton";
this.restorebutton.Size = new System.Drawing.Size(80, 42);
this.restorebutton.Padding = new System.Windows.Forms.Padding(31, 0, 0, 0);
this.restorebutton.Size = new System.Drawing.Size(267, 35);
this.restorebutton.TabIndex = 10;
this.restorebutton.Text = "Restore Gamedata";
this.restorebutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.restorebutton.UseVisualStyleBackColor = true;
this.restorebutton.Click += new System.EventHandler(this.restorebutton_Click);
//
// ListApps
//
this.ListApps.Location = new System.Drawing.Point(12, 50);
this.ListApps.Name = "ListApps";
this.ListApps.Size = new System.Drawing.Size(82, 34);
this.ListApps.TabIndex = 2;
this.ListApps.Text = "Refresh Apps";
this.ListApps.UseVisualStyleBackColor = true;
this.ListApps.Click += new System.EventHandler(this.ListApps_Click);
//
// getApkButton
//
this.getApkButton.Location = new System.Drawing.Point(465, 12);
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.Margin = new System.Windows.Forms.Padding(4);
this.getApkButton.Name = "getApkButton";
this.getApkButton.Size = new System.Drawing.Size(87, 34);
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.Text = "Get Apk";
this.getApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.getApkButton.UseVisualStyleBackColor = true;
this.getApkButton.Click += new System.EventHandler(this.getApkButton_Click);
//
// listApkPermsButton
//
this.listApkPermsButton.Location = new System.Drawing.Point(372, 13);
this.listApkPermsButton.Name = "listApkPermsButton";
this.listApkPermsButton.Size = new System.Drawing.Size(87, 34);
this.listApkPermsButton.TabIndex = 11;
this.listApkPermsButton.Text = "List Apk Perms";
this.listApkPermsButton.UseVisualStyleBackColor = true;
this.listApkPermsButton.Click += new System.EventHandler(this.listApkPermsButton_Click);
//
// changePermsBtn
//
this.changePermsBtn.Location = new System.Drawing.Point(372, 50);
this.changePermsBtn.Name = "changePermsBtn";
this.changePermsBtn.Size = new System.Drawing.Size(87, 34);
this.changePermsBtn.TabIndex = 12;
this.changePermsBtn.Text = "Change Permissions";
this.changePermsBtn.UseVisualStyleBackColor = true;
this.changePermsBtn.Click += new System.EventHandler(this.changePermsBtn_Click);
//
// launchPackageTextBox
//
this.launchPackageTextBox.Location = new System.Drawing.Point(446, 134);
this.launchPackageTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.launchPackageTextBox.ForeColor = System.Drawing.Color.White;
this.launchPackageTextBox.Location = new System.Drawing.Point(597, 148);
this.launchPackageTextBox.Margin = new System.Windows.Forms.Padding(4);
this.launchPackageTextBox.Name = "launchPackageTextBox";
this.launchPackageTextBox.Size = new System.Drawing.Size(192, 20);
this.launchPackageTextBox.Size = new System.Drawing.Size(255, 22);
this.launchPackageTextBox.TabIndex = 68;
this.launchPackageTextBox.Text = "de.eye_interactive.atvl.settings";
//
// launchApkButton
//
this.launchApkButton.Location = new System.Drawing.Point(446, 161);
this.launchApkButton.Location = new System.Drawing.Point(597, 175);
this.launchApkButton.Margin = new System.Windows.Forms.Padding(4);
this.launchApkButton.Name = "launchApkButton";
this.launchApkButton.Size = new System.Drawing.Size(192, 20);
this.launchApkButton.Size = new System.Drawing.Size(255, 25);
this.launchApkButton.TabIndex = 69;
this.launchApkButton.Text = "Launch Apk By Package Name";
this.launchApkButton.UseVisualStyleBackColor = true;
@@ -170,134 +205,331 @@
//
// uninstallAppButton
//
this.uninstallAppButton.Location = new System.Drawing.Point(465, 50);
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.Margin = new System.Windows.Forms.Padding(4);
this.uninstallAppButton.Name = "uninstallAppButton";
this.uninstallAppButton.Size = new System.Drawing.Size(87, 34);
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.Text = "Uninstall app";
this.uninstallAppButton.Text = "Uninstall App";
this.uninstallAppButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.uninstallAppButton.UseVisualStyleBackColor = true;
this.uninstallAppButton.Click += new System.EventHandler(this.uninstallAppButton_Click);
//
// sideloadFolderButton
//
this.sideloadFolderButton.Location = new System.Drawing.Point(193, 12);
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.Margin = new System.Windows.Forms.Padding(4);
this.sideloadFolderButton.Name = "sideloadFolderButton";
this.sideloadFolderButton.Size = new System.Drawing.Size(92, 33);
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.Text = "Sideload Folder";
this.sideloadFolderButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.sideloadFolderButton.UseVisualStyleBackColor = true;
this.sideloadFolderButton.Click += new System.EventHandler(this.sideloadFolderButton_Click);
//
// aboutBtn
//
this.aboutBtn.Location = new System.Drawing.Point(574, 94);
this.aboutBtn.Name = "aboutBtn";
this.aboutBtn.Size = new System.Drawing.Size(64, 34);
this.aboutBtn.TabIndex = 16;
this.aboutBtn.Text = "About";
this.aboutBtn.UseVisualStyleBackColor = true;
this.aboutBtn.Click += new System.EventHandler(this.aboutBtn_Click);
//
// userjsonButton
//
this.userjsonButton.Location = new System.Drawing.Point(100, 90);
this.userjsonButton.Name = "userjsonButton";
this.userjsonButton.Size = new System.Drawing.Size(87, 38);
this.userjsonButton.TabIndex = 6;
this.userjsonButton.Text = "Create user.json";
this.userjsonButton.UseVisualStyleBackColor = true;
this.userjsonButton.Click += new System.EventHandler(this.userjsonButton_Click);
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(12, 161);
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(428, 20);
this.progressBar1.Size = new System.Drawing.Size(568, 25);
this.progressBar1.TabIndex = 23;
//
// settingsButton
//
this.settingsButton.Location = new System.Drawing.Point(506, 94);
this.settingsButton.Name = "settingsButton";
this.settingsButton.Size = new System.Drawing.Size(62, 34);
this.settingsButton.TabIndex = 15;
this.settingsButton.Text = "Settings";
this.settingsButton.UseVisualStyleBackColor = true;
this.settingsButton.Click += new System.EventHandler(this.settingsButton_Click);
//
// copyBulkObbButton
//
this.copyBulkObbButton.Location = new System.Drawing.Point(193, 50);
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.Margin = new System.Windows.Forms.Padding(4);
this.copyBulkObbButton.Name = "copyBulkObbButton";
this.copyBulkObbButton.Size = new System.Drawing.Size(92, 34);
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.Text = "Copy Bulk Obb";
this.copyBulkObbButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.copyBulkObbButton.UseVisualStyleBackColor = true;
this.copyBulkObbButton.Click += new System.EventHandler(this.copyBulkObbButton_Click);
//
// checkHashButton
//
this.checkHashButton.Location = new System.Drawing.Point(12, 90);
this.checkHashButton.Name = "checkHashButton";
this.checkHashButton.Size = new System.Drawing.Size(82, 31);
this.checkHashButton.TabIndex = 3;
this.checkHashButton.Text = "Check Hash";
this.checkHashButton.UseVisualStyleBackColor = true;
this.checkHashButton.Click += new System.EventHandler(this.checkHashButton_Click);
//
// DragDropLbl
//
this.DragDropLbl.AutoSize = true;
this.DragDropLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.DragDropLbl.Location = new System.Drawing.Point(12, 329);
this.DragDropLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.DragDropLbl.ForeColor = System.Drawing.Color.White;
this.DragDropLbl.Location = new System.Drawing.Point(275, 486);
this.DragDropLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.DragDropLbl.Name = "DragDropLbl";
this.DragDropLbl.Size = new System.Drawing.Size(425, 73);
this.DragDropLbl.Size = new System.Drawing.Size(394, 69);
this.DragDropLbl.TabIndex = 27;
this.DragDropLbl.Text = "DragDropLBL";
this.DragDropLbl.Visible = false;
//
// downloadInstallGameButton
//
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.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.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
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.Text = "Select a game from here...";
//
// panel1
//
this.panel1.AutoScroll = true;
this.panel1.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.panel1.Controls.Add(this.donateButton);
this.panel1.Controls.Add(this.aboutBtn);
this.panel1.Controls.Add(this.settingsButton);
this.panel1.Controls.Add(this.troubleshootButton);
this.panel1.Controls.Add(this.checkHashButton);
this.panel1.Controls.Add(this.userjsonButton);
this.panel1.Controls.Add(this.backupContainer);
this.panel1.Controls.Add(this.backupDrop);
this.panel1.Controls.Add(this.sideloadContainer);
this.panel1.Controls.Add(this.sideloadDrop);
this.panel1.Controls.Add(this.devicesbutton);
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);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(267, 786);
this.panel1.TabIndex = 73;
//
// donateButton
//
this.donateButton.Location = new System.Drawing.Point(574, 352);
this.donateButton.Dock = System.Windows.Forms.DockStyle.Top;
this.donateButton.FlatAppearance.BorderSize = 0;
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.Margin = new System.Windows.Forms.Padding(4);
this.donateButton.Name = "donateButton";
this.donateButton.Size = new System.Drawing.Size(64, 47);
this.donateButton.TabIndex = 70;
this.donateButton.Text = "Donate";
this.donateButton.Size = new System.Drawing.Size(267, 58);
this.donateButton.TabIndex = 89;
this.donateButton.Text = "DONATE";
this.donateButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.donateButton.UseVisualStyleBackColor = true;
this.donateButton.Click += new System.EventHandler(this.donateButton_Click);
//
// aboutBtn
//
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.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.Text = "ABOUT";
this.aboutBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.aboutBtn.UseVisualStyleBackColor = true;
this.aboutBtn.Click += new System.EventHandler(this.aboutBtn_Click);
//
// settingsButton
//
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.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.Text = "SETTINGS";
this.settingsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.settingsButton.UseVisualStyleBackColor = true;
this.settingsButton.Click += new System.EventHandler(this.settingsButton_Click);
//
// troubleshootButton
//
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.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.Text = "TROUBLESHOOT";
this.troubleshootButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.troubleshootButton.UseVisualStyleBackColor = true;
this.troubleshootButton.Click += new System.EventHandler(this.troubleshootButton_Click);
//
// checkHashButton
//
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.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.Text = "VIEW HASH";
this.checkHashButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.checkHashButton.UseVisualStyleBackColor = true;
this.checkHashButton.Click += new System.EventHandler(this.checkHashButton_Click);
//
// userjsonButton
//
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.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.Text = "USER.JSON";
this.userjsonButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.userjsonButton.UseVisualStyleBackColor = true;
this.userjsonButton.Click += new System.EventHandler(this.userjsonButton_Click);
//
// backupContainer
//
this.backupContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
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.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.TabIndex = 76;
//
// backupDrop
//
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.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.Text = "BACKUP";
this.backupDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.backupDrop.UseVisualStyleBackColor = true;
this.backupDrop.Click += new System.EventHandler(this.backupDrop_Click);
//
// sideloadContainer
//
this.sideloadContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.sideloadContainer.Controls.Add(this.listApkButton);
this.sideloadContainer.Controls.Add(this.startsideloadbutton);
this.sideloadContainer.Controls.Add(this.sideloadFolderButton);
this.sideloadContainer.Controls.Add(this.uninstallAppButton);
this.sideloadContainer.Controls.Add(this.getApkButton);
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.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.sideloadContainer.Name = "sideloadContainer";
this.sideloadContainer.Size = new System.Drawing.Size(267, 251);
this.sideloadContainer.TabIndex = 74;
//
// listApkButton
//
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.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.Text = "Refresh Apk, Games";
this.listApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.listApkButton.UseVisualStyleBackColor = true;
this.listApkButton.Click += new System.EventHandler(this.listApkButton_Click);
//
// sideloadDrop
//
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.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.Text = "SIDELOAD";
this.sideloadDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.sideloadDrop.UseVisualStyleBackColor = true;
this.sideloadDrop.Click += new System.EventHandler(this.sideloadContainer_Click);
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(650, 411);
this.Controls.Add(this.donateButton);
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
this.ClientSize = new System.Drawing.Size(862, 786);
this.Controls.Add(this.panel1);
this.Controls.Add(this.gamesComboBox);
this.Controls.Add(this.downloadInstallGameButton);
this.Controls.Add(this.DragDropLbl);
this.Controls.Add(this.checkHashButton);
this.Controls.Add(this.copyBulkObbButton);
this.Controls.Add(this.settingsButton);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.userjsonButton);
this.Controls.Add(this.aboutBtn);
this.Controls.Add(this.sideloadFolderButton);
this.Controls.Add(this.uninstallAppButton);
this.Controls.Add(this.launchApkButton);
this.Controls.Add(this.launchPackageTextBox);
this.Controls.Add(this.changePermsBtn);
this.Controls.Add(this.listApkPermsButton);
this.Controls.Add(this.getApkButton);
this.Controls.Add(this.ListApps);
this.Controls.Add(this.restorebutton);
this.Controls.Add(this.m_combo);
this.Controls.Add(this.backupbutton);
this.Controls.Add(this.obbcopybutton);
this.Controls.Add(this.devicesbutton);
this.Controls.Add(this.startsideloadbutton);
this.HelpButton = true;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximumSize = new System.Drawing.Size(666, 450);
this.MinimumSize = new System.Drawing.Size(666, 450);
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.Name = "Form1";
this.Text = "Rookie SideLoader";
this.Load += new System.EventHandler(this.Form1_Load);
@@ -305,6 +537,9 @@
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
this.DragLeave += new System.EventHandler(this.Form1_DragLeave);
this.panel1.ResumeLayout(false);
this.backupContainer.ResumeLayout(false);
this.sideloadContainer.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
@@ -316,23 +551,29 @@
private System.Windows.Forms.Button obbcopybutton;
private System.Windows.Forms.Button backupbutton;
private System.Windows.Forms.Button restorebutton;
private System.Windows.Forms.Button ListApps;
private System.Windows.Forms.Button getApkButton;
private System.Windows.Forms.Button listApkPermsButton;
private System.Windows.Forms.Button changePermsBtn;
private SergeUtils.EasyCompletionComboBox m_combo;
private System.Windows.Forms.TextBox launchPackageTextBox;
private System.Windows.Forms.Button launchApkButton;
private System.Windows.Forms.Button uninstallAppButton;
private System.Windows.Forms.Button sideloadFolderButton;
private System.Windows.Forms.Button aboutBtn;
private System.Windows.Forms.Button userjsonButton;
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.Button settingsButton;
private System.Windows.Forms.Button copyBulkObbButton;
private System.Windows.Forms.Button checkHashButton;
private System.Windows.Forms.Label DragDropLbl;
private System.Windows.Forms.Button downloadInstallGameButton;
private SergeUtils.EasyCompletionComboBox gamesComboBox;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Button userjsonButton;
private System.Windows.Forms.Panel backupContainer;
private System.Windows.Forms.Button backupDrop;
private System.Windows.Forms.Panel sideloadContainer;
private System.Windows.Forms.Button sideloadDrop;
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;
}
}

706
Form1.cs
View File

@@ -3,18 +3,16 @@ using System.Diagnostics;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Windows;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Net.Http;
using System.Timers;
using System.Reflection;
using System.Security.Cryptography;
using System.Windows.Threading;
using System.Net;
using SergeUtils;
using JR.Utils.GUI.Forms;
/* <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
*/
@@ -30,6 +28,7 @@ namespace AndroidSideloader
public static bool debugMode = false;
#endif
string path;
string result;
string obbPath = "";
string allText;
@@ -37,9 +36,12 @@ namespace AndroidSideloader
public static string debugPath = "debug.log";
public static string adbPath = Environment.CurrentDirectory + "\\adb\\";
string[] line;
public Form1()
{
InitializeComponent();
//calling the design to hide the pannels until onclick
customizeDesign();
Timer99.Tick += Timer99_Tick; // don't freeze the ui
Timer99.Interval = new TimeSpan(0, 0, 0, 0, 1024);
@@ -55,6 +57,39 @@ namespace AndroidSideloader
this.Text = txt;
}
//adding the styling to the form
private void customizeDesign()
{
sideloadContainer.Visible = false;
backupContainer.Visible = false;
}
private void hideSubMenu()
{
if (sideloadContainer.Visible == true)
{
sideloadContainer.Visible = false;
}
if (backupContainer.Visible == true)
{
backupContainer.Visible = false;
}
}
//does the fancy stuff
private void showSubMenu(Panel subMenu)
{
if (subMenu.Visible == false)
{
hideSubMenu();
subMenu.Visible = true;
}
else
{
subMenu.Visible = false;
}
}
public void changeStyle(int style)
{
@@ -78,7 +113,7 @@ namespace AndroidSideloader
changeStyle(1);
oldTitle = this.Text;
changeTitle("Rookie's Sideloader | Running command " + command);
Process cmd = new Process();
cmd.StartInfo.FileName = Environment.CurrentDirectory + "\\adb\\adb.exe";
cmd.StartInfo.Arguments = command;
@@ -93,7 +128,7 @@ namespace AndroidSideloader
cmd.StandardInput.Close();
allText = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();
StreamWriter sw = File.AppendText(debugPath);
sw.Write("Action name = " + command + '\n');
sw.Write(allText);
@@ -110,7 +145,7 @@ namespace AndroidSideloader
{
Thread t1 = new Thread(() =>
{
runAdbCommand("install -r " + '"' + path + '"');
runAdbCommand("install -g -d -r " + '"' + path + '"');
});
t1.IsBackground = true;
t1.Start();
@@ -133,11 +168,9 @@ namespace AndroidSideloader
return;
}
//Task.Delay(100).ContinueWith(t => Timer99.Start()); //Delete notification after 5 seconds
await Task.Run(() => sideload(path));
notify(allText);
}
private void devicesbutton_Click(object sender, EventArgs e)
@@ -149,14 +182,6 @@ namespace AndroidSideloader
notify(allText);
}
public bool experimentalFeatureAccept(string message)
{
DialogResult dialogResult = FlexibleMessageBox.Show(new Form { TopMost = true }, message, "EXPERIMENTAL FEATURE", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
return true;
else return false;
}
public static void notify(string message)
{
if (Properties.Settings.Default.enableMessageBoxes == true)
@@ -170,13 +195,18 @@ namespace AndroidSideloader
public void ExtractFile(string sourceArchive, string destination)
{
changeStyle(1);
oldTitle = this.Text;
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;
pro.FileName = zPath;
pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination);
Process x = Process.Start(pro);
x.WaitForExit();
ProcessStartInfo pro = new ProcessStartInfo();
pro.WindowStyle = ProcessWindowStyle.Hidden;
pro.FileName = zPath;
pro.Arguments = string.Format("x \"{0}\" -y -o\"{1}\"", sourceArchive, destination);
Process x = Process.Start(pro);
x.WaitForExit();
changeStyle(0);
changeTitle(oldTitle);
}
private void obbcopy(string obbPath)
@@ -212,9 +242,71 @@ namespace AndroidSideloader
private void changeTitlebarToDevice()
{
if (line[1].Length > 1)
this.Text = "Rookie Sideloader | Device Connected with ID | " + line[1].Replace("device", "");
this.Text = "Rookie's Sideloader | Device Connected with ID | " + line[1].Replace("device", "");
else
this.Text = "Rookie Sideloader | No Device Connected";
this.Text = "Rookie's Sideloader | No Device Connected";
}
void downloadFiles()
{
using (var client = new WebClient())
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
if (!File.Exists(Environment.CurrentDirectory + "\\7z.exe"))
{
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.exe", "7z.exe");
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.dll", "7z.dll");
}
if (!Directory.Exists(adbPath)) //if there is no adb folder, download and extract
{
try
{
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/adb.7z", "adb.7z");
ExtractFile(Environment.CurrentDirectory + "\\adb.7z", Environment.CurrentDirectory);
File.Delete("adb.7z");
}
catch (Exception ex)
{
FlexibleMessageBox.Show("Cannot download adb because you are not connected to the internet! You can manually download the zip here https://github.com/nerdunit/androidsideloader/raw/master/adb.7z after downloading move it to " + Environment.CurrentDirectory + " and unarchive it");
StreamWriter sw = File.AppendText(debugPath);
sw.Write("\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
sw.Write(ex.ToString() + "\n");
sw.Flush();
sw.Close();
Environment.Exit(600);
}
}
if (!Directory.Exists(Environment.CurrentDirectory + "\\rclone"))
{
string url;
if (Environment.Is64BitOperatingSystem)
url = "https://downloads.rclone.org/v1.52.2/rclone-v1.52.2-windows-amd64.zip";
else
url = "https://downloads.rclone.org/v1.52.2/rclone-v1.52.2-windows-386.zip";
client.DownloadFile(url, "rclone.zip");
ExtractFile(Environment.CurrentDirectory + "\\rclone.zip", Environment.CurrentDirectory);
File.Delete("rclone.zip");
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory);
foreach (string folder in folders)
{
if (folder.Contains("rclone"))
{
Directory.Move(folder, "rclone");
break;
}
}
}
}
}
//A lot of stuff to do when the form loads, centers the program,
@@ -224,39 +316,11 @@ namespace AndroidSideloader
if (File.Exists(debugPath))
File.Delete(debugPath); //clear debug.log each start
if (Directory.Exists(adbPath)==false) //if there is no adb folder, download and extract
{
FlexibleMessageBox.Show("Please wait for the software to download and install the adb");
try
{
using (var client = new WebClient())
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.exe", "7z.exe");
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/7z.dll", "7z.dll");
client.DownloadFile("https://github.com/nerdunit/androidsideloader/raw/master/adb.7z", "adb.7z");
}
ExtractFile(Environment.CurrentDirectory + "\\adb.7z", Environment.CurrentDirectory);
File.Delete("adb.7z");
File.Delete("7z.dll");
File.Delete("7z.exe");
}
catch (Exception ex)
{
FlexibleMessageBox.Show("Cannot download adb because you are not connected to the internet! You can manually download the zip here https://github.com/nerdunit/androidsideloader/raw/master/adb.7z after downloading move it to " + Environment.CurrentDirectory + " and unarchive it");
StreamWriter sw = File.AppendText(debugPath);
sw.Write("\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
sw.Write(ex.ToString() + "\n");
sw.Flush();
sw.Close();
Environment.Exit(600);
}
}
if (debugMode==false)
if (Properties.Settings.Default.checkForUpdates==true)
try { downloadFiles(); } catch { notify("You must have internet access for initial downloads, you can try:\n1. Disabling the firewall and antivirus\n2. Delete every file from the sideloader besides the .exe\n3. Try a vpn\n"); }
if (debugMode == false)
if (Properties.Settings.Default.checkForUpdates == true)
checkForUpdate();
runAdbCommand("devices"); //check if there is any device connected
@@ -266,6 +330,7 @@ namespace AndroidSideloader
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");
Properties.Settings.Default.firstRun = false;
Properties.Settings.Default.Save();
}
@@ -277,8 +342,6 @@ namespace AndroidSideloader
void intToolTips()
{
ToolTip ListAppsToolTip = new ToolTip();
ListAppsToolTip.SetToolTip(this.ListApps, "Shows what apps are installed in the list below (in the combo box)");
ToolTip ListDevicesToolTip = new ToolTip();
ListDevicesToolTip.SetToolTip(this.devicesbutton, "Lists the devices in a message box, also updates title bar");
ToolTip SideloadAPKToolTip = new ToolTip();
@@ -291,23 +354,18 @@ namespace AndroidSideloader
RestoreGameDataToolTip.SetToolTip(this.restorebutton, "Restores the game and apps data to the device, first use Backup Game Data button");
ToolTip GetAPKToolTip = new ToolTip();
GetAPKToolTip.SetToolTip(this.getApkButton, "Saves the selected apk to the folder where the sideloader is");
ToolTip ListAppPermsToolTip = new ToolTip();
ListAppPermsToolTip.SetToolTip(this.listApkPermsButton, "Lists the permissions for the selected apk");
ToolTip ChangeAppPermsToolTip = new ToolTip();
ChangeAppPermsToolTip.SetToolTip(this.changePermsBtn, "Applies the permissions for the apk, first press list app perms");
ToolTip sideloadFolderToolTip = new ToolTip();
sideloadFolderToolTip.SetToolTip(this.sideloadFolderButton, "Sideloads every apk from a folder");
ToolTip uninstallAppToolTip = new ToolTip();
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");
}
void checkForUpdate()
{
try
try
{
string localVersion = "0.14HF1";
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);
@@ -341,7 +399,7 @@ namespace AndroidSideloader
Environment.Exit(0);
}
}
catch
catch
{
}
@@ -401,7 +459,7 @@ namespace AndroidSideloader
}
else return;
}
await Task.Run(() => restore());
await Task.Run(() => restore());
notify(allText);
}
@@ -417,23 +475,54 @@ namespace AndroidSideloader
t1.Join();
}
private void ListApps_Click(object sender, EventArgs e)
public string[] getGames()
{
listappsBtn();
string command = "cat \"VRP:Quest Games/APK_packagenames.txt\" --config .\\a";
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();
return games;
}
private async void listappsBtn()
{
var games = getGames();
allText = "";
m_combo.Items.Clear();
await Task.Run(() => listapps());
foreach (string obj in line)
{
if (obj.Length>9)
m_combo.Items.Add(obj.Remove(0, 8));
if (obj.Length > 9)
{
string packageName = obj.Remove(0, 8);
packageName = packageName.Remove(packageName.Length - 1);
foreach (string game in games)
{
if (packageName.Length > 0 && game.Contains(packageName))
{
var foo = game.Split(';');
packageName = foo[0];
}
}
m_combo.Items.Add(packageName);
}
}
m_combo.MatchingMethod = StringMatchingMethod.NoWildcards;
}
@@ -462,15 +551,28 @@ namespace AndroidSideloader
private async void getApkButton_Click(object sender, EventArgs e)
{
if (m_combo.Items.Count == 0)
if (m_combo.SelectedIndex == -1)
{
notify("Please select an app first");
return;
}
string package = m_combo.SelectedItem.ToString().Remove(m_combo.SelectedItem.ToString().Length - 1);
string[] games = getGames();
await Task.Run(() => getapk(package));
string packageName = m_combo.SelectedItem.ToString();
foreach (string game in games)
{
if (packageName.Length > 0 && game.Contains(packageName))
{
var foo = game.Split(';');
packageName = foo[2];
}
}
await Task.Run(() => getapk(packageName));
allText = allText.Remove(allText.Length - 1);
//MessageBox.Show(allText);
@@ -484,116 +586,15 @@ namespace AndroidSideloader
while (currApkPath.Contains("/"))
currApkPath = currApkPath.Substring(currApkPath.IndexOf("/") + 1);
if (File.Exists(Environment.CurrentDirectory + "\\" + package + ".apk"))
File.Delete(Environment.CurrentDirectory + "\\" + package + ".apk");
if (File.Exists(Environment.CurrentDirectory + "\\" + packageName + ".apk"))
File.Delete(Environment.CurrentDirectory + "\\" + packageName + ".apk");
File.Move(Environment.CurrentDirectory + "\\adb\\" + currApkPath, Environment.CurrentDirectory + "\\" + package + ".apk");
File.Move(Environment.CurrentDirectory + "\\adb\\" + currApkPath, Environment.CurrentDirectory + "\\" + packageName + ".apk");
notify(allText);
}
private void listappperms(string package)
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell dumpsys package " + package);
});
t1.IsBackground = true;
t1.Start();
t1.Join();
}
private async void listApkPermsButton_Click(object sender, EventArgs e)
{
if(m_combo.Items.Count == 0)
{
MessageBox.Show("Please select an app first");
return;
}
string package = m_combo.SelectedItem.ToString().Remove(m_combo.SelectedItem.ToString().Length - 1);
await Task.Run(() => listappperms(package));
var grantedPerms = allText.Substring(allText.LastIndexOf("install permissions:") + 22);
grantedPerms.Substring(0, grantedPerms.IndexOf("User 0:"));
line = grantedPerms.Split('\n');
int pos1 = 12;
int pos2 = 187;
for (int i=0; i< line.Length; i++)
{
if (line[i].Contains("android.permission."))
{
CheckBox chk = new CheckBox();
if (line[i].Contains("true"))
chk.Checked = true;
else
chk.Checked = false;
line[i] = line[i].Substring(0, line[i].IndexOf(": granted"));
line[i] = line[i].Substring(line[i].LastIndexOf(" "));
chk.Location = new System.Drawing.Point(pos1, pos2);
chk.Width = 420;
chk.Height = 17;
chk.Text = line[i];
//chk.CheckedChanged += new EventHandler(CheckBox_Checked);
Controls.Add(chk);
pos2 += 20;
}
}
}
private async void changePermsBtn_Click(object sender, EventArgs e)
{
if (m_combo.Items.Count == 0)
{
MessageBox.Show("Please select an app first");
return;
}
string package = m_combo.SelectedItem.ToString().Remove(m_combo.SelectedItem.ToString().Length - 1);
foreach (Control c in Controls)
{
if ((c is CheckBox))
{
if (((CheckBox)c).Checked==true)
{
await Task.Run(() => changePerms(c, package, "grant"));
}
else
{
await Task.Run(() => changePerms(c, package, "revoke"));
}
}
}
notify("Changed Permissions");
}
private void changePerms(Control c, string package, string grant)
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell pm " + grant + " " + package + " " + c.Text);
});
t1.IsBackground = true;
t1.Start();
t1.Join();
}
private void launchApkButton_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(() =>
@@ -604,24 +605,61 @@ namespace AndroidSideloader
t1.Start();
}
async Task<string> getpackagename()
{
string[] games = getGames();
string packageName = m_combo.SelectedItem.ToString();
foreach (string game in games)
{
if (packageName.Length > 0 && game.Contains(packageName))
{
packageName = game;
break;
}
}
return packageName;
}
private async void uninstallAppButton_Click(object sender, EventArgs e)
{
if (m_combo.Items.Count == 0)
if (m_combo.SelectedIndex == -1)
{
MessageBox.Show("Please select an app first");
return;
}
allText = "";
string package = m_combo.SelectedItem.ToString().Remove(m_combo.SelectedItem.ToString().Length - 1);
string packageName = await getpackagename();
DialogResult dialogResult = MessageBox.Show("Are you sure you want to uninstall " + package + " this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
packageName = packageName.Split(';')[2];
DialogResult dialogResult = MessageBox.Show("Are you sure you want to uninstall " + packageName + " this CANNOT be undone!", "WARNING!", MessageBoxButtons.YesNo);
if (dialogResult != DialogResult.Yes)
return;
await Task.Run(() => uninstallPackage(package));
await Task.Run(() => uninstallPackage(packageName));
notify(allText);
var uninstallText = allText;
await Task.Run(() => removeFolder("/sdcard/Android/obb/" + packageName));
await Task.Run(() => removeFolder("/sdcard/Android/obb/" + packageName + "/"));
notify(uninstallText);
}
void removeFolder(string path)
{
Thread t1 = new Thread(() =>
{
runAdbCommand("shell rm -r " + path);
});
t1.IsBackground = true;
t1.Start();
t1.Join();
}
private void uninstallPackage(string package)
@@ -635,12 +673,6 @@ namespace AndroidSideloader
t1.Join();
}
private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
MethodItem mi = (MethodItem)m_combo.SelectedItem;
m_combo.MatchingMethod = mi.Value;
}
private void sideloadFolderButton_Click(object sender, EventArgs e)
{
var dialog = new FolderSelectDialog
@@ -674,17 +706,6 @@ namespace AndroidSideloader
}
}
private void aboutBtn_Click(object sender, EventArgs e)
{
string about = @" - The icon of the app contains an icon made by icon8.com
- Software orignally coded by rookie.lol#7897
- 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";
FlexibleMessageBox.Show(about);
}
/*Progress bar stuff
*
*/
@@ -698,18 +719,6 @@ namespace AndroidSideloader
donateButton.BackColor = redColor;
}
private void userjsonButton_Click(object sender, EventArgs e)
{
usernameForm usernameForm1 = new usernameForm();
usernameForm1.Show();
}
private void settingsButton_Click(object sender, EventArgs e)
{
SettingsForm settingsForm = new SettingsForm();
settingsForm.Show();
}
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?");
@@ -750,39 +759,17 @@ namespace AndroidSideloader
}
}
private async void checkHashButton_Click(object sender, EventArgs e)
{
string file;
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.FilterIndex = 2;
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
file = openFileDialog.FileName;
else
return;
}
oldTitle = this.Text;
changeTitle("Checking hash of file " + file);
changeStyle(1);
await Task.Run(() => checkHashFunc(file));
Clipboard.SetText(result);
changeStyle(0);
changeTitle(oldTitle);
FlexibleMessageBox.Show("The selected file hash is " + result + " and it was copied to clipboard");
}
public async void checkHashFunc(string file)
public void checkHashFunc(string file)
{
using (FileStream stream = File.OpenRead(file))
{
SHA256Managed sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(stream);
result = BitConverter.ToString(checksum).Replace("-", String.Empty);
using (var md5 = MD5.Create())
{
using (var hashStream = File.OpenRead(file))
{
result = BitConverter.ToString(md5.ComputeHash(hashStream)).Replace("-", "").ToLowerInvariant();
}
}
}
}
@@ -828,18 +815,239 @@ namespace AndroidSideloader
private void Form1_Shown(object sender, EventArgs e)
{
Timer99.Start();
initGames();
}
void initGames()
{
gamesComboBox.Invoke(() => { gamesComboBox.Items.Clear(); });
string command = "lsf --config .\\a --dirs-only \"VRP:Quest Games\" --drive-acknowledge-abuse";
Console.WriteLine(command);
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();
foreach (string game in games)
{
if (!game.StartsWith("."))
{
string currGame = game;
if (currGame.Length > 0)
currGame = currGame.Remove(currGame.Length - 1);
gamesComboBox.Invoke(() => { gamesComboBox.Items.Add(currGame); });
}
}
}
private void sideloadContainer_Click(object sender, EventArgs e)
{
showSubMenu(sideloadContainer);
}
private void backupDrop_Click(object sender, EventArgs e)
{
showSubMenu(backupContainer);
}
private void settingsButton_Click(object sender, EventArgs e)
{
SettingsForm settingsForm = new SettingsForm();
settingsForm.Show();
}
private void aboutBtn_Click(object sender, EventArgs e)
{
string about = @"Finally 1.0
- 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 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
- The icon of the app contains an icon made by icon8.com";
FlexibleMessageBox.Show(about);
}
bool wait = false;
private async void checkHashButton_Click(object sender, EventArgs e)
{
string file;
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.FilterIndex = 2;
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
file = openFileDialog.FileName;
else
return;
}
oldTitle = this.Text;
changeTitle("Checking hash of file " + file);
changeStyle(1);
await Task.Run(() => checkHashFunc(file));
Clipboard.SetText(result);
changeStyle(0);
changeTitle(oldTitle);
FlexibleMessageBox.Show("The selected file hash is " + result + " and it was copied to clipboard");
}
private void userjsonButton_Click(object sender, EventArgs e)
{
UsernameForm usernameForm1 = new UsernameForm();
usernameForm1.Show();
}
private void donateButton_Click(object sender, EventArgs e)
{
Clipboard.SetText("https://steamcommunity.com/tradeoffer/new/?partner=189719028&token=qCee3jwp");
notify("Donate steam stuff to me if you want, my trade link has been copied to your clipboard");
Clipboard.SetText("rookie.lol#0001");
notify("Ask rookie.lol#0001 or pmow#1706 where you can donate");
}
private async void listApkButton_Click(object sender, EventArgs e)
{
changeStyle(1);
await Task.Run(() => initGames());
changeStyle(0);
listappsBtn();
}
private void troubleshootButton_Click(object sender, EventArgs e)
{
TroubleshootForm form = new TroubleshootForm();
form.Show();
}
private async void downloadInstallGameButton_Click(object sender, EventArgs e)
{
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";
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);
});
t1.IsBackground = true;
t1.Start();
await Task.Delay(500);
while (wait)
{
await Task.Delay(25);
}
string[] files = Directory.GetFiles(Environment.CurrentDirectory + "\\" + gameName);
foreach (string file in files)
{
string extension = Path.GetExtension(file);
if (extension == ".apk")
{
changeStyle(1);
apkNumber++;
await Task.Run(() => sideload(file));
changeStyle(0);
}
}
string[] folders = Directory.GetDirectories(Environment.CurrentDirectory + "\\" + gameName);
foreach (string folder in folders)
{
string[] obbs = Directory.GetFiles(folder);
bool isObb = false;
foreach (string currObb in obbs)
{
string extension = Path.GetExtension(currObb);
if (extension == ".obb")
{
isObb = true;
}
}
if (isObb == true)
{
changeStyle(1);
obbNumber++;
await Task.Run(() => obbcopy(folder));
changeStyle(0);
}
}
if (Properties.Settings.Default.deleteAllAfterInstall)
{
Directory.Delete(Environment.CurrentDirectory + "\\" + gameName, true);
}
notify("Game downloaded and installed " + apkNumber + " apks and " + obbNumber + " obb folders");
//Environment.CurrentDirectory + "\\" + gameName
}
}
public class MethodItem
public static class ControlExtensions
{
public string Name { get; set; }
public StringMatchingMethod Value { get; set; }
public static void Invoke(this Control control, Action action)
{
if (control.InvokeRequired)
{
control.Invoke(new MethodInvoker(action), null);
}
else
{
action.Invoke();
}
}
}
}

25
MetroFramework.txt Normal file
View File

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

View File

@@ -8,10 +8,10 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace AndroidSideloader.Properties
{
namespace AndroidSideloader.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
@@ -19,51 +19,43 @@ namespace AndroidSideloader.Properties
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AndroidSideloader.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set
{
set {
resourceCulture = value;
}
}

View File

@@ -46,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@@ -60,6 +60,7 @@
: 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">
@@ -68,9 +69,10 @@
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<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">
@@ -85,9 +87,10 @@
<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" msdata:Ordinal="1" />
<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">
@@ -109,9 +112,9 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -8,23 +8,79 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace AndroidSideloader.Properties
{
namespace AndroidSideloader.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool checkForUpdates {
get {
return ((bool)(this["checkForUpdates"]));
}
set {
this["checkForUpdates"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool enableMessageBoxes {
get {
return ((bool)(this["enableMessageBoxes"]));
}
set {
this["enableMessageBoxes"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool copyMessageToClipboard {
get {
return ((bool)(this["copyMessageToClipboard"]));
}
set {
this["copyMessageToClipboard"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool firstRun {
get {
return ((bool)(this["firstRun"]));
}
set {
this["firstRun"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool useTor {
get {
return ((bool)(this["useTor"]));
}
set {
this["useTor"] = value;
}
}
}
}

View File

@@ -1,7 +1,21 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AndroidSideloader.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="checkForUpdates" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="enableMessageBoxes" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="copyMessageToClipboard" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<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>
</Settings>
</SettingsFile>

View File

@@ -3,6 +3,7 @@
The icon of the app contains an icon made by icon8.com
Special thanks to
- badcoder5000#4598 for the awesome ui update
- 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

View File

@@ -33,14 +33,16 @@
this.enableMessageBoxesCheckBox = new System.Windows.Forms.CheckBox();
this.copyMessageToClipboardCheckBox = new System.Windows.Forms.CheckBox();
this.resetSettingsButton = new System.Windows.Forms.Button();
this.deleteAfterInstallCheckBox = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// checkForUpdatesCheckBox
//
this.checkForUpdatesCheckBox.AutoSize = true;
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(13, 13);
this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(17, 16);
this.checkForUpdatesCheckBox.Margin = new System.Windows.Forms.Padding(4);
this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(113, 17);
this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(145, 21);
this.checkForUpdatesCheckBox.TabIndex = 0;
this.checkForUpdatesCheckBox.Text = "Check for updates";
this.checkForUpdatesCheckBox.UseVisualStyleBackColor = true;
@@ -48,20 +50,24 @@
//
// applyButton
//
this.applyButton.Location = new System.Drawing.Point(357, 183);
this.applyButton.BackColor = System.Drawing.Color.White;
this.applyButton.ForeColor = System.Drawing.Color.Black;
this.applyButton.Location = new System.Drawing.Point(476, 225);
this.applyButton.Margin = new System.Windows.Forms.Padding(4);
this.applyButton.Name = "applyButton";
this.applyButton.Size = new System.Drawing.Size(75, 23);
this.applyButton.Size = new System.Drawing.Size(100, 28);
this.applyButton.TabIndex = 1;
this.applyButton.Text = "Apply";
this.applyButton.UseVisualStyleBackColor = true;
this.applyButton.UseVisualStyleBackColor = false;
this.applyButton.Click += new System.EventHandler(this.applyButton_Click);
//
// enableMessageBoxesCheckBox
//
this.enableMessageBoxesCheckBox.AutoSize = true;
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(13, 36);
this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(17, 44);
this.enableMessageBoxesCheckBox.Margin = new System.Windows.Forms.Padding(4);
this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(227, 17);
this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(296, 21);
this.enableMessageBoxesCheckBox.TabIndex = 2;
this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = true;
@@ -70,9 +76,10 @@
// copyMessageToClipboardCheckBox
//
this.copyMessageToClipboardCheckBox.AutoSize = true;
this.copyMessageToClipboardCheckBox.Location = new System.Drawing.Point(13, 59);
this.copyMessageToClipboardCheckBox.Location = new System.Drawing.Point(17, 73);
this.copyMessageToClipboardCheckBox.Margin = new System.Windows.Forms.Padding(4);
this.copyMessageToClipboardCheckBox.Name = "copyMessageToClipboardCheckBox";
this.copyMessageToClipboardCheckBox.Size = new System.Drawing.Size(153, 17);
this.copyMessageToClipboardCheckBox.Size = new System.Drawing.Size(201, 21);
this.copyMessageToClipboardCheckBox.TabIndex = 3;
this.copyMessageToClipboardCheckBox.Text = "Copy message to clipboard";
this.copyMessageToClipboardCheckBox.UseVisualStyleBackColor = true;
@@ -80,25 +87,45 @@
//
// resetSettingsButton
//
this.resetSettingsButton.Location = new System.Drawing.Point(256, 183);
this.resetSettingsButton.BackColor = System.Drawing.Color.White;
this.resetSettingsButton.ForeColor = System.Drawing.Color.Black;
this.resetSettingsButton.Location = new System.Drawing.Point(341, 225);
this.resetSettingsButton.Margin = new System.Windows.Forms.Padding(4);
this.resetSettingsButton.Name = "resetSettingsButton";
this.resetSettingsButton.Size = new System.Drawing.Size(95, 23);
this.resetSettingsButton.Size = new System.Drawing.Size(127, 28);
this.resetSettingsButton.TabIndex = 4;
this.resetSettingsButton.Text = "Reset Settings";
this.resetSettingsButton.UseVisualStyleBackColor = true;
this.resetSettingsButton.UseVisualStyleBackColor = false;
this.resetSettingsButton.Click += new System.EventHandler(this.resetSettingsButton_Click);
//
// deleteAfterInstallCheckBox
//
this.deleteAfterInstallCheckBox.AutoSize = true;
this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(17, 102);
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.Text = "Delete games after download and install";
this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = true;
this.deleteAfterInstallCheckBox.CheckedChanged += new System.EventHandler(this.deleteAfterInstallCheckBox_CheckedChanged);
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(444, 218);
this.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.ClientSize = new System.Drawing.Size(592, 268);
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.ForeColor = System.Drawing.Color.White;
this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "SettingsForm";
this.ShowIcon = false;
this.Text = "SettingsForm";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SettingsForm_FormClosing);
this.Load += new System.EventHandler(this.SettingsForm_Load);
@@ -114,5 +141,6 @@
private System.Windows.Forms.CheckBox enableMessageBoxesCheckBox;
private System.Windows.Forms.CheckBox copyMessageToClipboardCheckBox;
private System.Windows.Forms.Button resetSettingsButton;
private System.Windows.Forms.CheckBox deleteAfterInstallCheckBox;
}
}

View File

@@ -31,6 +31,7 @@ namespace AndroidSideloader
checkForUpdatesCheckBox.Checked = Properties.Settings.Default.checkForUpdates;
enableMessageBoxesCheckBox.Checked = Properties.Settings.Default.enableMessageBoxes;
copyMessageToClipboardCheckBox.Checked = Properties.Settings.Default.copyMessageToClipboard;
deleteAfterInstallCheckBox.Checked = Properties.Settings.Default.deleteAllAfterInstall;
}
void intToolTips()
@@ -41,6 +42,8 @@ namespace AndroidSideloader
enableMessageBoxesToolTip.SetToolTip(this.enableMessageBoxesCheckBox, "If this is checked, the software will display message boxes after every completed task");
ToolTip copyMessageToClipboardToolTip = new ToolTip();
copyMessageToClipboardToolTip.SetToolTip(this.copyMessageToClipboardCheckBox, "If this is checked, after each task the software will set the result message to your clipboard");
ToolTip deleteAfterInstallToolTip = new ToolTip();
deleteAfterInstallToolTip.SetToolTip(this.deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server");
}
private void applyButton_Click(object sender, EventArgs e)
@@ -73,5 +76,10 @@ namespace AndroidSideloader
Properties.Settings.Default.Reset();
intSettings();
}
private void deleteAfterInstallCheckBox_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.deleteAllAfterInstall = deleteAfterInstallCheckBox.Checked;
}
}
}

BIN
Tor.7z

Binary file not shown.

53
TroubleshootForm.cs Normal file
View File

@@ -0,0 +1,53 @@
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 TroubleshootForm : Form
{
public TroubleshootForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string question = askTextBox.Text.ToLower();
if ((question.Contains("beat saber") || question.Contains("beatsaber")) && question.Contains("dlc"))
Form1.notify("You can install beatsaber DLC with BMBF, it will work on cracked versions too, just make sure you have latest beat saber and bmbf");
else if ((question.Contains("load") && question.Contains("not")) || ((question.Contains("black") && question.Contains("screen")) || question.Contains("blackscreen")) && (question.Contains("boot") || question.Contains("launch") || question.Contains("start")))
Form1.notify("Make sure you have made the user.json files, copied the obb folder and allowed app permissions");
else if (question.Contains("pass") || question.Contains("pw"))
Form1.notify(@"cs.rin.ru
https://t.me/questgameclub
https://t.me/QuestGameClub
oculusquestpiracy
OculusQuestPiracy
Telegram's passwords until 5/17/2020
https://t.me/questgameclub/thx
t.me/questgameclub/thxdonate
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");
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");
}
private void TroubleshootForm_Load(object sender, EventArgs e)
{
}
}
}

View File

@@ -1,3 +1,26 @@
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

63
documentation.txt Normal file
View File

@@ -0,0 +1,63 @@
Main Form
=========
- Adb Devices Button
Notifies the user every device returned by adb
Changes Form1 Titlebar to "Rookie Sideloader | Device Connected with ID | {DEVICEID}"
- Sideload Drop Button
Shows/Hides the rest of sideload buttons
- Copy Obb Button
Opens a new folder select dialog where the user selects an folder, that folder will be copied to Android/Obb
- Copy Bulk Obb Button
Opens a new folder select dialog where the user selects an folder, that folder will be searched and every obb folder will be copied to Android/Obb
- Get Apk Button
After the user selects an package from m_combo (first combobox) the apk will be pulled to the current directory
- Uninstall App Button
After the user selects an package from m_combo (first combobox) and he accepts the warning given, the apk selected will be uninstalled from the device
- Sideload Folder Button
Opens a new folder select dialog where the user selects an folder, that folder will be searched and every apk from it will be sideloaded
- Sideload Apk Button
Opens a new file select dialog where the user selects a file, that file will be sideloaded
- Refresh Apk List Button
Refreshes the apks/packages listed in m_combo
- Backup Drop Button
Shows/Hides the rest of backup buttons
- Backup Gamedata Button
Saves every folder from Android/data to a folder in the current directory
- Restore Gamedata Button
Pushes every folder form current dirctory/data to Android/data
- User.Json button
Opens a new UsernameForm
- Sideload Apk Button
Opens a new file select dialog where the user selects a file, that file's sha256 hash will be copied to clipboard and the user will be notified
- Troublshoot Button
Opens a new TroubleshootForm
- Settings Button
Opens a new SettingsForm
- About Button
Shows the credits
- Donate Button
Sets clipboard text to rookie's steam inventory trade link and sends the user a message
Settings Form
=============
- Check for Updates checkbox
If enabled the software checks for updates every startup (default:enabled)
- Enable Message Boxes on task completed checkbox
If enabled the software will notify the user on every completed task via a Flexible MessageBox (default:enabled)
- Copy message to clipboard checkbox
If enabled the software copy every message called by the notify function to clipboard (default:disabled)
- Delete games after download and install checkbox
If enabled the software will delete every file downloaded by the Download and Install Game Button
- Json TextBox
Here should be the link to custom games json
- Reset Settings Button
Restores settings to default values, you still need to press apply
- Apply Button
Applies settings
Troubleshoot Form
=================
- Ask the software button
Depending on the input from the textbox, the software might respond with a good answer, still WIP
User.Json Form
==============
- Creat User.Json
Creates all 3 user.json (at the moment) with the username from the textbox then pushes them to the root folder on the quest

View File

@@ -2,4 +2,8 @@
<packages>
<package id="Costura.Fody" version="4.1.0" targetFramework="net452" />
<package id="Fody" version="6.0.0" targetFramework="net452" developmentDependency="true" />
<package id="MetroFramework" version="1.2.0.3" targetFramework="net452" />
<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" />
</packages>

View File

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

Binary file not shown.

View File

@@ -0,0 +1,10 @@
NOTE:
To make use of designers, you must reference both MetroFramework.dll and MetroFramework.Design.dll
from your project. I recommend to change the properties for the Design dll to "Copy local: false"
as you do not need to redistribute it. This also helps to make your application independent of
System.Design.dll and compatible with the .NET client profile, a subset of the full .NET framework.
Project Site: http://thielj.github.io/MetroFramework

View File

@@ -0,0 +1,10 @@
NOTE:
To make use of designers, you must reference both MetroFramework.dll and MetroFramework.Design.dll
from your project. I recommend to change the properties for the Design dll to "Copy local: false"
as you do not need to redistribute it. This also helps to make your application independent of
System.Design.dll and compatible with the .NET client profile, a subset of the full .NET framework.
Project Site: http://thielj.github.io/MetroFramework

View File

@@ -0,0 +1,9 @@
param($installPath, $toolsPath, $package, $project)
foreach ($reference in $project.Object.References)
{
if($reference.Name -eq "MetroFramework.Design")
{
$reference.CopyLocal = $false;
}
}

View File

@@ -0,0 +1,10 @@
NOTE:
To make use of designers, you must reference both MetroFramework.dll and MetroFramework.Design.dll
from your project. I recommend to change the properties for the Design dll to "Copy local: false"
as you do not need to redistribute it. This also helps to make your application independent of
System.Design.dll and compatible with the .NET client profile, a subset of the full .NET framework.
Project Site: http://thielj.github.io/MetroFramework

View File

@@ -0,0 +1,10 @@
NOTE:
To make use of designers, you must reference both MetroFramework.dll and MetroFramework.Design.dll
from your project. I recommend to change the properties for the Design dll to "Copy local: false"
as you do not need to redistribute it. This also helps to make your application independent of
System.Design.dll and compatible with the .NET client profile, a subset of the full .NET framework.
Project Site: http://thielj.github.io/MetroFramework

View File

@@ -34,32 +34,42 @@
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(13, 13);
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.textBox1.ForeColor = System.Drawing.Color.White;
this.textBox1.Location = new System.Drawing.Point(17, 16);
this.textBox1.Margin = new System.Windows.Forms.Padding(4);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(400, 20);
this.textBox1.Size = new System.Drawing.Size(532, 22);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "Enter your username here";
//
// button1
//
this.button1.Location = new System.Drawing.Point(13, 39);
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(17, 48);
this.button1.Margin = new System.Windows.Forms.Padding(0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(400, 23);
this.button1.Size = new System.Drawing.Size(533, 28);
this.button1.TabIndex = 1;
this.button1.Text = "Create User.Json";
this.button1.UseVisualStyleBackColor = true;
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// usernameForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(425, 74);
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(564, 81);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.MaximumSize = new System.Drawing.Size(441, 113);
this.MinimumSize = new System.Drawing.Size(441, 113);
this.ForeColor = System.Drawing.Color.White;
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximumSize = new System.Drawing.Size(582, 128);
this.MinimumSize = new System.Drawing.Size(582, 128);
this.Name = "usernameForm";
this.ShowIcon = false;
this.Text = "USER.JSON";
this.Load += new System.EventHandler(this.usernameForm_Load);
this.ResumeLayout(false);

View File

@@ -1 +1 @@
0.14HF1
1.0HF1