Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2723dac64f | ||
|
|
df32d593f2 | ||
|
|
050697c2b3 | ||
|
|
72efbc12ac | ||
|
|
fe44a8f501 | ||
|
|
9cd02f1860 | ||
|
|
12c1ba0c93 | ||
|
|
ebbf0ae066 | ||
|
|
09a98a4262 | ||
|
|
e8c0e313cc | ||
|
|
7047089f0d | ||
|
|
d7ddeff532 | ||
|
|
7b8f806be6 | ||
|
|
cd58002295 |
@@ -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')" />
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
@@ -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
521
Form1.Designer.cs
generated
@@ -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
706
Form1.cs
@@ -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
25
MetroFramework.txt
Normal 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
|
||||
44
Properties/Resources.Designer.cs
generated
44
Properties/Resources.Designer.cs
generated
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
82
Properties/Settings.Designer.cs
generated
82
Properties/Settings.Designer.cs
generated
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
56
SettingsForm.Designer.cs
generated
56
SettingsForm.Designer.cs
generated
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
53
TroubleshootForm.cs
Normal file
53
TroubleshootForm.cs
Normal 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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
63
documentation.txt
Normal 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
|
||||
@@ -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>
|
||||
25
packages/MetroFramework.1.2.0.3/Content/MetroFramework.txt
vendored
Normal file
25
packages/MetroFramework.1.2.0.3/Content/MetroFramework.txt
vendored
Normal 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
|
||||
BIN
packages/MetroFramework.1.2.0.3/MetroFramework.1.2.0.3.nupkg
vendored
Normal file
BIN
packages/MetroFramework.1.2.0.3/MetroFramework.1.2.0.3.nupkg
vendored
Normal file
Binary file not shown.
10
packages/MetroFramework.1.2.0.3/README.TXT
vendored
Normal file
10
packages/MetroFramework.1.2.0.3/README.TXT
vendored
Normal 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
|
||||
BIN
packages/MetroFramework.Design.1.2.0.3/MetroFramework.Design.1.2.0.3.nupkg
vendored
Normal file
BIN
packages/MetroFramework.Design.1.2.0.3/MetroFramework.Design.1.2.0.3.nupkg
vendored
Normal file
Binary file not shown.
10
packages/MetroFramework.Design.1.2.0.3/README.TXT
vendored
Normal file
10
packages/MetroFramework.Design.1.2.0.3/README.TXT
vendored
Normal 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
|
||||
9
packages/MetroFramework.Design.1.2.0.3/Tools/install.ps1
vendored
Normal file
9
packages/MetroFramework.Design.1.2.0.3/Tools/install.ps1
vendored
Normal 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;
|
||||
}
|
||||
}
|
||||
BIN
packages/MetroFramework.Design.1.2.0.3/lib/net40/MetroFramework.Design.dll
vendored
Normal file
BIN
packages/MetroFramework.Design.1.2.0.3/lib/net40/MetroFramework.Design.dll
vendored
Normal file
Binary file not shown.
BIN
packages/MetroFramework.Fonts.1.2.0.3/MetroFramework.Fonts.1.2.0.3.nupkg
vendored
Normal file
BIN
packages/MetroFramework.Fonts.1.2.0.3/MetroFramework.Fonts.1.2.0.3.nupkg
vendored
Normal file
Binary file not shown.
10
packages/MetroFramework.Fonts.1.2.0.3/README.TXT
vendored
Normal file
10
packages/MetroFramework.Fonts.1.2.0.3/README.TXT
vendored
Normal 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
|
||||
BIN
packages/MetroFramework.Fonts.1.2.0.3/lib/net40/MetroFramework.Fonts.dll
vendored
Normal file
BIN
packages/MetroFramework.Fonts.1.2.0.3/lib/net40/MetroFramework.Fonts.dll
vendored
Normal file
Binary file not shown.
BIN
packages/MetroFramework.RunTime.1.2.0.3/MetroFramework.RunTime.1.2.0.3.nupkg
vendored
Normal file
BIN
packages/MetroFramework.RunTime.1.2.0.3/MetroFramework.RunTime.1.2.0.3.nupkg
vendored
Normal file
Binary file not shown.
10
packages/MetroFramework.RunTime.1.2.0.3/README.TXT
vendored
Normal file
10
packages/MetroFramework.RunTime.1.2.0.3/README.TXT
vendored
Normal 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
|
||||
BIN
packages/MetroFramework.RunTime.1.2.0.3/lib/net40-Client/MetroFramework.dll
vendored
Normal file
BIN
packages/MetroFramework.RunTime.1.2.0.3/lib/net40-Client/MetroFramework.dll
vendored
Normal file
Binary file not shown.
28
usernameForm.Designer.cs
generated
28
usernameForm.Designer.cs
generated
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user