diff --git a/APKToolGUI шапка 06052015.txt b/APKToolGUI шапка 06052015.txt
new file mode 100644
index 0000000..1e16beb
--- /dev/null
+++ b/APKToolGUI шапка 06052015.txt
@@ -0,0 +1,188 @@
+[size=4][b][color=blue]APKToolGUI[/size][/b][/color]
+[size=3][b]: 2.3.3.0[/b][/size]
+
+[i] : [b]22.10.2014[/b][/i]
+
+[attachment="4387556:1.png"]
+
+[spoiler=][attachment="4387557:2.png"][attachment="4387558:3.png"][attachment="4387559:4.png"]
+[attachment="4387560:5.png"][attachment="4387561:6.png"][attachment="4387562:7.png"][/spoiler]
+
+[b] :[/b]
+ APK-.
+
+[b]:[/b]
+[list]
+[*] APK;
+[*] APK;
+[*] APK;
+[*]zipalign.
+[/list]
+
+[spoiler= 2.0.0.0] tools [attachment="2956962:aapt.exe"] [attachment="2956963:aapt.exe"] ( ). jBART CloudBuildr. , , .[/spoiler]
+
+[b] :[/b]
+[url="http://www.java.com/ru/download/manual.jsp#win"]Java[/url]
+[url="http://www.microsoft.com/ru-ru/download/details.aspx?id=24872"]Microsoft .NET Framework 4.0[/url]
+
+[b] :[/b]
+
+[b]:[/b] INFINUM
+
+[spoiler= ] [b]2.3.3.0[/b]
+[list][*] , . 2.3.2.0 "".[/list]
+[b]2.3.2.0[/b]
+[list][*]
+[*] .
+[*] [/list]
+[b]2.3.1.2[/b]
+[list][*] [/list]
+[b]2.3.1.1[/b]
+[list][*] .[/list]
+[b]2.3.1.0[/b]
+[list][*] .[/list]
+[b]2.3.0.1[/b]
+[list][*] / .
+[*] / Windows XP.[/list]
+[b]2.3.0.0[/b]
+[list][*] , .
+[*].
+[*] ( , ). .
+[*] .
+[*] .
+[*] .[/list]
+[b]2.2.1.0[/b]
+[list][*] .
+[*] .
+[*] zip-.
+[*] zipalign.exe.
+[*] .[/list]
+[b]2.2.0.0[/b]
+[list][*] .
+[*] .
+[*] Java Runtime ( FAQ).
+[*] Java Runtime ( FAQ).
+[*] apktool .
+[*] .[/list]
+[b]2.1.3.2[/b]
+[list][*] "", " " ..
+[*]apktool 2.0.0 BETA 9[/list]
+[b]2.1.3.1[/b]
+[list][*]
+[*] [/list]
+[b]2.1.3.0[/b]
+[list]
+[*] ( Windows Vista . ! 2.1.2.1)
+[*]
+[*]
+[*] ( LinXP)
+[*]
+[/list]
+[b]2.1.2.1[/b]
+[list]
+[*] .
+[/list]
+[b]2.1.2.0[/b]
+[list]
+[*] .
+[/list]
+[b]2.1.1.0:[/b]
+[list]
+[*] ;
+[*] ;
+[*] , .
+[/list]
+[b]2.1.0.0:[/b]
+[list]
+[*] apktool ( );
+[*] .NET Framework 4.0.
+[/list]
+[b]2.0.0.0:[/b]
+[list]
+[*] apktool.jar 2.0 ( );
+[*]aapt.exe , .. apktool.jar;
+[*] aapt.exe apktool.jar;
+[*] framework' ( , apktool);
+[*] .
+[/list]
+[b]1.3.3.0:[/b]
+[list]
+[*] ;
+[*] ;
+[*] .
+[/list]
+[b]1.3.2.0:[/b]
+[list]
+[*] *.jar-.
+[/list]
+[b]1.3.1.0:[/b]
+[list]
+[*] ( -> ).
+[/list]
+[b]1.3.0.0:[/b]
+[list]
+[*] [url="http://developer.android.com/tools/help/zipalign.html"]zipalign[/url]. _zipaligned. . , . , .
+[/list]
+
+[/spoiler]
+
+[color=blue][b]:[/b][/color] [attachment="5257492:APKToolGUI_2.3.3.0.zip"] [b]: 2.3.3.0[/b]
+
+[b]Java(TM) SE Runtime Environment 7 update 60[/b]
+[color=blue][b]:[/b][/color] [attachment="4717690:jre7u60.zip"]
+
+[url="http://4pda.ru/forum/index.php?s=&showtopic=452034&view=findpost&p=35250413"][/url]
+
+[spoiler= ]
+[attachment="4717621:APKToolGUI_2.3.2.0.zip"]
+[attachment="4515205:APKToolGUI_2.3.1.2.zip"]
+[attachment="4485106:APKToolGUI_2.3.1.1.zip"]
+[attachment="4476662:APKToolGUI_2.3.1.0.zip"]
+[attachment="4389243:APKToolG...v2.3.0.1.zip"]
+[attachment="4387575:APKToolG...v2.3.0.0.zip"]
+[attachment="4353548:APKToolG...v2.2.1.0.zip"]
+[attachment="4330218:APKToolG...v2.2.0.0.zip"]
+[attachment="4232754:APKToolGUI_2.1.3.2.zip"]
+[attachment="3992446:APKToolGUI_2.1.3.1.zip"]
+[attachment="3757734:APKToolGUI_2.1.3.0.zip"]
+[attachment="3736877:APKToolGUI_2.1.2.1.zip"]
+[attachment="3729566:APKToolGUI_2.1.2.0.zip"]
+[attachment="3727071:APKToolGUI_2.1.1.0.zip"]
+[attachment="3726068:APKToolGUI_2.1.0.0.zip"]
+[attachment="3688451:APKToolGUI_2.0.0.0.zip"]
+[attachment="3389648:APKToolG...v1.3.3.0.zip"]
+[attachment="3121747:APKToolG...v1.3.2.0.zip"]
+[attachment="2957599:APKToolG...v1.3.1.0.zip"]
+[attachment="2956918:APKToolG...v1.3.0.0.zip"]
+[attachment="2831430:APKToolG...v1.2.0.1.zip"]
+[attachment="2819181:release_APKToolGUI v1.2.0.0.zip"][/spoiler]
+
+[spoiler=[size=3]FAQ[/size]]
+[b]Q:[/b] Java Runtime?
+[b]A:[/b] :
+[list=1][*] tools\Java. .
+[*] ,
+[*] "java"
+[*] Programm Files\Java[/list]
+ , .
+
+[b]Q:[/b] , . ?
+[b]1:[/b] java.exe .
+[b]A2:[/b] [url="http://4pda.ru/forum/dl/post/4717690/jre7u60.zip"] [/url] tools\Java.
+[b]A3:[/b] . [url="http://www.java.com/ru/download/help/path.xml"] [/url].
+
+[b]Q:[/b] .
+[b]:[/b] apktool.jar, apktool.jar. [url="http://4pda.ru/forum/index.php?showtopic=163632"][/url].
+[/spoiler]
+
+[spoiler=ToDo][list][*]/ dex-
+[*][s][url="http://4pda.ru/forum/index.php?s=&showtopic=452034&view=findpost&p=32036380"]APKToolGUI ( #32036380)[/url][/s]
+[*][s][url="http://4pda.ru/forum/index.php?s=&showtopic=452034&view=findpost&p=32066803"]APKToolGUI ( #32066803)[/url][/s]
+[*] /
+[*] [/list][/spoiler]
+
+[spoiler=][b][url="http://4pda.ru/forum/index.php?showuser=1731493"]Breathe of fate[/url][/b] .
+[b][url="http://4pda.ru/forum/index.php?showuser=80860"]LinXP[/url][/b] .[/spoiler]
+
+[b][size=3][color=red][center]E / - !
+ [url="http://4pda.ru/forum/index.php?showtopic=163632"] APKTool[/url]![/center][/color][/size][/b]
\ No newline at end of file
diff --git a/APKToolGUI.sln b/APKToolGUI.sln
new file mode 100644
index 0000000..b742a86
--- /dev/null
+++ b/APKToolGUI.sln
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.31101.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "APKToolGUI", "APKToolGUI\APKToolGUI.csproj", "{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Any CPU.Build.0 = Debug|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|x64.ActiveCfg = Debug|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|x86.ActiveCfg = Debug|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|x86.Build.0 = Debug|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Any CPU.ActiveCfg = Release|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Any CPU.Build.0 = Release|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Mixed Platforms.Build.0 = Release|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|x64.ActiveCfg = Release|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|x86.ActiveCfg = Release|x86
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/APKToolGUI.suo b/APKToolGUI.suo
new file mode 100644
index 0000000..cac5c96
Binary files /dev/null and b/APKToolGUI.suo differ
diff --git a/APKToolGUI/APKToolGUI.csproj b/APKToolGUI/APKToolGUI.csproj
new file mode 100644
index 0000000..208898d
--- /dev/null
+++ b/APKToolGUI/APKToolGUI.csproj
@@ -0,0 +1,231 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}
+ WinExe
+ Properties
+ APKToolGUI
+ APKToolGUI
+ v4.0
+ Client
+ 512
+ false
+ Properties\AssemblyInfo.cs
+ True
+ True
+ False
+ None.None.None.Increment
+ None.None.None.Increment
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.0
+ false
+ true
+
+
+ AnyCPU
+ false
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ true
+ true
+
+
+ AnyCPU
+ none
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ Auto
+ false
+ true
+
+
+ android.ico
+
+
+ LocalIntranet
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+ Component
+
+
+
+
+ Form
+
+
+ FormAboutBox.cs
+
+
+ Form
+
+
+ FormBuild.cs
+
+
+ Form
+
+
+ FormDecode.cs
+
+
+ Form
+
+
+ FormMain.cs
+
+
+ Form
+
+
+ FormSettings.cs
+
+
+ Component
+
+
+
+
+
+
+ True
+ True
+ Language.resx
+
+
+
+ FormAboutBox.cs
+
+
+ FormAboutBox.cs
+
+
+ FormBuild.cs
+
+
+ FormDecode.cs
+
+
+ FormMain.cs
+
+
+ FormMain.cs
+
+
+ FormSettings.cs
+
+
+ FormSettings.cs
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+ ResXFileCodeGenerator
+ Language.Designer.cs
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ Клиентский профиль Microsoft .NET Framework 4 %28x86 и x64%29
+ true
+
+
+ False
+ Клиентский профиль .NET Framework 3.5 с пакетом обновления 1 %28SP1%29
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+ False
+ Установщик Windows 3.1
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/APKToolGUI/APKToolGUI.csproj.user b/APKToolGUI/APKToolGUI.csproj.user
new file mode 100644
index 0000000..67d14de
--- /dev/null
+++ b/APKToolGUI/APKToolGUI.csproj.user
@@ -0,0 +1,25 @@
+
+
+
+ publish\
+
+
+
+
+
+ ru-RU
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+ d "app.apk"
+
+
\ No newline at end of file
diff --git a/APKToolGUI/Apktool.cs b/APKToolGUI/Apktool.cs
new file mode 100644
index 0000000..0b4f055
--- /dev/null
+++ b/APKToolGUI/Apktool.cs
@@ -0,0 +1,554 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
+using Java;
+
+namespace APKToolGUI
+{
+ public class Apktool : JarProcess
+ {
+ enum ApktoolActionType
+ {
+ Decompile,
+ Build,
+ InstallFramework,
+ Null
+ }
+ static class DecompileKeys
+ {
+ public const string NoSource = " -s";
+ public const string NoResource = " -r";
+ public const string Force = " -f";
+ public const string FrameworkPath = " -p";
+ public const string KeepBrokenResource = " -k";
+ public const string MatchOriginal = " -m";
+ public const string OutputDir = " -o";
+ }
+ static class BuildKeys
+ {
+ public const string ForceAll = " -f";
+ public const string CopyOriginal = " -c";
+ public const string Aapt = " -a";
+ public const string FrameworkPath = " -p";
+ public const string OutputAppPath = " -o";
+ }
+ static class InstallFrameworkKeys
+ {
+ public const string FrameDir = " -p";
+ public const string Tag = " -t";
+ }
+ ApktoolActionType lastActionType = ApktoolActionType.Null;
+ string lastFilePath;
+ string lastProjectDir;
+ ApktoolDataReceivedEventHandler onApktoolOutputDataRecieved;
+ ApktoolDataReceivedEventHandler onApktoolErrorDataRecieved;
+ ApktoolEventCompletedEventHandler onBuildCompleted;
+ ApktoolEventCompletedEventHandler onDecompilingCompleted;
+ ApktoolEventCompletedEventHandler onInstallFrameworkCompleted;
+
+ public event ApktoolDataReceivedEventHandler ApktoolOutputDataRecieved
+ {
+ add
+ {
+ onApktoolOutputDataRecieved += value;
+ }
+ remove
+ {
+ onApktoolOutputDataRecieved -= value;
+ }
+ }
+ public event ApktoolDataReceivedEventHandler ApktoolErrorDataRecieved
+ {
+ add
+ {
+ onApktoolErrorDataRecieved += value;
+ }
+ remove
+ {
+ onApktoolErrorDataRecieved -= value;
+ }
+ }
+
+ public event ApktoolEventCompletedEventHandler BuildCompleted
+ {
+ add
+ {
+ onBuildCompleted += value;
+ }
+ remove
+ {
+ onBuildCompleted -= value;
+ }
+ }
+ public event ApktoolEventCompletedEventHandler DecompilingCompleted
+ {
+ add
+ {
+ onDecompilingCompleted += value;
+ }
+ remove
+ {
+ onDecompilingCompleted -= value;
+ }
+ }
+ public event ApktoolEventCompletedEventHandler InstallFrameworkCompleted
+ {
+ add
+ {
+ onInstallFrameworkCompleted += value;
+ }
+ remove
+ {
+ onInstallFrameworkCompleted -= value;
+ }
+ }
+
+ public Apktool(string javaPath, string jarPath) : base(javaPath, jarPath)
+ {
+ this.Exited += Apktool_Exited;
+ this.OutputDataReceived += Apktool_OutputDataReceived;
+ this.ErrorDataReceived += Apktool_ErrorDataReceived;
+ }
+
+ private void Apktool_ErrorDataReceived(object sender, DataReceivedEventArgs e)
+ {
+ if (onApktoolErrorDataRecieved != null && e.Data != null)
+ onApktoolErrorDataRecieved(this, new ApktoolDataReceivedEventArgs(e.Data));
+ }
+
+ private void Apktool_OutputDataReceived(object sender, DataReceivedEventArgs e)
+ {
+ if (onApktoolOutputDataRecieved != null && e.Data != null)
+ onApktoolOutputDataRecieved(this, new ApktoolDataReceivedEventArgs(e.Data));
+ }
+
+ private void Apktool_Exited(object sender, EventArgs e)
+ {
+ this.CancelOutputRead();
+ this.CancelErrorRead();
+ switch (lastActionType)
+ {
+ case ApktoolActionType.Build:
+ if (onBuildCompleted != null)
+ onBuildCompleted(this, new ApktoolEventCompletedEventArgs(this.ExitCode, lastFilePath, lastProjectDir));
+ lastActionType = ApktoolActionType.Null;
+ break;
+ case ApktoolActionType.Decompile:
+ if (onDecompilingCompleted != null)
+ onDecompilingCompleted(this, new ApktoolEventCompletedEventArgs(this.ExitCode, lastFilePath, lastProjectDir));
+ lastActionType = ApktoolActionType.Null;
+ break;
+ case ApktoolActionType.InstallFramework:
+ if (onInstallFrameworkCompleted != null)
+ onInstallFrameworkCompleted(this, new ApktoolEventCompletedEventArgs(this.ExitCode, lastFilePath, lastProjectDir));
+ lastActionType = ApktoolActionType.Null;
+ break;
+ case ApktoolActionType.Null:
+ break;
+ default:
+ break;
+ }
+ }
+
+ public bool Decompile(DecompileOptions options)
+ {
+ lastActionType = ApktoolActionType.Decompile;
+ lastFilePath = options.AppPath;
+ lastProjectDir = options.OutputDirectory;
+
+ string keyNoSrc = null, keyNoRes = null, keyForce = null, keyFramePath = null, keyKeepBrokenRes = null, keyMatchOriginal = null, keyOutputDir = null;
+
+ if (options.NoSource)
+ keyNoSrc = DecompileKeys.NoSource;
+ if (options.NoResource)
+ keyNoRes = DecompileKeys.NoResource;
+ if (options.Force)
+ keyForce = DecompileKeys.Force;
+ if (options.KeepBrokenResource)
+ keyKeepBrokenRes = DecompileKeys.KeepBrokenResource;
+ if (options.MatchOriginal)
+ keyMatchOriginal = DecompileKeys.MatchOriginal;
+ if (!String.IsNullOrWhiteSpace(options.FrameworkPath))
+ keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, options.FrameworkPath);
+ if (!String.IsNullOrWhiteSpace(options.OutputDirectory))
+ keyOutputDir = String.Format("{0} \"{1}\"", DecompileKeys.OutputDir, options.OutputDirectory);
+
+ //string args = String.Format("d{0}{1}{2}{3}{4}{5} -o \"{6}\" \"{7}\"", keyNoSrc, keyNoRes, keyForce, keyKeepBrokenRes, keyMatchOriginal, keyFramePath, options.ProjectDirectory, options.AppPath);
+ string args = String.Format("d{0}{1}{2}{3}{4}{5}{6} \"{7}\"", keyNoSrc, keyNoRes, keyForce, keyKeepBrokenRes, keyMatchOriginal, keyFramePath, keyOutputDir, options.AppPath);
+
+ bool started = this.Start(args);
+ this.BeginOutputReadLine();
+ this.BeginErrorReadLine();
+ return started;
+ }
+
+ public bool Build(BuildOptions options)
+ {
+ lastActionType = ApktoolActionType.Build;
+ lastFilePath = options.AppPath;
+ lastProjectDir = options.ProjectDirectory;
+
+ string keyForceAll = null, keyAapt = null, keyCopyOriginal = null, keyFramePath = null, keyOutputAppPath = null;
+ if (options.ForceAll)
+ keyForceAll = BuildKeys.ForceAll;
+ if (options.CopyOriginal)
+ keyCopyOriginal = BuildKeys.CopyOriginal;
+ if (!String.IsNullOrEmpty(options.AaptPath))
+ keyAapt = String.Format("{0} \"{1}\"", BuildKeys.Aapt, options.AaptPath);
+ if (!String.IsNullOrEmpty(options.FrameworkPath))
+ keyFramePath = String.Format("{0} \"{1}\"", BuildKeys.FrameworkPath, options.FrameworkPath);
+ if (!String.IsNullOrWhiteSpace(options.AppPath))
+ keyOutputAppPath = String.Format("{0} \"{1}\"", BuildKeys.OutputAppPath, options.AppPath);
+
+ string args = String.Format("b{0}{1}{2}{3}{4} \"{5}\"", keyForceAll, keyAapt, keyCopyOriginal, keyFramePath, keyOutputAppPath, options.ProjectDirectory);
+
+ bool started = this.Start(args);
+ this.BeginOutputReadLine();
+ this.BeginErrorReadLine();
+ return started;
+ }
+
+ public bool InstallFramework(InstallFrameworkOptions options)
+ {
+ lastActionType = ApktoolActionType.InstallFramework;
+ lastFilePath = options.InputFramePath;
+ lastProjectDir = null;
+
+ string keyFrameDir = null, keyTag = null;
+
+ if (!String.IsNullOrWhiteSpace(options.FrameDir))
+ keyFrameDir = String.Format("{0} \"{1}\"", InstallFrameworkKeys.FrameDir, options.FrameDir);
+ if (!String.IsNullOrWhiteSpace(options.Tag))
+ keyTag = String.Format("{0} \"{1}\"", InstallFrameworkKeys.Tag, options.Tag);
+
+ string args = String.Format("if{0}{1} \"{2}\"", keyFrameDir, keyTag, options.InputFramePath);
+
+ bool started = this.Start(args);
+ this.BeginOutputReadLine();
+ this.BeginErrorReadLine();
+ return started;
+ }
+
+ public string GetVersion()
+ {
+ using (JarProcess apktoolJar = new JarProcess(this.JavaPath, this.JarPath))
+ {
+ apktoolJar.EnableRaisingEvents = false;
+ apktoolJar.Start("-version");
+ string version = apktoolJar.StandardOutput.ReadToEnd();
+ apktoolJar.WaitForExit(3000);
+ return version;
+ }
+ }
+
+ private static ApktoolEventType GetEventType(string message)
+ {
+ MatchCollection mCol = Regex.Matches(message, @"^(\w+):\s(.+)$");
+ if (mCol.Count > 0)
+ {
+ switch (mCol[0].Groups[1].Value)
+ {
+ case "W":
+ return ApktoolEventType.Warning;
+ case "Warning":
+ return ApktoolEventType.Warning;
+ case "I":
+ return ApktoolEventType.Information;
+ case "Error":
+ return ApktoolEventType.Error;
+ case "E":
+ return ApktoolEventType.Error;
+ default:
+ return ApktoolEventType.Unknown;
+ }
+ }
+ else
+ return ApktoolEventType.Unknown;
+ }
+ }
+
+ public delegate void ApktoolEventCompletedEventHandler(Object sender, ApktoolEventCompletedEventArgs e);
+
+ public class ApktoolEventCompletedEventArgs : EventArgs
+ {
+ private int _exitCode;
+ private string _filePath;
+ private string _projectDir;
+
+ public ApktoolEventCompletedEventArgs(int exitCode, string filePath, string projectDir)
+ {
+ _exitCode = exitCode;
+ _filePath = filePath;
+ _projectDir = projectDir;
+ }
+
+ public int ExitCode
+ {
+ get
+ {
+ return _exitCode;
+ }
+ }
+ public string FilePath
+ {
+ get
+ {
+ return _filePath;
+ }
+ }
+ public string ProjectDir
+ {
+ get
+ {
+ return _projectDir;
+ }
+ }
+ }
+
+ public delegate void ApktoolDataReceivedEventHandler(Object sender, ApktoolDataReceivedEventArgs e);
+
+ public class ApktoolDataReceivedEventArgs : EventArgs
+ {
+ string data;
+ string message;
+ ApktoolEventType eventType;
+
+ public ApktoolDataReceivedEventArgs(string data)
+ {
+ this.data = data;
+ SetData();
+ }
+ public String Message{
+ get{
+ return message;}}
+ public ApktoolEventType EventType{
+ get{
+ return eventType;}}
+
+ private void SetData()
+ {
+ MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
+ if (mCol.Count > 0)
+ {
+ switch (mCol[0].Groups[1].Value)
+ {
+ case "W":
+ eventType = ApktoolEventType.Warning;
+ message = mCol[0].Groups[2].Value;
+ break;
+ case "Warning":
+ eventType = ApktoolEventType.Warning;
+ message = mCol[0].Groups[2].Value;
+ break;
+ case "I":
+ eventType = ApktoolEventType.Information;
+ message = mCol[0].Groups[2].Value;
+ break;
+ case "Error":
+ eventType = ApktoolEventType.Error;
+ message = mCol[0].Groups[2].Value;
+ break;
+ case "E":
+ eventType = ApktoolEventType.Error;
+ message = mCol[0].Groups[2].Value;
+ break;
+ default:
+ eventType = ApktoolEventType.Unknown;
+ message = data;
+ break;
+ }
+ }
+ else
+ {
+ eventType = ApktoolEventType.Unknown;
+ message = data;
+ }
+ }
+ }
+
+ public enum ApktoolEventType
+ {
+ Information,
+ Warning,
+ Error,
+ Unknown
+ }
+
+ public class BuildOptions
+ {
+ public BuildOptions(string projectDir)
+ {
+ this.ProjectDirectory = projectDir;
+ }
+ //public BuildOptions(string projectDir, string apkPath)
+ //{
+ // this.ProjectDirectory = projectDir;
+ // this.AppPath = apkPath;
+ //}
+ public string ProjectDirectory { get; set; }
+ ///
+ /// The name of apk that gets written.
+ ///
+ public string AppPath { get; set; }
+ ///
+ /// Loads aapt from specified location.
+ ///
+ public string AaptPath { get; set; }
+ ///
+ /// Skip changes detection and build all files.
+ ///
+ public bool ForceAll { get; set; }
+ ///
+ /// Copies original AndroidManifest.xml and META-INF.
+ ///
+ public bool CopyOriginal { get; set; }
+ ///
+ /// Uses framework files located in dir.
+ ///
+ public string FrameworkPath { get; set; }
+ }
+
+ public class DecompileOptions
+ {
+ public DecompileOptions(string apkPath)
+ {
+ this.AppPath = apkPath;
+ this.OutputDirectory = String.Format("{0}\\{1}", System.IO.Path.GetDirectoryName(apkPath), System.IO.Path.GetFileNameWithoutExtension(apkPath));
+ }
+ ///
+ /// The name of folder that gets written.
+ ///
+ public string OutputDirectory { get; set; }
+ public string AppPath { get; set; }
+ ///
+ /// Do not decode sources.
+ ///
+ public bool NoSource { get; set; }
+ ///
+ /// Do not decode resources.
+ ///
+ public bool NoResource { get; set; }
+ ///
+ /// Force delete destination directory.
+ ///
+ public bool Force { get; set; }
+ ///
+ /// Uses framework files located in dir.
+ ///
+ public string FrameworkPath { get; set; }
+ ///
+ /// Use if there was an error and some resourceswere dropped, e.g."Invalid config flags detected. Dropping resources",
+ /// but you want to decode them anyway, even with errors. You will have to fix them manually before building.
+ ///
+ public bool KeepBrokenResource { get; set; }
+ ///
+ /// Keeps files to closest to original as possible. Prevents rebuild.
+ ///
+ public bool MatchOriginal { get; set; }
+ }
+
+ public class InstallFrameworkOptions
+ {
+ public InstallFrameworkOptions(string framePath)
+ {
+ this.InputFramePath = framePath;
+ }
+ public string InputFramePath { get; set; }
+ ///
+ /// Stores framework files into directory
+ ///
+ public string FrameDir { get; set; }
+ ///
+ /// Frameworks tag
+ ///
+ public string Tag { get; set; }
+ }
+
+ //public class ApktoolMessage
+ //{
+ // public ApktoolEventType EventType { get; private set; }
+ // public string Message { get; private set; }
+ // private string data;
+
+ // public ApktoolMessage(string data)
+ // {
+ // this.data = data;
+ // SetData();
+ // }
+
+ // private void SetData()
+ // {
+ // MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
+ // if (mCol.Count > 0)
+ // {
+ // switch (mCol[0].Groups[1].Value)
+ // {
+ // case "W":
+ // this.EventType = ApktoolEventType.Warning;
+ // this.Message = mCol[0].Groups[2].Value;
+ // break;
+ // case "Warning":
+ // this.EventType = ApktoolEventType.Warning;
+ // this.Message = mCol[0].Groups[2].Value;
+ // break;
+ // case "I":
+ // this.EventType = ApktoolEventType.Information;
+ // this.Message = mCol[0].Groups[2].Value;
+ // break;
+ // case "Error":
+ // this.EventType = ApktoolEventType.Error;
+ // this.Message = mCol[0].Groups[2].Value;
+ // break;
+ // case "E":
+ // this.EventType = ApktoolEventType.Error;
+ // this.Message = mCol[0].Groups[2].Value;
+ // break;
+ // default:
+ // this.EventType = ApktoolEventType.Unknown;
+ // this.Message = data;
+ // break;
+ // }
+ // }
+ // else
+ // {
+ // this.EventType = ApktoolEventType.Unknown;
+ // this.Message = data;
+ // }
+ // }
+
+ // public static ApktoolEventType GetEventType(string data)
+ // {
+ // MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
+ // if (mCol.Count > 0)
+ // {
+ // switch (mCol[0].Groups[1].Value)
+ // {
+ // case "W":
+ // return ApktoolEventType.Warning;
+ // case "Warning":
+ // return ApktoolEventType.Warning;
+ // case "I":
+ // return ApktoolEventType.Information;
+ // case "Error":
+ // return ApktoolEventType.Error;
+ // case "E":
+ // return ApktoolEventType.Error;
+ // default:
+ // return ApktoolEventType.Unknown;
+ // }
+ // }
+ // else
+ // return ApktoolEventType.Unknown;
+ // }
+
+ // public static string GetMessage(string data)
+ // {
+ // MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
+ // if (mCol.Count > 0)
+ // return mCol[0].Groups[2].Value;
+ // else
+ // return data;
+ // }
+ //}
+}
diff --git a/APKToolGUI/ExplorerContextMenu.cs b/APKToolGUI/ExplorerContextMenu.cs
new file mode 100644
index 0000000..1d9dfb7
--- /dev/null
+++ b/APKToolGUI/ExplorerContextMenu.cs
@@ -0,0 +1,228 @@
+using System;
+using Microsoft.Win32;
+
+namespace APKToolGUI
+{
+ public class ExplorerContextMenu
+ {
+ public static Status Create()
+ {
+ string executablePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
+ if (IsAdmin())
+ {
+ if (Environment.OSVersion.Version >= new Version("6.0.0.0")) // Vista и новее
+ {
+ return CreateVistaAndLater(executablePath);
+ }
+ else if (Environment.OSVersion.Version < new Version("6.0.0.0") && Environment.OSVersion.Version >= new Version("5.1.0.0"))
+ {
+ return CreateXP(executablePath);
+ }
+ else
+ return new Status(false, "Unsupported OS");
+ }
+ else
+ return new Status(false, "Administrator rights are required");
+ }
+
+ public static Status Remove()
+ {
+ if (Environment.OSVersion.Version >= new Version("6.0.0.0")) // Vista и новее
+ {
+ return RemoveVistaAndLater();
+ }
+ else
+ {
+ if (Environment.OSVersion.Version < new Version("6.0.0.0") && Environment.OSVersion.Version >= new Version("5.1.0.0"))
+ {
+ return RemoveXP();
+ }
+ else
+ return new Status(false, "Unsupported OS");
+ }
+ }
+
+ public static bool IsAdmin()
+ {
+ System.Security.Principal.WindowsIdentity id = System.Security.Principal.WindowsIdentity.GetCurrent();
+ System.Security.Principal.WindowsPrincipal p = new System.Security.Principal.WindowsPrincipal(id);
+
+ return p.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
+ }
+
+ private static Status CreateVistaAndLater(string executablePath)
+ {
+ try
+ {
+ #region Add context menu to registry
+
+ RegistryKey apkToolGUIFolderShell = Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey("APKToolGUI", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ apkToolGUIFolderShell.SetValue("Icon", executablePath);
+ apkToolGUIFolderShell.SetValue("MUIVerb", "APKToolGUI");
+ apkToolGUIFolderShell.SetValue("SubCommands", "APKToolGUI.Build");
+ apkToolGUIFolderShell.Close();
+
+ Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(".apk", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", executablePath, RegistryValueKind.ExpandString);
+ RegistryKey shellAPK = Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.CreateSubKey).CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("APKToolGUI", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ shellAPK.SetValue("Icon", "\"" + executablePath + "\"");
+ shellAPK.SetValue("MUIVerb", "APKToolGUI");
+ shellAPK.SetValue("SubCommands", "APKToolGUI.Decompile;APKToolGUI.InstallFramework;APKToolGUI.Sign");
+ shellAPK.Close();
+
+ #endregion
+
+ #region Add command to registry
+
+ RegistryKey shell;
+ if (Environment.Is64BitOperatingSystem)
+ shell = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
+ else
+ shell = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
+
+ RegistryKey decompile = shell.CreateSubKey("APKToolGUI.Decompile", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ decompile.SetValue("", Language.Decode, RegistryValueKind.String);
+ decompile.SetValue("Icon", executablePath, RegistryValueKind.String);
+ decompile.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"d\" \"%1\"");
+ decompile.Close();
+
+ RegistryKey installFramework = shell.CreateSubKey("APKToolGUI.InstallFramework", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ installFramework.SetValue("", Language.InstallFramework, RegistryValueKind.String);
+ installFramework.SetValue("Icon", executablePath, RegistryValueKind.String);
+ installFramework.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"if\" \"%1\"");
+ installFramework.Close();
+
+ RegistryKey sign = shell.CreateSubKey("APKToolGUI.Sign", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ sign.SetValue("", Language.Sign, RegistryValueKind.String);
+ sign.SetValue("Icon", executablePath, RegistryValueKind.String);
+ sign.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"sign\" \"%1\"");
+ sign.Close();
+
+ RegistryKey build = shell.CreateSubKey("APKToolGUI.Build", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ build.SetValue("", Language.Build, RegistryValueKind.String);
+ build.SetValue("Icon", executablePath, RegistryValueKind.String);
+ build.CreateSubKey("command").SetValue("", "\"" + executablePath + "\" \"b\" \"%1\"", RegistryValueKind.String);
+ build.Close();
+
+ shell.Close();
+
+ #endregion
+ }
+ catch (Exception exc)
+ {
+ return new Status(false, exc.Message);
+ }
+
+ return new Status(true, "Done!");
+ }
+
+ private static Status CreateXP(string executablePath)
+ {
+ try
+ {
+ RegistryKey folderShell = Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey("APKToolGUI.Build", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ folderShell.SetValue("Icon", executablePath);
+ folderShell.SetValue("MUIVerb", Language.Build);
+ folderShell.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"b\" \"%1\"", RegistryValueKind.String);
+ folderShell.Close();
+
+ RegistryKey apk = Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(".apk", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ apk.CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", executablePath, RegistryValueKind.ExpandString);
+ RegistryKey shell = apk.CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree);
+
+ RegistryKey decode = shell.CreateSubKey("APKToolGUI.Decode", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ RegistryKey installFramework = shell.CreateSubKey("APKToolGUI.InstallFramework", RegistryKeyPermissionCheck.ReadWriteSubTree);
+ RegistryKey sign = shell.CreateSubKey("APKToolGUI.Sign", RegistryKeyPermissionCheck.ReadWriteSubTree);
+
+ decode.SetValue("Icon", executablePath);
+ decode.SetValue("MUIVerb", Language.Decode);
+ decode.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"d\" \"%1\"");
+ decode.Close();
+
+ installFramework.SetValue("Icon", executablePath);
+ installFramework.SetValue("MUIVerb", Language.InstallFramework);
+ installFramework.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"if\" \"%1\"");
+ installFramework.Close();
+
+ sign.SetValue("Icon", executablePath);
+ sign.SetValue("MUIVerb", Language.Sign);
+ sign.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"sign\" \"%1\"");
+ sign.Close();
+
+ shell.Close();
+ apk.Close();
+ }
+ catch (Exception exc)
+ {
+ return new Status(false, exc.Message);
+ }
+
+ return new Status(true, "Done!");
+ }
+
+ private static Status RemoveVistaAndLater()
+ {
+ try
+ {
+ Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI", false);
+
+ Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("DefaultIcon", false);
+
+ Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKey("APKToolGUI", false);
+
+ RegistryKey shell;
+ if (Environment.Is64BitOperatingSystem)
+ shell = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
+ else
+ shell = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
+ shell.DeleteSubKeyTree("APKToolGUI.Decompile", false);
+ shell.DeleteSubKeyTree("APKToolGUI.InstallFramework", false);
+ shell.DeleteSubKeyTree("APKToolGUI.Sign", false);
+ shell.DeleteSubKeyTree("APKToolGUI.Build", false);
+ shell.Close();
+ }
+ catch (Exception exc)
+ {
+ return new Status(false, exc.Message);
+ }
+
+ return new Status(true, "Done!");
+ }
+
+ private static Status RemoveXP()
+ {
+ try
+ {
+ Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.Build", false);
+
+ Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("DefaultIcon", false);
+
+ Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.Decode", false);
+ Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.InstallFramework", false);
+ Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.Sign", false);
+ }
+ catch (Exception exc)
+ {
+ return new Status(false, exc.Message);
+ }
+
+ return new Status(true, "Done!");
+ }
+
+ public class Status
+ {
+ public Status(bool result, string message)
+ {
+ Result = result;
+ Message = message;
+ }
+ public bool Result { get; set; }
+ public String Message { get; set; }
+ }
+
+ public enum Action
+ {
+ Create,
+ Remove
+ }
+ }
+}
\ No newline at end of file
diff --git a/APKToolGUI/FormAboutBox.Designer.cs b/APKToolGUI/FormAboutBox.Designer.cs
new file mode 100644
index 0000000..956f238
--- /dev/null
+++ b/APKToolGUI/FormAboutBox.Designer.cs
@@ -0,0 +1,128 @@
+namespace APKToolGUI
+{
+ partial class FormAboutBox
+ {
+ ///
+ /// Требуется переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором форм Windows
+
+ ///
+ /// Обязательный метод для поддержки конструктора - не изменяйте
+ /// содержимое данного метода при помощи редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAboutBox));
+ this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+ this.logoPictureBox = new System.Windows.Forms.PictureBox();
+ this.labelProductName = new System.Windows.Forms.Label();
+ this.labelVersion = new System.Windows.Forms.Label();
+ this.labelCopyright = new System.Windows.Forms.Label();
+ this.okButton = new System.Windows.Forms.Button();
+ this.textBoxDescription = new System.Windows.Forms.TextBox();
+ this.linkLabel1 = new System.Windows.Forms.LinkLabel();
+ this.tableLayoutPanel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel
+ //
+ resources.ApplyResources(this.tableLayoutPanel, "tableLayoutPanel");
+ this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
+ this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
+ this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
+ this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
+ this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
+ this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
+ this.tableLayoutPanel.Controls.Add(this.linkLabel1, 1, 3);
+ this.tableLayoutPanel.Name = "tableLayoutPanel";
+ //
+ // logoPictureBox
+ //
+ resources.ApplyResources(this.logoPictureBox, "logoPictureBox");
+ this.logoPictureBox.Image = global::APKToolGUI.Properties.Resources.android;
+ this.logoPictureBox.Name = "logoPictureBox";
+ this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
+ this.logoPictureBox.TabStop = false;
+ //
+ // labelProductName
+ //
+ resources.ApplyResources(this.labelProductName, "labelProductName");
+ this.labelProductName.Name = "labelProductName";
+ //
+ // labelVersion
+ //
+ resources.ApplyResources(this.labelVersion, "labelVersion");
+ this.labelVersion.Name = "labelVersion";
+ //
+ // labelCopyright
+ //
+ resources.ApplyResources(this.labelCopyright, "labelCopyright");
+ this.labelCopyright.Name = "labelCopyright";
+ //
+ // okButton
+ //
+ resources.ApplyResources(this.okButton, "okButton");
+ this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.okButton.Name = "okButton";
+ //
+ // textBoxDescription
+ //
+ resources.ApplyResources(this.textBoxDescription, "textBoxDescription");
+ this.textBoxDescription.Name = "textBoxDescription";
+ this.textBoxDescription.ReadOnly = true;
+ this.textBoxDescription.TabStop = false;
+ //
+ // linkLabel1
+ //
+ resources.ApplyResources(this.linkLabel1, "linkLabel1");
+ this.linkLabel1.Name = "linkLabel1";
+ this.linkLabel1.TabStop = true;
+ this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
+ //
+ // FormAboutBox
+ //
+ this.AcceptButton = this.okButton;
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.tableLayoutPanel);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "FormAboutBox";
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.tableLayoutPanel.ResumeLayout(false);
+ this.tableLayoutPanel.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
+ private System.Windows.Forms.PictureBox logoPictureBox;
+ private System.Windows.Forms.Label labelProductName;
+ private System.Windows.Forms.Label labelVersion;
+ private System.Windows.Forms.Label labelCopyright;
+ private System.Windows.Forms.TextBox textBoxDescription;
+ private System.Windows.Forms.Button okButton;
+ private System.Windows.Forms.LinkLabel linkLabel1;
+ }
+}
diff --git a/APKToolGUI/FormAboutBox.cs b/APKToolGUI/FormAboutBox.cs
new file mode 100644
index 0000000..07c6509
--- /dev/null
+++ b/APKToolGUI/FormAboutBox.cs
@@ -0,0 +1,109 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Linq;
+using System.Reflection;
+using System.Windows.Forms;
+
+namespace APKToolGUI
+{
+ partial class FormAboutBox : Form
+ {
+ public FormAboutBox()
+ {
+ InitializeComponent();
+ this.Text = String.Format("{0} {1}", this.Text, AssemblyTitle);
+ this.labelProductName.Text = AssemblyProduct;
+ this.labelVersion.Text = String.Format("{0} {1}", labelVersion.Text, AssemblyVersion);
+ this.labelCopyright.Text = String.Format("{0} {1}", this.labelCopyright.Text, AssemblyCopyright);// AssemblyCopyright;
+ //this.labelCompanyName.Text = AssemblyCompany;
+ this.textBoxDescription.Text = AssemblyDescription;
+ }
+
+ #region Методы доступа к атрибутам сборки
+
+ public string AssemblyTitle
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
+ if (attributes.Length > 0)
+ {
+ AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
+ if (titleAttribute.Title != "")
+ {
+ return titleAttribute.Title;
+ }
+ }
+ return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
+ }
+ }
+
+ public string AssemblyVersion
+ {
+ get
+ {
+ return Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ }
+ }
+
+ public string AssemblyDescription
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyDescriptionAttribute)attributes[0]).Description;
+ }
+ }
+
+ public string AssemblyProduct
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyProductAttribute)attributes[0]).Product;
+ }
+ }
+
+ public string AssemblyCopyright
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
+ }
+ }
+
+ public string AssemblyCompany
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyCompanyAttribute)attributes[0]).Company;
+ }
+ }
+ #endregion
+
+ private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ System.Diagnostics.Process.Start("http://4pda.ru/forum/index.php?showtopic=452034");
+ }
+ }
+}
diff --git a/APKToolGUI/FormAboutBox.resx b/APKToolGUI/FormAboutBox.resx
new file mode 100644
index 0000000..8679789
--- /dev/null
+++ b/APKToolGUI/FormAboutBox.resx
@@ -0,0 +1,405 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 490, 265
+
+
+ &ОК
+
+
+ tableLayoutPanel
+
+
+
+ Fill
+
+
+ 2
+
+
+ FormAboutBox
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 256, 26
+
+
+ 256, 26
+
+
+ 6, 3, 3, 3
+
+
+ Center
+
+
+
+ 21
+
+
+ labelProductName
+
+
+ 6, 0, 3, 0
+
+
+ 6
+
+
+ 256, 26
+
+
+ CenterParent
+
+
+ Version
+
+
+ textBoxDescription
+
+
+ 0
+
+
+ MiddleLeft
+
+
+ 219, 259
+
+
+ 12
+
+
+ tableLayoutPanel
+
+
+ Bottom, Right
+
+
+ Both
+
+
+ linkLabel1
+
+
+ labelVersion
+
+
+ tableLayoutPanel
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 0
+
+
+ 6, 13
+
+
+ 2
+
+
+ 256, 126
+
+
+ Fill
+
+
+ MiddleLeft
+
+
+ 75, 23
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="logoPictureBox" Row="0" RowSpan="6" Column="0" ColumnSpan="1" /><Control Name="labelProductName" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelVersion" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelCopyright" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="okButton" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxDescription" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="linkLabel1" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,46,0039,Percent,53,9961" /><Rows Styles="Percent,10,Percent,10,Percent,10,Percent,10,Percent,50,Percent,10" /></TableLayoutSettings>
+
+
+ 0
+
+
+ labelCopyright
+
+
+ 412, 239
+
+
+ $this
+
+
+ tableLayoutPanel
+
+
+ okButton
+
+
+ Fill
+
+
+ 25
+
+
+ Description
+
+
+ 19
+
+
+ 231, 78
+
+
+ 0
+
+
+ 6, 0, 3, 0
+
+
+ tableLayoutPanel
+
+
+ 256, 26
+
+
+ Product Name
+
+
+ 231, 107
+
+
+ MiddleLeft
+
+
+ 23
+
+
+ 4
+
+
+ tableLayoutPanel
+
+
+ Fill
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 231, 0
+
+
+ 231, 26
+
+
+ 5
+
+
+ Fill
+
+
+ 1
+
+
+ 6, 0, 3, 0
+
+
+ 6
+
+
+ logoPictureBox
+
+
+ 231, 52
+
+
+ CenterImage
+
+
+ 9, 9
+
+
+ tableLayoutPanel
+
+
+ Fill
+
+
+ 3, 3
+
+
+ 9, 9, 9, 9
+
+
+ Copyright
+
+
+ Page
+
+
+ About
+
+
+ System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ MiddleLeft
+
+
+ 508, 283
+
+
+ System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Fill
+
+
+ 6, 0, 3, 0
+
+
+ tableLayoutPanel
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 24
+
+
+ True
+
+
+ 3
+
+
+ True
+
+
\ No newline at end of file
diff --git a/APKToolGUI/FormAboutBox.ru.resx b/APKToolGUI/FormAboutBox.ru.resx
new file mode 100644
index 0000000..3fed6d4
--- /dev/null
+++ b/APKToolGUI/FormAboutBox.ru.resx
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Название продукта
+
+
+ Версия
+
+
+ Авторские права
+
+
+ Сайт
+
+
+ Описание
+
+
+ О программе
+
+
\ No newline at end of file
diff --git a/APKToolGUI/FormBuild.Designer.cs b/APKToolGUI/FormBuild.Designer.cs
new file mode 100644
index 0000000..35c82ad
--- /dev/null
+++ b/APKToolGUI/FormBuild.Designer.cs
@@ -0,0 +1,381 @@
+namespace APKToolGUI
+{
+ partial class FormBuild
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.toolStripStatusLabelStateImage = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripStatusLabelStateText = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
+ this.groupBoxOptions = new System.Windows.Forms.GroupBox();
+ this.textBoxFrameworkPath = new System.Windows.Forms.TextBox();
+ this.buttonBrowseFrameworkPath = new System.Windows.Forms.Button();
+ this.checkBoxUseFramework = new System.Windows.Forms.CheckBox();
+ this.checkBoxCopyOriginal = new System.Windows.Forms.CheckBox();
+ this.textBoxAaptPath = new System.Windows.Forms.TextBox();
+ this.buttonBrowseAaptPath = new System.Windows.Forms.Button();
+ this.checkBoxCustomAapt = new System.Windows.Forms.CheckBox();
+ this.checkBoxForceAll = new System.Windows.Forms.CheckBox();
+ this.dataGridView1 = new System.Windows.Forms.DataGridView();
+ this.ColumnImage = new System.Windows.Forms.DataGridViewImageColumn();
+ this.ColumnTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.ColumnMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.buttonStart = new System.Windows.Forms.Button();
+ this.openFileDialogBrowseAapt = new System.Windows.Forms.OpenFileDialog();
+ this.saveFileDialogApk = new System.Windows.Forms.SaveFileDialog();
+ this.folderBrowserDialogFrameworks = new System.Windows.Forms.FolderBrowserDialog();
+ this.textBoxOutputApkPath = new System.Windows.Forms.TextBox();
+ this.buttonBrowseOutputApk = new System.Windows.Forms.Button();
+ this.statusStrip1.SuspendLayout();
+ this.groupBoxOptions.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripStatusLabelStateImage,
+ this.toolStripStatusLabelStateText,
+ this.toolStripProgressBar1});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 360);
+ this.statusStrip1.Margin = new System.Windows.Forms.Padding(0, 9, 0, 0);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(570, 22);
+ this.statusStrip1.TabIndex = 19;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // toolStripStatusLabelStateImage
+ //
+ this.toolStripStatusLabelStateImage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripStatusLabelStateImage.Name = "toolStripStatusLabelStateImage";
+ this.toolStripStatusLabelStateImage.Size = new System.Drawing.Size(0, 17);
+ this.toolStripStatusLabelStateImage.Text = "toolStripStatusLabel1";
+ //
+ // toolStripStatusLabelStateText
+ //
+ this.toolStripStatusLabelStateText.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripStatusLabelStateText.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.toolStripStatusLabelStateText.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.toolStripStatusLabelStateText.Name = "toolStripStatusLabelStateText";
+ this.toolStripStatusLabelStateText.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
+ this.toolStripStatusLabelStateText.Size = new System.Drawing.Size(453, 17);
+ this.toolStripStatusLabelStateText.Spring = true;
+ this.toolStripStatusLabelStateText.Text = "Done";
+ this.toolStripStatusLabelStateText.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // toolStripProgressBar1
+ //
+ this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.toolStripProgressBar1.AutoSize = false;
+ this.toolStripProgressBar1.MarqueeAnimationSpeed = 50;
+ this.toolStripProgressBar1.Name = "toolStripProgressBar1";
+ this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
+ this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
+ //
+ // groupBoxOptions
+ //
+ this.groupBoxOptions.Controls.Add(this.textBoxFrameworkPath);
+ this.groupBoxOptions.Controls.Add(this.buttonBrowseFrameworkPath);
+ this.groupBoxOptions.Controls.Add(this.checkBoxUseFramework);
+ this.groupBoxOptions.Controls.Add(this.checkBoxCopyOriginal);
+ this.groupBoxOptions.Controls.Add(this.textBoxAaptPath);
+ this.groupBoxOptions.Controls.Add(this.buttonBrowseAaptPath);
+ this.groupBoxOptions.Controls.Add(this.checkBoxCustomAapt);
+ this.groupBoxOptions.Controls.Add(this.checkBoxForceAll);
+ this.groupBoxOptions.Location = new System.Drawing.Point(12, 200);
+ this.groupBoxOptions.Name = "groupBoxOptions";
+ this.groupBoxOptions.Size = new System.Drawing.Size(546, 118);
+ this.groupBoxOptions.TabIndex = 28;
+ this.groupBoxOptions.TabStop = false;
+ this.groupBoxOptions.Text = "Options";
+ //
+ // textBoxFrameworkPath
+ //
+ this.textBoxFrameworkPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.textBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "BUILD_FrameworkPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBoxFrameworkPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_UseFramework;
+ this.textBoxFrameworkPath.Location = new System.Drawing.Point(230, 90);
+ this.textBoxFrameworkPath.Name = "textBoxFrameworkPath";
+ this.textBoxFrameworkPath.Size = new System.Drawing.Size(280, 22);
+ this.textBoxFrameworkPath.TabIndex = 17;
+ this.textBoxFrameworkPath.Text = global::APKToolGUI.Properties.Settings.Default.BUILD_FrameworkPath;
+ //
+ // buttonBrowseFrameworkPath
+ //
+ this.buttonBrowseFrameworkPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonBrowseFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.buttonBrowseFrameworkPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_UseFramework;
+ this.buttonBrowseFrameworkPath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.buttonBrowseFrameworkPath.Location = new System.Drawing.Point(512, 89);
+ this.buttonBrowseFrameworkPath.Name = "buttonBrowseFrameworkPath";
+ this.buttonBrowseFrameworkPath.Size = new System.Drawing.Size(28, 24);
+ this.buttonBrowseFrameworkPath.TabIndex = 18;
+ this.buttonBrowseFrameworkPath.Text = "...";
+ this.buttonBrowseFrameworkPath.UseVisualStyleBackColor = true;
+ this.buttonBrowseFrameworkPath.Click += new System.EventHandler(this.buttonBrowseFrameworkPath_Click);
+ //
+ // checkBoxUseFramework
+ //
+ this.checkBoxUseFramework.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_UseFramework;
+ this.checkBoxUseFramework.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxUseFramework.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxUseFramework.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxUseFramework.Location = new System.Drawing.Point(6, 91);
+ this.checkBoxUseFramework.Name = "checkBoxUseFramework";
+ this.checkBoxUseFramework.Size = new System.Drawing.Size(218, 18);
+ this.checkBoxUseFramework.TabIndex = 16;
+ this.checkBoxUseFramework.Text = "Uses framework files located in";
+ this.checkBoxUseFramework.UseVisualStyleBackColor = true;
+ //
+ // checkBoxCopyOriginal
+ //
+ this.checkBoxCopyOriginal.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkBoxCopyOriginal.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_CopyOriginal;
+ this.checkBoxCopyOriginal.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_CopyOriginal", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxCopyOriginal.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxCopyOriginal.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxCopyOriginal.Location = new System.Drawing.Point(6, 43);
+ this.checkBoxCopyOriginal.Name = "checkBoxCopyOriginal";
+ this.checkBoxCopyOriginal.Size = new System.Drawing.Size(534, 18);
+ this.checkBoxCopyOriginal.TabIndex = 15;
+ this.checkBoxCopyOriginal.Text = "Copies original AndroidManifest.xml and META-INF folder into built apk.";
+ this.checkBoxCopyOriginal.UseVisualStyleBackColor = true;
+ //
+ // textBoxAaptPath
+ //
+ this.textBoxAaptPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.textBoxAaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_CustomAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBoxAaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "BUILD_AaptPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBoxAaptPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_CustomAapt;
+ this.textBoxAaptPath.Location = new System.Drawing.Point(230, 66);
+ this.textBoxAaptPath.Name = "textBoxAaptPath";
+ this.textBoxAaptPath.Size = new System.Drawing.Size(280, 22);
+ this.textBoxAaptPath.TabIndex = 13;
+ this.textBoxAaptPath.Text = global::APKToolGUI.Properties.Settings.Default.BUILD_AaptPath;
+ //
+ // buttonBrowseAaptPath
+ //
+ this.buttonBrowseAaptPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonBrowseAaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_CustomAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.buttonBrowseAaptPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_CustomAapt;
+ this.buttonBrowseAaptPath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.buttonBrowseAaptPath.Location = new System.Drawing.Point(512, 65);
+ this.buttonBrowseAaptPath.Name = "buttonBrowseAaptPath";
+ this.buttonBrowseAaptPath.Size = new System.Drawing.Size(28, 24);
+ this.buttonBrowseAaptPath.TabIndex = 14;
+ this.buttonBrowseAaptPath.Text = "...";
+ this.buttonBrowseAaptPath.UseVisualStyleBackColor = true;
+ this.buttonBrowseAaptPath.Click += new System.EventHandler(this.buttonBsowseAaptPath_Click);
+ //
+ // checkBoxCustomAapt
+ //
+ this.checkBoxCustomAapt.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_CustomAapt;
+ this.checkBoxCustomAapt.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_CustomAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxCustomAapt.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxCustomAapt.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxCustomAapt.Location = new System.Drawing.Point(6, 67);
+ this.checkBoxCustomAapt.Name = "checkBoxCustomAapt";
+ this.checkBoxCustomAapt.Size = new System.Drawing.Size(218, 18);
+ this.checkBoxCustomAapt.TabIndex = 12;
+ this.checkBoxCustomAapt.Text = "Uses aapt.exe located in";
+ this.checkBoxCustomAapt.UseVisualStyleBackColor = true;
+ //
+ // checkBoxForceAll
+ //
+ this.checkBoxForceAll.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkBoxForceAll.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_ForceAll;
+ this.checkBoxForceAll.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_ForceAll", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxForceAll.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxForceAll.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxForceAll.Location = new System.Drawing.Point(6, 19);
+ this.checkBoxForceAll.Name = "checkBoxForceAll";
+ this.checkBoxForceAll.Size = new System.Drawing.Size(534, 18);
+ this.checkBoxForceAll.TabIndex = 0;
+ this.checkBoxForceAll.Text = "Skip changes detection and build all files";
+ this.checkBoxForceAll.UseVisualStyleBackColor = true;
+ //
+ // dataGridView1
+ //
+ this.dataGridView1.AllowUserToAddRows = false;
+ this.dataGridView1.AllowUserToDeleteRows = false;
+ this.dataGridView1.AllowUserToResizeRows = false;
+ this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Window;
+ this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
+ this.dataGridView1.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
+ this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
+ this.dataGridView1.ColumnHeadersHeight = 24;
+ this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+ this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.ColumnImage,
+ this.ColumnTime,
+ this.ColumnMessage});
+ this.dataGridView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
+ this.dataGridView1.Location = new System.Drawing.Point(12, 12);
+ this.dataGridView1.Name = "dataGridView1";
+ this.dataGridView1.ReadOnly = true;
+ this.dataGridView1.RowHeadersVisible = false;
+ this.dataGridView1.RowTemplate.Height = 19;
+ this.dataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.dataGridView1.ShowEditingIcon = false;
+ this.dataGridView1.Size = new System.Drawing.Size(546, 182);
+ this.dataGridView1.TabIndex = 26;
+ //
+ // ColumnImage
+ //
+ dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+ dataGridViewCellStyle2.NullValue = null;
+ this.ColumnImage.DefaultCellStyle = dataGridViewCellStyle2;
+ this.ColumnImage.Frozen = true;
+ this.ColumnImage.HeaderText = "";
+ this.ColumnImage.Name = "ColumnImage";
+ this.ColumnImage.ReadOnly = true;
+ this.ColumnImage.Resizable = System.Windows.Forms.DataGridViewTriState.False;
+ this.ColumnImage.Width = 20;
+ //
+ // ColumnTime
+ //
+ this.ColumnTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
+ this.ColumnTime.Frozen = true;
+ this.ColumnTime.HeaderText = "Time";
+ this.ColumnTime.Name = "ColumnTime";
+ this.ColumnTime.ReadOnly = true;
+ this.ColumnTime.Width = 55;
+ //
+ // ColumnMessage
+ //
+ this.ColumnMessage.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+ this.ColumnMessage.HeaderText = "Message";
+ this.ColumnMessage.Name = "ColumnMessage";
+ this.ColumnMessage.ReadOnly = true;
+ //
+ // buttonStart
+ //
+ this.buttonStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonStart.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.buttonStart.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.buttonStart.Location = new System.Drawing.Point(438, 325);
+ this.buttonStart.Name = "buttonStart";
+ this.buttonStart.Size = new System.Drawing.Size(120, 24);
+ this.buttonStart.TabIndex = 27;
+ this.buttonStart.Text = "Build";
+ this.buttonStart.UseVisualStyleBackColor = true;
+ this.buttonStart.Click += new System.EventHandler(this.buttonStart_Click);
+ //
+ // openFileDialogBrowseAapt
+ //
+ this.openFileDialogBrowseAapt.Filter = "*.exe|*.exe";
+ //
+ // saveFileDialogApk
+ //
+ this.saveFileDialogApk.DefaultExt = "apk";
+ this.saveFileDialogApk.Filter = "Android App|*.apk";
+ //
+ // folderBrowserDialogFrameworks
+ //
+ this.folderBrowserDialogFrameworks.ShowNewFolderButton = false;
+ //
+ // textBoxOutputApkPath
+ //
+ this.textBoxOutputApkPath.Location = new System.Drawing.Point(12, 326);
+ this.textBoxOutputApkPath.Name = "textBoxOutputApkPath";
+ this.textBoxOutputApkPath.Size = new System.Drawing.Size(390, 22);
+ this.textBoxOutputApkPath.TabIndex = 29;
+ //
+ // buttonBrowseOutputApk
+ //
+ this.buttonBrowseOutputApk.Location = new System.Drawing.Point(404, 325);
+ this.buttonBrowseOutputApk.Name = "buttonBrowseOutputApk";
+ this.buttonBrowseOutputApk.Size = new System.Drawing.Size(28, 24);
+ this.buttonBrowseOutputApk.TabIndex = 30;
+ this.buttonBrowseOutputApk.Text = "...";
+ this.buttonBrowseOutputApk.UseVisualStyleBackColor = true;
+ this.buttonBrowseOutputApk.Click += new System.EventHandler(this.buttonBrowseOutputApk_Click);
+ //
+ // FormBuild
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(570, 382);
+ this.Controls.Add(this.buttonBrowseOutputApk);
+ this.Controls.Add(this.textBoxOutputApkPath);
+ this.Controls.Add(this.groupBoxOptions);
+ this.Controls.Add(this.dataGridView1);
+ this.Controls.Add(this.buttonStart);
+ this.Controls.Add(this.statusStrip1);
+ this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.Name = "FormBuild";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "FormBuild";
+ this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormBuild_FormClosed);
+ this.Load += new System.EventHandler(this.FormBuild_Load);
+ this.Shown += new System.EventHandler(this.FormBuild_Shown);
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.groupBoxOptions.ResumeLayout(false);
+ this.groupBoxOptions.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateImage;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateText;
+ private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
+ private System.Windows.Forms.GroupBox groupBoxOptions;
+ private System.Windows.Forms.TextBox textBoxAaptPath;
+ private System.Windows.Forms.Button buttonBrowseAaptPath;
+ private System.Windows.Forms.CheckBox checkBoxCustomAapt;
+ private System.Windows.Forms.CheckBox checkBoxForceAll;
+ private System.Windows.Forms.DataGridView dataGridView1;
+ private System.Windows.Forms.DataGridViewImageColumn ColumnImage;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ColumnTime;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage;
+ private System.Windows.Forms.Button buttonStart;
+ private System.Windows.Forms.OpenFileDialog openFileDialogBrowseAapt;
+ private System.Windows.Forms.SaveFileDialog saveFileDialogApk;
+ private System.Windows.Forms.CheckBox checkBoxCopyOriginal;
+ private System.Windows.Forms.TextBox textBoxFrameworkPath;
+ private System.Windows.Forms.Button buttonBrowseFrameworkPath;
+ private System.Windows.Forms.CheckBox checkBoxUseFramework;
+ private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogFrameworks;
+ private System.Windows.Forms.TextBox textBoxOutputApkPath;
+ private System.Windows.Forms.Button buttonBrowseOutputApk;
+ }
+}
\ No newline at end of file
diff --git a/APKToolGUI/FormBuild.cs b/APKToolGUI/FormBuild.cs
new file mode 100644
index 0000000..4d3b4c5
--- /dev/null
+++ b/APKToolGUI/FormBuild.cs
@@ -0,0 +1,226 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace APKToolGUI
+{
+ public partial class FormBuild : Form
+ {
+ public FormBuild(string[] args)
+ {
+ Program.SetLanguage();
+ InitializeComponent();
+ this.Icon = Properties.Resources.android_thin;
+ this.Text = Application.ProductName;
+ projectDir = args[1];
+ }
+
+ private string projectDir;
+ private Apktool apktool;
+ private Apktool apktoolSync;
+
+ bool StartButtonEnabled
+ {
+ set
+ {
+ if (buttonStart.InvokeRequired)
+ buttonStart.BeginInvoke(new Action(() =>
+ {
+ buttonStart.Enabled = value;
+ }));
+ else
+ buttonStart.Enabled = value;
+ }
+ }
+ ProgressBarStyle progressBarStyle
+ {
+ set
+ {
+ if (toolStripProgressBar1.GetCurrentParent().InvokeRequired)
+ {
+ toolStripProgressBar1.GetCurrentParent().BeginInvoke(new Action(() =>
+ {
+ toolStripProgressBar1.Style = value;
+ }));
+ }
+ else
+ toolStripProgressBar1.Style = value;
+ }
+ }
+
+ private void ToLog(string time, string message, Image statusImage, Color backColor)
+ {
+ if (dataGridView1.InvokeRequired)
+ dataGridView1.BeginInvoke(new Action(() =>
+ {
+ int i = dataGridView1.Rows.Add(statusImage, time, message);
+ dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
+ dataGridView1.FirstDisplayedScrollingRowIndex = i;
+ }));
+ else
+ {
+ int i = dataGridView1.Rows.Add(statusImage, time, message);
+ dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
+ dataGridView1.FirstDisplayedScrollingRowIndex = i;
+ }
+ }
+
+ private void ToLog(ApktoolEventType eventType, String message)
+ {
+ switch (eventType)
+ {
+ case ApktoolEventType.Information:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.Window));
+ //ToStatus(result.Message, Properties.Resources.info);
+ break;
+ case ApktoolEventType.Error:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
+ //ToStatus(result.Message, Properties.Resources.error);
+ break;
+ case ApktoolEventType.Warning:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.warning, Color.FromKnownColor(KnownColor.LightYellow));
+ //ToStatus(result.Message, Properties.Resources.warning);
+ break;
+ default:
+ break;
+ }
+ }
+
+ #region Form event handlers
+
+ private void FormBuild_Load(object sender, EventArgs e)
+ {
+ if (String.IsNullOrEmpty(Properties.Settings.Default.JavaExe))
+ {
+ MessageBox.Show("Java location is not specified in the settings. Please, configure program first.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ this.Close();
+ }
+ if (!System.IO.File.Exists(Program.APKTOOL_PATH))
+ {
+ MessageBox.Show(String.Format("apktool не найден в каталоге назначения '{0}'.", Program.APKTOOL_PATH), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ this.Close();
+ }
+
+ apktoolSync = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
+ apktool = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
+ apktool.ApktoolOutputDataRecieved += apktool_ApktoolOutputDataRecieved;
+ apktool.ApktoolErrorDataRecieved += apktool_ApktoolErrorDataRecieved;
+ apktool.BuildCompleted += apktool_BuildCompleted;
+ }
+
+ private void FormBuild_Shown(object sender, EventArgs e)
+ {
+ this.Update();
+
+ textBoxOutputApkPath.Text = String.Format("{0}\\{1}_{2}.apk", System.IO.Path.GetDirectoryName(projectDir), projectDir.Replace(System.IO.Path.GetDirectoryName(projectDir) + "\\", String.Empty), DateTime.Now.ToString("yyyyMMdd_HH-mm-ss"), System.IO.Path.GetExtension(projectDir));
+
+ Version javaVersion = apktool.GetJavaVersion();
+ if (javaVersion != null)
+ {
+ ToLog(ApktoolEventType.Information, String.Format("Java version \"{0} Update {1}\"", javaVersion.Minor, javaVersion.Revision));
+ string apktoolVersion = apktool.GetVersion();
+ if (!String.IsNullOrWhiteSpace(apktoolVersion))
+ ToLog(ApktoolEventType.Information, String.Format("Apktool version \"{0}\"", apktoolVersion));
+ else
+ ToLog(ApktoolEventType.Error, "Can't detect apktool version.");
+ }
+ else
+ MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ private void FormBuild_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ Properties.Settings.Default.Save();
+ }
+
+ #endregion
+
+ #region apktool event handlers
+ void apktool_ApktoolOutputDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
+ {
+ ToLog(e.EventType, e.Message);
+ }
+
+ void apktool_ApktoolErrorDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
+ {
+ ToLog(e.EventType, e.Message);
+ }
+
+ void apktool_BuildCompleted(object sender, ApktoolEventCompletedEventArgs e)
+ {
+ if (e.ExitCode == 0)
+ ToLog(ApktoolEventType.Information, "Сборка успешно завршена.");
+ else
+ ToLog(ApktoolEventType.Warning, String.Format("Внимание! При сборке приложения произошла ошибка. Код выхода: '{0}'.", e.ExitCode));
+ StartButtonEnabled = true;
+ progressBarStyle = ProgressBarStyle.Continuous;
+ }
+ #endregion
+
+ private void buttonBsowseAaptPath_Click(object sender, EventArgs e)
+ {
+ if (openFileDialogBrowseAapt.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBoxAaptPath.Text = openFileDialogBrowseAapt.FileName;
+ }
+
+ private void buttonBrowseFrameworkPath_Click(object sender, EventArgs e)
+ {
+ if (folderBrowserDialogFrameworks.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBoxFrameworkPath.Text = folderBrowserDialogFrameworks.SelectedPath;
+ }
+
+ private void buttonStart_Click(object sender, EventArgs e)
+ {
+ BuildOptions options = new BuildOptions(projectDir);
+ options.ForceAll = checkBoxForceAll.Checked;
+ options.CopyOriginal = checkBoxCopyOriginal.Checked;
+ if (checkBoxCustomAapt.Checked)
+ {
+ if (System.IO.File.Exists(textBoxAaptPath.Text))
+ options.AaptPath = textBoxAaptPath.Text;
+ else
+ {
+ MessageBox.Show("Указанного файла aapt не существует.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+ }
+ if (checkBoxUseFramework.Checked)
+ options.FrameworkPath = textBoxFrameworkPath.Text;
+ options.AppPath = textBoxOutputApkPath.Text;
+
+ bool started = false;
+#if !DEBUG
+ try
+ {
+#endif
+ started = apktool.Build(options);
+#if !DEBUG
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+#endif
+ if (started)
+ {
+ progressBarStyle = ProgressBarStyle.Marquee;
+ StartButtonEnabled = false;
+ }
+
+ }
+
+ private void buttonBrowseOutputApk_Click(object sender, EventArgs e)
+ {
+ saveFileDialogApk.InitialDirectory = System.IO.Path.GetDirectoryName(projectDir);
+ string foldername = projectDir.Replace(System.IO.Path.GetDirectoryName(projectDir) + "\\", String.Empty);
+ saveFileDialogApk.FileName = String.Format("{0}_{1}", foldername, DateTime.Now.ToString("yyyyMMdd_HH-mm-ss"));
+ if (saveFileDialogApk.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBoxOutputApkPath.Text = saveFileDialogApk.FileName;
+ }
+ }
+}
diff --git a/APKToolGUI/FormBuild.resx b/APKToolGUI/FormBuild.resx
new file mode 100644
index 0000000..4f10a29
--- /dev/null
+++ b/APKToolGUI/FormBuild.resx
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 3, 3
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ 119, 3
+
+
+ 317, 3
+
+
+ 468, 3
+
+
+ 29
+
+
\ No newline at end of file
diff --git a/APKToolGUI/FormDecode.Designer.cs b/APKToolGUI/FormDecode.Designer.cs
new file mode 100644
index 0000000..0eeaff2
--- /dev/null
+++ b/APKToolGUI/FormDecode.Designer.cs
@@ -0,0 +1,383 @@
+namespace APKToolGUI
+{
+ partial class FormDecode
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormDecode));
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.toolStripStatusLabelStateImage = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripStatusLabelStateText = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
+ this.dataGridView1 = new System.Windows.Forms.DataGridView();
+ this.ColumnImage = new System.Windows.Forms.DataGridViewImageColumn();
+ this.ColumnTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.ColumnMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.buttonStart = new System.Windows.Forms.Button();
+ this.groupBoxOptions = new System.Windows.Forms.GroupBox();
+ this.checkBoxMatchOriginal = new System.Windows.Forms.CheckBox();
+ this.checkBoxKeepBrokenResource = new System.Windows.Forms.CheckBox();
+ this.textBoxFrameworkPath = new System.Windows.Forms.TextBox();
+ this.buttonFramePath = new System.Windows.Forms.Button();
+ this.checkBoxFrameworkPath = new System.Windows.Forms.CheckBox();
+ this.checkBoxForce = new System.Windows.Forms.CheckBox();
+ this.checkBoxNoRes = new System.Windows.Forms.CheckBox();
+ this.checkBoxNoSrc = new System.Windows.Forms.CheckBox();
+ this.folderBrowserDialogFrameworks = new System.Windows.Forms.FolderBrowserDialog();
+ this.folderBrowserDialogProjectDir = new System.Windows.Forms.FolderBrowserDialog();
+ this.textBoxOutputProjectDir = new System.Windows.Forms.TextBox();
+ this.buttonBrowseOutputProjectDir = new System.Windows.Forms.Button();
+ this.statusStrip1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+ this.groupBoxOptions.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripStatusLabelStateImage,
+ this.toolStripStatusLabelStateText,
+ this.toolStripProgressBar1});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 408);
+ this.statusStrip1.Margin = new System.Windows.Forms.Padding(0, 9, 0, 0);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(570, 22);
+ this.statusStrip1.TabIndex = 22;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // toolStripStatusLabelStateImage
+ //
+ this.toolStripStatusLabelStateImage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripStatusLabelStateImage.Name = "toolStripStatusLabelStateImage";
+ this.toolStripStatusLabelStateImage.Size = new System.Drawing.Size(0, 17);
+ this.toolStripStatusLabelStateImage.Text = "toolStripStatusLabel1";
+ //
+ // toolStripStatusLabelStateText
+ //
+ this.toolStripStatusLabelStateText.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripStatusLabelStateText.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.toolStripStatusLabelStateText.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.toolStripStatusLabelStateText.Name = "toolStripStatusLabelStateText";
+ this.toolStripStatusLabelStateText.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
+ this.toolStripStatusLabelStateText.Size = new System.Drawing.Size(453, 17);
+ this.toolStripStatusLabelStateText.Spring = true;
+ this.toolStripStatusLabelStateText.Text = "Done";
+ this.toolStripStatusLabelStateText.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // toolStripProgressBar1
+ //
+ this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.toolStripProgressBar1.AutoSize = false;
+ this.toolStripProgressBar1.MarqueeAnimationSpeed = 50;
+ this.toolStripProgressBar1.Name = "toolStripProgressBar1";
+ this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
+ this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
+ //
+ // dataGridView1
+ //
+ this.dataGridView1.AllowUserToAddRows = false;
+ this.dataGridView1.AllowUserToDeleteRows = false;
+ this.dataGridView1.AllowUserToResizeRows = false;
+ this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Window;
+ this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
+ this.dataGridView1.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
+ this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
+ this.dataGridView1.ColumnHeadersHeight = 24;
+ this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+ this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.ColumnImage,
+ this.ColumnTime,
+ this.ColumnMessage});
+ this.dataGridView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
+ this.dataGridView1.Location = new System.Drawing.Point(12, 12);
+ this.dataGridView1.Name = "dataGridView1";
+ this.dataGridView1.ReadOnly = true;
+ this.dataGridView1.RowHeadersVisible = false;
+ this.dataGridView1.RowTemplate.Height = 19;
+ this.dataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.dataGridView1.ShowEditingIcon = false;
+ this.dataGridView1.Size = new System.Drawing.Size(546, 182);
+ this.dataGridView1.TabIndex = 25;
+ //
+ // ColumnImage
+ //
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+ dataGridViewCellStyle1.NullValue = ((object)(resources.GetObject("dataGridViewCellStyle1.NullValue")));
+ this.ColumnImage.DefaultCellStyle = dataGridViewCellStyle1;
+ this.ColumnImage.Frozen = true;
+ this.ColumnImage.HeaderText = "";
+ this.ColumnImage.Name = "ColumnImage";
+ this.ColumnImage.ReadOnly = true;
+ this.ColumnImage.Resizable = System.Windows.Forms.DataGridViewTriState.False;
+ this.ColumnImage.Width = 20;
+ //
+ // ColumnTime
+ //
+ this.ColumnTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
+ this.ColumnTime.Frozen = true;
+ this.ColumnTime.HeaderText = "Time";
+ this.ColumnTime.Name = "ColumnTime";
+ this.ColumnTime.ReadOnly = true;
+ this.ColumnTime.Width = 55;
+ //
+ // ColumnMessage
+ //
+ this.ColumnMessage.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+ this.ColumnMessage.HeaderText = "Message";
+ this.ColumnMessage.Name = "ColumnMessage";
+ this.ColumnMessage.ReadOnly = true;
+ //
+ // buttonStart
+ //
+ this.buttonStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonStart.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.buttonStart.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.buttonStart.Location = new System.Drawing.Point(438, 371);
+ this.buttonStart.Margin = new System.Windows.Forms.Padding(3, 3, 3, 12);
+ this.buttonStart.Name = "buttonStart";
+ this.buttonStart.Size = new System.Drawing.Size(120, 24);
+ this.buttonStart.TabIndex = 27;
+ this.buttonStart.Text = "Decompile";
+ this.buttonStart.UseVisualStyleBackColor = true;
+ this.buttonStart.Click += new System.EventHandler(this.buttonStart_Click);
+ //
+ // groupBoxOptions
+ //
+ this.groupBoxOptions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBoxOptions.Controls.Add(this.checkBoxMatchOriginal);
+ this.groupBoxOptions.Controls.Add(this.checkBoxKeepBrokenResource);
+ this.groupBoxOptions.Controls.Add(this.textBoxFrameworkPath);
+ this.groupBoxOptions.Controls.Add(this.buttonFramePath);
+ this.groupBoxOptions.Controls.Add(this.checkBoxFrameworkPath);
+ this.groupBoxOptions.Controls.Add(this.checkBoxForce);
+ this.groupBoxOptions.Controls.Add(this.checkBoxNoRes);
+ this.groupBoxOptions.Controls.Add(this.checkBoxNoSrc);
+ this.groupBoxOptions.Location = new System.Drawing.Point(12, 200);
+ this.groupBoxOptions.Name = "groupBoxOptions";
+ this.groupBoxOptions.Size = new System.Drawing.Size(546, 166);
+ this.groupBoxOptions.TabIndex = 26;
+ this.groupBoxOptions.TabStop = false;
+ this.groupBoxOptions.Text = "Options";
+ //
+ // checkBoxMatchOriginal
+ //
+ this.checkBoxMatchOriginal.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkBoxMatchOriginal.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_MatchOriginal;
+ this.checkBoxMatchOriginal.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_MatchOriginal", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxMatchOriginal.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxMatchOriginal.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxMatchOriginal.Location = new System.Drawing.Point(6, 115);
+ this.checkBoxMatchOriginal.Name = "checkBoxMatchOriginal";
+ this.checkBoxMatchOriginal.Size = new System.Drawing.Size(534, 18);
+ this.checkBoxMatchOriginal.TabIndex = 13;
+ this.checkBoxMatchOriginal.Text = "Keeps files to closest to original as possible. Prevents rebuild.";
+ this.checkBoxMatchOriginal.UseVisualStyleBackColor = true;
+ //
+ // checkBoxKeepBrokenResource
+ //
+ this.checkBoxKeepBrokenResource.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkBoxKeepBrokenResource.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_KeepBrokenResource;
+ this.checkBoxKeepBrokenResource.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_KeepBrokenResource", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxKeepBrokenResource.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxKeepBrokenResource.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxKeepBrokenResource.Location = new System.Drawing.Point(6, 91);
+ this.checkBoxKeepBrokenResource.Name = "checkBoxKeepBrokenResource";
+ this.checkBoxKeepBrokenResource.Size = new System.Drawing.Size(534, 18);
+ this.checkBoxKeepBrokenResource.TabIndex = 12;
+ this.checkBoxKeepBrokenResource.Text = "Keep broken resource";
+ this.checkBoxKeepBrokenResource.UseVisualStyleBackColor = true;
+ //
+ // textBoxFrameworkPath
+ //
+ this.textBoxFrameworkPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.textBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBoxFrameworkPath.Enabled = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_UseFramework;
+ this.textBoxFrameworkPath.Location = new System.Drawing.Point(230, 138);
+ this.textBoxFrameworkPath.Name = "textBoxFrameworkPath";
+ this.textBoxFrameworkPath.Size = new System.Drawing.Size(280, 22);
+ this.textBoxFrameworkPath.TabIndex = 10;
+ //
+ // buttonFramePath
+ //
+ this.buttonFramePath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonFramePath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.buttonFramePath.Enabled = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_UseFramework;
+ this.buttonFramePath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.buttonFramePath.Location = new System.Drawing.Point(512, 137);
+ this.buttonFramePath.Name = "buttonFramePath";
+ this.buttonFramePath.Size = new System.Drawing.Size(28, 24);
+ this.buttonFramePath.TabIndex = 11;
+ this.buttonFramePath.Text = "...";
+ this.buttonFramePath.UseVisualStyleBackColor = true;
+ this.buttonFramePath.Click += new System.EventHandler(this.buttonFramePath_Click);
+ //
+ // checkBoxFrameworkPath
+ //
+ this.checkBoxFrameworkPath.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_UseFramework;
+ this.checkBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxFrameworkPath.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxFrameworkPath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxFrameworkPath.Location = new System.Drawing.Point(6, 139);
+ this.checkBoxFrameworkPath.Name = "checkBoxFrameworkPath";
+ this.checkBoxFrameworkPath.Size = new System.Drawing.Size(218, 18);
+ this.checkBoxFrameworkPath.TabIndex = 9;
+ this.checkBoxFrameworkPath.Text = "Uses framework files located in";
+ this.checkBoxFrameworkPath.UseVisualStyleBackColor = true;
+ //
+ // checkBoxForce
+ //
+ this.checkBoxForce.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkBoxForce.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_Force;
+ this.checkBoxForce.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_Force", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxForce.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxForce.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxForce.Location = new System.Drawing.Point(6, 67);
+ this.checkBoxForce.Name = "checkBoxForce";
+ this.checkBoxForce.Size = new System.Drawing.Size(534, 18);
+ this.checkBoxForce.TabIndex = 8;
+ this.checkBoxForce.Text = "Force delete destination directory";
+ this.checkBoxForce.UseVisualStyleBackColor = true;
+ //
+ // checkBoxNoRes
+ //
+ this.checkBoxNoRes.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkBoxNoRes.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_NoRes;
+ this.checkBoxNoRes.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_NoRes", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxNoRes.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxNoRes.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxNoRes.Location = new System.Drawing.Point(6, 43);
+ this.checkBoxNoRes.Name = "checkBoxNoRes";
+ this.checkBoxNoRes.Size = new System.Drawing.Size(534, 18);
+ this.checkBoxNoRes.TabIndex = 7;
+ this.checkBoxNoRes.Text = "Do not decode resources";
+ this.checkBoxNoRes.UseVisualStyleBackColor = true;
+ //
+ // checkBoxNoSrc
+ //
+ this.checkBoxNoSrc.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.checkBoxNoSrc.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_NoSrc;
+ this.checkBoxNoSrc.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_NoSrc", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxNoSrc.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkBoxNoSrc.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+ this.checkBoxNoSrc.Location = new System.Drawing.Point(6, 19);
+ this.checkBoxNoSrc.Name = "checkBoxNoSrc";
+ this.checkBoxNoSrc.Size = new System.Drawing.Size(534, 18);
+ this.checkBoxNoSrc.TabIndex = 6;
+ this.checkBoxNoSrc.Text = "Do not decode sources";
+ this.checkBoxNoSrc.UseVisualStyleBackColor = true;
+ //
+ // folderBrowserDialogFrameworks
+ //
+ this.folderBrowserDialogFrameworks.ShowNewFolderButton = false;
+ //
+ // textBoxOutputProjectDir
+ //
+ this.textBoxOutputProjectDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.textBoxOutputProjectDir.Location = new System.Drawing.Point(12, 372);
+ this.textBoxOutputProjectDir.Name = "textBoxOutputProjectDir";
+ this.textBoxOutputProjectDir.Size = new System.Drawing.Size(390, 22);
+ this.textBoxOutputProjectDir.TabIndex = 28;
+ //
+ // buttonBrowseOutputProjectDir
+ //
+ this.buttonBrowseOutputProjectDir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.buttonBrowseOutputProjectDir.Location = new System.Drawing.Point(404, 371);
+ this.buttonBrowseOutputProjectDir.Name = "buttonBrowseOutputProjectDir";
+ this.buttonBrowseOutputProjectDir.Size = new System.Drawing.Size(28, 24);
+ this.buttonBrowseOutputProjectDir.TabIndex = 29;
+ this.buttonBrowseOutputProjectDir.Text = "...";
+ this.buttonBrowseOutputProjectDir.UseVisualStyleBackColor = true;
+ this.buttonBrowseOutputProjectDir.Click += new System.EventHandler(this.buttonBrowseOutputProjectDir_Click);
+ //
+ // FormDecode
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(570, 430);
+ this.Controls.Add(this.buttonBrowseOutputProjectDir);
+ this.Controls.Add(this.textBoxOutputProjectDir);
+ this.Controls.Add(this.dataGridView1);
+ this.Controls.Add(this.buttonStart);
+ this.Controls.Add(this.groupBoxOptions);
+ this.Controls.Add(this.statusStrip1);
+ this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.Name = "FormDecode";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "FormDecode";
+ this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormDecompile_FormClosed);
+ this.Load += new System.EventHandler(this.FormDecompile_Load);
+ this.Shown += new System.EventHandler(this.FormDecompile_Shown);
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+ this.groupBoxOptions.ResumeLayout(false);
+ this.groupBoxOptions.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateImage;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateText;
+ private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
+ private System.Windows.Forms.DataGridView dataGridView1;
+ private System.Windows.Forms.DataGridViewImageColumn ColumnImage;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ColumnTime;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage;
+ private System.Windows.Forms.Button buttonStart;
+ private System.Windows.Forms.GroupBox groupBoxOptions;
+ private System.Windows.Forms.TextBox textBoxFrameworkPath;
+ private System.Windows.Forms.Button buttonFramePath;
+ private System.Windows.Forms.CheckBox checkBoxFrameworkPath;
+ private System.Windows.Forms.CheckBox checkBoxForce;
+ private System.Windows.Forms.CheckBox checkBoxNoRes;
+ private System.Windows.Forms.CheckBox checkBoxNoSrc;
+ private System.Windows.Forms.CheckBox checkBoxMatchOriginal;
+ private System.Windows.Forms.CheckBox checkBoxKeepBrokenResource;
+ private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogFrameworks;
+ private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogProjectDir;
+ private System.Windows.Forms.TextBox textBoxOutputProjectDir;
+ private System.Windows.Forms.Button buttonBrowseOutputProjectDir;
+ }
+}
\ No newline at end of file
diff --git a/APKToolGUI/FormDecode.cs b/APKToolGUI/FormDecode.cs
new file mode 100644
index 0000000..6de2a6a
--- /dev/null
+++ b/APKToolGUI/FormDecode.cs
@@ -0,0 +1,226 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace APKToolGUI
+{
+ public partial class FormDecode : Form
+ {
+ public FormDecode(string[] args)
+ {
+ Program.SetLanguage();
+ InitializeComponent();
+ this.Icon = Properties.Resources.android_thin;
+ this.Text = Application.ProductName;
+
+ textBoxOutputProjectDir.Multiline = true;
+ textBoxOutputProjectDir.MinimumSize = new Size(textBoxOutputProjectDir.Size.Width, textBoxOutputProjectDir.Size.Height);
+ textBoxOutputProjectDir.Size = new Size(textBoxOutputProjectDir.Size.Width, textBoxOutputProjectDir.Size.Height);
+ textBoxOutputProjectDir.Multiline = false;
+
+ this.apkPath = args[1];
+ }
+
+ private string apkPath;
+ private Apktool apktool;
+ private Apktool apktoolSync;
+ bool StartButtonEnabled
+ {
+ set
+ {
+ if (buttonStart.InvokeRequired)
+ buttonStart.BeginInvoke(new Action(() =>
+ {
+ buttonStart.Enabled = value;
+ }));
+ else
+ buttonStart.Enabled = value;
+ }
+ }
+ ProgressBarStyle progressBarStyle
+ {
+ set
+ {
+ if (toolStripProgressBar1.GetCurrentParent().InvokeRequired)
+ {
+ toolStripProgressBar1.GetCurrentParent().BeginInvoke(new Action(() =>
+ {
+ toolStripProgressBar1.Style = value;
+ }));
+ }
+ else
+ toolStripProgressBar1.Style = value;
+ }
+ }
+
+ private void ToLog(string time, string message, Image statusImage, Color backColor)
+ {
+ if (dataGridView1.InvokeRequired)
+ dataGridView1.BeginInvoke(new Action(() =>
+ {
+ int i = dataGridView1.Rows.Add(statusImage, time, message);
+ dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
+ dataGridView1.FirstDisplayedScrollingRowIndex = i;
+ }));
+ else
+ {
+ int i = dataGridView1.Rows.Add(statusImage, time, message);
+ dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
+ dataGridView1.FirstDisplayedScrollingRowIndex = i;
+ }
+ }
+
+ private void ToLog(ApktoolEventType eventType, String message)
+ {
+ switch (eventType)
+ {
+ case ApktoolEventType.Information:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.Window));
+ //ToStatus(result.Message, Properties.Resources.info);
+ break;
+ case ApktoolEventType.Error:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
+ //ToStatus(result.Message, Properties.Resources.error);
+ break;
+ case ApktoolEventType.Warning:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.warning, Color.FromKnownColor(KnownColor.LightYellow));
+ //ToStatus(result.Message, Properties.Resources.warning);
+ break;
+ default:
+ break;
+ }
+ }
+
+ #region Form event handlers
+
+ private void FormDecompile_Load(object sender, EventArgs e)
+ {
+ if (String.IsNullOrEmpty(Properties.Settings.Default.JavaExe))
+ {
+ MessageBox.Show("Java location is not specified in the settings. Please, configure program first.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ this.Close();
+ }
+ if (!System.IO.File.Exists(Program.APKTOOL_PATH))
+ {
+ MessageBox.Show(String.Format("Apktool not fount in '{0}'.", Program.APKTOOL_PATH), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ this.Close();
+ }
+
+ //apktoolSync = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
+ apktool = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
+ apktool.ApktoolOutputDataRecieved += apktool_ApktoolOutputDataRecieved;
+ apktool.ApktoolErrorDataRecieved += apktool_ApktoolErrorDataRecieved;
+ apktool.DecompilingCompleted += apktool_DecompilingCompleted;
+ }
+
+ private void FormDecompile_Shown(object sender, EventArgs e)
+ {
+ this.Update();
+
+ textBoxOutputProjectDir.Text = System.IO.Path.GetDirectoryName(apkPath) + "\\" + System.IO.Path.GetFileNameWithoutExtension(apkPath);
+
+ Version javaVersion = apktool.GetJavaVersion();
+ if (javaVersion != null)
+ {
+ ToLog(ApktoolEventType.Information, String.Format("Java version \"{0} Update {1}\"", javaVersion.Minor, javaVersion.Revision));
+ string apktoolVersion = apktool.GetVersion();
+ if (!String.IsNullOrWhiteSpace(apktoolVersion))
+ ToLog(ApktoolEventType.Information, String.Format("Apktool version \"{0}\"", apktoolVersion));
+ else
+ ToLog(ApktoolEventType.Error, "Can't detect apktool version.");
+ }
+ else
+ MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ private void FormDecompile_FormClosed(object sender, FormClosedEventArgs e)
+ {
+ Properties.Settings.Default.Save();
+ }
+
+ #endregion
+
+ #region apktool event handlers
+
+ void apktool_ApktoolOutputDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
+ {
+ ToLog(e.EventType, e.Message);
+ }
+
+ void apktool_ApktoolErrorDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
+ {
+ ToLog(e.EventType, e.Message);
+ }
+
+ void apktool_DecompilingCompleted(object sender, ApktoolEventCompletedEventArgs e)
+ {
+ if (e.ExitCode == 0)
+ ToLog(ApktoolEventType.Information, "Декомпиляция успешно завршена.");
+ else
+ ToLog(ApktoolEventType.Warning, String.Format("Внимание! При декомпиляции приложения произошла ошибка. Код выхода: '{0}'.", e.ExitCode));
+ StartButtonEnabled = true;
+ progressBarStyle = ProgressBarStyle.Continuous;
+ }
+
+ #endregion
+
+ private void buttonFramePath_Click(object sender, EventArgs e)
+ {
+ if (folderBrowserDialogFrameworks.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBoxFrameworkPath.Text = folderBrowserDialogFrameworks.SelectedPath;
+ }
+
+ private void buttonStart_Click(object sender, EventArgs e)
+ {
+ DecompileOptions options = new DecompileOptions(apkPath);
+ options.NoResource = checkBoxNoRes.Checked;
+ options.NoSource = checkBoxNoSrc.Checked;
+ options.Force = checkBoxForce.Checked;
+ options.KeepBrokenResource = checkBoxKeepBrokenResource.Checked;
+ options.MatchOriginal = checkBoxMatchOriginal.Checked;
+ if (checkBoxFrameworkPath.Checked)
+ {
+ if (System.IO.Directory.Exists(textBoxFrameworkPath.Text))
+ options.FrameworkPath = textBoxFrameworkPath.Text;
+ else
+ {
+ MessageBox.Show("Указанной директорию расположения фреймворков не существует.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+ }
+
+ options.OutputDirectory = textBoxOutputProjectDir.Text;
+
+ bool started = false;
+#if !DEBUG
+ try
+ {
+#endif
+ started = apktool.Decompile(options);
+#if !DEBUG
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+#endif
+ if (started)
+ {
+ progressBarStyle = ProgressBarStyle.Marquee;
+ StartButtonEnabled = false;
+ }
+ }
+
+ private void buttonBrowseOutputProjectDir_Click(object sender, EventArgs e)
+ {
+ folderBrowserDialogProjectDir.SelectedPath = System.IO.Path.GetDirectoryName(apkPath);
+ if (folderBrowserDialogProjectDir.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBoxOutputProjectDir.Text = folderBrowserDialogProjectDir.SelectedPath;
+ }
+ }
+}
\ No newline at end of file
diff --git a/APKToolGUI/FormDecode.resx b/APKToolGUI/FormDecode.resx
new file mode 100644
index 0000000..a4c8165
--- /dev/null
+++ b/APKToolGUI/FormDecode.resx
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 5, 7
+
+
+ True
+
+
+
+
+ Qk32AgAAAAAAADYAAAAoAAAADgAAABAAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEgoTGw8bGw8bGw8bGw8bGw8bGw8bG
+ w8bGw8bGw8bGw8bGw8bGw8YAAAAAAISChP///////////////////////////////////////////8bD
+ xgAAAAAAhIKE////////////////////////////////////////////xsPGAAAAAACEgoT/////////
+ ///////////////////////////////////Gw8YAAAAAAISChP//////////////////////////////
+ /////////////8bDxgAAAAAAhIKE////////////AAD/AAD/////////AAD/AAD/////////xsPGAAAA
+ AACEgoT///////////////8AAP8AAP8AAP8AAP/////////////Gw8YAAAAAAISChP//////////////
+ /////wAA/wAA/////////////////8bDxgAAAAAAhIKE////////////////AAD/AAD/AAD/AAD/////
+ ////////xsPGAAAAAACEgoT///////////8AAP8AAP////////8AAP8AAP/////////Gw8YAAAAAAISC
+ hP///////////////////////////////////////////8bDxgAAAAAAhIKE////////////////////
+ ////////////////////////xsPGAAAAAACEgoT/////////////////////////////////////////
+ ///Gw8YAAAAAAISChP///////////////////////////////////////////8bDxgAAAAAAhIKEhIKE
+ hIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEAAA=
+
+
+
+ True
+
+
+ True
+
+
+ 108, 11
+
+
+ 336, 11
+
+
+ 29
+
+
\ No newline at end of file
diff --git a/APKToolGUI/FormMain.Designer.cs b/APKToolGUI/FormMain.Designer.cs
new file mode 100644
index 0000000..fe83c23
--- /dev/null
+++ b/APKToolGUI/FormMain.Designer.cs
@@ -0,0 +1,1217 @@
+namespace APKToolGUI
+{
+ partial class FormMain
+ {
+ ///
+ /// Требуется переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором форм Windows
+
+ ///
+ /// Обязательный метод для поддержки конструктора - не изменяйте
+ /// содержимое данного метода при помощи редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ this.button_DECODE_BrowseInputAppPath = new System.Windows.Forms.Button();
+ this.button_DECODE_Decode = new System.Windows.Forms.Button();
+ this.tabControlMain = new System.Windows.Forms.TabControl();
+ this.tabPageDecode = new System.Windows.Forms.TabPage();
+ this.groupBox_DECODE_Options = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel_DECODE_Options = new System.Windows.Forms.TableLayoutPanel();
+ this.checkBox_DECODE_MatchOriginal = new System.Windows.Forms.CheckBox();
+ this.checkBox_DECODE_KeepBrokenRes = new System.Windows.Forms.CheckBox();
+ this.checkBox_DECODE_Force = new System.Windows.Forms.CheckBox();
+ this.checkBox_DECODE_NoRes = new System.Windows.Forms.CheckBox();
+ this.tableLayoutPanelDecodeOutputDir = new System.Windows.Forms.TableLayoutPanel();
+ this.button_DECODE_BrowseOutputDirectory = new System.Windows.Forms.Button();
+ this.checkBox_DECODE_OutputDirectory = new System.Windows.Forms.CheckBox();
+ this.textBox_DECODE_OutputDirectory = new System.Windows.Forms.TextBox();
+ this.tableLayoutPanelDecodeUseFramework = new System.Windows.Forms.TableLayoutPanel();
+ this.textBox_DECODE_FrameDir = new System.Windows.Forms.TextBox();
+ this.checkBox_DECODE_UseFramework = new System.Windows.Forms.CheckBox();
+ this.button_DECODE_BrowseFrameDir = new System.Windows.Forms.Button();
+ this.checkBox_DECODE_NoSrc = new System.Windows.Forms.CheckBox();
+ this.textBox_DECODE_InputAppPath = new System.Windows.Forms.TextBox();
+ this.tabPageBuild = new System.Windows.Forms.TabPage();
+ this.groupBox_BUILD_Options = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel_BUILD_Options = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanelBuildOutputApk = new System.Windows.Forms.TableLayoutPanel();
+ this.button_BUILD_BrowseOutputAppPath = new System.Windows.Forms.Button();
+ this.checkBox_BUILD_OutputAppPath = new System.Windows.Forms.CheckBox();
+ this.textBox_BUILD_OutputAppPath = new System.Windows.Forms.TextBox();
+ this.checkBox_BUILD_CopyOriginal = new System.Windows.Forms.CheckBox();
+ this.tableLayoutPanelBuildUseFramework = new System.Windows.Forms.TableLayoutPanel();
+ this.button_BUILD_BrowseFrameDir = new System.Windows.Forms.Button();
+ this.checkBox_BUILD_UseFramework = new System.Windows.Forms.CheckBox();
+ this.textBox_BUILD_FrameDir = new System.Windows.Forms.TextBox();
+ this.tableLayoutPanelBuildUseAapt = new System.Windows.Forms.TableLayoutPanel();
+ this.textBox_BUILD_AaptPath = new System.Windows.Forms.TextBox();
+ this.checkBox_BUILD_UseAapt = new System.Windows.Forms.CheckBox();
+ this.button_BUILD_BrowseAaptPath = new System.Windows.Forms.Button();
+ this.checkBox_BUILD_ForceAll = new System.Windows.Forms.CheckBox();
+ this.button_BUILD_BrowseInputProjectDir = new System.Windows.Forms.Button();
+ this.button_BUILD_Build = new System.Windows.Forms.Button();
+ this.textBox_BUILD_InputProjectDir = new System.Windows.Forms.TextBox();
+ this.tabPageInstallFramework = new System.Windows.Forms.TabPage();
+ this.groupBox_IF_Options = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel_IF_Options = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanel_IF_Tag = new System.Windows.Forms.TableLayoutPanel();
+ this.checkBox_IF_Tag = new System.Windows.Forms.CheckBox();
+ this.textBox_IF_Tag = new System.Windows.Forms.TextBox();
+ this.tableLayoutPanel_IF_FramePath = new System.Windows.Forms.TableLayoutPanel();
+ this.textBox_IF_FrameDir = new System.Windows.Forms.TextBox();
+ this.checkBox_IF_FramePath = new System.Windows.Forms.CheckBox();
+ this.button_IF_BrowseFrameDir = new System.Windows.Forms.Button();
+ this.button_IF_InstallFramework = new System.Windows.Forms.Button();
+ this.button_IF_BrowseInputFramePath = new System.Windows.Forms.Button();
+ this.textBox_IF_InputFramePath = new System.Windows.Forms.TextBox();
+ this.tabPageSign = new System.Windows.Forms.TabPage();
+ this.groupBox_SIGN_Options = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel_SIGN_Options = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanel_SIGN_PrivateKey = new System.Windows.Forms.TableLayoutPanel();
+ this.label_SIGN_PrivateKey = new System.Windows.Forms.Label();
+ this.button_SIGN_BrowsePrivateKey = new System.Windows.Forms.Button();
+ this.textBox_SIGN_PrivateKey = new System.Windows.Forms.TextBox();
+ this.tableLayoutPanel_SIGN_PublicKey = new System.Windows.Forms.TableLayoutPanel();
+ this.label_SIGN_PublicKey = new System.Windows.Forms.Label();
+ this.button_SIGN_BrowsePublicKey = new System.Windows.Forms.Button();
+ this.textBox_SIGN_PublicKey = new System.Windows.Forms.TextBox();
+ this.tableLayoutPanel_SIGN_OutputFile = new System.Windows.Forms.TableLayoutPanel();
+ this.label_SIGN_OutputFile = new System.Windows.Forms.Label();
+ this.button_SIGN_BrowseOutputFile = new System.Windows.Forms.Button();
+ this.textBox_SIGN_OutputFile = new System.Windows.Forms.TextBox();
+ this.textBox_SIGN_InputFile = new System.Windows.Forms.TextBox();
+ this.button_SIGN_BrowseInputFile = new System.Windows.Forms.Button();
+ this.button_SIGN_Sign = new System.Windows.Forms.Button();
+ this.tabPageZipAlign = new System.Windows.Forms.TabPage();
+ this.groupBox_ZIPALIGN_Options = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel_ZIPALIGN_Options = new System.Windows.Forms.TableLayoutPanel();
+ this.checkBox_ZIPALIGN_Recompress = new System.Windows.Forms.CheckBox();
+ this.tableLayoutPanel_ZIPALIGN_AlignmentBytes = new System.Windows.Forms.TableLayoutPanel();
+ this.label_ZIPALIGN_AlignmentBytes = new System.Windows.Forms.Label();
+ this.numericUpDown_ZIPALIGN_AlignmentBytes = new System.Windows.Forms.NumericUpDown();
+ this.checkBox_ZIPALIGN_VerboseOutput = new System.Windows.Forms.CheckBox();
+ this.checkBox_ZIPALIGN_CheckAlignment = new System.Windows.Forms.CheckBox();
+ this.tableLayoutPanel_ZIPALIGN_OutputFile = new System.Windows.Forms.TableLayoutPanel();
+ this.label_ZIPALIGN_OutputFile = new System.Windows.Forms.Label();
+ this.button_ZIPALIGN_BrowseOutputFile = new System.Windows.Forms.Button();
+ this.textBox_ZIPALIGN_OutputFile = new System.Windows.Forms.TextBox();
+ this.checkBox_ZIPALIGN_OverwriteOutputFile = new System.Windows.Forms.CheckBox();
+ this.button_ZIPALIGN_Align = new System.Windows.Forms.Button();
+ this.button_ZIPALIGN_BrowseInputFile = new System.Windows.Forms.Button();
+ this.textBox_ZIPALIGN_InputFile = new System.Windows.Forms.TextBox();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.toolStripStatusLabelStateImage = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripStatusLabelStateText = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
+ this.dataGridView1 = new System.Windows.Forms.DataGridView();
+ this.ColumnImage = new System.Windows.Forms.DataGridViewImageColumn();
+ this.ColumnTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.ColumnMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.contextMenuStripLog = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.clearLogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components);
+ this.menuItemFile = new System.Windows.Forms.MenuItem();
+ this.menuItemSettings = new System.Windows.Forms.MenuItem();
+ this.menuItemExit = new System.Windows.Forms.MenuItem();
+ this.menuItemHelp = new System.Windows.Forms.MenuItem();
+ this.menuItemCheckUpdate = new System.Windows.Forms.MenuItem();
+ this.menuItemAbout = new System.Windows.Forms.MenuItem();
+ this.openFileDialogApk = new System.Windows.Forms.OpenFileDialog();
+ this.folderBrowserDialogBuild = new System.Windows.Forms.FolderBrowserDialog();
+ this.tabControlMain.SuspendLayout();
+ this.tabPageDecode.SuspendLayout();
+ this.groupBox_DECODE_Options.SuspendLayout();
+ this.tableLayoutPanel_DECODE_Options.SuspendLayout();
+ this.tableLayoutPanelDecodeOutputDir.SuspendLayout();
+ this.tableLayoutPanelDecodeUseFramework.SuspendLayout();
+ this.tabPageBuild.SuspendLayout();
+ this.groupBox_BUILD_Options.SuspendLayout();
+ this.tableLayoutPanel_BUILD_Options.SuspendLayout();
+ this.tableLayoutPanelBuildOutputApk.SuspendLayout();
+ this.tableLayoutPanelBuildUseFramework.SuspendLayout();
+ this.tableLayoutPanelBuildUseAapt.SuspendLayout();
+ this.tabPageInstallFramework.SuspendLayout();
+ this.groupBox_IF_Options.SuspendLayout();
+ this.tableLayoutPanel_IF_Options.SuspendLayout();
+ this.tableLayoutPanel_IF_Tag.SuspendLayout();
+ this.tableLayoutPanel_IF_FramePath.SuspendLayout();
+ this.tabPageSign.SuspendLayout();
+ this.groupBox_SIGN_Options.SuspendLayout();
+ this.tableLayoutPanel_SIGN_Options.SuspendLayout();
+ this.tableLayoutPanel_SIGN_PrivateKey.SuspendLayout();
+ this.tableLayoutPanel_SIGN_PublicKey.SuspendLayout();
+ this.tableLayoutPanel_SIGN_OutputFile.SuspendLayout();
+ this.tabPageZipAlign.SuspendLayout();
+ this.groupBox_ZIPALIGN_Options.SuspendLayout();
+ this.tableLayoutPanel_ZIPALIGN_Options.SuspendLayout();
+ this.tableLayoutPanel_ZIPALIGN_AlignmentBytes.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_ZIPALIGN_AlignmentBytes)).BeginInit();
+ this.tableLayoutPanel_ZIPALIGN_OutputFile.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+ this.contextMenuStripLog.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // button_DECODE_BrowseInputAppPath
+ //
+ resources.ApplyResources(this.button_DECODE_BrowseInputAppPath, "button_DECODE_BrowseInputAppPath");
+ this.button_DECODE_BrowseInputAppPath.Name = "button_DECODE_BrowseInputAppPath";
+ this.button_DECODE_BrowseInputAppPath.UseVisualStyleBackColor = true;
+ this.button_DECODE_BrowseInputAppPath.Click += new System.EventHandler(this.button_DECODE_BrowseInputAppPath_Click);
+ //
+ // button_DECODE_Decode
+ //
+ resources.ApplyResources(this.button_DECODE_Decode, "button_DECODE_Decode");
+ this.button_DECODE_Decode.Name = "button_DECODE_Decode";
+ this.button_DECODE_Decode.UseVisualStyleBackColor = true;
+ this.button_DECODE_Decode.Click += new System.EventHandler(this.button_DECODE_Decode_Click);
+ //
+ // tabControlMain
+ //
+ resources.ApplyResources(this.tabControlMain, "tabControlMain");
+ this.tabControlMain.Controls.Add(this.tabPageDecode);
+ this.tabControlMain.Controls.Add(this.tabPageBuild);
+ this.tabControlMain.Controls.Add(this.tabPageInstallFramework);
+ this.tabControlMain.Controls.Add(this.tabPageSign);
+ this.tabControlMain.Controls.Add(this.tabPageZipAlign);
+ this.tabControlMain.Name = "tabControlMain";
+ this.tabControlMain.SelectedIndex = 0;
+ //
+ // tabPageDecode
+ //
+ this.tabPageDecode.BackColor = System.Drawing.SystemColors.Window;
+ this.tabPageDecode.Controls.Add(this.groupBox_DECODE_Options);
+ this.tabPageDecode.Controls.Add(this.textBox_DECODE_InputAppPath);
+ this.tabPageDecode.Controls.Add(this.button_DECODE_Decode);
+ this.tabPageDecode.Controls.Add(this.button_DECODE_BrowseInputAppPath);
+ resources.ApplyResources(this.tabPageDecode, "tabPageDecode");
+ this.tabPageDecode.Name = "tabPageDecode";
+ //
+ // groupBox_DECODE_Options
+ //
+ resources.ApplyResources(this.groupBox_DECODE_Options, "groupBox_DECODE_Options");
+ this.groupBox_DECODE_Options.Controls.Add(this.tableLayoutPanel_DECODE_Options);
+ this.groupBox_DECODE_Options.Name = "groupBox_DECODE_Options";
+ this.groupBox_DECODE_Options.TabStop = false;
+ //
+ // tableLayoutPanel_DECODE_Options
+ //
+ resources.ApplyResources(this.tableLayoutPanel_DECODE_Options, "tableLayoutPanel_DECODE_Options");
+ this.tableLayoutPanel_DECODE_Options.Controls.Add(this.checkBox_DECODE_MatchOriginal, 0, 4);
+ this.tableLayoutPanel_DECODE_Options.Controls.Add(this.checkBox_DECODE_KeepBrokenRes, 0, 3);
+ this.tableLayoutPanel_DECODE_Options.Controls.Add(this.checkBox_DECODE_Force, 0, 2);
+ this.tableLayoutPanel_DECODE_Options.Controls.Add(this.checkBox_DECODE_NoRes, 0, 1);
+ this.tableLayoutPanel_DECODE_Options.Controls.Add(this.tableLayoutPanelDecodeOutputDir, 0, 6);
+ this.tableLayoutPanel_DECODE_Options.Controls.Add(this.tableLayoutPanelDecodeUseFramework, 0, 5);
+ this.tableLayoutPanel_DECODE_Options.Controls.Add(this.checkBox_DECODE_NoSrc, 0, 0);
+ this.tableLayoutPanel_DECODE_Options.Name = "tableLayoutPanel_DECODE_Options";
+ //
+ // checkBox_DECODE_MatchOriginal
+ //
+ this.checkBox_DECODE_MatchOriginal.AutoEllipsis = true;
+ this.checkBox_DECODE_MatchOriginal.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_MatchOriginal;
+ this.checkBox_DECODE_MatchOriginal.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_MatchOriginal", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_DECODE_MatchOriginal, "checkBox_DECODE_MatchOriginal");
+ this.checkBox_DECODE_MatchOriginal.Name = "checkBox_DECODE_MatchOriginal";
+ this.checkBox_DECODE_MatchOriginal.UseVisualStyleBackColor = true;
+ //
+ // checkBox_DECODE_KeepBrokenRes
+ //
+ this.checkBox_DECODE_KeepBrokenRes.AutoEllipsis = true;
+ this.checkBox_DECODE_KeepBrokenRes.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_KeepBrokenRes;
+ this.checkBox_DECODE_KeepBrokenRes.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_KeepBrokenRes", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_DECODE_KeepBrokenRes, "checkBox_DECODE_KeepBrokenRes");
+ this.checkBox_DECODE_KeepBrokenRes.Name = "checkBox_DECODE_KeepBrokenRes";
+ this.checkBox_DECODE_KeepBrokenRes.UseVisualStyleBackColor = true;
+ //
+ // checkBox_DECODE_Force
+ //
+ this.checkBox_DECODE_Force.AutoEllipsis = true;
+ this.checkBox_DECODE_Force.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_Force;
+ this.checkBox_DECODE_Force.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_Force", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_DECODE_Force, "checkBox_DECODE_Force");
+ this.checkBox_DECODE_Force.Name = "checkBox_DECODE_Force";
+ this.checkBox_DECODE_Force.UseVisualStyleBackColor = true;
+ //
+ // checkBox_DECODE_NoRes
+ //
+ this.checkBox_DECODE_NoRes.AutoEllipsis = true;
+ this.checkBox_DECODE_NoRes.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_NoRes;
+ this.checkBox_DECODE_NoRes.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_NoRes", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_DECODE_NoRes, "checkBox_DECODE_NoRes");
+ this.checkBox_DECODE_NoRes.Name = "checkBox_DECODE_NoRes";
+ this.checkBox_DECODE_NoRes.UseVisualStyleBackColor = true;
+ //
+ // tableLayoutPanelDecodeOutputDir
+ //
+ resources.ApplyResources(this.tableLayoutPanelDecodeOutputDir, "tableLayoutPanelDecodeOutputDir");
+ this.tableLayoutPanelDecodeOutputDir.Controls.Add(this.button_DECODE_BrowseOutputDirectory, 2, 0);
+ this.tableLayoutPanelDecodeOutputDir.Controls.Add(this.checkBox_DECODE_OutputDirectory, 0, 0);
+ this.tableLayoutPanelDecodeOutputDir.Controls.Add(this.textBox_DECODE_OutputDirectory, 1, 0);
+ this.tableLayoutPanelDecodeOutputDir.Name = "tableLayoutPanelDecodeOutputDir";
+ //
+ // button_DECODE_BrowseOutputDirectory
+ //
+ this.button_DECODE_BrowseOutputDirectory.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_UseOutputDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.button_DECODE_BrowseOutputDirectory.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_UseOutputDir;
+ resources.ApplyResources(this.button_DECODE_BrowseOutputDirectory, "button_DECODE_BrowseOutputDirectory");
+ this.button_DECODE_BrowseOutputDirectory.Name = "button_DECODE_BrowseOutputDirectory";
+ this.button_DECODE_BrowseOutputDirectory.UseVisualStyleBackColor = true;
+ this.button_DECODE_BrowseOutputDirectory.Click += new System.EventHandler(this.button_DECODE_BrowseOutputDirectory_Click);
+ //
+ // checkBox_DECODE_OutputDirectory
+ //
+ this.checkBox_DECODE_OutputDirectory.AutoEllipsis = true;
+ this.checkBox_DECODE_OutputDirectory.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_UseOutputDir;
+ this.checkBox_DECODE_OutputDirectory.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_UseOutputDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_DECODE_OutputDirectory, "checkBox_DECODE_OutputDirectory");
+ this.checkBox_DECODE_OutputDirectory.Name = "checkBox_DECODE_OutputDirectory";
+ this.checkBox_DECODE_OutputDirectory.UseVisualStyleBackColor = true;
+ //
+ // textBox_DECODE_OutputDirectory
+ //
+ this.textBox_DECODE_OutputDirectory.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_UseOutputDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_DECODE_OutputDirectory.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_OutputDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_DECODE_OutputDirectory, "textBox_DECODE_OutputDirectory");
+ this.textBox_DECODE_OutputDirectory.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_UseOutputDir;
+ this.textBox_DECODE_OutputDirectory.Name = "textBox_DECODE_OutputDirectory";
+ this.textBox_DECODE_OutputDirectory.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_OutputDir;
+ //
+ // tableLayoutPanelDecodeUseFramework
+ //
+ resources.ApplyResources(this.tableLayoutPanelDecodeUseFramework, "tableLayoutPanelDecodeUseFramework");
+ this.tableLayoutPanelDecodeUseFramework.Controls.Add(this.textBox_DECODE_FrameDir, 0, 0);
+ this.tableLayoutPanelDecodeUseFramework.Controls.Add(this.checkBox_DECODE_UseFramework, 0, 0);
+ this.tableLayoutPanelDecodeUseFramework.Controls.Add(this.button_DECODE_BrowseFrameDir, 2, 0);
+ this.tableLayoutPanelDecodeUseFramework.Name = "tableLayoutPanelDecodeUseFramework";
+ //
+ // textBox_DECODE_FrameDir
+ //
+ this.textBox_DECODE_FrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_DECODE_FrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_FrameDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_DECODE_FrameDir, "textBox_DECODE_FrameDir");
+ this.textBox_DECODE_FrameDir.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_UseFramework;
+ this.textBox_DECODE_FrameDir.Name = "textBox_DECODE_FrameDir";
+ this.textBox_DECODE_FrameDir.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_FrameDir;
+ //
+ // checkBox_DECODE_UseFramework
+ //
+ this.checkBox_DECODE_UseFramework.AutoEllipsis = true;
+ this.checkBox_DECODE_UseFramework.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_UseFramework;
+ this.checkBox_DECODE_UseFramework.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_DECODE_UseFramework, "checkBox_DECODE_UseFramework");
+ this.checkBox_DECODE_UseFramework.Name = "checkBox_DECODE_UseFramework";
+ this.checkBox_DECODE_UseFramework.UseVisualStyleBackColor = true;
+ //
+ // button_DECODE_BrowseFrameDir
+ //
+ this.button_DECODE_BrowseFrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.button_DECODE_BrowseFrameDir.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_UseFramework;
+ resources.ApplyResources(this.button_DECODE_BrowseFrameDir, "button_DECODE_BrowseFrameDir");
+ this.button_DECODE_BrowseFrameDir.Name = "button_DECODE_BrowseFrameDir";
+ this.button_DECODE_BrowseFrameDir.UseVisualStyleBackColor = true;
+ this.button_DECODE_BrowseFrameDir.Click += new System.EventHandler(this.button_DECODE_BrowseFrameDir_Click);
+ //
+ // checkBox_DECODE_NoSrc
+ //
+ this.checkBox_DECODE_NoSrc.AutoEllipsis = true;
+ this.checkBox_DECODE_NoSrc.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_NoSrc;
+ this.checkBox_DECODE_NoSrc.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_NoSrc", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_DECODE_NoSrc, "checkBox_DECODE_NoSrc");
+ this.checkBox_DECODE_NoSrc.Name = "checkBox_DECODE_NoSrc";
+ this.checkBox_DECODE_NoSrc.UseVisualStyleBackColor = true;
+ //
+ // textBox_DECODE_InputAppPath
+ //
+ resources.ApplyResources(this.textBox_DECODE_InputAppPath, "textBox_DECODE_InputAppPath");
+ this.textBox_DECODE_InputAppPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Decode_InputAppPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_DECODE_InputAppPath.Name = "textBox_DECODE_InputAppPath";
+ this.textBox_DECODE_InputAppPath.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Decode_InputAppPath;
+ //
+ // tabPageBuild
+ //
+ this.tabPageBuild.Controls.Add(this.groupBox_BUILD_Options);
+ this.tabPageBuild.Controls.Add(this.button_BUILD_BrowseInputProjectDir);
+ this.tabPageBuild.Controls.Add(this.button_BUILD_Build);
+ this.tabPageBuild.Controls.Add(this.textBox_BUILD_InputProjectDir);
+ resources.ApplyResources(this.tabPageBuild, "tabPageBuild");
+ this.tabPageBuild.Name = "tabPageBuild";
+ this.tabPageBuild.UseVisualStyleBackColor = true;
+ //
+ // groupBox_BUILD_Options
+ //
+ resources.ApplyResources(this.groupBox_BUILD_Options, "groupBox_BUILD_Options");
+ this.groupBox_BUILD_Options.Controls.Add(this.tableLayoutPanel_BUILD_Options);
+ this.groupBox_BUILD_Options.Name = "groupBox_BUILD_Options";
+ this.groupBox_BUILD_Options.TabStop = false;
+ //
+ // tableLayoutPanel_BUILD_Options
+ //
+ resources.ApplyResources(this.tableLayoutPanel_BUILD_Options, "tableLayoutPanel_BUILD_Options");
+ this.tableLayoutPanel_BUILD_Options.Controls.Add(this.tableLayoutPanelBuildOutputApk, 0, 4);
+ this.tableLayoutPanel_BUILD_Options.Controls.Add(this.checkBox_BUILD_CopyOriginal, 0, 1);
+ this.tableLayoutPanel_BUILD_Options.Controls.Add(this.tableLayoutPanelBuildUseFramework, 0, 3);
+ this.tableLayoutPanel_BUILD_Options.Controls.Add(this.tableLayoutPanelBuildUseAapt, 0, 2);
+ this.tableLayoutPanel_BUILD_Options.Controls.Add(this.checkBox_BUILD_ForceAll, 0, 0);
+ this.tableLayoutPanel_BUILD_Options.Name = "tableLayoutPanel_BUILD_Options";
+ //
+ // tableLayoutPanelBuildOutputApk
+ //
+ resources.ApplyResources(this.tableLayoutPanelBuildOutputApk, "tableLayoutPanelBuildOutputApk");
+ this.tableLayoutPanelBuildOutputApk.Controls.Add(this.button_BUILD_BrowseOutputAppPath, 2, 0);
+ this.tableLayoutPanelBuildOutputApk.Controls.Add(this.checkBox_BUILD_OutputAppPath, 0, 0);
+ this.tableLayoutPanelBuildOutputApk.Controls.Add(this.textBox_BUILD_OutputAppPath, 1, 0);
+ this.tableLayoutPanelBuildOutputApk.Name = "tableLayoutPanelBuildOutputApk";
+ //
+ // button_BUILD_BrowseOutputAppPath
+ //
+ this.button_BUILD_BrowseOutputAppPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseOutputAppPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.button_BUILD_BrowseOutputAppPath.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseOutputAppPath;
+ resources.ApplyResources(this.button_BUILD_BrowseOutputAppPath, "button_BUILD_BrowseOutputAppPath");
+ this.button_BUILD_BrowseOutputAppPath.Name = "button_BUILD_BrowseOutputAppPath";
+ this.button_BUILD_BrowseOutputAppPath.UseVisualStyleBackColor = true;
+ this.button_BUILD_BrowseOutputAppPath.Click += new System.EventHandler(this.button_BUILD_BrowseOutputAppPath_Click);
+ //
+ // checkBox_BUILD_OutputAppPath
+ //
+ this.checkBox_BUILD_OutputAppPath.AutoEllipsis = true;
+ this.checkBox_BUILD_OutputAppPath.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseOutputAppPath;
+ this.checkBox_BUILD_OutputAppPath.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseOutputAppPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_BUILD_OutputAppPath, "checkBox_BUILD_OutputAppPath");
+ this.checkBox_BUILD_OutputAppPath.Name = "checkBox_BUILD_OutputAppPath";
+ this.checkBox_BUILD_OutputAppPath.UseVisualStyleBackColor = true;
+ //
+ // textBox_BUILD_OutputAppPath
+ //
+ this.textBox_BUILD_OutputAppPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_OutputAppPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_BUILD_OutputAppPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseOutputAppPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_BUILD_OutputAppPath, "textBox_BUILD_OutputAppPath");
+ this.textBox_BUILD_OutputAppPath.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseOutputAppPath;
+ this.textBox_BUILD_OutputAppPath.Name = "textBox_BUILD_OutputAppPath";
+ this.textBox_BUILD_OutputAppPath.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_OutputAppPath;
+ //
+ // checkBox_BUILD_CopyOriginal
+ //
+ this.checkBox_BUILD_CopyOriginal.AutoEllipsis = true;
+ this.checkBox_BUILD_CopyOriginal.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_CopyOriginal;
+ this.checkBox_BUILD_CopyOriginal.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_CopyOriginal", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_BUILD_CopyOriginal, "checkBox_BUILD_CopyOriginal");
+ this.checkBox_BUILD_CopyOriginal.Name = "checkBox_BUILD_CopyOriginal";
+ this.checkBox_BUILD_CopyOriginal.UseVisualStyleBackColor = true;
+ //
+ // tableLayoutPanelBuildUseFramework
+ //
+ resources.ApplyResources(this.tableLayoutPanelBuildUseFramework, "tableLayoutPanelBuildUseFramework");
+ this.tableLayoutPanelBuildUseFramework.Controls.Add(this.button_BUILD_BrowseFrameDir, 2, 0);
+ this.tableLayoutPanelBuildUseFramework.Controls.Add(this.checkBox_BUILD_UseFramework, 0, 0);
+ this.tableLayoutPanelBuildUseFramework.Controls.Add(this.textBox_BUILD_FrameDir, 1, 0);
+ this.tableLayoutPanelBuildUseFramework.Name = "tableLayoutPanelBuildUseFramework";
+ //
+ // button_BUILD_BrowseFrameDir
+ //
+ this.button_BUILD_BrowseFrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.button_BUILD_BrowseFrameDir.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseFramework;
+ resources.ApplyResources(this.button_BUILD_BrowseFrameDir, "button_BUILD_BrowseFrameDir");
+ this.button_BUILD_BrowseFrameDir.Name = "button_BUILD_BrowseFrameDir";
+ this.button_BUILD_BrowseFrameDir.UseVisualStyleBackColor = true;
+ this.button_BUILD_BrowseFrameDir.Click += new System.EventHandler(this.button_BUILD_BrowseFrameDir_Click);
+ //
+ // checkBox_BUILD_UseFramework
+ //
+ this.checkBox_BUILD_UseFramework.AutoEllipsis = true;
+ this.checkBox_BUILD_UseFramework.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseFramework;
+ this.checkBox_BUILD_UseFramework.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_BUILD_UseFramework, "checkBox_BUILD_UseFramework");
+ this.checkBox_BUILD_UseFramework.Name = "checkBox_BUILD_UseFramework";
+ this.checkBox_BUILD_UseFramework.UseVisualStyleBackColor = true;
+ //
+ // textBox_BUILD_FrameDir
+ //
+ this.textBox_BUILD_FrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_FrameDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_BUILD_FrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_BUILD_FrameDir, "textBox_BUILD_FrameDir");
+ this.textBox_BUILD_FrameDir.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseFramework;
+ this.textBox_BUILD_FrameDir.Name = "textBox_BUILD_FrameDir";
+ this.textBox_BUILD_FrameDir.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_FrameDir;
+ //
+ // tableLayoutPanelBuildUseAapt
+ //
+ resources.ApplyResources(this.tableLayoutPanelBuildUseAapt, "tableLayoutPanelBuildUseAapt");
+ this.tableLayoutPanelBuildUseAapt.Controls.Add(this.textBox_BUILD_AaptPath, 0, 0);
+ this.tableLayoutPanelBuildUseAapt.Controls.Add(this.checkBox_BUILD_UseAapt, 0, 0);
+ this.tableLayoutPanelBuildUseAapt.Controls.Add(this.button_BUILD_BrowseAaptPath, 2, 0);
+ this.tableLayoutPanelBuildUseAapt.Name = "tableLayoutPanelBuildUseAapt";
+ //
+ // textBox_BUILD_AaptPath
+ //
+ this.textBox_BUILD_AaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_AaptPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_BUILD_AaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_BUILD_AaptPath, "textBox_BUILD_AaptPath");
+ this.textBox_BUILD_AaptPath.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseAapt;
+ this.textBox_BUILD_AaptPath.Name = "textBox_BUILD_AaptPath";
+ this.textBox_BUILD_AaptPath.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_AaptPath;
+ //
+ // checkBox_BUILD_UseAapt
+ //
+ this.checkBox_BUILD_UseAapt.AutoEllipsis = true;
+ this.checkBox_BUILD_UseAapt.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseAapt;
+ this.checkBox_BUILD_UseAapt.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_BUILD_UseAapt, "checkBox_BUILD_UseAapt");
+ this.checkBox_BUILD_UseAapt.Name = "checkBox_BUILD_UseAapt";
+ this.checkBox_BUILD_UseAapt.UseVisualStyleBackColor = true;
+ //
+ // button_BUILD_BrowseAaptPath
+ //
+ this.button_BUILD_BrowseAaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_UseAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.button_BUILD_BrowseAaptPath.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_UseAapt;
+ resources.ApplyResources(this.button_BUILD_BrowseAaptPath, "button_BUILD_BrowseAaptPath");
+ this.button_BUILD_BrowseAaptPath.Name = "button_BUILD_BrowseAaptPath";
+ this.button_BUILD_BrowseAaptPath.UseVisualStyleBackColor = true;
+ this.button_BUILD_BrowseAaptPath.Click += new System.EventHandler(this.button_BUILD_BrowseAaptPath_Click);
+ //
+ // checkBox_BUILD_ForceAll
+ //
+ this.checkBox_BUILD_ForceAll.AutoEllipsis = true;
+ this.checkBox_BUILD_ForceAll.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_ForceAll;
+ this.checkBox_BUILD_ForceAll.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_ForceAll", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_BUILD_ForceAll, "checkBox_BUILD_ForceAll");
+ this.checkBox_BUILD_ForceAll.Name = "checkBox_BUILD_ForceAll";
+ this.checkBox_BUILD_ForceAll.UseVisualStyleBackColor = true;
+ //
+ // button_BUILD_BrowseInputProjectDir
+ //
+ resources.ApplyResources(this.button_BUILD_BrowseInputProjectDir, "button_BUILD_BrowseInputProjectDir");
+ this.button_BUILD_BrowseInputProjectDir.Name = "button_BUILD_BrowseInputProjectDir";
+ this.button_BUILD_BrowseInputProjectDir.UseVisualStyleBackColor = true;
+ this.button_BUILD_BrowseInputProjectDir.Click += new System.EventHandler(this.button_BUILD_BrowseInputProjectDir_Click);
+ //
+ // button_BUILD_Build
+ //
+ resources.ApplyResources(this.button_BUILD_Build, "button_BUILD_Build");
+ this.button_BUILD_Build.Name = "button_BUILD_Build";
+ this.button_BUILD_Build.UseVisualStyleBackColor = true;
+ this.button_BUILD_Build.Click += new System.EventHandler(this.button_BUILD_Build_Click);
+ //
+ // textBox_BUILD_InputProjectDir
+ //
+ resources.ApplyResources(this.textBox_BUILD_InputProjectDir, "textBox_BUILD_InputProjectDir");
+ this.textBox_BUILD_InputProjectDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Build_InputDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_BUILD_InputProjectDir.Name = "textBox_BUILD_InputProjectDir";
+ this.textBox_BUILD_InputProjectDir.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Build_InputDir;
+ //
+ // tabPageInstallFramework
+ //
+ this.tabPageInstallFramework.Controls.Add(this.groupBox_IF_Options);
+ this.tabPageInstallFramework.Controls.Add(this.button_IF_InstallFramework);
+ this.tabPageInstallFramework.Controls.Add(this.button_IF_BrowseInputFramePath);
+ this.tabPageInstallFramework.Controls.Add(this.textBox_IF_InputFramePath);
+ resources.ApplyResources(this.tabPageInstallFramework, "tabPageInstallFramework");
+ this.tabPageInstallFramework.Name = "tabPageInstallFramework";
+ this.tabPageInstallFramework.UseVisualStyleBackColor = true;
+ //
+ // groupBox_IF_Options
+ //
+ resources.ApplyResources(this.groupBox_IF_Options, "groupBox_IF_Options");
+ this.groupBox_IF_Options.Controls.Add(this.tableLayoutPanel_IF_Options);
+ this.groupBox_IF_Options.Name = "groupBox_IF_Options";
+ this.groupBox_IF_Options.TabStop = false;
+ //
+ // tableLayoutPanel_IF_Options
+ //
+ resources.ApplyResources(this.tableLayoutPanel_IF_Options, "tableLayoutPanel_IF_Options");
+ this.tableLayoutPanel_IF_Options.Controls.Add(this.tableLayoutPanel_IF_Tag, 0, 1);
+ this.tableLayoutPanel_IF_Options.Controls.Add(this.tableLayoutPanel_IF_FramePath, 0, 0);
+ this.tableLayoutPanel_IF_Options.Name = "tableLayoutPanel_IF_Options";
+ //
+ // tableLayoutPanel_IF_Tag
+ //
+ resources.ApplyResources(this.tableLayoutPanel_IF_Tag, "tableLayoutPanel_IF_Tag");
+ this.tableLayoutPanel_IF_Tag.Controls.Add(this.checkBox_IF_Tag, 0, 0);
+ this.tableLayoutPanel_IF_Tag.Controls.Add(this.textBox_IF_Tag, 1, 0);
+ this.tableLayoutPanel_IF_Tag.Name = "tableLayoutPanel_IF_Tag";
+ //
+ // checkBox_IF_Tag
+ //
+ this.checkBox_IF_Tag.AutoEllipsis = true;
+ this.checkBox_IF_Tag.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_UseTag;
+ this.checkBox_IF_Tag.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_UseTag", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_IF_Tag, "checkBox_IF_Tag");
+ this.checkBox_IF_Tag.Name = "checkBox_IF_Tag";
+ this.checkBox_IF_Tag.UseVisualStyleBackColor = true;
+ //
+ // textBox_IF_Tag
+ //
+ this.textBox_IF_Tag.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_Tag", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_IF_Tag.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_UseTag", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_IF_Tag, "textBox_IF_Tag");
+ this.textBox_IF_Tag.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_UseTag;
+ this.textBox_IF_Tag.Name = "textBox_IF_Tag";
+ this.textBox_IF_Tag.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_Tag;
+ //
+ // tableLayoutPanel_IF_FramePath
+ //
+ resources.ApplyResources(this.tableLayoutPanel_IF_FramePath, "tableLayoutPanel_IF_FramePath");
+ this.tableLayoutPanel_IF_FramePath.Controls.Add(this.textBox_IF_FrameDir, 0, 0);
+ this.tableLayoutPanel_IF_FramePath.Controls.Add(this.checkBox_IF_FramePath, 0, 0);
+ this.tableLayoutPanel_IF_FramePath.Controls.Add(this.button_IF_BrowseFrameDir, 2, 0);
+ this.tableLayoutPanel_IF_FramePath.Name = "tableLayoutPanel_IF_FramePath";
+ //
+ // textBox_IF_FrameDir
+ //
+ this.textBox_IF_FrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_UseFrameDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_IF_FrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_FrameDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_IF_FrameDir, "textBox_IF_FrameDir");
+ this.textBox_IF_FrameDir.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_UseFrameDir;
+ this.textBox_IF_FrameDir.Name = "textBox_IF_FrameDir";
+ this.textBox_IF_FrameDir.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_FrameDir;
+ //
+ // checkBox_IF_FramePath
+ //
+ this.checkBox_IF_FramePath.AutoEllipsis = true;
+ this.checkBox_IF_FramePath.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_UseFrameDir;
+ this.checkBox_IF_FramePath.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_UseFrameDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_IF_FramePath, "checkBox_IF_FramePath");
+ this.checkBox_IF_FramePath.Name = "checkBox_IF_FramePath";
+ this.checkBox_IF_FramePath.UseVisualStyleBackColor = true;
+ //
+ // button_IF_BrowseFrameDir
+ //
+ this.button_IF_BrowseFrameDir.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_UseFrameDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.button_IF_BrowseFrameDir.Enabled = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_UseFrameDir;
+ resources.ApplyResources(this.button_IF_BrowseFrameDir, "button_IF_BrowseFrameDir");
+ this.button_IF_BrowseFrameDir.Name = "button_IF_BrowseFrameDir";
+ this.button_IF_BrowseFrameDir.UseVisualStyleBackColor = true;
+ this.button_IF_BrowseFrameDir.Click += new System.EventHandler(this.button_IF_BrowseFrameDir_Click);
+ //
+ // button_IF_InstallFramework
+ //
+ resources.ApplyResources(this.button_IF_InstallFramework, "button_IF_InstallFramework");
+ this.button_IF_InstallFramework.Name = "button_IF_InstallFramework";
+ this.button_IF_InstallFramework.UseVisualStyleBackColor = true;
+ this.button_IF_InstallFramework.Click += new System.EventHandler(this.button_IF_InstallFramework_Click);
+ //
+ // button_IF_BrowseInputFramePath
+ //
+ resources.ApplyResources(this.button_IF_BrowseInputFramePath, "button_IF_BrowseInputFramePath");
+ this.button_IF_BrowseInputFramePath.Name = "button_IF_BrowseInputFramePath";
+ this.button_IF_BrowseInputFramePath.UseVisualStyleBackColor = true;
+ this.button_IF_BrowseInputFramePath.Click += new System.EventHandler(this.button_IF_BrowseInputFramePath_Click);
+ //
+ // textBox_IF_InputFramePath
+ //
+ resources.ApplyResources(this.textBox_IF_InputFramePath, "textBox_IF_InputFramePath");
+ this.textBox_IF_InputFramePath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_InstallFramework_InputFramePath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_IF_InputFramePath.Name = "textBox_IF_InputFramePath";
+ this.textBox_IF_InputFramePath.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_InstallFramework_InputFramePath;
+ //
+ // tabPageSign
+ //
+ this.tabPageSign.BackColor = System.Drawing.SystemColors.Window;
+ this.tabPageSign.Controls.Add(this.groupBox_SIGN_Options);
+ this.tabPageSign.Controls.Add(this.textBox_SIGN_InputFile);
+ this.tabPageSign.Controls.Add(this.button_SIGN_BrowseInputFile);
+ this.tabPageSign.Controls.Add(this.button_SIGN_Sign);
+ resources.ApplyResources(this.tabPageSign, "tabPageSign");
+ this.tabPageSign.Name = "tabPageSign";
+ //
+ // groupBox_SIGN_Options
+ //
+ resources.ApplyResources(this.groupBox_SIGN_Options, "groupBox_SIGN_Options");
+ this.groupBox_SIGN_Options.Controls.Add(this.tableLayoutPanel_SIGN_Options);
+ this.groupBox_SIGN_Options.Name = "groupBox_SIGN_Options";
+ this.groupBox_SIGN_Options.TabStop = false;
+ //
+ // tableLayoutPanel_SIGN_Options
+ //
+ resources.ApplyResources(this.tableLayoutPanel_SIGN_Options, "tableLayoutPanel_SIGN_Options");
+ this.tableLayoutPanel_SIGN_Options.Controls.Add(this.tableLayoutPanel_SIGN_PrivateKey, 0, 1);
+ this.tableLayoutPanel_SIGN_Options.Controls.Add(this.tableLayoutPanel_SIGN_PublicKey, 0, 0);
+ this.tableLayoutPanel_SIGN_Options.Controls.Add(this.tableLayoutPanel_SIGN_OutputFile, 0, 2);
+ this.tableLayoutPanel_SIGN_Options.Name = "tableLayoutPanel_SIGN_Options";
+ //
+ // tableLayoutPanel_SIGN_PrivateKey
+ //
+ resources.ApplyResources(this.tableLayoutPanel_SIGN_PrivateKey, "tableLayoutPanel_SIGN_PrivateKey");
+ this.tableLayoutPanel_SIGN_PrivateKey.Controls.Add(this.label_SIGN_PrivateKey, 0, 0);
+ this.tableLayoutPanel_SIGN_PrivateKey.Controls.Add(this.button_SIGN_BrowsePrivateKey, 2, 0);
+ this.tableLayoutPanel_SIGN_PrivateKey.Controls.Add(this.textBox_SIGN_PrivateKey, 1, 0);
+ this.tableLayoutPanel_SIGN_PrivateKey.Name = "tableLayoutPanel_SIGN_PrivateKey";
+ //
+ // label_SIGN_PrivateKey
+ //
+ resources.ApplyResources(this.label_SIGN_PrivateKey, "label_SIGN_PrivateKey");
+ this.label_SIGN_PrivateKey.Name = "label_SIGN_PrivateKey";
+ //
+ // button_SIGN_BrowsePrivateKey
+ //
+ resources.ApplyResources(this.button_SIGN_BrowsePrivateKey, "button_SIGN_BrowsePrivateKey");
+ this.button_SIGN_BrowsePrivateKey.Name = "button_SIGN_BrowsePrivateKey";
+ this.button_SIGN_BrowsePrivateKey.UseVisualStyleBackColor = true;
+ this.button_SIGN_BrowsePrivateKey.Click += new System.EventHandler(this.button_SIGN_BrowsePrivateKey_Click);
+ //
+ // textBox_SIGN_PrivateKey
+ //
+ this.textBox_SIGN_PrivateKey.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_SIGN_PrivateKey", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_SIGN_PrivateKey, "textBox_SIGN_PrivateKey");
+ this.textBox_SIGN_PrivateKey.Name = "textBox_SIGN_PrivateKey";
+ this.textBox_SIGN_PrivateKey.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_SIGN_PrivateKey;
+ //
+ // tableLayoutPanel_SIGN_PublicKey
+ //
+ resources.ApplyResources(this.tableLayoutPanel_SIGN_PublicKey, "tableLayoutPanel_SIGN_PublicKey");
+ this.tableLayoutPanel_SIGN_PublicKey.Controls.Add(this.label_SIGN_PublicKey, 0, 0);
+ this.tableLayoutPanel_SIGN_PublicKey.Controls.Add(this.button_SIGN_BrowsePublicKey, 2, 0);
+ this.tableLayoutPanel_SIGN_PublicKey.Controls.Add(this.textBox_SIGN_PublicKey, 1, 0);
+ this.tableLayoutPanel_SIGN_PublicKey.Name = "tableLayoutPanel_SIGN_PublicKey";
+ //
+ // label_SIGN_PublicKey
+ //
+ resources.ApplyResources(this.label_SIGN_PublicKey, "label_SIGN_PublicKey");
+ this.label_SIGN_PublicKey.Name = "label_SIGN_PublicKey";
+ //
+ // button_SIGN_BrowsePublicKey
+ //
+ resources.ApplyResources(this.button_SIGN_BrowsePublicKey, "button_SIGN_BrowsePublicKey");
+ this.button_SIGN_BrowsePublicKey.Name = "button_SIGN_BrowsePublicKey";
+ this.button_SIGN_BrowsePublicKey.UseVisualStyleBackColor = true;
+ this.button_SIGN_BrowsePublicKey.Click += new System.EventHandler(this.button_SIGN_BrowsePublicKey_Click);
+ //
+ // textBox_SIGN_PublicKey
+ //
+ this.textBox_SIGN_PublicKey.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_SIGN_PublicKey", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_SIGN_PublicKey, "textBox_SIGN_PublicKey");
+ this.textBox_SIGN_PublicKey.Name = "textBox_SIGN_PublicKey";
+ this.textBox_SIGN_PublicKey.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_SIGN_PublicKey;
+ //
+ // tableLayoutPanel_SIGN_OutputFile
+ //
+ resources.ApplyResources(this.tableLayoutPanel_SIGN_OutputFile, "tableLayoutPanel_SIGN_OutputFile");
+ this.tableLayoutPanel_SIGN_OutputFile.Controls.Add(this.label_SIGN_OutputFile, 0, 0);
+ this.tableLayoutPanel_SIGN_OutputFile.Controls.Add(this.button_SIGN_BrowseOutputFile, 2, 0);
+ this.tableLayoutPanel_SIGN_OutputFile.Controls.Add(this.textBox_SIGN_OutputFile, 1, 0);
+ this.tableLayoutPanel_SIGN_OutputFile.Name = "tableLayoutPanel_SIGN_OutputFile";
+ //
+ // label_SIGN_OutputFile
+ //
+ resources.ApplyResources(this.label_SIGN_OutputFile, "label_SIGN_OutputFile");
+ this.label_SIGN_OutputFile.Name = "label_SIGN_OutputFile";
+ //
+ // button_SIGN_BrowseOutputFile
+ //
+ resources.ApplyResources(this.button_SIGN_BrowseOutputFile, "button_SIGN_BrowseOutputFile");
+ this.button_SIGN_BrowseOutputFile.Name = "button_SIGN_BrowseOutputFile";
+ this.button_SIGN_BrowseOutputFile.UseVisualStyleBackColor = true;
+ this.button_SIGN_BrowseOutputFile.Click += new System.EventHandler(this.button_SIGN_BrowseOutputFile_Click);
+ //
+ // textBox_SIGN_OutputFile
+ //
+ this.textBox_SIGN_OutputFile.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_SIGN_OutputFile", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_SIGN_OutputFile, "textBox_SIGN_OutputFile");
+ this.textBox_SIGN_OutputFile.Name = "textBox_SIGN_OutputFile";
+ this.textBox_SIGN_OutputFile.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_SIGN_OutputFile;
+ //
+ // textBox_SIGN_InputFile
+ //
+ resources.ApplyResources(this.textBox_SIGN_InputFile, "textBox_SIGN_InputFile");
+ this.textBox_SIGN_InputFile.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_SIGN_InputFile", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_SIGN_InputFile.Name = "textBox_SIGN_InputFile";
+ this.textBox_SIGN_InputFile.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_SIGN_InputFile;
+ //
+ // button_SIGN_BrowseInputFile
+ //
+ resources.ApplyResources(this.button_SIGN_BrowseInputFile, "button_SIGN_BrowseInputFile");
+ this.button_SIGN_BrowseInputFile.Name = "button_SIGN_BrowseInputFile";
+ this.button_SIGN_BrowseInputFile.UseVisualStyleBackColor = true;
+ this.button_SIGN_BrowseInputFile.Click += new System.EventHandler(this.button_SIGN_BrowseInputFile_Click);
+ //
+ // button_SIGN_Sign
+ //
+ resources.ApplyResources(this.button_SIGN_Sign, "button_SIGN_Sign");
+ this.button_SIGN_Sign.Name = "button_SIGN_Sign";
+ this.button_SIGN_Sign.UseVisualStyleBackColor = true;
+ this.button_SIGN_Sign.Click += new System.EventHandler(this.button_SIGN_Sign_Click);
+ //
+ // tabPageZipAlign
+ //
+ this.tabPageZipAlign.Controls.Add(this.groupBox_ZIPALIGN_Options);
+ this.tabPageZipAlign.Controls.Add(this.button_ZIPALIGN_Align);
+ this.tabPageZipAlign.Controls.Add(this.button_ZIPALIGN_BrowseInputFile);
+ this.tabPageZipAlign.Controls.Add(this.textBox_ZIPALIGN_InputFile);
+ resources.ApplyResources(this.tabPageZipAlign, "tabPageZipAlign");
+ this.tabPageZipAlign.Name = "tabPageZipAlign";
+ this.tabPageZipAlign.UseVisualStyleBackColor = true;
+ //
+ // groupBox_ZIPALIGN_Options
+ //
+ resources.ApplyResources(this.groupBox_ZIPALIGN_Options, "groupBox_ZIPALIGN_Options");
+ this.groupBox_ZIPALIGN_Options.Controls.Add(this.tableLayoutPanel_ZIPALIGN_Options);
+ this.groupBox_ZIPALIGN_Options.Name = "groupBox_ZIPALIGN_Options";
+ this.groupBox_ZIPALIGN_Options.TabStop = false;
+ //
+ // tableLayoutPanel_ZIPALIGN_Options
+ //
+ resources.ApplyResources(this.tableLayoutPanel_ZIPALIGN_Options, "tableLayoutPanel_ZIPALIGN_Options");
+ this.tableLayoutPanel_ZIPALIGN_Options.Controls.Add(this.checkBox_ZIPALIGN_Recompress, 0, 3);
+ this.tableLayoutPanel_ZIPALIGN_Options.Controls.Add(this.tableLayoutPanel_ZIPALIGN_AlignmentBytes, 0, 0);
+ this.tableLayoutPanel_ZIPALIGN_Options.Controls.Add(this.checkBox_ZIPALIGN_VerboseOutput, 0, 2);
+ this.tableLayoutPanel_ZIPALIGN_Options.Controls.Add(this.checkBox_ZIPALIGN_CheckAlignment, 0, 1);
+ this.tableLayoutPanel_ZIPALIGN_Options.Controls.Add(this.tableLayoutPanel_ZIPALIGN_OutputFile, 0, 5);
+ this.tableLayoutPanel_ZIPALIGN_Options.Controls.Add(this.checkBox_ZIPALIGN_OverwriteOutputFile, 0, 4);
+ this.tableLayoutPanel_ZIPALIGN_Options.Name = "tableLayoutPanel_ZIPALIGN_Options";
+ //
+ // checkBox_ZIPALIGN_Recompress
+ //
+ this.checkBox_ZIPALIGN_Recompress.AutoEllipsis = true;
+ this.checkBox_ZIPALIGN_Recompress.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Zipalign_Recompress;
+ this.checkBox_ZIPALIGN_Recompress.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Zipalign_Recompress", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_ZIPALIGN_Recompress, "checkBox_ZIPALIGN_Recompress");
+ this.checkBox_ZIPALIGN_Recompress.Name = "checkBox_ZIPALIGN_Recompress";
+ this.checkBox_ZIPALIGN_Recompress.UseVisualStyleBackColor = true;
+ //
+ // tableLayoutPanel_ZIPALIGN_AlignmentBytes
+ //
+ resources.ApplyResources(this.tableLayoutPanel_ZIPALIGN_AlignmentBytes, "tableLayoutPanel_ZIPALIGN_AlignmentBytes");
+ this.tableLayoutPanel_ZIPALIGN_AlignmentBytes.Controls.Add(this.label_ZIPALIGN_AlignmentBytes, 0, 0);
+ this.tableLayoutPanel_ZIPALIGN_AlignmentBytes.Controls.Add(this.numericUpDown_ZIPALIGN_AlignmentBytes, 1, 0);
+ this.tableLayoutPanel_ZIPALIGN_AlignmentBytes.Name = "tableLayoutPanel_ZIPALIGN_AlignmentBytes";
+ //
+ // label_ZIPALIGN_AlignmentBytes
+ //
+ resources.ApplyResources(this.label_ZIPALIGN_AlignmentBytes, "label_ZIPALIGN_AlignmentBytes");
+ this.label_ZIPALIGN_AlignmentBytes.Name = "label_ZIPALIGN_AlignmentBytes";
+ //
+ // numericUpDown_ZIPALIGN_AlignmentBytes
+ //
+ this.numericUpDown_ZIPALIGN_AlignmentBytes.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::APKToolGUI.Properties.Settings.Default, "MAIN_Zipalign_AlignmentInBytes", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.numericUpDown_ZIPALIGN_AlignmentBytes, "numericUpDown_ZIPALIGN_AlignmentBytes");
+ this.numericUpDown_ZIPALIGN_AlignmentBytes.Maximum = new decimal(new int[] {
+ 32,
+ 0,
+ 0,
+ 0});
+ this.numericUpDown_ZIPALIGN_AlignmentBytes.Name = "numericUpDown_ZIPALIGN_AlignmentBytes";
+ this.numericUpDown_ZIPALIGN_AlignmentBytes.Value = global::APKToolGUI.Properties.Settings.Default.MAIN_Zipalign_AlignmentInBytes;
+ //
+ // checkBox_ZIPALIGN_VerboseOutput
+ //
+ this.checkBox_ZIPALIGN_VerboseOutput.AutoEllipsis = true;
+ this.checkBox_ZIPALIGN_VerboseOutput.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Zipalign_Verbose;
+ this.checkBox_ZIPALIGN_VerboseOutput.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Zipalign_Verbose", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_ZIPALIGN_VerboseOutput, "checkBox_ZIPALIGN_VerboseOutput");
+ this.checkBox_ZIPALIGN_VerboseOutput.Name = "checkBox_ZIPALIGN_VerboseOutput";
+ this.checkBox_ZIPALIGN_VerboseOutput.UseVisualStyleBackColor = true;
+ //
+ // checkBox_ZIPALIGN_CheckAlignment
+ //
+ this.checkBox_ZIPALIGN_CheckAlignment.AutoEllipsis = true;
+ this.checkBox_ZIPALIGN_CheckAlignment.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Zipalign_CheckOnly;
+ this.checkBox_ZIPALIGN_CheckAlignment.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Zipalign_CheckOnly", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_ZIPALIGN_CheckAlignment, "checkBox_ZIPALIGN_CheckAlignment");
+ this.checkBox_ZIPALIGN_CheckAlignment.Name = "checkBox_ZIPALIGN_CheckAlignment";
+ this.checkBox_ZIPALIGN_CheckAlignment.UseVisualStyleBackColor = true;
+ this.checkBox_ZIPALIGN_CheckAlignment.CheckedChanged += new System.EventHandler(this.checkBox_ZIPALIGN_CheckAlignment_CheckedChanged);
+ //
+ // tableLayoutPanel_ZIPALIGN_OutputFile
+ //
+ resources.ApplyResources(this.tableLayoutPanel_ZIPALIGN_OutputFile, "tableLayoutPanel_ZIPALIGN_OutputFile");
+ this.tableLayoutPanel_ZIPALIGN_OutputFile.Controls.Add(this.label_ZIPALIGN_OutputFile, 0, 0);
+ this.tableLayoutPanel_ZIPALIGN_OutputFile.Controls.Add(this.button_ZIPALIGN_BrowseOutputFile, 2, 0);
+ this.tableLayoutPanel_ZIPALIGN_OutputFile.Controls.Add(this.textBox_ZIPALIGN_OutputFile, 1, 0);
+ this.tableLayoutPanel_ZIPALIGN_OutputFile.Name = "tableLayoutPanel_ZIPALIGN_OutputFile";
+ //
+ // label_ZIPALIGN_OutputFile
+ //
+ resources.ApplyResources(this.label_ZIPALIGN_OutputFile, "label_ZIPALIGN_OutputFile");
+ this.label_ZIPALIGN_OutputFile.Name = "label_ZIPALIGN_OutputFile";
+ //
+ // button_ZIPALIGN_BrowseOutputFile
+ //
+ resources.ApplyResources(this.button_ZIPALIGN_BrowseOutputFile, "button_ZIPALIGN_BrowseOutputFile");
+ this.button_ZIPALIGN_BrowseOutputFile.Name = "button_ZIPALIGN_BrowseOutputFile";
+ this.button_ZIPALIGN_BrowseOutputFile.UseVisualStyleBackColor = true;
+ this.button_ZIPALIGN_BrowseOutputFile.Click += new System.EventHandler(this.button_ZIPALIGN_BrowseOutputFile_Click);
+ //
+ // textBox_ZIPALIGN_OutputFile
+ //
+ this.textBox_ZIPALIGN_OutputFile.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Zipalign_OutputFile", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.textBox_ZIPALIGN_OutputFile, "textBox_ZIPALIGN_OutputFile");
+ this.textBox_ZIPALIGN_OutputFile.Name = "textBox_ZIPALIGN_OutputFile";
+ this.textBox_ZIPALIGN_OutputFile.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Zipalign_OutputFile;
+ //
+ // checkBox_ZIPALIGN_OverwriteOutputFile
+ //
+ this.checkBox_ZIPALIGN_OverwriteOutputFile.AutoEllipsis = true;
+ this.checkBox_ZIPALIGN_OverwriteOutputFile.Checked = global::APKToolGUI.Properties.Settings.Default.MAIN_Zipalign_OverwriteOutputFile;
+ this.checkBox_ZIPALIGN_OverwriteOutputFile.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "MAIN_Zipalign_OverwriteOutputFile", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ resources.ApplyResources(this.checkBox_ZIPALIGN_OverwriteOutputFile, "checkBox_ZIPALIGN_OverwriteOutputFile");
+ this.checkBox_ZIPALIGN_OverwriteOutputFile.Name = "checkBox_ZIPALIGN_OverwriteOutputFile";
+ this.checkBox_ZIPALIGN_OverwriteOutputFile.UseVisualStyleBackColor = true;
+ //
+ // button_ZIPALIGN_Align
+ //
+ resources.ApplyResources(this.button_ZIPALIGN_Align, "button_ZIPALIGN_Align");
+ this.button_ZIPALIGN_Align.Name = "button_ZIPALIGN_Align";
+ this.button_ZIPALIGN_Align.UseVisualStyleBackColor = true;
+ this.button_ZIPALIGN_Align.Click += new System.EventHandler(this.button_ZIPALIGN_Align_Click);
+ //
+ // button_ZIPALIGN_BrowseInputFile
+ //
+ resources.ApplyResources(this.button_ZIPALIGN_BrowseInputFile, "button_ZIPALIGN_BrowseInputFile");
+ this.button_ZIPALIGN_BrowseInputFile.Name = "button_ZIPALIGN_BrowseInputFile";
+ this.button_ZIPALIGN_BrowseInputFile.UseVisualStyleBackColor = true;
+ this.button_ZIPALIGN_BrowseInputFile.Click += new System.EventHandler(this.button_ZIPALIGN_BrowseInputFile_Click);
+ //
+ // textBox_ZIPALIGN_InputFile
+ //
+ resources.ApplyResources(this.textBox_ZIPALIGN_InputFile, "textBox_ZIPALIGN_InputFile");
+ this.textBox_ZIPALIGN_InputFile.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "MAIN_Zipalign_InputFile", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBox_ZIPALIGN_InputFile.Name = "textBox_ZIPALIGN_InputFile";
+ this.textBox_ZIPALIGN_InputFile.Text = global::APKToolGUI.Properties.Settings.Default.MAIN_Zipalign_InputFile;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripStatusLabelStateImage,
+ this.toolStripStatusLabelStateText,
+ this.toolStripProgressBar1});
+ resources.ApplyResources(this.statusStrip1, "statusStrip1");
+ this.statusStrip1.Name = "statusStrip1";
+ //
+ // toolStripStatusLabelStateImage
+ //
+ this.toolStripStatusLabelStateImage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
+ this.toolStripStatusLabelStateImage.Name = "toolStripStatusLabelStateImage";
+ resources.ApplyResources(this.toolStripStatusLabelStateImage, "toolStripStatusLabelStateImage");
+ //
+ // toolStripStatusLabelStateText
+ //
+ this.toolStripStatusLabelStateText.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripStatusLabelStateText.Image = global::APKToolGUI.Properties.Resources.waiting;
+ resources.ApplyResources(this.toolStripStatusLabelStateText, "toolStripStatusLabelStateText");
+ this.toolStripStatusLabelStateText.Name = "toolStripStatusLabelStateText";
+ this.toolStripStatusLabelStateText.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
+ this.toolStripStatusLabelStateText.Spring = true;
+ //
+ // toolStripProgressBar1
+ //
+ this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
+ this.toolStripProgressBar1.MarqueeAnimationSpeed = 30;
+ this.toolStripProgressBar1.Name = "toolStripProgressBar1";
+ this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
+ //
+ // dataGridView1
+ //
+ this.dataGridView1.AllowUserToAddRows = false;
+ this.dataGridView1.AllowUserToDeleteRows = false;
+ this.dataGridView1.AllowUserToResizeRows = false;
+ resources.ApplyResources(this.dataGridView1, "dataGridView1");
+ this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Window;
+ this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
+ this.dataGridView1.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
+ this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
+ this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+ this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.ColumnImage,
+ this.ColumnTime,
+ this.ColumnMessage});
+ this.dataGridView1.ContextMenuStrip = this.contextMenuStripLog;
+ this.dataGridView1.Name = "dataGridView1";
+ this.dataGridView1.ReadOnly = true;
+ this.dataGridView1.RowHeadersVisible = false;
+ this.dataGridView1.RowTemplate.Height = 19;
+ this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.dataGridView1.ShowEditingIcon = false;
+ //
+ // ColumnImage
+ //
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+ dataGridViewCellStyle1.NullValue = null;
+ this.ColumnImage.DefaultCellStyle = dataGridViewCellStyle1;
+ this.ColumnImage.Frozen = true;
+ resources.ApplyResources(this.ColumnImage, "ColumnImage");
+ this.ColumnImage.Name = "ColumnImage";
+ this.ColumnImage.ReadOnly = true;
+ this.ColumnImage.Resizable = System.Windows.Forms.DataGridViewTriState.False;
+ //
+ // ColumnTime
+ //
+ this.ColumnTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
+ this.ColumnTime.Frozen = true;
+ resources.ApplyResources(this.ColumnTime, "ColumnTime");
+ this.ColumnTime.Name = "ColumnTime";
+ this.ColumnTime.ReadOnly = true;
+ //
+ // ColumnMessage
+ //
+ this.ColumnMessage.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+ resources.ApplyResources(this.ColumnMessage, "ColumnMessage");
+ this.ColumnMessage.Name = "ColumnMessage";
+ this.ColumnMessage.ReadOnly = true;
+ //
+ // contextMenuStripLog
+ //
+ this.contextMenuStripLog.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.clearLogToolStripMenuItem});
+ this.contextMenuStripLog.Name = "contextMenuStripLog";
+ resources.ApplyResources(this.contextMenuStripLog, "contextMenuStripLog");
+ //
+ // clearLogToolStripMenuItem
+ //
+ this.clearLogToolStripMenuItem.Name = "clearLogToolStripMenuItem";
+ resources.ApplyResources(this.clearLogToolStripMenuItem, "clearLogToolStripMenuItem");
+ this.clearLogToolStripMenuItem.Click += new System.EventHandler(this.clearLogToolStripMenuItem_Click);
+ //
+ // mainMenu1
+ //
+ this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+ this.menuItemFile,
+ this.menuItemHelp});
+ //
+ // menuItemFile
+ //
+ this.menuItemFile.Index = 0;
+ this.menuItemFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+ this.menuItemSettings,
+ this.menuItemExit});
+ resources.ApplyResources(this.menuItemFile, "menuItemFile");
+ //
+ // menuItemSettings
+ //
+ this.menuItemSettings.Index = 0;
+ resources.ApplyResources(this.menuItemSettings, "menuItemSettings");
+ this.menuItemSettings.Click += new System.EventHandler(this.menuItemSettings_Click);
+ //
+ // menuItemExit
+ //
+ this.menuItemExit.Index = 1;
+ resources.ApplyResources(this.menuItemExit, "menuItemExit");
+ this.menuItemExit.Click += new System.EventHandler(this.menuItemExit_Click);
+ //
+ // menuItemHelp
+ //
+ this.menuItemHelp.Index = 1;
+ this.menuItemHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
+ this.menuItemCheckUpdate,
+ this.menuItemAbout});
+ resources.ApplyResources(this.menuItemHelp, "menuItemHelp");
+ //
+ // menuItemCheckUpdate
+ //
+ this.menuItemCheckUpdate.Index = 0;
+ resources.ApplyResources(this.menuItemCheckUpdate, "menuItemCheckUpdate");
+ this.menuItemCheckUpdate.Click += new System.EventHandler(this.menuItemCheckUpdate_Click);
+ //
+ // menuItemAbout
+ //
+ this.menuItemAbout.Index = 1;
+ resources.ApplyResources(this.menuItemAbout, "menuItemAbout");
+ this.menuItemAbout.Click += new System.EventHandler(this.menuItemAbout_Click);
+ //
+ // openFileDialogApk
+ //
+ resources.ApplyResources(this.openFileDialogApk, "openFileDialogApk");
+ //
+ // folderBrowserDialogBuild
+ //
+ this.folderBrowserDialogBuild.ShowNewFolderButton = false;
+ //
+ // FormMain
+ //
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.dataGridView1);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.tabControlMain);
+ this.DoubleBuffered = true;
+ this.Menu = this.mainMenu1;
+ this.Name = "FormMain";
+ this.Shown += new System.EventHandler(this.FormMain_Shown);
+ this.tabControlMain.ResumeLayout(false);
+ this.tabPageDecode.ResumeLayout(false);
+ this.tabPageDecode.PerformLayout();
+ this.groupBox_DECODE_Options.ResumeLayout(false);
+ this.tableLayoutPanel_DECODE_Options.ResumeLayout(false);
+ this.tableLayoutPanelDecodeOutputDir.ResumeLayout(false);
+ this.tableLayoutPanelDecodeOutputDir.PerformLayout();
+ this.tableLayoutPanelDecodeUseFramework.ResumeLayout(false);
+ this.tableLayoutPanelDecodeUseFramework.PerformLayout();
+ this.tabPageBuild.ResumeLayout(false);
+ this.tabPageBuild.PerformLayout();
+ this.groupBox_BUILD_Options.ResumeLayout(false);
+ this.tableLayoutPanel_BUILD_Options.ResumeLayout(false);
+ this.tableLayoutPanelBuildOutputApk.ResumeLayout(false);
+ this.tableLayoutPanelBuildOutputApk.PerformLayout();
+ this.tableLayoutPanelBuildUseFramework.ResumeLayout(false);
+ this.tableLayoutPanelBuildUseFramework.PerformLayout();
+ this.tableLayoutPanelBuildUseAapt.ResumeLayout(false);
+ this.tableLayoutPanelBuildUseAapt.PerformLayout();
+ this.tabPageInstallFramework.ResumeLayout(false);
+ this.tabPageInstallFramework.PerformLayout();
+ this.groupBox_IF_Options.ResumeLayout(false);
+ this.tableLayoutPanel_IF_Options.ResumeLayout(false);
+ this.tableLayoutPanel_IF_Tag.ResumeLayout(false);
+ this.tableLayoutPanel_IF_Tag.PerformLayout();
+ this.tableLayoutPanel_IF_FramePath.ResumeLayout(false);
+ this.tableLayoutPanel_IF_FramePath.PerformLayout();
+ this.tabPageSign.ResumeLayout(false);
+ this.tabPageSign.PerformLayout();
+ this.groupBox_SIGN_Options.ResumeLayout(false);
+ this.tableLayoutPanel_SIGN_Options.ResumeLayout(false);
+ this.tableLayoutPanel_SIGN_PrivateKey.ResumeLayout(false);
+ this.tableLayoutPanel_SIGN_PrivateKey.PerformLayout();
+ this.tableLayoutPanel_SIGN_PublicKey.ResumeLayout(false);
+ this.tableLayoutPanel_SIGN_PublicKey.PerformLayout();
+ this.tableLayoutPanel_SIGN_OutputFile.ResumeLayout(false);
+ this.tableLayoutPanel_SIGN_OutputFile.PerformLayout();
+ this.tabPageZipAlign.ResumeLayout(false);
+ this.tabPageZipAlign.PerformLayout();
+ this.groupBox_ZIPALIGN_Options.ResumeLayout(false);
+ this.tableLayoutPanel_ZIPALIGN_Options.ResumeLayout(false);
+ this.tableLayoutPanel_ZIPALIGN_AlignmentBytes.ResumeLayout(false);
+ this.tableLayoutPanel_ZIPALIGN_AlignmentBytes.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_ZIPALIGN_AlignmentBytes)).EndInit();
+ this.tableLayoutPanel_ZIPALIGN_OutputFile.ResumeLayout(false);
+ this.tableLayoutPanel_ZIPALIGN_OutputFile.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+ this.contextMenuStripLog.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button_DECODE_Decode;
+ private System.Windows.Forms.TextBox textBox_DECODE_InputAppPath;
+ private System.Windows.Forms.Button button_DECODE_BrowseInputAppPath;
+ private System.Windows.Forms.TabControl tabControlMain;
+ private System.Windows.Forms.TabPage tabPageDecode;
+ private System.Windows.Forms.TabPage tabPageSign;
+ private System.Windows.Forms.TextBox textBox_SIGN_InputFile;
+ private System.Windows.Forms.Button button_SIGN_BrowseInputFile;
+ private System.Windows.Forms.Button button_SIGN_Sign;
+ private System.Windows.Forms.TabPage tabPageZipAlign;
+ private System.Windows.Forms.TextBox textBox_ZIPALIGN_InputFile;
+ private System.Windows.Forms.Button button_ZIPALIGN_BrowseInputFile;
+ private System.Windows.Forms.Button button_ZIPALIGN_Align;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateText;
+ private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
+ private System.Windows.Forms.DataGridView dataGridView1;
+ private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateImage;
+ private System.Windows.Forms.ContextMenuStrip contextMenuStripLog;
+ private System.Windows.Forms.ToolStripMenuItem clearLogToolStripMenuItem;
+ private System.Windows.Forms.TabPage tabPageBuild;
+ private System.Windows.Forms.TextBox textBox_BUILD_InputProjectDir;
+ private System.Windows.Forms.Button button_BUILD_Build;
+ private System.Windows.Forms.Button button_BUILD_BrowseInputProjectDir;
+ private System.Windows.Forms.TabPage tabPageInstallFramework;
+ private System.Windows.Forms.TextBox textBox_IF_InputFramePath;
+ private System.Windows.Forms.Button button_IF_BrowseInputFramePath;
+ private System.Windows.Forms.Button button_IF_InstallFramework;
+ private System.Windows.Forms.MainMenu mainMenu1;
+ private System.Windows.Forms.MenuItem menuItemFile;
+ private System.Windows.Forms.MenuItem menuItemHelp;
+ private System.Windows.Forms.MenuItem menuItemSettings;
+ private System.Windows.Forms.MenuItem menuItemExit;
+ private System.Windows.Forms.MenuItem menuItemCheckUpdate;
+ private System.Windows.Forms.MenuItem menuItemAbout;
+ private System.Windows.Forms.GroupBox groupBox_DECODE_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_DECODE_Options;
+ private System.Windows.Forms.CheckBox checkBox_DECODE_MatchOriginal;
+ private System.Windows.Forms.CheckBox checkBox_DECODE_KeepBrokenRes;
+ private System.Windows.Forms.CheckBox checkBox_DECODE_Force;
+ private System.Windows.Forms.CheckBox checkBox_DECODE_NoRes;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanelDecodeOutputDir;
+ private System.Windows.Forms.Button button_DECODE_BrowseOutputDirectory;
+ private System.Windows.Forms.CheckBox checkBox_DECODE_OutputDirectory;
+ private System.Windows.Forms.TextBox textBox_DECODE_OutputDirectory;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanelDecodeUseFramework;
+ private System.Windows.Forms.TextBox textBox_DECODE_FrameDir;
+ private System.Windows.Forms.CheckBox checkBox_DECODE_UseFramework;
+ private System.Windows.Forms.Button button_DECODE_BrowseFrameDir;
+ private System.Windows.Forms.CheckBox checkBox_DECODE_NoSrc;
+ private System.Windows.Forms.GroupBox groupBox_BUILD_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_BUILD_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanelBuildOutputApk;
+ private System.Windows.Forms.Button button_BUILD_BrowseOutputAppPath;
+ private System.Windows.Forms.CheckBox checkBox_BUILD_OutputAppPath;
+ private System.Windows.Forms.TextBox textBox_BUILD_OutputAppPath;
+ private System.Windows.Forms.CheckBox checkBox_BUILD_CopyOriginal;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanelBuildUseFramework;
+ private System.Windows.Forms.Button button_BUILD_BrowseFrameDir;
+ private System.Windows.Forms.CheckBox checkBox_BUILD_UseFramework;
+ private System.Windows.Forms.TextBox textBox_BUILD_FrameDir;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanelBuildUseAapt;
+ private System.Windows.Forms.TextBox textBox_BUILD_AaptPath;
+ private System.Windows.Forms.CheckBox checkBox_BUILD_UseAapt;
+ private System.Windows.Forms.Button button_BUILD_BrowseAaptPath;
+ private System.Windows.Forms.CheckBox checkBox_BUILD_ForceAll;
+ private System.Windows.Forms.GroupBox groupBox_IF_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_IF_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_IF_Tag;
+ private System.Windows.Forms.CheckBox checkBox_IF_Tag;
+ private System.Windows.Forms.TextBox textBox_IF_Tag;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_IF_FramePath;
+ private System.Windows.Forms.TextBox textBox_IF_FrameDir;
+ private System.Windows.Forms.CheckBox checkBox_IF_FramePath;
+ private System.Windows.Forms.Button button_IF_BrowseFrameDir;
+ private System.Windows.Forms.GroupBox groupBox_ZIPALIGN_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_ZIPALIGN_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_ZIPALIGN_AlignmentBytes;
+ private System.Windows.Forms.Label label_ZIPALIGN_AlignmentBytes;
+ private System.Windows.Forms.NumericUpDown numericUpDown_ZIPALIGN_AlignmentBytes;
+ private System.Windows.Forms.CheckBox checkBox_ZIPALIGN_VerboseOutput;
+ private System.Windows.Forms.CheckBox checkBox_ZIPALIGN_CheckAlignment;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_ZIPALIGN_OutputFile;
+ private System.Windows.Forms.Label label_ZIPALIGN_OutputFile;
+ private System.Windows.Forms.Button button_ZIPALIGN_BrowseOutputFile;
+ private System.Windows.Forms.TextBox textBox_ZIPALIGN_OutputFile;
+ private System.Windows.Forms.CheckBox checkBox_ZIPALIGN_OverwriteOutputFile;
+ private System.Windows.Forms.CheckBox checkBox_ZIPALIGN_Recompress;
+ private System.Windows.Forms.DataGridViewImageColumn ColumnImage;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ColumnTime;
+ private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage;
+ private System.Windows.Forms.GroupBox groupBox_SIGN_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_SIGN_Options;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_SIGN_PrivateKey;
+ private System.Windows.Forms.Label label_SIGN_PrivateKey;
+ private System.Windows.Forms.Button button_SIGN_BrowsePrivateKey;
+ private System.Windows.Forms.TextBox textBox_SIGN_PrivateKey;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_SIGN_PublicKey;
+ private System.Windows.Forms.Label label_SIGN_PublicKey;
+ private System.Windows.Forms.Button button_SIGN_BrowsePublicKey;
+ private System.Windows.Forms.TextBox textBox_SIGN_PublicKey;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel_SIGN_OutputFile;
+ private System.Windows.Forms.Label label_SIGN_OutputFile;
+ private System.Windows.Forms.Button button_SIGN_BrowseOutputFile;
+ private System.Windows.Forms.TextBox textBox_SIGN_OutputFile;
+ private System.Windows.Forms.OpenFileDialog openFileDialogApk;
+ private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogBuild;
+ }
+}
+
diff --git a/APKToolGUI/FormMain.cs b/APKToolGUI/FormMain.cs
new file mode 100644
index 0000000..6585f5e
--- /dev/null
+++ b/APKToolGUI/FormMain.cs
@@ -0,0 +1,936 @@
+using System;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Windows.Forms;
+using Java;
+
+namespace APKToolGUI
+{
+ public partial class FormMain : Form
+ {
+ public FormMain()
+ {
+ Program.SetLanguage();
+ InitializeComponent();
+ this.Icon = Properties.Resources.android_thin;
+ this.Text += " - v" + ProductVersion;
+ Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
+
+ CheckAlignSwitch = !Properties.Settings.Default.MAIN_Zipalign_CheckOnly;
+ }
+
+ //private void FormMain_Shown(object sender, EventArgs e)
+ //{
+ // this.Update();
+ // if (!JavaSearch.TrySearchJava(ref javaExe))
+ // {
+ // if (MessageBox.Show(Language.DoYouWantToSelectJavaLocation, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
+ // {
+ // OpenFileDialog openJavaExe = new OpenFileDialog()
+ // {
+ // Multiselect = false,
+ // Filter = "java.exe|java.exe"
+ // };
+ // if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ // {
+ // Properties.Settings.Default.JavaExe = openJavaExe.FileName;
+ // Properties.Settings.Default.Save();
+ // Application.Restart();
+ // }
+ // else
+ // Application.Exit();
+ // }
+ // else
+ // Application.Exit();
+ // }
+ // ToLog(ApktoolEventType.Information, "Java location: " + javaExe);
+
+ // InitializeUpdateChecker();
+ // InitializeAPKTool();
+ // InitializeSignApk();
+ // InitializeZipalign();
+
+ // String javaVersion = apktoolSync.GetJavaVersionSync();
+ // if (javaVersion != null)
+ // {
+ // ToLog(ApktoolEventType.Information, "Java version: " + javaVersion);
+
+ // string apktoolVersion = apktoolSync.GetVersionSync();
+
+ // if (apktoolVersion != null)
+ // ToLog(ApktoolEventType.Information, "APKTool version: " + apktoolVersion);
+ // }
+ // else
+ // {
+ // MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ // }
+
+ // TimeSpan updateInterval = DateTime.Now - Properties.Settings.Default.LastUpdateCheck;
+ // if (updateInterval.Days > 0 && Properties.Settings.Default.CheckForUpdateAtStartup)
+ // updateCheker.CheckAsync(true);
+ // ToStatus(Language.Done, Properties.Resources.done);
+ //}
+
+ private void GetJavaPath()
+ {
+ if (!File.Exists(Properties.Settings.Default.JavaExe))
+ {
+ javaExe = JavaUtils.SearchPath();
+ if (!File.Exists(javaExe))
+ {
+ if (MessageBox.Show(Language.DoYouWantToSelectJavaLocation, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
+ {
+ using (OpenFileDialog openJavaExe = new OpenFileDialog())
+ {
+ openJavaExe.Filter = "java.exe|java.exe";
+ if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ javaExe = Program.GetPortablePath(openJavaExe.FileName);
+ Properties.Settings.Default.JavaExe = javaExe;
+ Properties.Settings.Default.Save();
+ }
+ else
+ Environment.Exit(0);
+ }
+ }
+ else
+ Environment.Exit(0);
+ }
+ else
+ {
+ Properties.Settings.Default.JavaExe = javaExe;
+ Properties.Settings.Default.Save();
+ }
+ }
+
+ ToLog(ApktoolEventType.Information, String.Format("Java path \"{0}\"", javaExe/*"Java path: " + javaExe*/));
+ }
+
+ private void FormMain_Shown(object sender, EventArgs e)
+ {
+ this.Update();
+ GetJavaPath();
+
+ InitializeUpdateChecker();
+ InitializeAPKTool();
+ InitializeSignApk();
+ InitializeZipalign();
+
+ Version javaVer = apktool.GetJavaVersion();
+ if (javaVer != null)
+ {
+ ToLog(ApktoolEventType.Information, String.Format("Java version \"{0} Update {1}\"", javaVer.Minor, javaVer.Revision));
+ string apktoolVersion = apktool.GetVersion();
+ if (!String.IsNullOrWhiteSpace(apktoolVersion))
+ ToLog(ApktoolEventType.Information, String.Format("Apktool version \"{0}\"", apktoolVersion));
+ else
+ ToLog(ApktoolEventType.Error, "Can't detect apktool version.");
+ }
+ else
+ MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+
+ TimeSpan updateInterval = DateTime.Now - Properties.Settings.Default.LastUpdateCheck;
+ if (updateInterval.Days > 0 && Properties.Settings.Default.CheckForUpdateAtStartup)
+ updateCheker.CheckAsync(true);
+ ToStatus(Language.Done, Properties.Resources.done);
+ }
+
+ private void Application_ApplicationExit(object sender, EventArgs e)
+ {
+ Properties.Settings.Default.Save();
+ }
+
+ private string javaExe = Properties.Settings.Default.JavaExe;
+ Apktool apktool;
+ Signapk signapk;
+ Zipalign zipalign;
+ UpdateChecker updateCheker;
+
+ #region UpdateChecker
+
+ private void InitializeUpdateChecker()
+ {
+ updateCheker = new UpdateChecker("http://infinum.orgfree.com/_Update/APKToolGUI/version.txt", Version.Parse(Application.ProductVersion));
+ updateCheker.Completed += new RunWorkerCompletedEventHandler(updateCheker_Completed);
+ }
+
+ private void updateCheker_Completed(object sender, RunWorkerCompletedEventArgs e)
+ {
+ if (e.Result is UpdateChecker.Result)
+ {
+ UpdateChecker.Result result = (UpdateChecker.Result)e.Result;
+ switch (result.State)
+ {
+ case UpdateChecker.State.NeedUpdate:
+ if (MessageBox.Show(Language.UpdateNewVersion, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
+ Process.Start("http://4pda.ru/forum/index.php?showtopic=452034");
+ break;
+ case UpdateChecker.State.NoUpdate:
+ if (!result.Silently)
+ MessageBox.Show(Language.UpdateNoUpdates, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
+ break;
+ case UpdateChecker.State.Error:
+ if (!result.Silently)
+ MessageBox.Show("Error update checking:" + Environment.NewLine + result.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ break;
+ }
+ Properties.Settings.Default.LastUpdateCheck = DateTime.Now;
+ }
+ }
+
+ #endregion
+
+ #region Log&Status
+
+ private void ToStatus(string message, Image statusImage)
+ {
+ BeginInvoke(new MethodInvoker(delegate
+ {
+ toolStripStatusLabelStateText.Text = message;
+ toolStripStatusLabelStateImage.Image = statusImage;
+ }));
+ }
+
+ private void ToLog(string time, string message, Image statusImage, Color backColor)
+ {
+ if (dataGridView1.InvokeRequired)
+ dataGridView1.BeginInvoke(new Action(() =>
+ {
+ int i = dataGridView1.Rows.Add(statusImage, time, message);
+ dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
+ dataGridView1.FirstDisplayedScrollingRowIndex = i;
+ }));
+ else
+ {
+ int i = dataGridView1.Rows.Add(statusImage, time, message);
+ dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
+ dataGridView1.FirstDisplayedScrollingRowIndex = i;
+ }
+ }
+
+ private void ToLog(ApktoolEventType eventType, String message)
+ {
+ switch (eventType)
+ {
+ case ApktoolEventType.Information:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.Window));
+ //ToStatus(result.Message, Properties.Resources.info);
+ break;
+ case ApktoolEventType.Error:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
+ //ToStatus(result.Message, Properties.Resources.error);
+ break;
+ case ApktoolEventType.Warning:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.warning, Color.FromKnownColor(KnownColor.LightYellow));
+ //ToStatus(result.Message, Properties.Resources.warning);
+ break;
+ case ApktoolEventType.Unknown:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
+ //ToStatus(result.Message, Properties.Resources.warning);
+ break;
+ default:
+ ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.LightBlue));
+ break;
+ }
+ }
+
+ private void Done()
+ {
+ if (statusStrip1.InvokeRequired)
+ statusStrip1.BeginInvoke(new Action(delegate { toolStripProgressBar1.Style = ProgressBarStyle.Continuous; }));
+
+ ActionButtonsEnabled = true;
+
+ ToStatus(Language.Done, Properties.Resources.done);
+ }
+
+ private void ClearLog()
+ {
+ if (Properties.Settings.Default.ClearLogBeforeAction)
+ dataGridView1.Rows.Clear();
+ }
+
+ #endregion
+
+ #region signapk
+
+ private void InitializeSignApk()
+ {
+ signapk = new Signapk(javaExe, Program.SIGNAPK_PATH);
+ signapk.Exited += signapk_SignapkExited;
+ }
+
+ void signapk_SignapkExited(object sender, SignapkExitedEventArgs e)
+ {
+ if (e.ExitCode == 0)
+ {
+ ToLog(ApktoolEventType.Information, String.Format("Signing successfully completed. File saved to \"{0}\".", e.OutFilePath));
+ }
+ Done();
+ }
+
+ private bool Singning()
+ {
+ return signapk.Sign(textBox_SIGN_PublicKey.Text, textBox_SIGN_PrivateKey.Text, textBox_SIGN_InputFile.Text, textBox_SIGN_OutputFile.Text);
+ }
+
+ #endregion
+
+ #region apktool
+
+ private void InitializeAPKTool()
+ {
+ apktool = new Apktool(javaExe, Program.APKTOOL_PATH);
+ apktool.ApktoolOutputDataRecieved += apktool_ApktoolOutputDataRecieved;
+ apktool.ApktoolErrorDataRecieved += apktool_ApktoolErrorDataRecieved;
+ apktool.DecompilingCompleted += apktool_DecompilingCompleted;
+ apktool.BuildCompleted += apktool_BuildCompleted;
+ apktool.InstallFrameworkCompleted += apktool_InstallFrameworkCompleted;
+ }
+
+ void apktool_InstallFrameworkCompleted(object sender, ApktoolEventCompletedEventArgs e)
+ {
+ Done();
+ }
+
+ void apktool_BuildCompleted(object sender, ApktoolEventCompletedEventArgs e)
+ {
+ Done();
+ }
+
+ void apktool_DecompilingCompleted(object sender, ApktoolEventCompletedEventArgs e)
+ {
+ if (e.ExitCode == 0)
+ {
+ ToLog(ApktoolEventType.Information, String.Format("Decompiling successfully completed. Output directory \"{0}\".", e.ProjectDir));
+ }
+ Done();
+ }
+
+ void apktool_ApktoolErrorDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
+ {
+ if (e.EventType == ApktoolEventType.Unknown)
+ ToLog(ApktoolEventType.Error, e.Message);
+ else
+ ToLog(e.EventType, e.Message);
+ }
+
+ void apktool_ApktoolOutputDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
+ {
+ ToLog(e.EventType, e.Message);
+ }
+
+ private bool InstallFramework()
+ {
+ InstallFrameworkOptions options = new InstallFrameworkOptions(textBox_IF_InputFramePath.Text);
+ if (checkBox_IF_FramePath.Checked)
+ options.FrameDir = textBox_IF_FrameDir.Text;
+ if (checkBox_IF_Tag.Checked)
+ options.Tag = textBox_IF_Tag.Text;
+
+ return apktool.InstallFramework(options);
+ }
+
+ private bool Decompiling()
+ {
+ //string projectDir = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text) + "\\" + System.IO.Path.GetFileNameWithoutExtension(textBox_DECODE_InputAppPath.Text);
+
+ DecompileOptions options = new DecompileOptions(textBox_DECODE_InputAppPath.Text);
+ options.NoSource = checkBox_DECODE_NoSrc.Checked;
+ options.NoResource = checkBox_DECODE_NoRes.Checked;
+ options.Force = checkBox_DECODE_Force.Checked;
+ options.KeepBrokenResource = checkBox_DECODE_KeepBrokenRes.Checked;
+ options.MatchOriginal = checkBox_DECODE_MatchOriginal.Checked;
+ if (checkBox_DECODE_UseFramework.Checked)
+ options.FrameworkPath = textBox_DECODE_FrameDir.Text;
+ if (checkBox_DECODE_OutputDirectory.Checked)
+ options.OutputDirectory = textBox_DECODE_OutputDirectory.Text;
+
+ return apktool.Decompile(options);
+ }
+
+ private bool Build()
+ {
+ //String outputAPK = textBox_BUILD_InputProjectDir.Text + DateTime.Now.ToString("_yyyyMMdd_HH-mm-ss") + ".apk";
+
+ BuildOptions options = new BuildOptions(textBox_BUILD_InputProjectDir.Text);
+ options.ForceAll = checkBox_BUILD_ForceAll.Checked;
+ options.CopyOriginal = checkBox_BUILD_CopyOriginal.Checked;
+ if (checkBox_BUILD_UseAapt.Checked)
+ options.AaptPath = textBox_BUILD_AaptPath.Text;
+ if (checkBox_BUILD_UseFramework.Checked)
+ options.FrameworkPath = textBox_BUILD_FrameDir.Text;
+ if (checkBox_BUILD_OutputAppPath.Checked)
+ options.AppPath = textBox_BUILD_OutputAppPath.Text;
+
+ return apktool.Build(options);
+ }
+
+ #endregion
+
+ #region zipalign
+
+ private void InitializeZipalign()
+ {
+ zipalign = new Zipalign(Program.ZIPALIGN_PATH);
+ zipalign.OutputDataReceived += zipalign_OutputDataReceived;
+ zipalign.ErrorDataReceived += zipalign_ErrorDataReceived;
+ zipalign.Exited += zipalign_Exited;
+ }
+
+ void zipalign_OutputDataReceived(object sender, DataReceivedEventArgs e)
+ {
+ if (!String.IsNullOrWhiteSpace(e.Data))
+ ToLog(ApktoolEventType.Information, e.Data);
+ }
+
+ void zipalign_ErrorDataReceived(object sender, DataReceivedEventArgs e)
+ {
+ if (!String.IsNullOrWhiteSpace(e.Data))
+ ToLog(ApktoolEventType.Error, e.Data);
+ }
+
+ void zipalign_Exited(object sender, EventArgs e)
+ {
+ Zipalign za = (Zipalign)sender;
+ if (za.ExitCode == 0)
+ ToLog(ApktoolEventType.Information, "File saved to " + za.Options.OutputFile);
+ else
+ ToLog(ApktoolEventType.Warning, "Exit code: " + za.ExitCode);
+ Done();
+ //ActionButtonsEnabled = true;
+ }
+
+ private bool Align()
+ {
+ ZipalignOptions options = new ZipalignOptions(textBox_ZIPALIGN_InputFile.Text, Convert.ToInt32(numericUpDown_ZIPALIGN_AlignmentBytes.Value));
+ options.CheckOnly = checkBox_ZIPALIGN_CheckAlignment.Checked;
+ options.OverwriteOutputFile = checkBox_ZIPALIGN_OverwriteOutputFile.Checked;
+ options.Recompress = checkBox_ZIPALIGN_Recompress.Checked;
+ options.VerboseOut = checkBox_ZIPALIGN_VerboseOutput.Checked;
+ options.OutputFile = textBox_ZIPALIGN_OutputFile.Text;
+
+ return zipalign.Align(options);
+ }
+
+ //void zipalign_ZipalignExited(object sender, ZipalignExitedEventArgs e)
+ //{
+ // ToLog_Done();
+ //}
+
+ //private void ZipAlign(string inputFilePath)
+ //{
+ // string outputFile = Path.GetDirectoryName(inputFilePath) + @"\" + Path.GetFileNameWithoutExtension(inputFilePath) + "_zipaligned.apk";
+ // zipalign.Align(inputFilePath, outputFile, 4, true, false, false);
+ //}
+
+ #endregion
+
+ private bool ActionButtonsEnabled
+ {
+ set
+ {
+ if (button_BUILD_Build.InvokeRequired)
+ button_BUILD_Build.BeginInvoke(new Action(delegate
+ {
+ button_BUILD_Build.Enabled = value;
+ }));
+ else
+ button_BUILD_Build.Enabled = value;
+
+ if (button_DECODE_Decode.InvokeRequired)
+ button_DECODE_Decode.BeginInvoke(new Action(delegate
+ {
+ button_DECODE_Decode.Enabled = value;
+ }));
+ else
+ button_DECODE_Decode.Enabled = value;
+
+ if (button_IF_InstallFramework.InvokeRequired)
+ button_IF_InstallFramework.BeginInvoke(new Action(delegate
+ {
+ button_IF_InstallFramework.Enabled = value;
+ }));
+ else
+ button_IF_InstallFramework.Enabled = value;
+ if (button_ZIPALIGN_Align.InvokeRequired)
+ button_ZIPALIGN_Align.BeginInvoke(new Action(delegate
+ {
+ button_ZIPALIGN_Align.Enabled = value;
+ }));
+ else
+ button_ZIPALIGN_Align.Enabled = value;
+ }
+ }
+
+ private void ShowMessage(string message, MessageBoxIcon status)
+ {
+ MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, status);
+ }
+
+ private bool IsValidPath(string path)
+ {
+ try
+ {
+ Path.GetFileName(path);
+ }
+ catch (ArgumentException)
+ {
+ return false;
+ }
+ return true;
+
+ //if (path.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) != -1)
+ // return false;
+ //else
+ // return true;
+ }
+
+
+
+ #region Main menu event handlers
+
+ private void menuItemSettings_Click(object sender, EventArgs e)
+ {
+ FormSettings frm = new FormSettings();
+ frm.ShowDialog();
+ }
+
+ private void menuItemExit_Click(object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
+
+ private void menuItemCheckUpdate_Click(object sender, EventArgs e)
+ {
+ updateCheker.CheckAsync();
+ }
+
+ private void menuItemAbout_Click(object sender, EventArgs e)
+ {
+ FormAboutBox frm = new FormAboutBox();
+ frm.ShowDialog();
+ }
+
+ #endregion
+
+ #region Control event handlers
+
+ private void clearLogToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ dataGridView1.Rows.Clear();
+ }
+
+ #region DECODE
+
+ private void button_DECODE_BrowseFrameDir_Click(object sender, EventArgs e)
+ {
+ using (FolderBrowserDialog fbd = new FolderBrowserDialog())
+ {
+ if (!String.IsNullOrWhiteSpace(textBox_DECODE_FrameDir.Text))
+ fbd.SelectedPath = textBox_DECODE_FrameDir.Text;
+ if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_DECODE_FrameDir.Text = fbd.SelectedPath;
+ }
+ }
+
+ private void button_DECODE_BrowseOutputDirectory_Click(object sender, EventArgs e)
+ {
+ using (FolderBrowserDialog fbd = new FolderBrowserDialog())
+ {
+
+ if (!String.IsNullOrWhiteSpace(textBox_DECODE_OutputDirectory.Text))
+ fbd.SelectedPath = textBox_DECODE_OutputDirectory.Text;
+ else
+ if (!String.IsNullOrWhiteSpace(textBox_DECODE_InputAppPath.Text))
+ fbd.SelectedPath = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text);
+ if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_DECODE_OutputDirectory.Text = fbd.SelectedPath;
+ }
+ }
+
+ private void button_DECODE_BrowseInputAppPath_Click(object sender, EventArgs e)
+ {
+ if (openFileDialogApk.ShowDialog() == DialogResult.OK)
+ {
+ textBox_DECODE_InputAppPath.Text = openFileDialogApk.FileName;
+ //textBox_BUILD_InputProjectDir.Text = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text) + @"\" + Path.GetFileNameWithoutExtension(textBox_DECODE_InputAppPath.Text);
+ if (checkBox_DECODE_OutputDirectory.Checked)
+ textBox_DECODE_OutputDirectory.Text = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text) + "\\" + System.IO.Path.GetFileNameWithoutExtension(textBox_DECODE_InputAppPath.Text);
+ }
+ else
+ return;
+ }
+
+ private void button_DECODE_Decode_Click(object sender, EventArgs e)
+ {
+ if (File.Exists(textBox_DECODE_InputAppPath.Text))
+ {
+ if (checkBox_DECODE_UseFramework.Checked && !Directory.Exists(textBox_DECODE_FrameDir.Text))
+ {
+ ShowMessage("Выбранный каталог фреймворков не существует.", MessageBoxIcon.Warning);
+ return;
+ }
+ if (checkBox_DECODE_OutputDirectory.Checked)
+ {
+ if (String.IsNullOrWhiteSpace(textBox_DECODE_OutputDirectory.Text))
+ {
+ ShowMessage("Не выбран каталог декомпиляции.", MessageBoxIcon.Warning);
+ return;
+ }
+ else
+ if (!IsValidPath(textBox_DECODE_OutputDirectory.Text))
+ {
+ ShowMessage("Выбранный каталог декомпиляции не может быть создан, т.к. содержит недопустимые символы.", MessageBoxIcon.Warning);
+ return;
+ }
+ }
+ bool started = Decompiling();
+ if (started)
+ {
+ toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
+ ClearLog();
+ ToLog(ApktoolEventType.Information, "Decoding " + Path.GetFileName(textBox_DECODE_InputAppPath.Text));
+ ToStatus(String.Format("Decoding \"{0}\"...", Path.GetFileName(textBox_DECODE_InputAppPath.Text)), Properties.Resources.waiting);
+ ActionButtonsEnabled = false;
+ }
+ else
+ ToLog(ApktoolEventType.Error, "Error. Decoding is not started.");
+ }
+ else
+ MessageBox.Show(Language.WarningFileForDecodingNotSelected, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ #endregion
+
+ #region BUILD
+
+ private void button_BUILD_BrowseAaptPath_Click(object sender, EventArgs e)
+ {
+ using (OpenFileDialog ofd = new OpenFileDialog())
+ {
+ ofd.Filter = "Executable file|*.exe";
+ if (!String.IsNullOrWhiteSpace(textBox_BUILD_AaptPath.Text))
+ {
+ ofd.InitialDirectory = Path.GetDirectoryName(textBox_BUILD_AaptPath.Text);
+ ofd.FileName = Path.GetFileName(textBox_BUILD_AaptPath.Text);
+ }
+ if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_BUILD_AaptPath.Text = ofd.FileName;
+ }
+ }
+
+ private void button_BUILD_BrowseFrameDir_Click(object sender, EventArgs e)
+ {
+ using (FolderBrowserDialog fbd = new FolderBrowserDialog())
+ {
+ if (!String.IsNullOrWhiteSpace(textBox_BUILD_FrameDir.Text))
+ fbd.SelectedPath = textBox_BUILD_FrameDir.Text;
+ if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_BUILD_FrameDir.Text = fbd.SelectedPath;
+ }
+ }
+
+ private void button_BUILD_BrowseOutputAppPath_Click(object sender, EventArgs e)
+ {
+ using (SaveFileDialog sfd = new SaveFileDialog())
+ {
+ if (!String.IsNullOrWhiteSpace(textBox_BUILD_OutputAppPath.Text))
+ {
+ sfd.InitialDirectory = Path.GetDirectoryName(textBox_BUILD_OutputAppPath.Text);
+ sfd.FileName = Path.GetFileNameWithoutExtension(textBox_BUILD_OutputAppPath.Text);
+ sfd.DefaultExt = Path.GetExtension(textBox_BUILD_OutputAppPath.Text);
+ }
+
+ if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_BUILD_OutputAppPath.Text = sfd.FileName;
+ }
+ }
+
+ private void button_BUILD_BrowseInputProjectDir_Click(object sender, EventArgs e)
+ {
+ if (Directory.Exists(textBox_BUILD_InputProjectDir.Text))
+ folderBrowserDialogBuild.SelectedPath = textBox_BUILD_InputProjectDir.Text;
+ if (folderBrowserDialogBuild.ShowDialog() == DialogResult.OK)
+ {
+ textBox_BUILD_InputProjectDir.Text = folderBrowserDialogBuild.SelectedPath;
+ if (checkBox_BUILD_OutputAppPath.Checked)
+ textBox_BUILD_OutputAppPath.Text = textBox_BUILD_InputProjectDir.Text + DateTime.Now.ToString("_yyyyMMdd_HH-mm-ss") + ".apk";
+ //String outputAPK = textBox_BUILD_InputProjectDir.Text + DateTime.Now.ToString("_yyyyMMdd_HH-mm-ss") + ".apk";
+ }
+ }
+
+ private void button_BUILD_Build_Click(object sender, EventArgs e)
+ {
+ if (Directory.Exists(textBox_BUILD_InputProjectDir.Text))
+ {
+ bool started = Build();
+ if (started)
+ {
+ toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
+ ActionButtonsEnabled = false;
+ ClearLog();
+ ToLog(ApktoolEventType.Information, "Build " + Path.GetFileName(textBox_BUILD_InputProjectDir.Text));
+ ToStatus(String.Format("Build \"{0}\"...", textBox_BUILD_InputProjectDir.Text.Replace(Path.GetDirectoryName(textBox_BUILD_InputProjectDir.Text) + @"\", String.Empty)), Properties.Resources.waiting);
+ }
+ else
+ ToLog(ApktoolEventType.Error, "Error. Build is not started.");
+ }
+ else
+ MessageBox.Show(Language.WarningDecodingFolderNotSelected, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ #endregion
+
+ #region INSTALL FRAMEWORK
+
+ private void button_IF_BrowseFrameDir_Click(object sender, EventArgs e)
+ {
+ using (FolderBrowserDialog fbd = new FolderBrowserDialog())
+ {
+ if (Directory.Exists(textBox_IF_FrameDir.Text))
+ fbd.SelectedPath = textBox_IF_FrameDir.Text;
+ if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_IF_FrameDir.Text = fbd.SelectedPath;
+ }
+ }
+
+ private void button_IF_BrowseInputFramePath_Click(object sender, EventArgs e)
+ {
+ using (OpenFileDialog ofd = new OpenFileDialog())
+ {
+ if (File.Exists(textBox_IF_InputFramePath.Text))
+ {
+ ofd.InitialDirectory = Path.GetDirectoryName(textBox_IF_InputFramePath.Text);
+ ofd.FileName = Path.GetFileNameWithoutExtension(textBox_IF_InputFramePath.Text);
+ }
+ ofd.Filter = "apk|*.apk|jar|*.jar";
+
+ if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_IF_InputFramePath.Text = ofd.FileName;
+ }
+ }
+
+ private void button_IF_InstallFramework_Click(object sender, EventArgs e)
+ {
+ if (checkBox_IF_FramePath.Checked)
+ {
+ if (String.IsNullOrWhiteSpace(textBox_IF_FrameDir.Text) || !Directory.Exists(textBox_IF_FrameDir.Text))
+ {
+ ShowMessage("Ошибка выбора директории фреймворка.", MessageBoxIcon.Warning);
+ return;
+ }
+ }
+ if (checkBox_IF_Tag.Checked && String.IsNullOrWhiteSpace(textBox_IF_Tag.Text))
+ {
+ ShowMessage("Ошибка ввода тега фреймворка.", MessageBoxIcon.Warning);
+ return;
+ }
+ if (!File.Exists(textBox_IF_InputFramePath.Text))
+ {
+ ShowMessage("Ошибка выбора файла фреймворка. Файл не существует.", MessageBoxIcon.Warning);
+ return;
+ }
+
+ bool started = InstallFramework();
+ if (started)
+ {
+ toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
+ ActionButtonsEnabled = false;
+ ClearLog();
+ ToLog(ApktoolEventType.Information, "Installing framework " + Path.GetFileName(textBox_IF_InputFramePath.Text));
+ ToStatus(String.Format("Installing framework \"{0}\"...", Path.GetFileName(textBox_IF_InputFramePath.Text)), Properties.Resources.waiting);
+ }
+ else
+ ToLog(ApktoolEventType.Error, "Error. Framework installation is not started.");
+
+ }
+
+ #endregion
+
+ #region SIGN
+
+ private void button_SIGN_BrowsePublicKey_Click(object sender, EventArgs e)
+ {
+ using (OpenFileDialog ofd = new OpenFileDialog())
+ {
+ ofd.Filter = "*.pem|*.pem";
+ if (File.Exists(textBox_SIGN_PublicKey.Text))
+ {
+ ofd.InitialDirectory = Path.GetDirectoryName(textBox_SIGN_PublicKey.Text);
+ ofd.FileName = Path.GetFileNameWithoutExtension(textBox_SIGN_PublicKey.Text);
+ }
+ if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_SIGN_PublicKey.Text = Program.GetPortablePath(ofd.FileName);
+ }
+ }
+
+ private void button_SIGN_BrowsePrivateKey_Click(object sender, EventArgs e)
+ {
+ using (OpenFileDialog ofd = new OpenFileDialog())
+ {
+ ofd.Filter = "*.pk8|*.pk8";
+ if (File.Exists(textBox_SIGN_PrivateKey.Text))
+ {
+ ofd.InitialDirectory = Path.GetDirectoryName(textBox_SIGN_PrivateKey.Text);
+ ofd.FileName = Path.GetFileNameWithoutExtension(textBox_SIGN_PrivateKey.Text);
+ }
+ if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_SIGN_PrivateKey.Text = Program.GetPortablePath(ofd.FileName);
+ }
+ }
+
+ private void button_SIGN_BrowseOutputFile_Click(object sender, EventArgs e)
+ {
+ using (SaveFileDialog sfd = new SaveFileDialog())
+ {
+ sfd.Filter = "(*.apk)|*.apk|(*.jar)|*.jar|(*.zip)|*.zip";
+
+ if (File.Exists(textBox_SIGN_InputFile.Text))
+ {
+ sfd.Filter = String.Format("(*{0})|*{0}", Path.GetExtension(textBox_SIGN_InputFile.Text));
+ sfd.InitialDirectory = Path.GetDirectoryName(textBox_SIGN_InputFile.Text);
+ sfd.FileName = String.Format("{0}_signed{1}", Path.GetFileNameWithoutExtension(textBox_SIGN_InputFile.Text), Path.GetExtension(textBox_SIGN_InputFile.Text));
+ }
+
+ if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ textBox_SIGN_OutputFile.Text = sfd.FileName;
+ }
+ }
+ }
+
+ private void button_SIGN_BrowseInputFile_Click(object sender, EventArgs e)
+ {
+ using (OpenFileDialog ofd = new OpenFileDialog())
+ {
+ ofd.Filter = "(*.apk;*.jar;*.zip)|*.apk;*.jar;*.zip";
+
+ if (ofd.ShowDialog() == DialogResult.OK)
+ {
+ textBox_SIGN_InputFile.Text = ofd.FileName;
+ textBox_SIGN_OutputFile.Text =
+ String.Format("{0}{1}{2}_signed{3}",
+ Path.GetDirectoryName(textBox_SIGN_InputFile.Text),
+ Path.DirectorySeparatorChar,
+ Path.GetFileNameWithoutExtension(textBox_SIGN_InputFile.Text),
+ Path.GetExtension(textBox_SIGN_InputFile.Text));
+ }
+ }
+ }
+
+ private void button_SIGN_Sign_Click(object sender, EventArgs e)
+ {
+ if (!File.Exists(textBox_SIGN_PublicKey.Text))
+ {
+ ShowMessage("Public key not found.", MessageBoxIcon.Warning);
+ return;
+ }
+ if (!File.Exists(textBox_SIGN_PrivateKey.Text))
+ {
+ ShowMessage("Private key not found.", MessageBoxIcon.Warning);
+ return;
+ }
+ if (!File.Exists(textBox_SIGN_InputFile.Text))
+ {
+ ShowMessage("Input file not found.", MessageBoxIcon.Warning);
+ return;
+ }
+
+ bool started = Singning();
+ if (started)
+ {
+ toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
+ ActionButtonsEnabled = false;
+ ClearLog();
+ ToLog(ApktoolEventType.Information, "Signing " + Path.GetFileName(textBox_SIGN_InputFile.Text));
+ ToStatus(String.Format("Signing \"{0}\"...", Path.GetFileName(textBox_SIGN_InputFile.Text)), Properties.Resources.waiting);
+ }
+ else
+ ToLog(ApktoolEventType.Error, "Error. Signing is not started.");
+ }
+
+ #endregion
+
+ #region ZIPALIGN
+
+ private bool CheckAlignSwitch
+ {
+ set
+ {
+ checkBox_ZIPALIGN_Recompress.Enabled = value;
+ checkBox_ZIPALIGN_OverwriteOutputFile.Enabled = value;
+ tableLayoutPanel_ZIPALIGN_OutputFile.Enabled = value;
+ }
+ }
+
+ private void checkBox_ZIPALIGN_CheckAlignment_CheckedChanged(object sender, EventArgs e)
+ {
+ CheckAlignSwitch = !checkBox_ZIPALIGN_CheckAlignment.Checked;
+ }
+
+ private void button_ZIPALIGN_BrowseOutputFile_Click(object sender, EventArgs e)
+ {
+ using (SaveFileDialog sfd = new SaveFileDialog())
+ {
+ if (File.Exists(textBox_ZIPALIGN_InputFile.Text))
+ {
+ sfd.InitialDirectory = Path.GetDirectoryName(textBox_ZIPALIGN_InputFile.Text);
+ sfd.Filter = String.Format("{0}|*.{0}", Path.GetExtension(textBox_ZIPALIGN_InputFile.Text).Replace(".", String.Empty));
+ sfd.FileName = String.Format("{0}_zipaligned", Path.GetFileNameWithoutExtension(textBox_ZIPALIGN_InputFile.Text));
+ }
+ if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBox_ZIPALIGN_OutputFile.Text = sfd.FileName;
+ }
+ }
+
+ private void button_ZIPALIGN_BrowseInputFile_Click(object sender, EventArgs e)
+ {
+ using (OpenFileDialog ofd = new OpenFileDialog())
+ {
+ ofd.Filter = "ZIP archives(*.apk;*.zip;*.jar)|*.apk;*.zip;*.jar";
+ if (File.Exists(textBox_ZIPALIGN_InputFile.Text))
+ {
+ ofd.InitialDirectory = Path.GetDirectoryName(textBox_ZIPALIGN_InputFile.Text);
+ ofd.FileName = Path.GetFileName(textBox_ZIPALIGN_InputFile.Text);
+ }
+ if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ textBox_ZIPALIGN_InputFile.Text = ofd.FileName;
+ if (!checkBox_ZIPALIGN_CheckAlignment.Checked)
+ textBox_ZIPALIGN_OutputFile.Text = String.Format("{0}\\{1}_zipaligned{2}",
+ Path.GetDirectoryName(ofd.FileName),
+ Path.GetFileNameWithoutExtension(ofd.FileName),
+ Path.GetExtension(ofd.FileName));
+ }
+ }
+ }
+
+ private void button_ZIPALIGN_Align_Click(object sender, EventArgs e)
+ {
+ if (!File.Exists(textBox_ZIPALIGN_InputFile.Text))
+ {
+ ShowMessage("Ошибка. Выбранный файл не существует.", MessageBoxIcon.Warning);
+ return;
+ }
+
+ bool started = Align();
+ if (started)
+ {
+ toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
+ ActionButtonsEnabled = false;
+ ClearLog();
+ ToLog(ApktoolEventType.Information, "Aligning " + Path.GetFileName(textBox_ZIPALIGN_InputFile.Text));
+ ToStatus(String.Format("Aligning \"{0}\"...", Path.GetFileName(textBox_ZIPALIGN_InputFile.Text)), Properties.Resources.waiting);
+ }
+ else
+ ToLog(ApktoolEventType.Error, "Error. Aligning is not started.");
+ }
+
+ #endregion
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/APKToolGUI/FormMain.resx b/APKToolGUI/FormMain.resx
new file mode 100644
index 0000000..eab6e70
--- /dev/null
+++ b/APKToolGUI/FormMain.resx
@@ -0,0 +1,3108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+
+ 427, 208
+
+
+ 28, 24
+
+
+
+ 5
+
+
+ ...
+
+
+ button_DECODE_BrowseInputAppPath
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageDecode
+
+
+ 3
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 460, 208
+
+
+ 105, 24
+
+
+ 3
+
+
+ Decompile
+
+
+ button_DECODE_Decode
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageDecode
+
+
+ 2
+
+
+ Top, Left, Right
+
+
+ Top, Left, Right
+
+
+ 1
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 103
+
+
+ 547, 19
+
+
+ 6
+
+
+ Keeps files to closest to original as possible. Prevents rebuild.
+
+
+ checkBox_DECODE_MatchOriginal
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ 0
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 78
+
+
+ 547, 19
+
+
+ 5
+
+
+ Keep broken resource.
+
+
+ checkBox_DECODE_KeepBrokenRes
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ 1
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 53
+
+
+ 547, 19
+
+
+ 4
+
+
+ Force delete destination directory.
+
+
+ checkBox_DECODE_Force
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ 2
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 28
+
+
+ 547, 19
+
+
+ 3
+
+
+ Do not decode resources.
+
+
+ checkBox_DECODE_NoRes
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ 3
+
+
+ 3
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 7
+
+
+ ...
+
+
+ button_DECODE_BrowseOutputDirectory
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelDecodeOutputDir
+
+
+ 0
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 256, 19
+
+
+ 3
+
+
+ Output directory:
+
+
+ checkBox_DECODE_OutputDirectory
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelDecodeOutputDir
+
+
+ 1
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 4
+
+
+ textBox_DECODE_OutputDirectory
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelDecodeOutputDir
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 150
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 0
+
+
+ tableLayoutPanelDecodeOutputDir
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ 4
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button_DECODE_BrowseOutputDirectory" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBox_DECODE_OutputDirectory" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBox_DECODE_OutputDirectory" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ 3
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 5
+
+
+ textBox_DECODE_FrameDir
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelDecodeUseFramework
+
+
+ 0
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 256, 19
+
+
+ 3
+
+
+ Uses framework files located in:
+
+
+ checkBox_DECODE_UseFramework
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelDecodeUseFramework
+
+
+ 1
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 6
+
+
+ ...
+
+
+ button_DECODE_BrowseFrameDir
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelDecodeUseFramework
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 125
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 1
+
+
+ tableLayoutPanelDecodeUseFramework
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ 5
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="textBox_DECODE_FrameDir" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_DECODE_UseFramework" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button_DECODE_BrowseFrameDir" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 547, 19
+
+
+ 2
+
+
+ Do not decode sources.
+
+
+ checkBox_DECODE_NoSrc
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ 6
+
+
+ Fill
+
+
+ 3, 18
+
+
+ 8
+
+
+ 553, 175
+
+
+ 0
+
+
+ tableLayoutPanel_DECODE_Options
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox_DECODE_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBox_DECODE_MatchOriginal" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_DECODE_KeepBrokenRes" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_DECODE_Force" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_DECODE_NoRes" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelDecodeOutputDir" Row="6" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelDecodeUseFramework" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_DECODE_NoSrc" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,25,Absolute,25,Absolute,25,Absolute,25,Absolute,25,Absolute,25,Absolute,25,AutoSize,0" /></TableLayoutSettings>
+
+
+ 6, 6
+
+
+ 559, 196
+
+
+ 6
+
+
+ Options
+
+
+ groupBox_DECODE_Options
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageDecode
+
+
+ 0
+
+
+ Top, Left, Right
+
+
+ 6, 209
+
+
+ 419, 22
+
+
+ 4
+
+
+ textBox_DECODE_InputAppPath
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageDecode
+
+
+ 1
+
+
+ 4, 22
+
+
+ 3, 3, 3, 3
+
+
+ 571, 238
+
+
+ 0
+
+
+ Decode
+
+
+ tabPageDecode
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabControlMain
+
+
+ 0
+
+
+ Top, Left, Right
+
+
+ 1
+
+
+ 3
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 7
+
+
+ ...
+
+
+ button_BUILD_BrowseOutputAppPath
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildOutputApk
+
+
+ 0
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 256, 19
+
+
+ 3
+
+
+ Output app:
+
+
+ checkBox_BUILD_OutputAppPath
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildOutputApk
+
+
+ 1
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 4
+
+
+ textBox_BUILD_OutputAppPath
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildOutputApk
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 100
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 4
+
+
+ tableLayoutPanelBuildOutputApk
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_BUILD_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button_BUILD_BrowseOutputAppPath" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBox_BUILD_OutputAppPath" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBox_BUILD_OutputAppPath" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 28
+
+
+ 547, 19
+
+
+ 3
+
+
+ Copies original AndroidManifest.xml and META-INF folder into built apk
+
+
+ checkBox_BUILD_CopyOriginal
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_BUILD_Options
+
+
+ 1
+
+
+ 3
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 7
+
+
+ ...
+
+
+ button_BUILD_BrowseFrameDir
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildUseFramework
+
+
+ 0
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 256, 19
+
+
+ 3
+
+
+ Uses framework files located in:
+
+
+ checkBox_BUILD_UseFramework
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildUseFramework
+
+
+ 1
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 4
+
+
+ textBox_BUILD_FrameDir
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildUseFramework
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 75
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 0
+
+
+ tableLayoutPanelBuildUseFramework
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_BUILD_Options
+
+
+ 2
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="button_BUILD_BrowseFrameDir" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="checkBox_BUILD_UseFramework" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBox_BUILD_FrameDir" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ 3
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 5
+
+
+ textBox_BUILD_AaptPath
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildUseAapt
+
+
+ 0
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 256, 19
+
+
+ 3
+
+
+ Uses aapt.exe located in:
+
+
+ checkBox_BUILD_UseAapt
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildUseAapt
+
+
+ 1
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 6
+
+
+ ...
+
+
+ button_BUILD_BrowseAaptPath
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanelBuildUseAapt
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 50
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 1
+
+
+ tableLayoutPanelBuildUseAapt
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_BUILD_Options
+
+
+ 3
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="textBox_BUILD_AaptPath" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_BUILD_UseAapt" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button_BUILD_BrowseAaptPath" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 547, 19
+
+
+ 2
+
+
+ Skip changes detection and build all files.
+
+
+ checkBox_BUILD_ForceAll
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_BUILD_Options
+
+
+ 4
+
+
+ Fill
+
+
+ 3, 18
+
+
+ 6
+
+
+ 553, 125
+
+
+ 0
+
+
+ tableLayoutPanel_BUILD_Options
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox_BUILD_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanelBuildOutputApk" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_BUILD_CopyOriginal" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelBuildUseFramework" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanelBuildUseAapt" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_BUILD_ForceAll" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,25,Absolute,25,Absolute,25,Absolute,25,Absolute,25,AutoSize,0,Absolute,20,Absolute,20" /></TableLayoutSettings>
+
+
+ 6, 6
+
+
+ 559, 146
+
+
+ 9
+
+
+ Options
+
+
+ groupBox_BUILD_Options
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageBuild
+
+
+ 0
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 427, 208
+
+
+ 28, 24
+
+
+ 8
+
+
+ ...
+
+
+ button_BUILD_BrowseInputProjectDir
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageBuild
+
+
+ 1
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 460, 208
+
+
+ 105, 24
+
+
+ 6
+
+
+ Build
+
+
+ button_BUILD_Build
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageBuild
+
+
+ 2
+
+
+ Top, Left, Right
+
+
+ 6, 209
+
+
+ 419, 22
+
+
+ 7
+
+
+ textBox_BUILD_InputProjectDir
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageBuild
+
+
+ 3
+
+
+ 4, 22
+
+
+ 571, 238
+
+
+ 3
+
+
+ Build
+
+
+ tabPageBuild
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabControlMain
+
+
+ 1
+
+
+ Top, Left, Right
+
+
+ 1
+
+
+ 2
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 256, 19
+
+
+ 3
+
+
+ Tag frameworks using:
+
+
+ checkBox_IF_Tag
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_IF_Tag
+
+
+ 0
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 3, 1
+
+
+ 287, 22
+
+
+ 4
+
+
+ textBox_IF_Tag
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_IF_Tag
+
+
+ 1
+
+
+ Fill
+
+
+ 0, 25
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 0
+
+
+ tableLayoutPanel_IF_Tag
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_IF_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBox_IF_Tag" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textBox_IF_Tag" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,47,55877,Percent,52,44123" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ 3
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 5
+
+
+ textBox_IF_FrameDir
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_IF_FramePath
+
+
+ 0
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 3
+
+
+ 256, 19
+
+
+ 3
+
+
+ Stores framework files into:
+
+
+ checkBox_IF_FramePath
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_IF_FramePath
+
+
+ 1
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 6
+
+
+ ...
+
+
+ button_IF_BrowseFrameDir
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_IF_FramePath
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 0
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 1
+
+
+ tableLayoutPanel_IF_FramePath
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_IF_Options
+
+
+ 1
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="textBox_IF_FrameDir" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_IF_FramePath" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button_IF_BrowseFrameDir" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ Fill
+
+
+ 3, 18
+
+
+ 3
+
+
+ 553, 50
+
+
+ 0
+
+
+ tableLayoutPanel_IF_Options
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox_IF_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel_IF_Tag" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel_IF_FramePath" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,25,Absolute,25,AutoSize,0,Absolute,20" /></TableLayoutSettings>
+
+
+ 6, 6
+
+
+ 559, 71
+
+
+ 10
+
+
+ Options
+
+
+ groupBox_IF_Options
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageInstallFramework
+
+
+ 0
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 460, 208
+
+
+ 105, 24
+
+
+ 1
+
+
+ Install
+
+
+ button_IF_InstallFramework
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageInstallFramework
+
+
+ 1
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 427, 208
+
+
+ 28, 24
+
+
+ 0
+
+
+ ...
+
+
+ button_IF_BrowseInputFramePath
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageInstallFramework
+
+
+ 2
+
+
+ Top, Left, Right
+
+
+ 6, 209
+
+
+ 419, 22
+
+
+ 9
+
+
+ textBox_IF_InputFramePath
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageInstallFramework
+
+
+ 3
+
+
+ 4, 22
+
+
+ 571, 238
+
+
+ 4
+
+
+ Install Framework
+
+
+ tabPageInstallFramework
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabControlMain
+
+
+ 2
+
+
+ Top, Left, Right
+
+
+ 1
+
+
+ 3
+
+
+ True
+
+
+ Fill
+
+
+ NoControl
+
+
+ 2, 2
+
+
+ 2, 2, 2, 2
+
+
+ 258, 21
+
+
+ 8
+
+
+ Private key
+
+
+ MiddleLeft
+
+
+ label_SIGN_PrivateKey
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_PrivateKey
+
+
+ 0
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 7
+
+
+ ...
+
+
+ button_SIGN_BrowsePrivateKey
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_PrivateKey
+
+
+ 1
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 4
+
+
+ textBox_SIGN_PrivateKey
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_PrivateKey
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 25
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 6
+
+
+ tableLayoutPanel_SIGN_PrivateKey
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label_SIGN_PrivateKey" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button_SIGN_BrowsePrivateKey" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBox_SIGN_PrivateKey" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ 3
+
+
+ True
+
+
+ Fill
+
+
+ NoControl
+
+
+ 2, 2
+
+
+ 2, 2, 2, 2
+
+
+ 258, 21
+
+
+ 8
+
+
+ Public key
+
+
+ MiddleLeft
+
+
+ label_SIGN_PublicKey
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_PublicKey
+
+
+ 0
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 7
+
+
+ ...
+
+
+ button_SIGN_BrowsePublicKey
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_PublicKey
+
+
+ 1
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 4
+
+
+ textBox_SIGN_PublicKey
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_PublicKey
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 0
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 5
+
+
+ tableLayoutPanel_SIGN_PublicKey
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_Options
+
+
+ 1
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label_SIGN_PublicKey" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button_SIGN_BrowsePublicKey" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBox_SIGN_PublicKey" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ 3
+
+
+ True
+
+
+ Fill
+
+
+ NoControl
+
+
+ 2, 2
+
+
+ 2, 2, 2, 2
+
+
+ 258, 21
+
+
+ 8
+
+
+ Output file
+
+
+ MiddleLeft
+
+
+ label_SIGN_OutputFile
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_OutputFile
+
+
+ 0
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 7
+
+
+ ...
+
+
+ button_SIGN_BrowseOutputFile
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_OutputFile
+
+
+ 1
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 4
+
+
+ textBox_SIGN_OutputFile
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_OutputFile
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 50
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 4
+
+
+ tableLayoutPanel_SIGN_OutputFile
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_SIGN_Options
+
+
+ 2
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label_SIGN_OutputFile" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button_SIGN_BrowseOutputFile" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBox_SIGN_OutputFile" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ Fill
+
+
+ 3, 18
+
+
+ 4
+
+
+ 553, 75
+
+
+ 0
+
+
+ tableLayoutPanel_SIGN_Options
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox_SIGN_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel_SIGN_PrivateKey" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel_SIGN_PublicKey" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel_SIGN_OutputFile" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,25,Absolute,25,Absolute,25,AutoSize,0,Absolute,20,Absolute,20,Absolute,20" /></TableLayoutSettings>
+
+
+ 6, 6
+
+
+ 559, 96
+
+
+ 17
+
+
+ Options
+
+
+ groupBox_SIGN_Options
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageSign
+
+
+ 0
+
+
+ Top, Left, Right
+
+
+ 6, 209
+
+
+ 419, 22
+
+
+ 9
+
+
+ textBox_SIGN_InputFile
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageSign
+
+
+ 1
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 427, 208
+
+
+ 28, 24
+
+
+ 0
+
+
+ ...
+
+
+ button_SIGN_BrowseInputFile
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageSign
+
+
+ 2
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 460, 208
+
+
+ 105, 24
+
+
+ 1
+
+
+ Sign
+
+
+ button_SIGN_Sign
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageSign
+
+
+ 3
+
+
+ 4, 22
+
+
+ 3, 3, 3, 3
+
+
+ 571, 238
+
+
+ 1
+
+
+ Sign
+
+
+ tabPageSign
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabControlMain
+
+
+ 3
+
+
+ Top, Left, Right
+
+
+ 1
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 78
+
+
+ 547, 19
+
+
+ 8
+
+
+ Recompress using Zopfli
+
+
+ checkBox_ZIPALIGN_Recompress
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_Options
+
+
+ 0
+
+
+ 2
+
+
+ True
+
+
+ Fill
+
+
+ NoControl
+
+
+ 2, 2
+
+
+ 2, 2, 2, 2
+
+
+ 515, 21
+
+
+ 0
+
+
+ Alignment in bytes, e.g. '4' provides 32-bit alignment
+
+
+ MiddleLeft
+
+
+ label_ZIPALIGN_AlignmentBytes
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_AlignmentBytes
+
+
+ 0
+
+
+ Fill
+
+
+ 520, 1
+
+
+ 1, 1, 1, 1
+
+
+ 32, 22
+
+
+ 1
+
+
+ Center
+
+
+ numericUpDown_ZIPALIGN_AlignmentBytes
+
+
+ System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_AlignmentBytes
+
+
+ 1
+
+
+ Fill
+
+
+ 0, 0
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 7
+
+
+ tableLayoutPanel_ZIPALIGN_AlignmentBytes
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_Options
+
+
+ 1
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label_ZIPALIGN_AlignmentBytes" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="numericUpDown_ZIPALIGN_AlignmentBytes" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,100,Absolute,34,Absolute,20" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 53
+
+
+ 547, 19
+
+
+ 6
+
+
+ Verbose output
+
+
+ checkBox_ZIPALIGN_VerboseOutput
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_Options
+
+
+ 2
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 28
+
+
+ 547, 19
+
+
+ 5
+
+
+ Check alignment only (does not modify file)
+
+
+ checkBox_ZIPALIGN_CheckAlignment
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_Options
+
+
+ 3
+
+
+ 3
+
+
+ True
+
+
+ Fill
+
+
+ NoControl
+
+
+ 2, 2
+
+
+ 2, 2, 2, 2
+
+
+ 258, 21
+
+
+ 8
+
+
+ Output file
+
+
+ MiddleLeft
+
+
+ label_ZIPALIGN_OutputFile
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_OutputFile
+
+
+ 0
+
+
+ NoControl
+
+
+ 525, 0
+
+
+ 1, 0, 1, 1
+
+
+ 26, 24
+
+
+ 7
+
+
+ ...
+
+
+ button_ZIPALIGN_BrowseOutputFile
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_OutputFile
+
+
+ 1
+
+
+ Fill
+
+
+ 263, 1
+
+
+ 1, 1, 1, 1
+
+
+ 260, 22
+
+
+ 4
+
+
+ textBox_ZIPALIGN_OutputFile
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_OutputFile
+
+
+ 2
+
+
+ Fill
+
+
+ 0, 125
+
+
+ 0, 0, 0, 0
+
+
+ 1
+
+
+ 553, 25
+
+
+ 4
+
+
+ tableLayoutPanel_ZIPALIGN_OutputFile
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_Options
+
+
+ 4
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="label_ZIPALIGN_OutputFile" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="button_ZIPALIGN_BrowseOutputFile" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="textBox_ZIPALIGN_OutputFile" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,Percent,50,Absolute,29" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ Fill
+
+
+ NoControl
+
+
+ 3, 103
+
+
+ 547, 19
+
+
+ 3
+
+
+ Overwrite existing output file
+
+
+ checkBox_ZIPALIGN_OverwriteOutputFile
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel_ZIPALIGN_Options
+
+
+ 5
+
+
+ Fill
+
+
+ 3, 18
+
+
+ 7
+
+
+ 553, 150
+
+
+ 0
+
+
+ tableLayoutPanel_ZIPALIGN_Options
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox_ZIPALIGN_Options
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="checkBox_ZIPALIGN_Recompress" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel_ZIPALIGN_AlignmentBytes" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_ZIPALIGN_VerboseOutput" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_ZIPALIGN_CheckAlignment" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel_ZIPALIGN_OutputFile" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkBox_ZIPALIGN_OverwriteOutputFile" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,25,Absolute,25,Absolute,25,Absolute,25,Absolute,25,Absolute,25,AutoSize,0" /></TableLayoutSettings>
+
+
+ 6, 6
+
+
+ 559, 171
+
+
+ 16
+
+
+ Options
+
+
+ groupBox_ZIPALIGN_Options
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageZipAlign
+
+
+ 0
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 460, 208
+
+
+ 105, 24
+
+
+ 15
+
+
+ Align
+
+
+ button_ZIPALIGN_Align
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageZipAlign
+
+
+ 1
+
+
+ Top, Right
+
+
+ System
+
+
+ NoControl
+
+
+ 427, 208
+
+
+ 28, 24
+
+
+ 0
+
+
+ ...
+
+
+ button_ZIPALIGN_BrowseInputFile
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageZipAlign
+
+
+ 2
+
+
+ Top, Left, Right
+
+
+ 6, 209
+
+
+ 419, 22
+
+
+ 9
+
+
+ textBox_ZIPALIGN_InputFile
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPageZipAlign
+
+
+ 3
+
+
+ 4, 22
+
+
+ 3, 3, 3, 3
+
+
+ 571, 238
+
+
+ 2
+
+
+ Zip align
+
+
+ tabPageZipAlign
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabControlMain
+
+
+ 4
+
+
+ 9, 9
+
+
+ 0, 0, 0, 0
+
+
+ 579, 264
+
+
+ 15
+
+
+ tabControlMain
+
+
+ System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 3
+
+
+ 172, 17
+
+
+ 0, 17
+
+
+ toolStripStatusLabel1
+
+
+ MiddleLeft
+
+
+ None
+
+
+ 478, 17
+
+
+ Loading...
+
+
+ MiddleLeft
+
+
+ False
+
+
+ 100, 16
+
+
+ 0, 477
+
+
+ 595, 22
+
+
+ 17
+
+
+ statusStrip1
+
+
+ statusStrip1
+
+
+ System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 2
+
+
+ Top, Bottom, Left, Right
+
+
+ 24
+
+
+ True
+
+
+
+
+
+ 20
+
+
+ True
+
+
+ Time
+
+
+ 55
+
+
+ True
+
+
+ Message
+
+
+ 478, 17
+
+
+ 121, 22
+
+
+ Clear log
+
+
+ 122, 26
+
+
+ contextMenuStripLog
+
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Microsoft Sans Serif, 8.25pt
+
+
+ 9, 276
+
+
+ Vertical
+
+
+ 577, 192
+
+
+ 0
+
+
+ dataGridView1
+
+
+ System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
+
+ 647, 17
+
+
+ Settings
+
+
+ Exit
+
+
+ File
+
+
+ Check for update
+
+
+ About
+
+
+ Help
+
+
+ 17, 17
+
+
+ apk, jar|*.apk;*.jar|*.*|*.*
+
+
+ 288, 17
+
+
+ True
+
+
+ 33
+
+
+ 6, 13
+
+
+ 595, 499
+
+
+ Segoe UI, 8.25pt
+
+
+ 100, 100
+
+
+ CenterScreen
+
+
+ APKTool GUI
+
+
+ toolStripStatusLabelStateImage
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripStatusLabelStateText
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripProgressBar1
+
+
+ System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ColumnImage
+
+
+ System.Windows.Forms.DataGridViewImageColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ColumnTime
+
+
+ System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ColumnMessage
+
+
+ System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ clearLogToolStripMenuItem
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ mainMenu1
+
+
+ System.Windows.Forms.MainMenu, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuItemFile
+
+
+ System.Windows.Forms.MenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuItemSettings
+
+
+ System.Windows.Forms.MenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuItemExit
+
+
+ System.Windows.Forms.MenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuItemHelp
+
+
+ System.Windows.Forms.MenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuItemCheckUpdate
+
+
+ System.Windows.Forms.MenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ menuItemAbout
+
+
+ System.Windows.Forms.MenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ openFileDialogApk
+
+
+ System.Windows.Forms.OpenFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ folderBrowserDialogBuild
+
+
+ System.Windows.Forms.FolderBrowserDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ FormMain
+
+
+ System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/APKToolGUI/FormMain.ru.resx b/APKToolGUI/FormMain.ru.resx
new file mode 100644
index 0000000..98bc5c8
--- /dev/null
+++ b/APKToolGUI/FormMain.ru.resx
@@ -0,0 +1,278 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Использовать файлы фремворка из:
+
+
+ Перезаписывать файлы в каталоге назначения
+
+
+ Не декомпилировать ресурсы
+
+
+ Не декомпилировать исходный код
+
+
+ Использовать aapt.exe из
+
+
+ Пропустить определение изменений и построить все файлы
+
+
+
+ 57, 18
+
+
+ Время
+
+
+
+ 65
+
+
+ Сообщение
+
+
+ 171, 22
+
+
+ Очистить журнал
+
+
+ 172, 26
+
+
+ Настройки
+
+
+ Выход
+
+
+ Файл
+
+
+ Проверить обновление
+
+
+ О программе
+
+
+ Справка
+
+
+ Собрать
+
+
+ Декомпилировать
+
+
+ Выравнивание
+
+
+ Подпись
+
+
+ Загрузка...
+
+
+ Выберите файл для подписи
+
+
+ Копировать оригинальный AndroidManifest.xml и папку META-INF в построенный apk
+
+
+ Использовать файлы фремворка из:
+
+
+ Сохранить испорченные ресурсы
+
+
+ Сборка
+
+
+ Декомпиляция
+
+
+ Декомпилировать в каталог:
+
+
+ Сохранить файл как:
+
+
+ Установка фреймворков
+
+
+ Опции
+
+
+ Опции
+
+
+ Опции
+
+
+ Установить
+
+
+ Выровнять
+
+
+ Сохранить файл как:
+
+
+ Опции
+
+
+ Перезаписать выходной файл, если он существует
+
+
+ Подписать
+
+
+ Устанавливать фреймворк в каталог:
+
+
+ Перепаковать с использованием алгоритма Zopfli
+
+
+ Подробный вывод
+
+
+ Выравнивание (в байтах), например, '4' для 32-битного выравнивания
+
+
+ Сохранять файлы близко к оригиналу, насколько это возможно. Предотвращает ребилд.
+
+
+ Только проверить выравнивание (не модифицирует файл)
+
+
+ Опции
+
+
+ Сохранить файл как:
+
+
+ Закрытый ключ
+
+
+ Открытый ключ
+
+
\ No newline at end of file
diff --git a/APKToolGUI/FormSettings.Designer.cs b/APKToolGUI/FormSettings.Designer.cs
new file mode 100644
index 0000000..b38c271
--- /dev/null
+++ b/APKToolGUI/FormSettings.Designer.cs
@@ -0,0 +1,229 @@
+namespace APKToolGUI
+{
+ partial class FormSettings
+ {
+ ///
+ /// Требуется переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором форм Windows
+
+ ///
+ /// Обязательный метод для поддержки конструктора - не изменяйте
+ /// содержимое данного метода при помощи редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormSettings));
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.checkBox1 = new System.Windows.Forms.CheckBox();
+ this.checkBoxCheckUpdateStartup = new System.Windows.Forms.CheckBox();
+ this.groupBoxJava = new System.Windows.Forms.GroupBox();
+ this.labelCustomJavaLocation = new System.Windows.Forms.Label();
+ this.textBoxCustomJavaLocation = new System.Windows.Forms.TextBox();
+ this.buttonCustomJavaLocation = new System.Windows.Forms.Button();
+ this.groupBoxLanguage = new System.Windows.Forms.GroupBox();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.groupBoxContextMenu = new System.Windows.Forms.GroupBox();
+ this.labelAdminRights = new System.Windows.Forms.Label();
+ this.buttonAddContextMenu = new System.Windows.Forms.Button();
+ this.buttonRemoveContextMenu = new System.Windows.Forms.Button();
+ this.buttonCancel = new System.Windows.Forms.Button();
+ this.buttonОК = new System.Windows.Forms.Button();
+ this.tabControl1.SuspendLayout();
+ this.tabPage1.SuspendLayout();
+ this.groupBox1.SuspendLayout();
+ this.groupBoxJava.SuspendLayout();
+ this.groupBoxLanguage.SuspendLayout();
+ this.groupBoxContextMenu.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tabControl1
+ //
+ resources.ApplyResources(this.tabControl1, "tabControl1");
+ this.tabControl1.Controls.Add(this.tabPage1);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ //
+ // tabPage1
+ //
+ resources.ApplyResources(this.tabPage1, "tabPage1");
+ this.tabPage1.Controls.Add(this.groupBox1);
+ this.tabPage1.Controls.Add(this.groupBoxJava);
+ this.tabPage1.Controls.Add(this.groupBoxLanguage);
+ this.tabPage1.Controls.Add(this.groupBoxContextMenu);
+ this.tabPage1.Name = "tabPage1";
+ this.tabPage1.UseVisualStyleBackColor = true;
+ //
+ // groupBox1
+ //
+ resources.ApplyResources(this.groupBox1, "groupBox1");
+ this.groupBox1.Controls.Add(this.checkBox1);
+ this.groupBox1.Controls.Add(this.checkBoxCheckUpdateStartup);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.TabStop = false;
+ //
+ // checkBox1
+ //
+ resources.ApplyResources(this.checkBox1, "checkBox1");
+ this.checkBox1.Checked = global::APKToolGUI.Properties.Settings.Default.ClearLogBeforeAction;
+ this.checkBox1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "ClearLogBeforeAction", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBox1.Name = "checkBox1";
+ this.checkBox1.UseVisualStyleBackColor = true;
+ //
+ // checkBoxCheckUpdateStartup
+ //
+ resources.ApplyResources(this.checkBoxCheckUpdateStartup, "checkBoxCheckUpdateStartup");
+ this.checkBoxCheckUpdateStartup.Checked = global::APKToolGUI.Properties.Settings.Default.CheckForUpdateAtStartup;
+ this.checkBoxCheckUpdateStartup.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.checkBoxCheckUpdateStartup.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "CheckForUpdateAtStartup", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.checkBoxCheckUpdateStartup.Name = "checkBoxCheckUpdateStartup";
+ this.checkBoxCheckUpdateStartup.UseVisualStyleBackColor = true;
+ //
+ // groupBoxJava
+ //
+ resources.ApplyResources(this.groupBoxJava, "groupBoxJava");
+ this.groupBoxJava.Controls.Add(this.labelCustomJavaLocation);
+ this.groupBoxJava.Controls.Add(this.textBoxCustomJavaLocation);
+ this.groupBoxJava.Controls.Add(this.buttonCustomJavaLocation);
+ this.groupBoxJava.Name = "groupBoxJava";
+ this.groupBoxJava.TabStop = false;
+ //
+ // labelCustomJavaLocation
+ //
+ resources.ApplyResources(this.labelCustomJavaLocation, "labelCustomJavaLocation");
+ this.labelCustomJavaLocation.Name = "labelCustomJavaLocation";
+ //
+ // textBoxCustomJavaLocation
+ //
+ resources.ApplyResources(this.textBoxCustomJavaLocation, "textBoxCustomJavaLocation");
+ this.textBoxCustomJavaLocation.BackColor = System.Drawing.SystemColors.Window;
+ this.textBoxCustomJavaLocation.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "JavaExe", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.textBoxCustomJavaLocation.Name = "textBoxCustomJavaLocation";
+ this.textBoxCustomJavaLocation.Text = global::APKToolGUI.Properties.Settings.Default.JavaExe;
+ //
+ // buttonCustomJavaLocation
+ //
+ resources.ApplyResources(this.buttonCustomJavaLocation, "buttonCustomJavaLocation");
+ this.buttonCustomJavaLocation.Name = "buttonCustomJavaLocation";
+ this.buttonCustomJavaLocation.UseVisualStyleBackColor = true;
+ this.buttonCustomJavaLocation.Click += new System.EventHandler(this.buttonCustomJavaLocation_Click);
+ //
+ // groupBoxLanguage
+ //
+ resources.ApplyResources(this.groupBoxLanguage, "groupBoxLanguage");
+ this.groupBoxLanguage.Controls.Add(this.comboBox1);
+ this.groupBoxLanguage.Name = "groupBoxLanguage";
+ this.groupBoxLanguage.TabStop = false;
+ //
+ // comboBox1
+ //
+ resources.ApplyResources(this.comboBox1, "comboBox1");
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Name = "comboBox1";
+ //
+ // groupBoxContextMenu
+ //
+ resources.ApplyResources(this.groupBoxContextMenu, "groupBoxContextMenu");
+ this.groupBoxContextMenu.Controls.Add(this.labelAdminRights);
+ this.groupBoxContextMenu.Controls.Add(this.buttonAddContextMenu);
+ this.groupBoxContextMenu.Controls.Add(this.buttonRemoveContextMenu);
+ this.groupBoxContextMenu.Name = "groupBoxContextMenu";
+ this.groupBoxContextMenu.TabStop = false;
+ //
+ // labelAdminRights
+ //
+ resources.ApplyResources(this.labelAdminRights, "labelAdminRights");
+ this.labelAdminRights.Name = "labelAdminRights";
+ //
+ // buttonAddContextMenu
+ //
+ resources.ApplyResources(this.buttonAddContextMenu, "buttonAddContextMenu");
+ this.buttonAddContextMenu.Name = "buttonAddContextMenu";
+ this.buttonAddContextMenu.UseVisualStyleBackColor = true;
+ this.buttonAddContextMenu.Click += new System.EventHandler(this.buttonAddContextMenu_Click);
+ //
+ // buttonRemoveContextMenu
+ //
+ resources.ApplyResources(this.buttonRemoveContextMenu, "buttonRemoveContextMenu");
+ this.buttonRemoveContextMenu.Name = "buttonRemoveContextMenu";
+ this.buttonRemoveContextMenu.UseVisualStyleBackColor = true;
+ this.buttonRemoveContextMenu.Click += new System.EventHandler(this.buttonRemoveContextMenu_Click);
+ //
+ // buttonCancel
+ //
+ resources.ApplyResources(this.buttonCancel, "buttonCancel");
+ this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.UseVisualStyleBackColor = true;
+ //
+ // buttonОК
+ //
+ resources.ApplyResources(this.buttonОК, "buttonОК");
+ this.buttonОК.Name = "buttonОК";
+ this.buttonОК.UseVisualStyleBackColor = true;
+ this.buttonОК.Click += new System.EventHandler(this.buttonОК_Click);
+ //
+ // FormSettings
+ //
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.buttonCancel);
+ this.Controls.Add(this.buttonОК);
+ this.Controls.Add(this.tabControl1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "FormSettings";
+ this.Load += new System.EventHandler(this.FormSettings_Load);
+ this.tabControl1.ResumeLayout(false);
+ this.tabPage1.ResumeLayout(false);
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.groupBoxJava.ResumeLayout(false);
+ this.groupBoxJava.PerformLayout();
+ this.groupBoxLanguage.ResumeLayout(false);
+ this.groupBoxContextMenu.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabPage1;
+ private System.Windows.Forms.GroupBox groupBoxJava;
+ private System.Windows.Forms.GroupBox groupBoxLanguage;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.GroupBox groupBoxContextMenu;
+ private System.Windows.Forms.Label labelAdminRights;
+ private System.Windows.Forms.Button buttonAddContextMenu;
+ private System.Windows.Forms.Button buttonRemoveContextMenu;
+ private System.Windows.Forms.Button buttonCancel;
+ private System.Windows.Forms.Button buttonОК;
+ private System.Windows.Forms.TextBox textBoxCustomJavaLocation;
+ private System.Windows.Forms.Button buttonCustomJavaLocation;
+ private System.Windows.Forms.Label labelCustomJavaLocation;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.CheckBox checkBoxCheckUpdateStartup;
+ private System.Windows.Forms.CheckBox checkBox1;
+
+ }
+}
\ No newline at end of file
diff --git a/APKToolGUI/FormSettings.cs b/APKToolGUI/FormSettings.cs
new file mode 100644
index 0000000..019c1b0
--- /dev/null
+++ b/APKToolGUI/FormSettings.cs
@@ -0,0 +1,160 @@
+using System;
+using System.Windows.Forms;
+using System.Runtime.InteropServices;
+using System.IO;
+
+namespace APKToolGUI
+{
+ public partial class FormSettings : Form
+ {
+ public FormSettings()
+ {
+ InitializeComponent();
+ if (!ExplorerContextMenu.IsAdmin())
+ {
+ SetButtonShield(buttonAddContextMenu, true);
+ SetButtonShield(buttonRemoveContextMenu, true);
+ }
+ }
+
+ #region GUI
+
+ private void FormSettings_Load(object sender, EventArgs e)
+ {
+ LoadSettings();
+ }
+
+ private void buttonОК_Click(object sender, EventArgs e)
+ {
+ SaveSettings();
+ this.Close();
+ }
+
+ [DllImport("user32.dll", CharSet = CharSet.Unicode)]
+ public static extern IntPtr SendMessage(HandleRef hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
+
+ private static void SetButtonShield(Button btn, bool showShield)
+ {
+ // BCM_SETSHIELD = 0x0000160C
+ SendMessage(new HandleRef(btn, btn.Handle), 0x160C, IntPtr.Zero, showShield ? new IntPtr(1) : IntPtr.Zero);
+ }
+
+ private void buttonAddContextMenu_Click(object sender, EventArgs e)
+ {
+ if(MessageBox.Show(Language.DoYouRealyWantToInstallCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
+ RunAsAdmin(Application.ExecutablePath, "ccm");
+ }
+
+ private void buttonRemoveContextMenu_Click(object sender, EventArgs e)
+ {
+ if (MessageBox.Show(Language.DoYouRealyWantToRemoveCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
+ RunAsAdmin(Application.ExecutablePath, "rcm");
+ }
+
+ #endregion
+
+ private void LoadSettings()
+ {
+ //textBox1.Font = Properties.Settings.Default.FontLogMainWindow;
+ //textBox2.Font = Properties.Settings.Default.FontLogContextMenuWindow;
+ //textBox1.Text = textBox1.Font.Name + ", " + textBox1.Font.Size;
+ //textBox2.Text = textBox2.Font.Name + ", " + textBox2.Font.Size;
+
+ String sysLang = Language.SystemLanguage;
+ comboBox1.Items.Add(sysLang);
+ comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("ru"));
+ comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("en"));
+ //comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("uk"));
+ //comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("ru-RU"));
+ //comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
+ //comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("uk-UA"));
+
+ comboBox1.DisplayMember = "NativeName"; // <= System.Globalization.CultureInfo.GetCultureInfo("ru-RU").NativeName
+ comboBox1.ValueMember = "Name"; // <= System.Globalization.CultureInfo.GetCultureInfo("ru-RU").Name
+
+ // Если в настройках есть язык, выбираем его в списке.
+ String _culture = Properties.Settings.Default.Culture;
+ if (_culture.Equals("Auto"))
+ comboBox1.SelectedItem = sysLang;
+ else
+ {
+ var qwe = System.Globalization.CultureInfo.GetCultureInfo(_culture);
+ comboBox1.SelectedItem = qwe;
+ }
+
+ }
+
+ private void SaveSettings()
+ {
+ //Properties.Settings.Default.FontLogMainWindow = textBox1.Font;
+ //Properties.Settings.Default.FontLogContextMenuWindow = textBox2.Font;
+
+ if (Language.SystemLanguage.Equals(comboBox1.SelectedItem.ToString()))
+ Properties.Settings.Default.Culture = "Auto";
+ else
+ Properties.Settings.Default.Culture = comboBox1.SelectedItem.ToString();
+ Properties.Settings.Default.Save();
+ }
+
+ public static void RunAsAdmin(string aFileName, string anArguments)
+ {
+ System.Diagnostics.ProcessStartInfo processInfo = new System.Diagnostics.ProcessStartInfo();
+
+ processInfo.FileName = aFileName;
+ processInfo.Arguments = anArguments;
+ processInfo.UseShellExecute = true;
+ processInfo.Verb = "runas"; // здесь вся соль
+
+ try
+ {
+ System.Diagnostics.Process.Start(processInfo);
+ }
+ catch (Exception e)
+ {
+ MessageBox.Show(e.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ //private void button1_Click(object sender, EventArgs e)
+ //{
+ // FontDialog fontDialog1 = new FontDialog();
+ // fontDialog1.Font = textBox1.Font;
+ // if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ // {
+ // textBox1.Text = fontDialog1.Font.Name + ", " + fontDialog1.Font.Size;
+ // textBox1.Font = fontDialog1.Font;
+ // }
+ //}
+
+ //private void button2_Click(object sender, EventArgs e)
+ //{
+ // FontDialog fontDialog1 = new FontDialog();
+ // fontDialog1.Font = textBox2.Font;
+ // if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ // {
+ // textBox2.Text = fontDialog1.Font.Name + ", " + fontDialog1.Font.Size;
+ // textBox2.Font = fontDialog1.Font;
+ // }
+ //}
+
+ private void buttonCustomJavaLocation_Click(object sender, EventArgs e)
+ {
+ using(OpenFileDialog openJavaExe = new OpenFileDialog())
+ {
+ openJavaExe.Filter = "java.exe|java.exe";
+ if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ textBoxCustomJavaLocation.Text = Program.GetPortablePath(openJavaExe.FileName);
+ }
+
+ //OpenFileDialog openJavaExe = new OpenFileDialog()
+ //{
+ // Multiselect = false,
+ // Filter = "java.exe|java.exe"
+ //};
+ //if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ //{
+ // textBoxCustomJavaLocation.Text = openJavaExe.FileName;
+ //}
+ }
+ }
+}
diff --git a/APKToolGUI/FormSettings.resx b/APKToolGUI/FormSettings.resx
new file mode 100644
index 0000000..08d66f4
--- /dev/null
+++ b/APKToolGUI/FormSettings.resx
@@ -0,0 +1,651 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ System
+
+
+ Administrator rights required
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 1
+
+
+ groupBoxContextMenu
+
+
+ Top, Left, Right
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Top, Right
+
+
+ NoControl
+
+
+ NoControl
+
+
+ NoControl
+
+
+ Top, Bottom, Left, Right
+
+
+ 0
+
+
+ groupBoxContextMenu
+
+
+ tabControl1
+
+
+ Uninstall
+
+
+ System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ NoControl
+
+
+
+ 247, 23
+
+
+ MiddleLeft
+
+
+ tabPage1
+
+
+ 0
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Cancel
+
+
+ Settings
+
+
+ Clear log before action
+
+
+ NoControl
+
+
+ buttonCustomJavaLocation
+
+
+ 83, 23
+
+
+ 160, 17
+
+
+ Top, Left, Right
+
+
+ comboBox1
+
+
+ 0
+
+
+ 4
+
+
+ 129, 19
+
+
+ groupBoxJava
+
+
+ buttonAddContextMenu
+
+
+ groupBox1
+
+
+ groupBox1
+
+
+ Top, Left, Right
+
+
+ checkBoxCheckUpdateStartup
+
+
+ textBoxCustomJavaLocation
+
+
+ groupBoxJava
+
+
+ 183, 23
+
+
+ 9
+
+
+ 4, 22
+
+
+ groupBoxContextMenu
+
+
+ Top, Right
+
+
+ labelAdminRights
+
+
+ 0
+
+
+ 11
+
+
+ System
+
+
+ Context menu
+
+
+ 2
+
+
+ 12
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ checkBox1
+
+
+ tabControl1
+
+
+ False
+
+
+ 1
+
+
+ buttonCancel
+
+
+ 454, 265
+
+
+ tabPage1
+
+
+ Top, Left, Right
+
+
+ 5
+
+
+ groupBox1
+
+
+ System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Bottom, Right
+
+
+ 0
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 132, 17
+
+
+ 3, 3, 3, 3
+
+
+ 3
+
+
+ NoControl
+
+
+ FormSettings
+
+
+ Bottom, Right
+
+
+ System
+
+
+ $this
+
+
+ Top, Left, Right
+
+
+ 0
+
+
+ 1
+
+
+ 5
+
+
+ 1
+
+
+ 0
+
+
+ groupBoxJava
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tabPage1
+
+
+ CenterParent
+
+
+ 405, 17
+
+
+ 345, 21
+
+
+ 385, 278
+
+
+ buttonОК
+
+
+ Check for updates at startup
+
+
+ groupBoxLanguage
+
+
+ $this
+
+
+ System
+
+
+ ImageBeforeText
+
+
+ 2
+
+
+ 256, 21
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Top, Left, Right
+
+
+ 6, 168
+
+
+ 2
+
+
+ 6, 115
+
+
+ 3, 21
+
+
+ Language
+
+
+ $this
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 6, 6
+
+
+ 2
+
+
+ groupBoxContextMenu
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 23, 20
+
+
+ 1
+
+
+ 75, 23
+
+
+ System
+
+
+ 304, 278
+
+
+ 9, 19
+
+
+ 446, 239
+
+
+ 2
+
+
+ 0
+
+
+ 299, 21
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Top, Left, Right
+
+
+ tabPage1
+
+
+ 6
+
+
+ 0
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBoxJava
+
+
+ System
+
+
+ System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Install
+
+
+ 9, 42
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 4
+
+
+ True
+
+
+ General
+
+
+ 1
+
+
+ Custom Java location
+
+
+ 6, 59
+
+
+ Java
+
+
+ 6, 13
+
+
+ buttonRemoveContextMenu
+
+
+ ...
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 8
+
+
+ 6, 6
+
+
+ NoControl
+
+
+ tabPage1
+
+
+ 466, 308
+
+
+ 1
+
+
+ Top, Right
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 434, 65
+
+
+ 209, 20
+
+
+ ОК
+
+
+ 75, 23
+
+
+ 83, 23
+
+
+ 1
+
+
+ True
+
+
+ labelCustomJavaLocation
+
+
+ 6, 17
+
+
+ groupBoxLanguage
+
+
+ NoControl
+
+
+ 0
+
+
+ 434, 47
+
+
+ NoControl
+
+
+ 434, 50
+
+
+ 2
+
+
+ Other
+
+
+ 434, 47
+
+
+ MiddleRight
+
+
+ 195, 18
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ ru
+
+
\ No newline at end of file
diff --git a/APKToolGUI/FormSettings.ru.resx b/APKToolGUI/FormSettings.ru.resx
new file mode 100644
index 0000000..985f2f7
--- /dev/null
+++ b/APKToolGUI/FormSettings.ru.resx
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 288, 17
+
+
+ Очищать журнал событий перед каждой операцией
+
+
+ 276, 17
+
+
+ Проверять обновление при запуске (раз в сутки)
+
+
+ Прочее
+
+
+ Пользовательское расположение
+
+
+ 23, 22
+
+
+ Язык
+
+
+ Требуются права администратора
+
+
+ Установить
+
+
+ Удалить
+
+
+ Контекстное меню
+
+
+ Общие
+
+
+ Отмена
+
+
+ Настройки
+
+
\ No newline at end of file
diff --git a/APKToolGUI/Java/JarProcess.cs b/APKToolGUI/Java/JarProcess.cs
new file mode 100644
index 0000000..87ff27b
--- /dev/null
+++ b/APKToolGUI/Java/JarProcess.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
+
+namespace Java
+{
+ public class JarProcess : Process
+ {
+ public JarProcess(string javaPath, string jarPath)
+ {
+ this.JavaPath = javaPath;
+ this.JarPath = jarPath;
+ Initialize();
+ }
+
+ private void Initialize()
+ {
+ this.EnableRaisingEvents = true;
+ this.StartInfo.FileName = JavaPath; //задаем имя запускного файла
+ this.StartInfo.UseShellExecute = false; //отключаем использование оболочки, чтобы можно было читать данные вывода
+ this.StartInfo.RedirectStandardOutput = true; // разрешаем перенаправление данных вывода
+ this.StartInfo.RedirectStandardError = true; // разрешаем перенаправление данных вывода
+ this.StartInfo.CreateNoWindow = true; //запрещаем создавать окно для запускаемой программы
+ }
+
+ public string JavaPath { get; set; }
+ public string JarPath { get; set; }
+
+ public new bool Start(string args)
+ {
+ this.EnableRaisingEvents = true;
+ this.StartInfo.Arguments = String.Format("-jar \"{0}\" {1}", JarPath, args);
+ return base.Start();
+ }
+
+ public Version GetJavaVersion()
+ {
+ using (Process javaProcess = new Process())
+ {
+ javaProcess.StartInfo.FileName = this.JavaPath;
+ javaProcess.StartInfo.Arguments = "-version";
+ javaProcess.StartInfo.CreateNoWindow = true;
+ javaProcess.StartInfo.UseShellExecute = false;
+ javaProcess.StartInfo.RedirectStandardError = true;
+ bool started = javaProcess.Start();
+ string output = javaProcess.StandardError.ReadToEnd();
+ javaProcess.WaitForExit(3000);
+ System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(output, @"^java version ""(\d+)\.(\d+)\.(\d+)_(\d+)"".$", System.Text.RegularExpressions.RegexOptions.Multiline);
+ if (match.Groups.Count == 5)
+ return new Version(Convert.ToInt32(match.Groups[1].Value), Convert.ToInt32(match.Groups[2].Value), Convert.ToInt32(match.Groups[3].Value), Convert.ToInt32(match.Groups[4].Value));
+ else
+ return null;
+ }
+ }
+ }
+}
diff --git a/APKToolGUI/Java/JavaUtils.cs b/APKToolGUI/Java/JavaUtils.cs
new file mode 100644
index 0000000..809e721
--- /dev/null
+++ b/APKToolGUI/Java/JavaUtils.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Diagnostics;
+
+namespace Java
+{
+ public class JavaUtils
+ {
+ private static string GetJavaInstallationPath()
+ {
+ string environmentPath = Environment.GetEnvironmentVariable("JAVA_HOME");
+ if (!string.IsNullOrEmpty(environmentPath))
+ {
+ return environmentPath;
+ }
+
+ string javaKey = "SOFTWARE\\JavaSoft\\Java Runtime Environment\\";
+ if (Environment.Is64BitOperatingSystem)
+ javaKey = "SOFTWARE\\Wow6432Node\\JavaSoft\\Java Runtime Environment\\";
+
+ using (Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(javaKey))
+ {
+ if (rk != null)
+ {
+ string currentVersion = rk.GetValue("CurrentVersion").ToString();
+ using (Microsoft.Win32.RegistryKey key = rk.OpenSubKey(currentVersion))
+ return key.GetValue("JavaHome").ToString();
+ }
+ else
+ return null;
+ }
+
+ }
+
+ public static string SearchPath()
+ {
+ string installPath = GetJavaInstallationPath();
+ if (!String.IsNullOrWhiteSpace(installPath))
+ {
+ string filePath = System.IO.Path.Combine(installPath, "bin\\Java.exe");
+ if (System.IO.File.Exists(filePath))
+ return filePath;
+ else
+ return null;
+ }
+ else
+ return null;
+ }
+ }
+}
diff --git a/APKToolGUI/Language.Designer.cs b/APKToolGUI/Language.Designer.cs
new file mode 100644
index 0000000..d8f4384
--- /dev/null
+++ b/APKToolGUI/Language.Designer.cs
@@ -0,0 +1,333 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программой.
+// Исполняемая версия:4.0.30319.34209
+//
+// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+// повторной генерации кода.
+//
+//------------------------------------------------------------------------------
+
+namespace APKToolGUI {
+ using System;
+
+
+ ///
+ /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
+ ///
+ // Этот класс создан автоматически классом StronglyTypedResourceBuilder
+ // с помощью такого средства, как ResGen или Visual Studio.
+ // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
+ // с параметром /str или перестройте свой проект VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Language {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Language() {
+ }
+
+ ///
+ /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("APKToolGUI.Language", typeof(Language).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Перезаписывает свойство CurrentUICulture текущего потока для всех
+ /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на About.
+ ///
+ internal static string About {
+ get {
+ return ResourceManager.GetString("About", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Apktool version.
+ ///
+ internal static string APKToolVersion {
+ get {
+ return ResourceManager.GetString("APKToolVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Build.
+ ///
+ internal static string Build {
+ get {
+ return ResourceManager.GetString("Build", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Check for update.
+ ///
+ internal static string CheckForUpdate {
+ get {
+ return ResourceManager.GetString("CheckForUpdate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Debug mode.
+ ///
+ internal static string DebugMode {
+ get {
+ return ResourceManager.GetString("DebugMode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Decode.
+ ///
+ internal static string Decode {
+ get {
+ return ResourceManager.GetString("Decode", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Done.
+ ///
+ internal static string Done {
+ get {
+ return ResourceManager.GetString("Done", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Do you realy want to install context menu?.
+ ///
+ internal static string DoYouRealyWantToInstallCM {
+ get {
+ return ResourceManager.GetString("DoYouRealyWantToInstallCM", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Do you realy want to remove context menu?.
+ ///
+ internal static string DoYouRealyWantToRemoveCM {
+ get {
+ return ResourceManager.GetString("DoYouRealyWantToRemoveCM", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Java is not found. Do you want to select custom location?.
+ ///
+ internal static string DoYouWantToSelectJavaLocation {
+ get {
+ return ResourceManager.GetString("DoYouWantToSelectJavaLocation", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Error.
+ ///
+ internal static string Error {
+ get {
+ return ResourceManager.GetString("Error", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Java is not installed or is installed incorrectly. The program will be closed..
+ ///
+ internal static string ErrorJavaDetect {
+ get {
+ return ResourceManager.GetString("ErrorJavaDetect", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Error reading settings!.
+ ///
+ internal static string ErrorReadSettings {
+ get {
+ return ResourceManager.GetString("ErrorReadSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Error saving settings!.
+ ///
+ internal static string ErrorSaveSettings {
+ get {
+ return ResourceManager.GetString("ErrorSaveSettings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Exit.
+ ///
+ internal static string Exit {
+ get {
+ return ResourceManager.GetString("Exit", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на File.
+ ///
+ internal static string File {
+ get {
+ return ResourceManager.GetString("File", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на File not found.
+ ///
+ internal static string FileNotFound {
+ get {
+ return ResourceManager.GetString("FileNotFound", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Folder is not exist.
+ ///
+ internal static string FolderNotExist {
+ get {
+ return ResourceManager.GetString("FolderNotExist", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Help.
+ ///
+ internal static string Help {
+ get {
+ return ResourceManager.GetString("Help", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Install framework.
+ ///
+ internal static string InstallFramework {
+ get {
+ return ResourceManager.GetString("InstallFramework", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на For the changes to take effect you must restart the program. You want to do it now?.
+ ///
+ internal static string NeedRestart {
+ get {
+ return ResourceManager.GetString("NeedRestart", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Settings.
+ ///
+ internal static string Settings {
+ get {
+ return ResourceManager.GetString("Settings", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Sign.
+ ///
+ internal static string Sign {
+ get {
+ return ResourceManager.GetString("Sign", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на System language.
+ ///
+ internal static string SystemLanguage {
+ get {
+ return ResourceManager.GetString("SystemLanguage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на New version is available. Do you want to update?.
+ ///
+ internal static string UpdateNewVersion {
+ get {
+ return ResourceManager.GetString("UpdateNewVersion", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на No update is available..
+ ///
+ internal static string UpdateNoUpdates {
+ get {
+ return ResourceManager.GetString("UpdateNoUpdates", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Decoding folder not selected!.
+ ///
+ internal static string WarningDecodingFolderNotSelected {
+ get {
+ return ResourceManager.GetString("WarningDecodingFolderNotSelected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на File for decoding not selected!.
+ ///
+ internal static string WarningFileForDecodingNotSelected {
+ get {
+ return ResourceManager.GetString("WarningFileForDecodingNotSelected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на File for signing not selected!.
+ ///
+ internal static string WarningFileForSigningNotSelected {
+ get {
+ return ResourceManager.GetString("WarningFileForSigningNotSelected", resourceCulture);
+ }
+ }
+
+ ///
+ /// Ищет локализованную строку, похожую на Framework not selected!.
+ ///
+ internal static string WarningFrameworkNotSelected {
+ get {
+ return ResourceManager.GetString("WarningFrameworkNotSelected", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/APKToolGUI/Language.resx b/APKToolGUI/Language.resx
new file mode 100644
index 0000000..8818c1b
--- /dev/null
+++ b/APKToolGUI/Language.resx
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ About
+
+
+ Apktool version
+
+
+ Check for update
+
+
+ Debug mode
+
+
+ Exit
+
+
+ File
+
+
+ Help
+
+
+ Settings
+
+
+ Java is not installed or is installed incorrectly. The program will be closed.
+
+
+ Error reading settings!
+
+
+ New version is available. Do you want to update?
+
+
+ No update is available.
+
+
+ Decoding folder not selected!
+
+
+ File for decoding not selected!
+
+
+ File for signing not selected!
+
+
+ Framework not selected!
+
+
+ Error saving settings!
+
+
+ For the changes to take effect you must restart the program. You want to do it now?
+
+
+ File not found
+
+
+ Folder is not exist
+
+
+ Error
+
+
+ Build
+
+
+ Decode
+
+
+ Install framework
+
+
+ Sign
+
+
+ System language
+
+
+ Do you realy want to install context menu?
+
+
+ Do you realy want to remove context menu?
+
+
+ Done
+
+
+ Java is not found. Do you want to select custom location?
+
+
\ No newline at end of file
diff --git a/APKToolGUI/Language.ru.Designer.cs b/APKToolGUI/Language.ru.Designer.cs
new file mode 100644
index 0000000..e69de29
diff --git a/APKToolGUI/Language.ru.resx b/APKToolGUI/Language.ru.resx
new file mode 100644
index 0000000..0109c60
--- /dev/null
+++ b/APKToolGUI/Language.ru.resx
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Язык системы
+
+
+ Доступна новая версия. Выполнить обновление?
+
+
+ Готово
+
+
+ Java не установлена или установлена не корректно. Программа будет закрыта.
+
+
+ Нет доступных обновлений.
+
+
+ Java не найдена. Хотите указать расположение вручную?
+
+
+ Фреймворк не выбран!
+
+
+ Вы действительно хотите установить контекстное меню?
+
+
+ Вы действительно хотите удалить контекстное меню?
+
+
\ No newline at end of file
diff --git a/APKToolGUI/PortableSettingsProvider.cs b/APKToolGUI/PortableSettingsProvider.cs
new file mode 100644
index 0000000..6e1cd33
--- /dev/null
+++ b/APKToolGUI/PortableSettingsProvider.cs
@@ -0,0 +1,331 @@
+/*************************************************************
+ * PortableSettingsProvider.cs
+ * Portable Settings Provider for C# applications
+ *
+ * 2010- Michael Nathan
+ * http://www.Geek-Republic.com
+ *
+ * Licensed under Creative Commons CC BY-SA
+ * http://creativecommons.org/licenses/by-sa/3.0/legalcode
+ *
+ *
+ *
+ *
+ *************************************************************/
+using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using Microsoft.Win32;
+using System.Xml;
+using System.Xml.Serialization;
+
+public class PortableSettingsProvider : SettingsProvider
+{
+ // Define some static strings later used in our XML creation
+ // XML Root node
+ const string XMLROOT = "configuration";
+
+ // Configuration declaration node
+ const string CONFIGNODE = "configSections";
+
+ // Configuration section group declaration node
+ const string GROUPNODE = "sectionGroup";
+
+ // User section node
+ const string USERNODE = "userSettings";
+
+ // Application Specific Node
+ string APPNODE = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Properties.Settings";
+
+ private System.Xml.XmlDocument xmlDoc = null;
+
+
+
+ // Override the Initialize method
+ public override void Initialize(string name, NameValueCollection config)
+ {
+ base.Initialize(this.ApplicationName, config);
+ }
+
+ // Override the ApplicationName property, returning the solution name. No need to set anything, we just need to
+ // retrieve information, though the set method still needs to be defined.
+ public override string ApplicationName
+ {
+ get
+ {
+ return (System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
+ }
+ set
+ {
+ return;
+ }
+ }
+
+ // Simply returns the name of the settings file, which is the solution name plus ".config"
+ public virtual string GetSettingsFilename()
+ {
+ return ApplicationName + ".config";
+ }
+
+ // Gets current executable path in order to determine where to read and write the config file
+ public virtual string GetAppPath()
+ {
+ return new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName;
+ }
+
+ // Retrieve settings from the configuration file
+ public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext sContext, SettingsPropertyCollection settingsColl)
+ {
+ // Create a collection of values to return
+ SettingsPropertyValueCollection retValues = new SettingsPropertyValueCollection();
+
+ // Create a temporary SettingsPropertyValue to reuse
+ SettingsPropertyValue setVal;
+
+ // Loop through the list of settings that the application has requested and add them
+ // to our collection of return values.
+ foreach (SettingsProperty sProp in settingsColl)
+ {
+ setVal = new SettingsPropertyValue(sProp);
+ setVal.IsDirty = false;
+ setVal.SerializedValue = GetSetting(sProp);
+ retValues.Add(setVal);
+ }
+ return retValues;
+ }
+
+ // Save any of the applications settings that have changed (flagged as "dirty")
+ public override void SetPropertyValues(SettingsContext sContext, SettingsPropertyValueCollection settingsColl)
+ {
+ // Set the values in XML
+ foreach (SettingsPropertyValue spVal in settingsColl)
+ {
+ SetSetting(spVal);
+ }
+
+ // Write the XML file to disk
+ try
+ {
+ XMLConfig.Save(System.IO.Path.Combine(GetAppPath(), GetSettingsFilename()));
+ }
+ catch (Exception ex)
+ {
+ // Create an informational message for the user if we cannot save the settings.
+ // Enable whichever applies to your application type.
+
+ // Uncomment the following line to enable a MessageBox for forms-based apps
+ System.Windows.Forms.MessageBox.Show(ex.Message, "Error writting configuration file to disk", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
+
+ // Uncomment the following line to enable a console message for console-based apps
+ //Console.WriteLine("Error writing configuration file to disk: " + ex.Message);
+ }
+ }
+
+ private XmlDocument XMLConfig
+ {
+ get
+ {
+ // Check if we already have accessed the XML config file. If the xmlDoc object is empty, we have not.
+ if (xmlDoc == null)
+ {
+ xmlDoc = new XmlDocument();
+
+ // If we have not loaded the config, try reading the file from disk.
+ try
+ {
+ xmlDoc.Load(System.IO.Path.Combine(GetAppPath(), GetSettingsFilename()));
+ }
+
+ // If the file does not exist on disk, catch the exception then create the XML template for the file.
+ catch (Exception)
+ {
+ // XML Declaration
+ //
+ XmlDeclaration dec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
+ xmlDoc.AppendChild(dec);
+
+ // Create root node and append to the document
+ //
+ XmlElement rootNode = xmlDoc.CreateElement(XMLROOT);
+ xmlDoc.AppendChild(rootNode);
+
+ // Create Configuration Sections node and add as the first node under the root
+ //
+ XmlElement configNode = xmlDoc.CreateElement(CONFIGNODE);
+ xmlDoc.DocumentElement.PrependChild(configNode);
+
+ // Create the user settings section group declaration and append to the config node above
+ //
+ XmlElement groupNode = xmlDoc.CreateElement(GROUPNODE);
+ groupNode.SetAttribute("name", USERNODE);
+ groupNode.SetAttribute("type", "System.Configuration.UserSettingsGroup");
+ configNode.AppendChild(groupNode);
+
+ // Create the Application section declaration and append to the groupNode above
+ //
+ XmlElement newSection = xmlDoc.CreateElement("section");
+ newSection.SetAttribute("name", APPNODE);
+ newSection.SetAttribute("type", "System.Configuration.ClientSettingsSection");
+ groupNode.AppendChild(newSection);
+
+ // Create the userSettings node and append to the root node
+ //
+ XmlElement userNode = xmlDoc.CreateElement(USERNODE);
+ xmlDoc.DocumentElement.AppendChild(userNode);
+
+ // Create the Application settings node and append to the userNode above
+ //
+ XmlElement appNode = xmlDoc.CreateElement(APPNODE);
+ userNode.AppendChild(appNode);
+ }
+ }
+ return xmlDoc;
+ }
+ }
+
+ // Retrieve values from the configuration file, or if the setting does not exist in the file,
+ // retrieve the value from the application's default configuration
+ private object GetSetting(SettingsProperty setProp)
+ {
+ object retVal;
+ try
+ {
+ // Search for the specific settings node we are looking for in the configuration file.
+ // If it exists, return the InnerText or InnerXML of its first child node, depending on the setting type.
+
+ // If the setting is serialized as a string, return the text stored in the config
+ if (setProp.SerializeAs.ToString() == "String")
+ {
+ return XMLConfig.SelectSingleNode("//setting[@name='" + setProp.Name + "']").FirstChild.InnerText;
+ }
+
+ // If the setting is stored as XML, deserialize it and return the proper object. This only supports
+ // StringCollections at the moment - I will likely add other types as I use them in applications.
+ else
+ {
+ string settingType = setProp.PropertyType.ToString();
+ string xmlData = XMLConfig.SelectSingleNode("//setting[@name='" + setProp.Name + "']").FirstChild.InnerXml;
+ XmlSerializer xs = new XmlSerializer(typeof(string[]));
+ string[] data = (string[])xs.Deserialize(new XmlTextReader(xmlData, XmlNodeType.Element, null));
+
+ switch (settingType)
+ {
+ case "System.Collections.Specialized.StringCollection":
+ StringCollection sc = new StringCollection();
+ sc.AddRange(data);
+ return sc;
+ default:
+ return "";
+ }
+ }
+ }
+ catch (Exception)
+ {
+ // Check to see if a default value is defined by the application.
+ // If so, return that value, using the same rules for settings stored as Strings and XML as above
+ if ((setProp.DefaultValue != null))
+ {
+ if (setProp.SerializeAs.ToString() == "String")
+ {
+ retVal = setProp.DefaultValue.ToString();
+ }
+ else
+ {
+ string settingType = setProp.PropertyType.ToString();
+ string xmlData = setProp.DefaultValue.ToString();
+ XmlSerializer xs = new XmlSerializer(typeof(string[]));
+ string[] data = (string[])xs.Deserialize(new XmlTextReader(xmlData, XmlNodeType.Element, null));
+
+ switch (settingType)
+ {
+ case "System.Collections.Specialized.StringCollection":
+ StringCollection sc = new StringCollection();
+ sc.AddRange(data);
+ return sc;
+
+ default: return "";
+ }
+ }
+ }
+ else
+ {
+ retVal = "";
+ }
+ }
+ return retVal;
+ }
+
+ private void SetSetting(SettingsPropertyValue setProp)
+ {
+ // Define the XML path under which we want to write our settings if they do not already exist
+ XmlNode SettingNode = null;
+
+ try
+ {
+ // Search for the specific settings node we want to update.
+ // If it exists, return its first child node, (the data here node)
+ SettingNode = XMLConfig.SelectSingleNode("//setting[@name='" + setProp.Name + "']").FirstChild;
+ }
+ catch (Exception)
+ {
+ SettingNode = null;
+ }
+
+ // If we have a pointer to an actual XML node, update the value stored there
+ if ((SettingNode != null))
+ {
+ if (setProp.Property.SerializeAs.ToString() == "String")
+ {
+ SettingNode.InnerText = setProp.SerializedValue.ToString();
+ }
+ else
+ {
+ // Write the object to the config serialized as Xml - we must remove the Xml declaration when writing
+ // the value, otherwise .Net's configuration system complains about the additional declaration.
+ SettingNode.InnerXml = setProp.SerializedValue.ToString().Replace(@"", "");
+ }
+ }
+ else
+ {
+ // If the value did not already exist in this settings file, create a new entry for this setting
+
+ // Search for the application settings node () and store it.
+ XmlNode tmpNode = XMLConfig.SelectSingleNode("//" + APPNODE);
+
+ // Create a new settings node and assign its name as well as how it will be serialized
+ XmlElement newSetting = xmlDoc.CreateElement("setting");
+ newSetting.SetAttribute("name", setProp.Name);
+
+ if (setProp.Property.SerializeAs.ToString() == "String")
+ {
+ newSetting.SetAttribute("serializeAs", "String");
+ }
+ else
+ {
+ newSetting.SetAttribute("serializeAs", "Xml");
+ }
+
+ // Append this node to the application settings node ()
+ tmpNode.AppendChild(newSetting);
+
+ // Create an element under our named settings node, and assign it the value we are trying to save
+ XmlElement valueElement = xmlDoc.CreateElement("value");
+ if (setProp.Property.SerializeAs.ToString() == "String")
+ {
+ valueElement.InnerText = setProp.SerializedValue.ToString();
+ }
+ else
+ {
+ // Write the object to the config serialized as Xml - we must remove the Xml declaration when writing
+ // the value, otherwise .Net's configuration system complains about the additional declaration
+ valueElement.InnerXml = setProp.SerializedValue.ToString().Replace(@"", "");
+ }
+
+ //Append this new element under the setting node we created above
+ newSetting.AppendChild(valueElement);
+ }
+ }
+}
\ No newline at end of file
diff --git a/APKToolGUI/Program.cs b/APKToolGUI/Program.cs
new file mode 100644
index 0000000..ad98048
--- /dev/null
+++ b/APKToolGUI/Program.cs
@@ -0,0 +1,139 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace APKToolGUI
+{
+ static class Program
+ {
+ ///
+ /// Главная точка входа для приложения.
+ ///
+ [STAThread]
+ static void Main(String[] arg)
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+
+ if (arg.Length > 0)
+ {
+ switch (arg[0])
+ {
+ case "ccm":
+ ExplorerContextMenuMethod(ExplorerContextMenu.Action.Create);
+ break;
+ case "rcm":
+ ExplorerContextMenuMethod(ExplorerContextMenu.Action.Remove);
+ break;
+ case "b":
+ Application.Run(new FormBuild(arg));
+ break;
+ case "d":
+ Application.Run(new FormDecode(arg));
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ if (FilesCheck() == true)
+ Application.Run(new FormMain());
+ }
+
+ public static void SetLanguage()
+ {
+ String settingsCulture = Properties.Settings.Default.Culture;
+
+ if (settingsCulture.Equals("Auto"))
+ {
+ System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InstalledUICulture;
+ System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InstalledUICulture;
+ }
+ else
+ {
+ System.Globalization.CultureInfo _settingsCulture = System.Globalization.CultureInfo.GetCultureInfo(settingsCulture);
+ System.Threading.Thread.CurrentThread.CurrentUICulture = _settingsCulture;
+ System.Threading.Thread.CurrentThread.CurrentCulture = _settingsCulture;
+ }
+ }
+
+ private static bool FilesCheck()
+ {
+ // проверка файлов
+ List missigFiles = MissingFilesCheck();
+ if (missigFiles.Count > 0)
+ {
+ String files = Environment.NewLine;
+ foreach (String file in missigFiles)
+ {
+ files += file + Environment.NewLine;
+ }
+ MessageBox.Show("Отсутствуют необходимые файлы:" + files, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ //Application.Exit();
+ return false;
+ }
+ else
+ return true;
+ }
+
+ private static List MissingFilesCheck()
+ {
+ List missingFiles = new List();
+ String[] fileList = new String[]{
+ APKTOOL_PATH,
+ ZIPALIGN_PATH,
+ SIGNAPK_PATH,
+ SIGNAPK_KEYPRIVATE,
+ SIGNAPK_KEYPUBLIC};
+ for (int i = 0; i < fileList.Length; i++)
+ if (!System.IO.File.Exists(fileList[i]))
+ missingFiles.Add(System.IO.Path.GetFileName(fileList[i]));
+ return missingFiles;
+ }
+
+ private static void ExplorerContextMenuMethod(ExplorerContextMenu.Action action)
+ {
+ ExplorerContextMenu.Status status = null;
+
+ switch (action)
+ {
+ case ExplorerContextMenu.Action.Create:
+ status = ExplorerContextMenu.Create();
+ break;
+ case ExplorerContextMenu.Action.Remove:
+ status = ExplorerContextMenu.Remove();
+ break;
+ default:
+ return;
+ }
+
+ if (status.Result)
+ MessageBox.Show(status.Message, Application.ProductName);
+ else
+ MessageBox.Show(status.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Application.Exit();
+ }
+
+ public static string GetPortablePath(string path)
+ {
+ string startupPath = Application.StartupPath + System.IO.Path.DirectorySeparatorChar;
+ if (path.Contains(startupPath))
+ return path.Replace(startupPath, String.Empty);
+ else
+ return path;
+ }
+
+ private static readonly string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
+ public static string APKTOOL_PATH { get { return appPath + @"\bin\apktool.jar"; } }
+ public static string SIGNAPK_PATH { get { return appPath + @"\bin\signapk.jar"; } }
+ public static string SIGNAPK_KEYPRIVATE { get { return appPath + @"\bin\testkey.pk8"; } }
+ public static string SIGNAPK_KEYPUBLIC { get { return appPath + @"\bin\testkey.x509.pem"; } }
+ public static string ZIPALIGN_PATH { get { return appPath + @"\bin\zipalign.exe"; } }
+
+ //public static readonly string APKTOOL_PATH = appPath + @"\bin\apktool.jar";
+ //public static readonly string SIGNAPK_PATH = appPath + @"\bin\signapk.jar";
+ //public static readonly string SIGNAPK_KEYPRIVATE = appPath + @"\bin\testkey.pk8";
+ //public static readonly string SIGNAPK_KEYPUBLIC = appPath + @"\bin\testkey.x509.pem";
+ //public static readonly string ZIPALIGN_PATH = appPath + @"\bin\zipalign.exe";
+ }
+}
diff --git a/APKToolGUI/Properties/AssemblyInfo.cs b/APKToolGUI/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1f7a58a
--- /dev/null
+++ b/APKToolGUI/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Управление общими сведениями о сборке осуществляется с помощью
+// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
+// связанные со сборкой.
+[assembly: AssemblyTitle("APKTool GUI")]
+[assembly: AssemblyDescription("Графический интерфейс для утилит akptool, signapk и zipalign.")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("APKTool GUI")]
+[assembly: AssemblyCopyright("© INFINUM, 2012-2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
+// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
+// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
+[assembly: ComVisible(false)]
+
+// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
+[assembly: Guid("12cc5907-c237-4d52-8c7e-08d622828cf4")]
+
+// Сведения о версии сборки состоят из следующих четырех значений:
+//
+// Основной номер версии
+// Дополнительный номер версии
+// Номер построения
+// Редакция
+//
+// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
+// используя "*", как показано ниже:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("2.4.0.441")]
+[assembly: AssemblyFileVersion("2.4.0.441")]
diff --git a/APKToolGUI/Properties/Resources.Designer.cs b/APKToolGUI/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..051ce98
--- /dev/null
+++ b/APKToolGUI/Properties/Resources.Designer.cs
@@ -0,0 +1,133 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программой.
+// Исполняемая версия:4.0.30319.34209
+//
+// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+// повторной генерации кода.
+//
+//------------------------------------------------------------------------------
+
+namespace APKToolGUI.Properties {
+ using System;
+
+
+ ///
+ /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
+ ///
+ // Этот класс создан автоматически классом StronglyTypedResourceBuilder
+ // с помощью такого средства, как ResGen или Visual Studio.
+ // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
+ // с параметром /str или перестройте свой проект VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ 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() {
+ }
+
+ ///
+ /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("APKToolGUI.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Перезаписывает свойство CurrentUICulture текущего потока для всех
+ /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap android {
+ get {
+ object obj = ResourceManager.GetObject("android", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок).
+ ///
+ internal static System.Drawing.Icon android_thin {
+ get {
+ object obj = ResourceManager.GetObject("android_thin", resourceCulture);
+ return ((System.Drawing.Icon)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap done {
+ get {
+ object obj = ResourceManager.GetObject("done", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap error {
+ get {
+ object obj = ResourceManager.GetObject("error", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap info {
+ get {
+ object obj = ResourceManager.GetObject("info", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap waiting {
+ get {
+ object obj = ResourceManager.GetObject("waiting", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap warning {
+ get {
+ object obj = ResourceManager.GetObject("warning", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/APKToolGUI/Properties/Resources.resx b/APKToolGUI/Properties/Resources.resx
new file mode 100644
index 0000000..f0454f7
--- /dev/null
+++ b/APKToolGUI/Properties/Resources.resx
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\Info1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Done.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\exclamation-red-frame-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\android.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\warning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\android-thin.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\waiting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/APKToolGUI/Properties/Settings.Designer.cs b/APKToolGUI/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..bd32703
--- /dev/null
+++ b/APKToolGUI/Properties/Settings.Designer.cs
@@ -0,0 +1,702 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программой.
+// Исполняемая версия:4.0.30319.34209
+//
+// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+// повторной генерации кода.
+//
+//------------------------------------------------------------------------------
+
+namespace APKToolGUI.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.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 {
+ return defaultInstance;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Decode_NoSrc {
+ get {
+ return ((bool)(this["MAIN_Decode_NoSrc"]));
+ }
+ set {
+ this["MAIN_Decode_NoSrc"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Decode_NoRes {
+ get {
+ return ((bool)(this["MAIN_Decode_NoRes"]));
+ }
+ set {
+ this["MAIN_Decode_NoRes"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Decode_Force {
+ get {
+ return ((bool)(this["MAIN_Decode_Force"]));
+ }
+ set {
+ this["MAIN_Decode_Force"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Decode_UseFramework {
+ get {
+ return ((bool)(this["MAIN_Decode_UseFramework"]));
+ }
+ set {
+ this["MAIN_Decode_UseFramework"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Build_ForceAll {
+ get {
+ return ((bool)(this["MAIN_Build_ForceAll"]));
+ }
+ set {
+ this["MAIN_Build_ForceAll"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_Decode_InputAppPath {
+ get {
+ return ((string)(this["MAIN_Decode_InputAppPath"]));
+ }
+ set {
+ this["MAIN_Decode_InputAppPath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_Decode_FrameDir {
+ get {
+ return ((string)(this["MAIN_Decode_FrameDir"]));
+ }
+ set {
+ this["MAIN_Decode_FrameDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_BuildProjectDir {
+ get {
+ return ((string)(this["MAIN_BuildProjectDir"]));
+ }
+ set {
+ this["MAIN_BuildProjectDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_InstallFramework_InputFramePath {
+ get {
+ return ((string)(this["MAIN_InstallFramework_InputFramePath"]));
+ }
+ set {
+ this["MAIN_InstallFramework_InputFramePath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_SIGN_InputFile {
+ get {
+ return ((string)(this["MAIN_SIGN_InputFile"]));
+ }
+ set {
+ this["MAIN_SIGN_InputFile"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_SIGN_OutputFile {
+ get {
+ return ((string)(this["MAIN_SIGN_OutputFile"]));
+ }
+ set {
+ this["MAIN_SIGN_OutputFile"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Build_UseAapt {
+ get {
+ return ((bool)(this["MAIN_Build_UseAapt"]));
+ }
+ set {
+ this["MAIN_Build_UseAapt"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_Build_AaptPath {
+ get {
+ return ((string)(this["MAIN_Build_AaptPath"]));
+ }
+ set {
+ this["MAIN_Build_AaptPath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("Auto")]
+ public string Culture {
+ get {
+ return ((string)(this["Culture"]));
+ }
+ set {
+ this["Culture"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string JavaExe {
+ get {
+ return ((string)(this["JavaExe"]));
+ }
+ set {
+ this["JavaExe"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public global::System.DateTime LastUpdateCheck {
+ get {
+ return ((global::System.DateTime)(this["LastUpdateCheck"]));
+ }
+ set {
+ this["LastUpdateCheck"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool CheckForUpdateAtStartup {
+ get {
+ return ((bool)(this["CheckForUpdateAtStartup"]));
+ }
+ set {
+ this["CheckForUpdateAtStartup"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool ClearLogBeforeAction {
+ get {
+ return ((bool)(this["ClearLogBeforeAction"]));
+ }
+ set {
+ this["ClearLogBeforeAction"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool BUILD_ForceAll {
+ get {
+ return ((bool)(this["BUILD_ForceAll"]));
+ }
+ set {
+ this["BUILD_ForceAll"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool BUILD_CustomAapt {
+ get {
+ return ((bool)(this["BUILD_CustomAapt"]));
+ }
+ set {
+ this["BUILD_CustomAapt"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string BUILD_AaptPath {
+ get {
+ return ((string)(this["BUILD_AaptPath"]));
+ }
+ set {
+ this["BUILD_AaptPath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool DECOMPILE_NoRes {
+ get {
+ return ((bool)(this["DECOMPILE_NoRes"]));
+ }
+ set {
+ this["DECOMPILE_NoRes"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool DECOMPILE_NoSrc {
+ get {
+ return ((bool)(this["DECOMPILE_NoSrc"]));
+ }
+ set {
+ this["DECOMPILE_NoSrc"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool DECOMPILE_Force {
+ get {
+ return ((bool)(this["DECOMPILE_Force"]));
+ }
+ set {
+ this["DECOMPILE_Force"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool DECOMPILE_UseFramework {
+ get {
+ return ((bool)(this["DECOMPILE_UseFramework"]));
+ }
+ set {
+ this["DECOMPILE_UseFramework"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool BUILD_CopyOriginal {
+ get {
+ return ((bool)(this["BUILD_CopyOriginal"]));
+ }
+ set {
+ this["BUILD_CopyOriginal"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool BUILD_UseFramework {
+ get {
+ return ((bool)(this["BUILD_UseFramework"]));
+ }
+ set {
+ this["BUILD_UseFramework"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string BUILD_FrameworkPath {
+ get {
+ return ((string)(this["BUILD_FrameworkPath"]));
+ }
+ set {
+ this["BUILD_FrameworkPath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool DECOMPILE_KeepBrokenResource {
+ get {
+ return ((bool)(this["DECOMPILE_KeepBrokenResource"]));
+ }
+ set {
+ this["DECOMPILE_KeepBrokenResource"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool DECOMPILE_MatchOriginal {
+ get {
+ return ((bool)(this["DECOMPILE_MatchOriginal"]));
+ }
+ set {
+ this["DECOMPILE_MatchOriginal"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Decode_MatchOriginal {
+ get {
+ return ((bool)(this["MAIN_Decode_MatchOriginal"]));
+ }
+ set {
+ this["MAIN_Decode_MatchOriginal"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Decode_KeepBrokenRes {
+ get {
+ return ((bool)(this["MAIN_Decode_KeepBrokenRes"]));
+ }
+ set {
+ this["MAIN_Decode_KeepBrokenRes"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Build_CopyOriginal {
+ get {
+ return ((bool)(this["MAIN_Build_CopyOriginal"]));
+ }
+ set {
+ this["MAIN_Build_CopyOriginal"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_Build_FrameDir {
+ get {
+ return ((string)(this["MAIN_Build_FrameDir"]));
+ }
+ set {
+ this["MAIN_Build_FrameDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Build_UseFramework {
+ get {
+ return ((bool)(this["MAIN_Build_UseFramework"]));
+ }
+ set {
+ this["MAIN_Build_UseFramework"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Decode_UseOutputDir {
+ get {
+ return ((bool)(this["MAIN_Decode_UseOutputDir"]));
+ }
+ set {
+ this["MAIN_Decode_UseOutputDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public string MAIN_Decode_OutputDir {
+ get {
+ return ((string)(this["MAIN_Decode_OutputDir"]));
+ }
+ set {
+ this["MAIN_Decode_OutputDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Build_UseOutputAppPath {
+ get {
+ return ((bool)(this["MAIN_Build_UseOutputAppPath"]));
+ }
+ set {
+ this["MAIN_Build_UseOutputAppPath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string MAIN_Build_OutputAppPath {
+ get {
+ return ((string)(this["MAIN_Build_OutputAppPath"]));
+ }
+ set {
+ this["MAIN_Build_OutputAppPath"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string MAIN_Build_InputDir {
+ get {
+ return ((string)(this["MAIN_Build_InputDir"]));
+ }
+ set {
+ this["MAIN_Build_InputDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_InstallFramework_UseFrameDir {
+ get {
+ return ((bool)(this["MAIN_InstallFramework_UseFrameDir"]));
+ }
+ set {
+ this["MAIN_InstallFramework_UseFrameDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_InstallFramework_UseTag {
+ get {
+ return ((bool)(this["MAIN_InstallFramework_UseTag"]));
+ }
+ set {
+ this["MAIN_InstallFramework_UseTag"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string MAIN_InstallFramework_Tag {
+ get {
+ return ((string)(this["MAIN_InstallFramework_Tag"]));
+ }
+ set {
+ this["MAIN_InstallFramework_Tag"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string MAIN_InstallFramework_FrameDir {
+ get {
+ return ((string)(this["MAIN_InstallFramework_FrameDir"]));
+ }
+ set {
+ this["MAIN_InstallFramework_FrameDir"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("4")]
+ public decimal MAIN_Zipalign_AlignmentInBytes {
+ get {
+ return ((decimal)(this["MAIN_Zipalign_AlignmentInBytes"]));
+ }
+ set {
+ this["MAIN_Zipalign_AlignmentInBytes"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Zipalign_OverwriteOutputFile {
+ get {
+ return ((bool)(this["MAIN_Zipalign_OverwriteOutputFile"]));
+ }
+ set {
+ this["MAIN_Zipalign_OverwriteOutputFile"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Zipalign_CheckOnly {
+ get {
+ return ((bool)(this["MAIN_Zipalign_CheckOnly"]));
+ }
+ set {
+ this["MAIN_Zipalign_CheckOnly"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Zipalign_Verbose {
+ get {
+ return ((bool)(this["MAIN_Zipalign_Verbose"]));
+ }
+ set {
+ this["MAIN_Zipalign_Verbose"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string MAIN_Zipalign_OutputFile {
+ get {
+ return ((string)(this["MAIN_Zipalign_OutputFile"]));
+ }
+ set {
+ this["MAIN_Zipalign_OutputFile"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string MAIN_Zipalign_InputFile {
+ get {
+ return ((string)(this["MAIN_Zipalign_InputFile"]));
+ }
+ set {
+ this["MAIN_Zipalign_InputFile"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool MAIN_Zipalign_Recompress {
+ get {
+ return ((bool)(this["MAIN_Zipalign_Recompress"]));
+ }
+ set {
+ this["MAIN_Zipalign_Recompress"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("bin\\testkey.x509.pem")]
+ public string MAIN_SIGN_PublicKey {
+ get {
+ return ((string)(this["MAIN_SIGN_PublicKey"]));
+ }
+ set {
+ this["MAIN_SIGN_PublicKey"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("bin\\testkey.pk8")]
+ public string MAIN_SIGN_PrivateKey {
+ get {
+ return ((string)(this["MAIN_SIGN_PrivateKey"]));
+ }
+ set {
+ this["MAIN_SIGN_PrivateKey"] = value;
+ }
+ }
+ }
+}
diff --git a/APKToolGUI/Properties/Settings.settings b/APKToolGUI/Properties/Settings.settings
new file mode 100644
index 0000000..46b6595
--- /dev/null
+++ b/APKToolGUI/Properties/Settings.settings
@@ -0,0 +1,165 @@
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+ Auto
+
+
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ 4
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ bin\testkey.x509.pem
+
+
+ bin\testkey.pk8
+
+
+
\ No newline at end of file
diff --git a/APKToolGUI/Properties/app.manifest b/APKToolGUI/Properties/app.manifest
new file mode 100644
index 0000000..fe9bb4e
--- /dev/null
+++ b/APKToolGUI/Properties/app.manifest
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/APKToolGUI/Resources/Done.png b/APKToolGUI/Resources/Done.png
new file mode 100644
index 0000000..4a5c5e1
Binary files /dev/null and b/APKToolGUI/Resources/Done.png differ
diff --git a/APKToolGUI/Resources/GUI.png b/APKToolGUI/Resources/GUI.png
new file mode 100644
index 0000000..59a013c
Binary files /dev/null and b/APKToolGUI/Resources/GUI.png differ
diff --git a/APKToolGUI/Resources/Info1.png b/APKToolGUI/Resources/Info1.png
new file mode 100644
index 0000000..dc30625
Binary files /dev/null and b/APKToolGUI/Resources/Info1.png differ
diff --git a/APKToolGUI/Resources/android-thin.ico b/APKToolGUI/Resources/android-thin.ico
new file mode 100644
index 0000000..3926338
Binary files /dev/null and b/APKToolGUI/Resources/android-thin.ico differ
diff --git a/APKToolGUI/Resources/android.png b/APKToolGUI/Resources/android.png
new file mode 100644
index 0000000..2d1dc05
Binary files /dev/null and b/APKToolGUI/Resources/android.png differ
diff --git a/APKToolGUI/Resources/exclamation-red-frame-icon.png b/APKToolGUI/Resources/exclamation-red-frame-icon.png
new file mode 100644
index 0000000..0496522
Binary files /dev/null and b/APKToolGUI/Resources/exclamation-red-frame-icon.png differ
diff --git a/APKToolGUI/Resources/waiting.png b/APKToolGUI/Resources/waiting.png
new file mode 100644
index 0000000..57b03ce
Binary files /dev/null and b/APKToolGUI/Resources/waiting.png differ
diff --git a/APKToolGUI/Resources/warning.png b/APKToolGUI/Resources/warning.png
new file mode 100644
index 0000000..2ad8493
Binary files /dev/null and b/APKToolGUI/Resources/warning.png differ
diff --git a/APKToolGUI/Signapk.cs b/APKToolGUI/Signapk.cs
new file mode 100644
index 0000000..1033920
--- /dev/null
+++ b/APKToolGUI/Signapk.cs
@@ -0,0 +1,55 @@
+using System;
+using Java;
+using System.Diagnostics;
+
+namespace APKToolGUI
+{
+ public class Signapk : JarProcess
+ {
+ public new event SignapkExitedEventHandler Exited;
+ public string PublicKeyPath { get; set; }
+ public string PrivateKeyPath { get; set; }
+ private string lastSourceApk;
+ private string lastOutApk;
+
+ public Signapk(string javaPath, string jarPath)
+ : base(javaPath, jarPath)
+ {
+ base.Exited += Signapk_Exited;
+ }
+
+ void Signapk_Exited(object sender, EventArgs e)
+ {
+ if (this.Exited != null)
+ this.Exited(this, new SignapkExitedEventArgs(base.ExitCode, lastSourceApk, lastOutApk));
+ }
+
+ public bool Sign(string sourceApk, string outApk)
+ {
+ return Sign(PublicKeyPath, PrivateKeyPath, sourceApk, outApk);
+ }
+
+ public bool Sign(string publicKeyPath, string privateKeyPath, string sourceApk, string outApk)
+ {
+ lastSourceApk = sourceApk;
+ lastOutApk = outApk;
+ string args = String.Format("\"{0}\" \"{1}\" \"{2}\" \"{3}\"", publicKeyPath, privateKeyPath, sourceApk, outApk);
+ return base.Start(args);
+ }
+ }
+
+ public class SignapkExitedEventArgs : EventArgs
+ {
+ public SignapkExitedEventArgs(int exitCode, string sourceFilePath, string outFilePath)
+ {
+ this.ExitCode = exitCode;
+ this.SourceFilePath = sourceFilePath;
+ this.OutFilePath = outFilePath;
+ }
+
+ public int ExitCode { get; private set; }
+ public string SourceFilePath { get; private set; }
+ public string OutFilePath { get; private set; }
+ }
+ public delegate void SignapkExitedEventHandler(object sender, SignapkExitedEventArgs e);
+}
diff --git a/APKToolGUI/UpdateChecker.cs b/APKToolGUI/UpdateChecker.cs
new file mode 100644
index 0000000..dfaf617
--- /dev/null
+++ b/APKToolGUI/UpdateChecker.cs
@@ -0,0 +1,105 @@
+using System;
+using System.ComponentModel;
+using System.Net;
+
+namespace APKToolGUI
+{
+ class UpdateChecker
+ {
+ public UpdateChecker(string url, Version currentVersion)
+ {
+ currentVer = currentVersion;
+ Url = url;
+ backgroundWorker = new BackgroundWorker();
+ backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
+ backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
+ }
+
+ private BackgroundWorker backgroundWorker;
+ private Version currentVer;
+ public string Url { get; set; }
+
+ public event RunWorkerCompletedEventHandler Completed;
+ //public event EventHandler Error;
+
+ private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
+ {
+ Completed(this, e);
+ }
+
+ private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
+ {
+ Version latestVersion = null;
+ try
+ {
+ latestVersion = GetVersion();
+ }
+ catch (Exception exc)
+ {
+ e.Result = new Result(State.Error, exc.Message, (bool)e.Argument);
+ }
+ if (latestVersion != null)
+ {
+ if (CompareVersion(latestVersion))
+ {
+ e.Result = new Result(State.NeedUpdate, latestVersion.ToString(), (bool)e.Argument);
+ }
+ else
+ e.Result = new Result(State.NoUpdate, null, (bool)e.Argument);
+ }
+ else
+ e.Result = new Result(State.Error, "Error version parsing", (bool)e.Argument);
+ }
+
+ private bool CompareVersion(Version latestVersion)
+ {
+ if (latestVersion > currentVer)
+ return true;
+ else
+ return false;
+ }
+
+ public void CheckAsync(bool silently = false)
+ {
+ if (!backgroundWorker.IsBusy)
+ backgroundWorker.RunWorkerAsync(silently);
+ }
+
+ private Version GetVersion()
+ {
+ string versionString;
+ using (WebClient webClient = new WebClient())
+ {
+ versionString = webClient.DownloadString(Url);
+ }
+
+ Version version = new Version();
+ if (Version.TryParse(versionString, out version))
+ {
+ return version;
+ }
+ else
+ return null;
+ }
+
+ public enum State
+ {
+ NoUpdate,
+ NeedUpdate,
+ Error
+ }
+
+ public class Result
+ {
+ public Result(State state, string message, bool silently)
+ {
+ this.State = state;
+ this.Message = message;
+ this.Silently = silently;
+ }
+ public State State { get; private set; }
+ public string Message { get; private set; }
+ public bool Silently { get; private set; }
+ }
+ }
+}
diff --git a/APKToolGUI/Zipalign.cs b/APKToolGUI/Zipalign.cs
new file mode 100644
index 0000000..71108ae
--- /dev/null
+++ b/APKToolGUI/Zipalign.cs
@@ -0,0 +1,99 @@
+using System;
+using System.Diagnostics;
+
+namespace APKToolGUI
+{
+ public class Zipalign
+ {
+ string _zipalignPath;
+ Process processZipalign;
+ static class Keys
+ {
+ public const string CheckOnly = " -c";
+ public const string OverwriteOutputFile = " -f";
+ public const string VerboseOut = " -v";
+ public const string Recompress = " -z";
+ }
+
+ public ZipalignOptions Options { get; set; }
+ public event DataReceivedEventHandler OutputDataReceived
+ {
+ add { processZipalign.OutputDataReceived += value; }
+ remove { processZipalign.OutputDataReceived -= value; }
+ }
+ public event DataReceivedEventHandler ErrorDataReceived
+ {
+ add { processZipalign.ErrorDataReceived += value; }
+ remove { processZipalign.ErrorDataReceived -= value; }
+ }
+ public event EventHandler Exited;
+ public int ExitCode { get { return processZipalign.ExitCode; } }
+
+ public Zipalign(string zipalignFileName)
+ {
+ _zipalignPath = zipalignFileName;
+ processZipalign = new Process();
+ processZipalign.EnableRaisingEvents = true;
+ processZipalign.StartInfo.FileName = zipalignFileName;
+ processZipalign.StartInfo.UseShellExecute = false; //отключаем использование оболочки, чтобы можно было читать данные вывода
+ processZipalign.StartInfo.RedirectStandardOutput = true; // разрешаем перенаправление данных вывода
+ processZipalign.StartInfo.RedirectStandardError = true; // разрешаем перенаправление данных вывода
+ processZipalign.StartInfo.CreateNoWindow = true; //запрещаем создавать окно для запускаемой программы
+ processZipalign.Exited += processZipalign_Exited;
+ }
+
+ void processZipalign_Exited(object sender, EventArgs e)
+ {
+ processZipalign.CancelOutputRead();
+ processZipalign.CancelErrorRead();
+ if (this.Exited != null)
+ Exited(this, new EventArgs());
+ }
+
+ public bool Align(ZipalignOptions options)
+ {
+ this.Options = options;
+ string keyCheckOnly = null, keyVerbose = null, keyRecompress = null, keyOverwriteOutputFile = null, keyOutputFile = null;
+
+ if (options.VerboseOut)
+ keyVerbose = Keys.VerboseOut;
+ if (options.CheckOnly)
+ {
+ keyCheckOnly = Keys.CheckOnly;
+ }
+ else
+ {
+ if(options.Recompress)
+ keyRecompress = Keys.Recompress;
+ if (options.OverwriteOutputFile)
+ keyOverwriteOutputFile = Keys.OverwriteOutputFile;
+ keyOutputFile = String.Format(" \"{0}\"", options.OutputFile);
+ }
+
+ string args = String.Format("{0}{1}{2}{3} {4} \"{5}\"{6}", keyCheckOnly, keyOverwriteOutputFile, keyVerbose, keyRecompress, options.AlignmentInBytes, options.InputFile, keyOutputFile);
+
+ processZipalign.StartInfo.Arguments = args;
+ bool started = processZipalign.Start();
+ processZipalign.BeginOutputReadLine();
+ processZipalign.BeginErrorReadLine();
+ return started;
+ }
+ }
+
+ public class ZipalignOptions
+ {
+ public ZipalignOptions(string inputFile, int alignmentInBytes)
+ {
+ this.InputFile = inputFile;
+ this.AlignmentInBytes = alignmentInBytes;
+ }
+
+ public string InputFile { get; set; }
+ public string OutputFile { get; set; }
+ public int AlignmentInBytes { get; set; }
+ public bool CheckOnly { get; set; }
+ public bool OverwriteOutputFile { get; set; }
+ public bool Recompress { get; set; }
+ public bool VerboseOut { get; set; }
+ }
+}
diff --git a/APKToolGUI/android.ico b/APKToolGUI/android.ico
new file mode 100644
index 0000000..bd25179
Binary files /dev/null and b/APKToolGUI/android.ico differ
diff --git a/APKToolGUI/app.config b/APKToolGUI/app.config
new file mode 100644
index 0000000..197a52f
--- /dev/null
+++ b/APKToolGUI/app.config
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+ Auto
+
+
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ 4
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ bin\testkey.x509.pem
+
+
+ bin\testkey.pk8
+
+
+
+
diff --git a/APKToolGUI/bin/Debug/APKToolGUI.config b/APKToolGUI/bin/Debug/APKToolGUI.config
new file mode 100644
index 0000000..fc4824a
--- /dev/null
+++ b/APKToolGUI/bin/Debug/APKToolGUI.config
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ C:\Program Files (x86)\Java\jre1.8.0_65\bin\Java.exe
+
+
+ True
+
+
+ False
+
+
+ True
+
+
+ D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake.apk
+
+
+ False
+
+
+
+
+
+
+ D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake
+
+
+ 11/13/2015 09:46:11
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+
+
+
+
+ True
+
+
+ D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake_20150730_10-42-15.apk
+
+
+ 4
+
+
+ C:\Temp\antifake_signed.apk
+
+
+ Auto
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake
+
+
+ True
+
+
+
+
+
+
+ False
+
+
+ True
+
+
+
+
+
+
+ True
+
+
+ True
+
+
+ False
+
+
+ True
+
+
+ bin\testkey.x509.pem
+
+
+ D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\antifake.apk
+
+
+ D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\antifake_signed.apk
+
+
+ bin\testkey.pk8
+
+
+
+
\ No newline at end of file
diff --git a/APKToolGUI/bin/Debug/APKToolGUI.exe b/APKToolGUI/bin/Debug/APKToolGUI.exe
new file mode 100644
index 0000000..249a8f8
Binary files /dev/null and b/APKToolGUI/bin/Debug/APKToolGUI.exe differ
diff --git a/APKToolGUI/bin/Debug/APKToolGUI.exe.config b/APKToolGUI/bin/Debug/APKToolGUI.exe.config
new file mode 100644
index 0000000..197a52f
--- /dev/null
+++ b/APKToolGUI/bin/Debug/APKToolGUI.exe.config
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+ Auto
+
+
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ 4
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ bin\testkey.x509.pem
+
+
+ bin\testkey.pk8
+
+
+
+
diff --git a/APKToolGUI/bin/Debug/APKToolGUI.pdb b/APKToolGUI/bin/Debug/APKToolGUI.pdb
new file mode 100644
index 0000000..8b8f772
Binary files /dev/null and b/APKToolGUI/bin/Debug/APKToolGUI.pdb differ
diff --git a/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe b/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe
new file mode 100644
index 0000000..8f90da4
Binary files /dev/null and b/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe differ
diff --git a/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe.config b/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe.config
new file mode 100644
index 0000000..197a52f
--- /dev/null
+++ b/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe.config
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+ Auto
+
+
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ 4
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ bin\testkey.x509.pem
+
+
+ bin\testkey.pk8
+
+
+
+
diff --git a/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe.manifest b/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe.manifest
new file mode 100644
index 0000000..061c9ca
--- /dev/null
+++ b/APKToolGUI/bin/Debug/APKToolGUI.vshost.exe.manifest
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/APKToolGUI/bin/Debug/antifake.apk b/APKToolGUI/bin/Debug/antifake.apk
new file mode 100644
index 0000000..fd10ecf
Binary files /dev/null and b/APKToolGUI/bin/Debug/antifake.apk differ
diff --git a/APKToolGUI/bin/Debug/bin/apktool.jar b/APKToolGUI/bin/Debug/bin/apktool.jar
new file mode 100644
index 0000000..c1febb8
Binary files /dev/null and b/APKToolGUI/bin/Debug/bin/apktool.jar differ
diff --git a/APKToolGUI/bin/Debug/bin/signapk.jar b/APKToolGUI/bin/Debug/bin/signapk.jar
new file mode 100644
index 0000000..967e07c
Binary files /dev/null and b/APKToolGUI/bin/Debug/bin/signapk.jar differ
diff --git a/APKToolGUI/bin/Debug/bin/testkey.pk8 b/APKToolGUI/bin/Debug/bin/testkey.pk8
new file mode 100644
index 0000000..586c1bd
Binary files /dev/null and b/APKToolGUI/bin/Debug/bin/testkey.pk8 differ
diff --git a/APKToolGUI/bin/Debug/bin/testkey.x509.pem b/APKToolGUI/bin/Debug/bin/testkey.x509.pem
new file mode 100644
index 0000000..e242d83
--- /dev/null
+++ b/APKToolGUI/bin/Debug/bin/testkey.x509.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEqDCCA5CgAwIBAgIJAJNurL4H8gHfMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g
+VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE
+AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe
+Fw0wODAyMjkwMTMzNDZaFw0zNTA3MTcwMTMzNDZaMIGUMQswCQYDVQQGEwJVUzET
+MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G
+A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p
+ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI
+hvcNAQEBBQADggENADCCAQgCggEBANaTGQTexgskse3HYuDZ2CU+Ps1s6x3i/waM
+qOi8qM1r03hupwqnbOYOuw+ZNVn/2T53qUPn6D1LZLjk/qLT5lbx4meoG7+yMLV4
+wgRDvkxyGLhG9SEVhvA4oU6Jwr44f46+z4/Kw9oe4zDJ6pPQp8PcSvNQIg1QCAcy
+4ICXF+5qBTNZ5qaU7Cyz8oSgpGbIepTYOzEJOmc3Li9kEsBubULxWBjf/gOBzAzU
+RNps3cO4JFgZSAGzJWQTT7/emMkod0jb9WdqVA2BVMi7yge54kdVMxHEa5r3b97s
+zI5p58ii0I54JiCUP5lyfTwE/nKZHZnfm644oLIXf6MdW2r+6R8CAQOjgfwwgfkw
+HQYDVR0OBBYEFEhZAFY9JyxGrhGGBaR0GawJyowRMIHJBgNVHSMEgcEwgb6AFEhZ
+AFY9JyxGrhGGBaR0GawJyowRoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE
+CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH
+QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG
+CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJAJNurL4H8gHfMAwGA1Ud
+EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHqvlozrUMRBBVEY0NqrrwFbinZa
+J6cVosK0TyIUFf/azgMJWr+kLfcHCHJsIGnlw27drgQAvilFLAhLwn62oX6snb4Y
+LCBOsVMR9FXYJLZW2+TcIkCRLXWG/oiVHQGo/rWuWkJgU134NDEFJCJGjDbiLCpe
++ZTWHdcwauTJ9pUbo8EvHRkU3cYfGmLaLfgn9gP+pWA7LFQNvXwBnDa6sppCccEX
+31I828XzgXpJ4O+mDL1/dBd+ek8ZPUP0IgdyZm5MTYPhvVqGCHzzTy3sIeJFymwr
+sBbmg2OAUNLEMO6nwmocSdN2ClirfxqCzJOLSDE4QyS9BAH6EhY6UFcOaE0=
+-----END CERTIFICATE-----
diff --git a/APKToolGUI/bin/Debug/bin/zipalign.exe b/APKToolGUI/bin/Debug/bin/zipalign.exe
new file mode 100644
index 0000000..761b22b
Binary files /dev/null and b/APKToolGUI/bin/Debug/bin/zipalign.exe differ
diff --git a/APKToolGUI/bin/Debug/ru/APKToolGUI.resources.dll b/APKToolGUI/bin/Debug/ru/APKToolGUI.resources.dll
new file mode 100644
index 0000000..05f6fd5
Binary files /dev/null and b/APKToolGUI/bin/Debug/ru/APKToolGUI.resources.dll differ
diff --git a/APKToolGUI/bin/Release/APKToolGUI.config b/APKToolGUI/bin/Release/APKToolGUI.config
new file mode 100644
index 0000000..6e1b04f
--- /dev/null
+++ b/APKToolGUI/bin/Release/APKToolGUI.config
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ C:\Program Files (x86)\Java\jre1.8.0_51\bin\Java.exe
+
+
+ Auto
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+ bin\testkey.x509.pem
+
+
+ False
+
+
+
+
+
+
+ 07/29/2015 20:35:23
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+ False
+
+
+ C:\Users\Администратор\Downloads\APKToolUI_2.4\signapk_20150510_14-52-45.jar
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ C:\Users\Администратор\Downloads\APKToolUI_2.4\signapk
+
+
+ True
+
+
+ False
+
+
+ bin\testkey.pk8
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
\ No newline at end of file
diff --git a/APKToolGUI/bin/Release/APKToolGUI.exe b/APKToolGUI/bin/Release/APKToolGUI.exe
new file mode 100644
index 0000000..bfd023f
Binary files /dev/null and b/APKToolGUI/bin/Release/APKToolGUI.exe differ
diff --git a/APKToolGUI/bin/Release/APKToolGUI.exe.config b/APKToolGUI/bin/Release/APKToolGUI.exe.config
new file mode 100644
index 0000000..197a52f
--- /dev/null
+++ b/APKToolGUI/bin/Release/APKToolGUI.exe.config
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+
+
+
+ Auto
+
+
+
+
+
+
+
+
+ True
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ 4
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+
+
+
+ False
+
+
+ bin\testkey.x509.pem
+
+
+ bin\testkey.pk8
+
+
+
+
diff --git a/APKToolGUI/bin/Release/APKToolGUI_2.3.3.0.zip b/APKToolGUI/bin/Release/APKToolGUI_2.3.3.0.zip
new file mode 100644
index 0000000..bb67f28
Binary files /dev/null and b/APKToolGUI/bin/Release/APKToolGUI_2.3.3.0.zip differ
diff --git a/APKToolGUI/bin/Release/APKToolGUI_2.4.0.391.zip b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.391.zip
new file mode 100644
index 0000000..5eb64aa
Binary files /dev/null and b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.391.zip differ
diff --git a/APKToolGUI/bin/Release/APKToolGUI_2.4.0.398.zip b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.398.zip
new file mode 100644
index 0000000..9dd9857
Binary files /dev/null and b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.398.zip differ
diff --git a/APKToolGUI/bin/Release/APKToolGUI_2.4.0.400.zip b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.400.zip
new file mode 100644
index 0000000..2af4fff
Binary files /dev/null and b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.400.zip differ
diff --git a/APKToolGUI/bin/Release/APKToolGUI_2.4.0.410.zip b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.410.zip
new file mode 100644
index 0000000..5885732
Binary files /dev/null and b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.410.zip differ
diff --git a/APKToolGUI/bin/Release/APKToolGUI_2.4.0.418.zip b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.418.zip
new file mode 100644
index 0000000..9a3ed45
Binary files /dev/null and b/APKToolGUI/bin/Release/APKToolGUI_2.4.0.418.zip differ
diff --git a/APKToolGUI/bin/Release/bin/apktool.jar b/APKToolGUI/bin/Release/bin/apktool.jar
new file mode 100644
index 0000000..c1febb8
Binary files /dev/null and b/APKToolGUI/bin/Release/bin/apktool.jar differ
diff --git a/APKToolGUI/bin/Release/bin/signapk.jar b/APKToolGUI/bin/Release/bin/signapk.jar
new file mode 100644
index 0000000..967e07c
Binary files /dev/null and b/APKToolGUI/bin/Release/bin/signapk.jar differ
diff --git a/APKToolGUI/bin/Release/bin/testkey.pk8 b/APKToolGUI/bin/Release/bin/testkey.pk8
new file mode 100644
index 0000000..586c1bd
Binary files /dev/null and b/APKToolGUI/bin/Release/bin/testkey.pk8 differ
diff --git a/APKToolGUI/bin/Release/bin/testkey.x509.pem b/APKToolGUI/bin/Release/bin/testkey.x509.pem
new file mode 100644
index 0000000..e242d83
--- /dev/null
+++ b/APKToolGUI/bin/Release/bin/testkey.x509.pem
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEqDCCA5CgAwIBAgIJAJNurL4H8gHfMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g
+VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE
+AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe
+Fw0wODAyMjkwMTMzNDZaFw0zNTA3MTcwMTMzNDZaMIGUMQswCQYDVQQGEwJVUzET
+MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G
+A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p
+ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI
+hvcNAQEBBQADggENADCCAQgCggEBANaTGQTexgskse3HYuDZ2CU+Ps1s6x3i/waM
+qOi8qM1r03hupwqnbOYOuw+ZNVn/2T53qUPn6D1LZLjk/qLT5lbx4meoG7+yMLV4
+wgRDvkxyGLhG9SEVhvA4oU6Jwr44f46+z4/Kw9oe4zDJ6pPQp8PcSvNQIg1QCAcy
+4ICXF+5qBTNZ5qaU7Cyz8oSgpGbIepTYOzEJOmc3Li9kEsBubULxWBjf/gOBzAzU
+RNps3cO4JFgZSAGzJWQTT7/emMkod0jb9WdqVA2BVMi7yge54kdVMxHEa5r3b97s
+zI5p58ii0I54JiCUP5lyfTwE/nKZHZnfm644oLIXf6MdW2r+6R8CAQOjgfwwgfkw
+HQYDVR0OBBYEFEhZAFY9JyxGrhGGBaR0GawJyowRMIHJBgNVHSMEgcEwgb6AFEhZ
+AFY9JyxGrhGGBaR0GawJyowRoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE
+CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH
+QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG
+CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJAJNurL4H8gHfMAwGA1Ud
+EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHqvlozrUMRBBVEY0NqrrwFbinZa
+J6cVosK0TyIUFf/azgMJWr+kLfcHCHJsIGnlw27drgQAvilFLAhLwn62oX6snb4Y
+LCBOsVMR9FXYJLZW2+TcIkCRLXWG/oiVHQGo/rWuWkJgU134NDEFJCJGjDbiLCpe
++ZTWHdcwauTJ9pUbo8EvHRkU3cYfGmLaLfgn9gP+pWA7LFQNvXwBnDa6sppCccEX
+31I828XzgXpJ4O+mDL1/dBd+ek8ZPUP0IgdyZm5MTYPhvVqGCHzzTy3sIeJFymwr
+sBbmg2OAUNLEMO6nwmocSdN2ClirfxqCzJOLSDE4QyS9BAH6EhY6UFcOaE0=
+-----END CERTIFICATE-----
diff --git a/APKToolGUI/bin/Release/bin/zipalign.exe b/APKToolGUI/bin/Release/bin/zipalign.exe
new file mode 100644
index 0000000..761b22b
Binary files /dev/null and b/APKToolGUI/bin/Release/bin/zipalign.exe differ
diff --git a/APKToolGUI/bin/Release/ru/APKToolGUI.resources.dll b/APKToolGUI/bin/Release/ru/APKToolGUI.resources.dll
new file mode 100644
index 0000000..8a72351
Binary files /dev/null and b/APKToolGUI/bin/Release/ru/APKToolGUI.resources.dll differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormAboutBox.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormAboutBox.resources
new file mode 100644
index 0000000..c1ece84
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormAboutBox.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormAboutBox.ru.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormAboutBox.ru.resources
new file mode 100644
index 0000000..d83ca5d
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormAboutBox.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormBuild.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormBuild.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormBuild.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormDecode.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormDecode.resources
new file mode 100644
index 0000000..86c8d90
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormDecode.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormMain.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormMain.resources
new file mode 100644
index 0000000..4eced3b
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormMain.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormMain.ru.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormMain.ru.resources
new file mode 100644
index 0000000..228ca96
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormMain.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormSettings.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormSettings.resources
new file mode 100644
index 0000000..11b0ff8
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormSettings.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.FormSettings.ru.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormSettings.ru.resources
new file mode 100644
index 0000000..90a52e3
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.FormSettings.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.Language.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.Language.resources
new file mode 100644
index 0000000..d5d293c
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.Language.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.Language.ru.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.Language.ru.resources
new file mode 100644
index 0000000..e341e59
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.Language.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.Properties.Resources.resources b/APKToolGUI/obj/x86/Debug/APKToolGUI.Properties.Resources.resources
new file mode 100644
index 0000000..2602371
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.Properties.Resources.resources differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.csproj.FileListAbsolute.txt b/APKToolGUI/obj/x86/Debug/APKToolGUI.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..23e2549
--- /dev/null
+++ b/APKToolGUI/obj/x86/Debug/APKToolGUI.csproj.FileListAbsolute.txt
@@ -0,0 +1,198 @@
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.pdb
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.pdb
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.pdb
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
+C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
+C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.pdb
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.pdb
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\APKToolGUI.pdb
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.csproj.GenerateResource.Cache b/APKToolGUI/obj/x86/Debug/APKToolGUI.csproj.GenerateResource.Cache
new file mode 100644
index 0000000..6b59b3d
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.csproj.GenerateResource.Cache differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.csprojResolveAssemblyReference.cache b/APKToolGUI/obj/x86/Debug/APKToolGUI.csprojResolveAssemblyReference.cache
new file mode 100644
index 0000000..46c0df9
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.csprojResolveAssemblyReference.cache differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.exe b/APKToolGUI/obj/x86/Debug/APKToolGUI.exe
new file mode 100644
index 0000000..249a8f8
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.exe differ
diff --git a/APKToolGUI/obj/x86/Debug/APKToolGUI.pdb b/APKToolGUI/obj/x86/Debug/APKToolGUI.pdb
new file mode 100644
index 0000000..8b8f772
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/APKToolGUI.pdb differ
diff --git a/APKToolGUI/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache b/APKToolGUI/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..76cd0a6
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/APKToolGUI/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/APKToolGUI/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..043ec7d
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/APKToolGUI/obj/x86/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/APKToolGUI/obj/x86/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100644
index 0000000..e69de29
diff --git a/APKToolGUI/obj/x86/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/APKToolGUI/obj/x86/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100644
index 0000000..e69de29
diff --git a/APKToolGUI/obj/x86/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/APKToolGUI/obj/x86/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100644
index 0000000..e69de29
diff --git a/APKToolGUI/obj/x86/Debug/ru/APKToolGUI.resources.dll b/APKToolGUI/obj/x86/Debug/ru/APKToolGUI.resources.dll
new file mode 100644
index 0000000..05f6fd5
Binary files /dev/null and b/APKToolGUI/obj/x86/Debug/ru/APKToolGUI.resources.dll differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormAboutBox.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormAboutBox.resources
new file mode 100644
index 0000000..c1ece84
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormAboutBox.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormAboutBox.ru.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormAboutBox.ru.resources
new file mode 100644
index 0000000..d83ca5d
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormAboutBox.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormBuild.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormBuild.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormBuild.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormDecode.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormDecode.resources
new file mode 100644
index 0000000..86c8d90
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormDecode.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormMain.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormMain.resources
new file mode 100644
index 0000000..4eced3b
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormMain.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormMain.ru.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormMain.ru.resources
new file mode 100644
index 0000000..228ca96
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormMain.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormSettings.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormSettings.resources
new file mode 100644
index 0000000..11b0ff8
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormSettings.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.FormSettings.ru.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.FormSettings.ru.resources
new file mode 100644
index 0000000..90a52e3
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.FormSettings.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.Language.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.Language.resources
new file mode 100644
index 0000000..d5d293c
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.Language.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.Language.ru.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.Language.ru.resources
new file mode 100644
index 0000000..e341e59
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.Language.ru.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.Properties.Resources.resources b/APKToolGUI/obj/x86/Release/APKToolGUI.Properties.Resources.resources
new file mode 100644
index 0000000..e825833
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.Properties.Resources.resources differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.csproj.FileListAbsolute.txt b/APKToolGUI/obj/x86/Release/APKToolGUI.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..c744e1d
--- /dev/null
+++ b/APKToolGUI/obj/x86/Release/APKToolGUI.csproj.FileListAbsolute.txt
@@ -0,0 +1,89 @@
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Release\APKToolGUI.exe.config
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Release\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Release\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormBuild.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormDecode.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.Properties.Resources.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.Language.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.Language.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.csproj.GenerateResource.Cache
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Release\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Release\APKToolGUI.exe.config
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Release\APKToolGUI.exe
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Release\ru\APKToolGUI.resources.dll
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.csprojResolveAssemblyReference.cache
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormBuild.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormDecode.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.Properties.Resources.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.Language.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.Language.ru.resources
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.csproj.GenerateResource.Cache
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\ru\APKToolGUI.resources.dll
+D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Release\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Release\APKToolGUI.exe.config
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Release\APKToolGUI.exe
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Release\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.csprojResolveAssemblyReference.cache
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormBuild.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormDecode.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Properties.Resources.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Language.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Language.ru.resources
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.csproj.GenerateResource.Cache
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\ru\APKToolGUI.resources.dll
+D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.exe
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Release\APKToolGUI.exe.config
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Release\APKToolGUI.exe
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Release\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.csprojResolveAssemblyReference.cache
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormBuild.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormDecode.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Properties.Resources.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Language.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Language.ru.resources
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.csproj.GenerateResource.Cache
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.exe
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Release\APKToolGUI.exe.config
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Release\APKToolGUI.exe
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Release\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.csprojResolveAssemblyReference.cache
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormBuild.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormDecode.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Properties.Resources.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Language.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormAboutBox.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormMain.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.FormSettings.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.Language.ru.resources
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.csproj.GenerateResource.Cache
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\ru\APKToolGUI.resources.dll
+C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Release\APKToolGUI.exe
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.csproj.GenerateResource.Cache b/APKToolGUI/obj/x86/Release/APKToolGUI.csproj.GenerateResource.Cache
new file mode 100644
index 0000000..a4ea633
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.csproj.GenerateResource.Cache differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.csprojResolveAssemblyReference.cache b/APKToolGUI/obj/x86/Release/APKToolGUI.csprojResolveAssemblyReference.cache
new file mode 100644
index 0000000..73b3261
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.csprojResolveAssemblyReference.cache differ
diff --git a/APKToolGUI/obj/x86/Release/APKToolGUI.exe b/APKToolGUI/obj/x86/Release/APKToolGUI.exe
new file mode 100644
index 0000000..bfd023f
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/APKToolGUI.exe differ
diff --git a/APKToolGUI/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache b/APKToolGUI/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..97810fd
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/APKToolGUI/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache b/APKToolGUI/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..cee2b46
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/APKToolGUI/obj/x86/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/APKToolGUI/obj/x86/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100644
index 0000000..e69de29
diff --git a/APKToolGUI/obj/x86/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/APKToolGUI/obj/x86/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100644
index 0000000..e69de29
diff --git a/APKToolGUI/obj/x86/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/APKToolGUI/obj/x86/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100644
index 0000000..e69de29
diff --git a/APKToolGUI/obj/x86/Release/ru/APKToolGUI.resources.dll b/APKToolGUI/obj/x86/Release/ru/APKToolGUI.resources.dll
new file mode 100644
index 0000000..8a72351
Binary files /dev/null and b/APKToolGUI/obj/x86/Release/ru/APKToolGUI.resources.dll differ
diff --git a/apktool 2.0 advanced info.txt b/apktool 2.0 advanced info.txt
new file mode 100644
index 0000000..2dfa5ee
--- /dev/null
+++ b/apktool 2.0 advanced info.txt
@@ -0,0 +1,40 @@
+Apktool v2.0.0 - a tool for reengineering Android apk files with smali v2.0.5 and baksmali v2.0.5
+Copyright 2014 Ryszard Wi?niewski
+Updated by Connor Tumbleson
+Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+
+usage: apktool [-q|--quiet OR -v|--verbose]
+ -advance,--advanced prints advance information.
+ -version,--version prints the version then exits
+
+usage: apktool [-q|--quiet OR -v|--verbose] if|install-framework [options]
+ -p,--frame-path Stores framework files into .
+ -t,--tag Tag frameworks using .
+
+usage: apktool [-q|--quiet OR -v|--verbose] d[ecode] [options]
+ --api The numeric api-level of the file to generate, e.g. 14 for ICS.
+ -b,--no-debug-info don't write out debug info (.local, .param, .line, etc.)
+ -d,--debug Decode in debug mode. Check project page formore info.
+ --debug-line-prefix Smali line prefix when decoding in debug mode. Default is "a=0;// ".
+ -f,--force Force delete destination directory.
+ -k,--keep-broken-res Use if there was an error and some resourceswere dropped, e.g. "Invalid config flags detected. Dropping resources", but you want to decode them anyway, even with errors. You will have to fix them manually before building.
+ -m,--match-original Keeps files to closest to original as possible. Prevents rebuild.
+ -o,--output The name of folder that gets written. Default is apk.out
+ -p,--frame-path Uses framework files located in .
+ -r,--no-res Do not decode resources.
+ -s,--no-src Do not decode sources.
+ -t,--frame-tag Uses framework files tagged by .
+
+usage: apktool [-q|--quiet OR -v|--verbose] b[uild] [options]
+ -a,--aapt Loads aapt from specified location.
+ -c,--copy-original Copies original AndroidManifest.xml and META-INF. See project page for more info.
+ -d,--debug Builds in debug mode. Check project page for more info.
+ -f,--force-all Skip changes detection and build all files.
+ -o,--output The name of apk that gets written. Default is dist/name.apk
+ -p,--frame-path Uses framework files located in .
+
+usage: apktool [-q|--quiet OR -v|--verbose] publicize-resources
+Make all framework resources public.
+
+For additional info, see: http://ibotpeaches.github.io/Apktool/
+For smali/baksmali info, see: http://code.google.com/p/smali/
\ No newline at end of file
diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 0000000..a048719
--- /dev/null
+++ b/changelog.txt
@@ -0,0 +1,65 @@
+2.4.0.0
+ "" apktool.
+ apktool.
+
+2.3.3.1
+ .
+
+2.3.3.0
+ (-20% ).
+
+2.3.2.0
+
+ .
+
+
+2.3.1.2
+
+
+2.3.1.1
+ .
+
+2.3.1.0
++ .
+
+2.3.0.1
+- /
+- / Windows XP
+
+2.3.0.0
++ ,
++
++ ( , ). .
++
+-
+- .
+
+2.2.1.0
+-
+- .
++ zip-
++ zipalign.exe
+-
+
+2.2.0.0
+-
+-
++ Java Runtime ()
++ Java Runtime ()
++ apktool
+-
+
+2.1.3.2
+- "", " " ..
++ apktool 2.0.0 BETA 9
+
+2.1.3.1
+-
+-
+
+2.1.3.0 (21.11.2013)
+- (! 2.1.2.1)
+-
+-
++ ( LinXP)
+-
\ No newline at end of file
diff --git a/info.txt b/info.txt
new file mode 100644
index 0000000..6b10301
--- /dev/null
+++ b/info.txt
@@ -0,0 +1,24 @@
+Apktool v2.0.0-Beta7 - a tool for reengineering Android apk files with smali v2.0 and baksmali v2.0
+Copyright 2010 Ryszard Wi?niewski
+Updated by Connor Tumbleson
+
+usage: apktool
+ -advance,--advanced prints advance information.
+ -version,--version prints the version then exits
+usage: apktool if|install-framework [options]
+ -p,--frame-path Stores framework files into .
+ -t,--tag Tag frameworks using .
+usage: apktool d[ecode] [options]
+ -f,--force Force delete destination directory.
+ -o,--output The name of folder that gets written. Default is apk.out
+ -p,--frame-path Uses framework files located in .
+ -r,--no-res Do not decode resources.
+ -s,--no-src Do not decode sources.
+ -t,--frame-tag Uses framework files tagged by .
+usage: apktool b[uild] [options]
+ -f,--force-all Skip changes detection and build all files.
+ -o,--output The name of apk that gets written. Default is dist/name .apk
+ -p,--frame-path Uses framework files located in .
+
+For additional info, see: http://code.google.com/p/android-apktool/
+For smali/baksmali info, see: http://code.google.com/p/smali/
\ No newline at end of file
diff --git a/signapk.txt b/signapk.txt
new file mode 100644
index 0000000..e97f0e5
--- /dev/null
+++ b/signapk.txt
@@ -0,0 +1,2 @@
+old Usage: signapk publickey.x509[.pem] privatekey.pk8 input.jar output.jar
+new Usage: signapk [-w] [-a ] [-providerClass ] publickey.x509[.pem] privatekey.pk8 [publickey2.x509[.pem] privatekey2.pk8 ...] input.jar output.jar
\ No newline at end of file
diff --git a/zipalign.txt b/zipalign.txt
new file mode 100644
index 0000000..da8a7e5
--- /dev/null
+++ b/zipalign.txt
@@ -0,0 +1,11 @@
+Zip alignment utility
+Copyright (C) 2009 The Android Open Source Project
+
+Usage: zipalign [-f] [-v] [-z] infile.zip outfile.zip
+ zipalign -c [-v] infile.zip
+
+ : alignment in bytes, e.g. '4' provides 32-bit alignment
+ -c: check alignment only (does not modify file)
+ -f: overwrite existing outfile.zip
+ -v: verbose output
+ -z: recompress using Zopfli
\ No newline at end of file