mirror of
https://github.com/AndnixSH/APKToolGUI.git
synced 2026-05-04 11:02:27 +00:00
Compare commits
74 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1072739a97 | |||
| de4f176cf7 | |||
| 75e05668ab | |||
| c897d959a3 | |||
| 58314b84e0 | |||
| 906b2ea6d6 | |||
| 926ba9e1e6 | |||
| efc7ec1539 | |||
| 2ab52ee4a3 | |||
| 7bc8fb1d80 | |||
| d4b21606b6 | |||
| 71b18764d4 | |||
| e408c422de | |||
| fa9c063968 | |||
| e1509bc235 | |||
| da7685c40e | |||
| afa73115bc | |||
| 6ef981bd25 | |||
| 353467c461 | |||
| c6184f4eed | |||
| 4a47d23b77 | |||
| c2233ac843 | |||
| a5e3ea133c | |||
| 68f27e1231 | |||
| 2a5312628f | |||
| a5c80a2c73 | |||
| ae20b2167c | |||
| 5e8051b86a | |||
| 08bc04a9b0 | |||
| 9f89c5bab0 | |||
| dfee2d8c93 | |||
| 5eb9b3ba9f | |||
| b8615ec982 | |||
| 926ab509d0 | |||
| 1edcb5b836 | |||
| 165155407d | |||
| 3d02b40128 | |||
| e4559a45b7 | |||
| 91bb1c8838 | |||
| 745863555a | |||
| 684fb02074 | |||
| 2a0f4cd90a | |||
| 83fb485c26 | |||
| ee0fa89598 | |||
| ab629c24f3 | |||
| a45b671961 | |||
| 7725d3c28c | |||
| 041a70daa4 | |||
| 6a00b05eb4 | |||
| 9a66346312 | |||
| cff11abfb3 | |||
| 3ba67d54dd | |||
| 835037d137 | |||
| d1c583e5df | |||
| 3f20b9c9ca | |||
| 37c71f0d57 | |||
| a193ababbc | |||
| b89e192fe5 | |||
| fb896c07d0 | |||
| 91ac7c6c47 | |||
| e965173b14 | |||
| 99378f935e | |||
| b7f208aaff | |||
| 3e696f0da6 | |||
| 3440e4748f | |||
| 2fbc34af87 | |||
| 74ceb1267d | |||
| 18f0d94f47 | |||
| e81e7de8fe | |||
| ee39be3fcc | |||
| 0c0b27c1a0 | |||
| d6f4f3743b | |||
| ddc3df3fec | |||
| 4a63101537 |
@@ -17,6 +17,8 @@ body:
|
||||
required: true
|
||||
- label: I have tried to decompile and compile without changing anything.
|
||||
required: true
|
||||
- label: I have read the [FAQ](https://github.com/AndnixSH/APKToolGUI#faq)
|
||||
required: true
|
||||
- label: I have checked using [APKiD](https://github.com/rednaga/APKiD) and verified that the app does not have protection(s) like packer, obfuscation, anti-tamper, anti-cheats etc
|
||||
required: false
|
||||
|
||||
@@ -26,6 +28,7 @@ body:
|
||||
description: |
|
||||
A clear and concise description of what the bug is.
|
||||
Feel free to upload/attach link to screenshot or video
|
||||
Only place logs in 'Logs' box
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -62,7 +65,7 @@ body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: APK
|
||||
description: If this APK can be freely shared, please upload/attach a link to it.
|
||||
description: If this APK can be freely shared, please upload/attach a link to it. Please warn with "NSFW" where applicable, if the APK or the link contains adult content
|
||||
placeholder: |
|
||||
https://apkcombo.com/downloader/
|
||||
validations:
|
||||
@@ -88,7 +91,7 @@ body:
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating System and version
|
||||
placeholder: Windows 11 2h22
|
||||
label: Operating system and version
|
||||
placeholder: (Example: Windows 11 2h22)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -11,7 +11,7 @@ body:
|
||||
required: true
|
||||
- label: I performed a cursory search of the issue tracker on [APK Tool GUI](https://github.com/AndnixSH/APKToolGUI/issues?q=is%3Aissue) to avoid opening a duplicate issue
|
||||
required: true
|
||||
- label: This is not about an issue with APK Tool GUI
|
||||
- label: I have read the [FAQ](https://github.com/AndnixSH/APKToolGUI#faq)
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
|
||||
@@ -81,6 +81,9 @@
|
||||
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="CustomMarshalers" />
|
||||
<Reference Include="DarkNet, Version=2.3.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DarkNet.2.3.0\lib\net452\DarkNet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DotNetZip, Version=1.16.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DotNetZip.1.16.0\lib\net40\DotNetZip.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -92,17 +95,20 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.4.0, Culture=neutral, PublicKeyToken=8985beaab7ea3f04, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft-WindowsAPICodePack-Core.1.1.4\lib\net48\Microsoft.WindowsAPICodePack.dll</HintPath>
|
||||
<Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.5.0, Culture=neutral, PublicKeyToken=8985beaab7ea3f04, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft-WindowsAPICodePack-Core.1.1.5\lib\net48\Microsoft.WindowsAPICodePack.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.4.0, Culture=neutral, PublicKeyToken=8985beaab7ea3f04, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft-WindowsAPICodePack-Shell.1.1.4\lib\net48\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
|
||||
<Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.5.0, Culture=neutral, PublicKeyToken=8985beaab7ea3f04, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft-WindowsAPICodePack-Shell.1.1.5\lib\net48\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Ookii.Dialogs.WinForms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=66aa232afad40158, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Ookii.Dialogs.WinForms.4.0.0\lib\net462\Ookii.Dialogs.WinForms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PortableSettingsProvider, Version=0.2.4.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\PortableSettingsProvider.0.2.4\lib\net45\PortableSettingsProvider.dll</HintPath>
|
||||
<Reference Include="OSVersionExt, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OSVersionExt.3.0.0\lib\net462\OSVersionExt.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PortableSettingsProvider, Version=0.2.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\PortableSettingsProvider.0.2.5\lib\net45\PortableSettingsProvider.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
@@ -127,8 +133,8 @@
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=7.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.7.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=7.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.7.0.2\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
|
||||
@@ -285,7 +291,8 @@
|
||||
<Compile Include="AndroidRes\Model\Generic\AndroidGenericArray.cs" />
|
||||
<Compile Include="AndroidRes\Model\Generic\AndroidResource.cs" />
|
||||
<Compile Include="AndroidRes\Util\ClassExtensions.cs" />
|
||||
<Compile Include="AndroidRes\Util\Log.cs" />
|
||||
<Compile Include="TaskBar\TaskBarJumpList.cs" />
|
||||
<Compile Include="Utils\Log.cs" />
|
||||
<Compile Include="ApkTool\AaptParser.cs" />
|
||||
<Compile Include="ApkTool\ApkFixer.cs" />
|
||||
<Compile Include="ApkTool\Apktool.cs">
|
||||
@@ -317,6 +324,7 @@
|
||||
<Compile Include="Handlers\SignControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\SmaliControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\ZipalignControlEventHandlers.cs" />
|
||||
<Compile Include="Controls\DarkTheme.cs" />
|
||||
<Compile Include="Utils\AdminUtils.cs" />
|
||||
<Compile Include="Utils\BitmapUtils.cs" />
|
||||
<Compile Include="Utils\CMD.cs" />
|
||||
@@ -455,16 +463,16 @@
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Fody.6.6.4\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.6.4\build\Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Fody.6.8.0\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.8.0\build\Fody.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
|
||||
<Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
|
||||
<Import Project="..\packages\Fody.6.6.4\build\Fody.targets" Condition="Exists('..\packages\Fody.6.6.4\build\Fody.targets')" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\Fody.6.8.0\build\Fody.targets" Condition="Exists('..\packages\Fody.6.8.0\build\Fody.targets')" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
|
||||
@@ -1,265 +0,0 @@
|
||||
using APKToolGUI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace APKSMerger.Util
|
||||
{
|
||||
/// <summary>
|
||||
/// simple logging wrapper class
|
||||
/// </summary>
|
||||
public static class Log
|
||||
{
|
||||
/// <summary>
|
||||
/// should very verbose logs (Log.vv) be written?
|
||||
/// </summary>
|
||||
public static bool LogVeryVerbose { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// should verbose logs (Log.v) be written?
|
||||
/// </summary>
|
||||
public static bool LogVerbose { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// should debug logs (Log.d) be written?
|
||||
/// </summary>
|
||||
public static bool LogDebug { get; set; } = true;
|
||||
|
||||
#region direct logs
|
||||
/// <summary>
|
||||
/// log message with level VERY VERBOSE (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void vv(string s)
|
||||
{
|
||||
if (!LogVeryVerbose) return;
|
||||
FormMain.Instance.ToLog(ApktoolEventType.None, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level VERBOSE (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void v(string s)
|
||||
{
|
||||
if (!LogVerbose) return;
|
||||
FormMain.Instance.ToLog(ApktoolEventType.None, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level DEBUG (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void d(string s)
|
||||
{
|
||||
if (!LogDebug) return;
|
||||
FormMain.Instance.ToLog(ApktoolEventType.None, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level INFO
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void i(string s)
|
||||
{
|
||||
FormMain.Instance.ToLog(ApktoolEventType.Infomation, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level WARNING
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void w(string s)
|
||||
{
|
||||
FormMain.Instance.ToLog(ApktoolEventType.Warning, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level ERROR
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void e(string s)
|
||||
{
|
||||
FormMain.Instance.ToLog(ApktoolEventType.Error, s);
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// start a new async log session
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static AsyncLogSession StartAsync()
|
||||
{
|
||||
return new AsyncLogSession();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// writes a direct log message
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
/// <param name="color">color to log in, null is default</param>
|
||||
static void WriteLogDirect(string s, ConsoleColor? color = null)
|
||||
{
|
||||
//set color
|
||||
ConsoleColor iColor = Console.ForegroundColor;
|
||||
if (color.HasValue)
|
||||
{
|
||||
Console.ForegroundColor = color.Value;
|
||||
}
|
||||
|
||||
//write log
|
||||
Console.WriteLine(s);
|
||||
|
||||
//restore color
|
||||
if (color.HasValue)
|
||||
{
|
||||
Console.ForegroundColor = iColor;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// async log sesssion
|
||||
/// </summary>
|
||||
public class AsyncLogSession : IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// lock object to ensure only one object commits at a time
|
||||
/// </summary>
|
||||
static readonly object _CommitLock = new object();
|
||||
|
||||
/// <summary>
|
||||
/// Tag to include when logging
|
||||
/// </summary>
|
||||
Stack<string> tags = new Stack<string>();
|
||||
|
||||
/// <summary>
|
||||
/// contains all pending log entries
|
||||
/// </summary>
|
||||
Queue<string> pending = new Queue<string>();
|
||||
|
||||
#region log functions
|
||||
/// <summary>
|
||||
/// log message with level VERY VERBOSE (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public void vv(string s)
|
||||
{
|
||||
if (!LogVeryVerbose) return;
|
||||
|
||||
EnqueueMessage($"[VV]{s}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level VERBOSE (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public void v(string s)
|
||||
{
|
||||
if (!LogVerbose) return;
|
||||
|
||||
EnqueueMessage($"[V]{s}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level DEBUG (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public void d(string s)
|
||||
{
|
||||
if (!LogDebug) return;
|
||||
|
||||
EnqueueMessage($"[D]{s}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level INFO
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public void i(string s)
|
||||
{
|
||||
EnqueueMessage($"[I]{s}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level WARNING
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public void w(string s)
|
||||
{
|
||||
EnqueueMessage($"[W]{s}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level ERROR
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public void e(string s)
|
||||
{
|
||||
EnqueueMessage($"[E]{s}");
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// enqueue a message in the message queue
|
||||
/// </summary>
|
||||
/// <param name="s">the message to enqueue</param>
|
||||
void EnqueueMessage(string s)
|
||||
{
|
||||
pending.Enqueue($"{GetTag()}:{s}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// push a tag onto the tags stack
|
||||
/// </summary>
|
||||
/// <param name="t">the tag to push</param>
|
||||
public void PushTag(string t)
|
||||
{
|
||||
tags.Push(t);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// pop the last tag of the tags stack
|
||||
/// </summary>
|
||||
public void PopTag()
|
||||
{
|
||||
// tags.TryPop(out _);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get the current tag
|
||||
/// </summary>
|
||||
/// <returns>current tag, or string.Empty if no tag</returns>
|
||||
public string GetTag()
|
||||
{
|
||||
string tag;
|
||||
// if (!tags.TryPeek(out tag))
|
||||
tag = string.Empty;
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// commit all pending log entries
|
||||
/// </summary>
|
||||
public void Commit()
|
||||
{
|
||||
lock (_CommitLock)
|
||||
{
|
||||
while (pending.Count > 0)
|
||||
{
|
||||
WriteLogDirect(pending.Dequeue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// same as calling .Commit(). used for using() syntax
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
Commit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Documents;
|
||||
|
||||
namespace APKToolGUI.Utils
|
||||
{
|
||||
@@ -83,6 +85,8 @@ namespace APKToolGUI.Utils
|
||||
new string[] { "\r\n", "\r", "\n" },
|
||||
StringSplitOptions.None);
|
||||
|
||||
List<string> nativecode = new List<string> { };
|
||||
List<string> nativecode2 = new List<string> { };
|
||||
foreach (string line in lines)
|
||||
{
|
||||
switch (line.Split(':')[0])
|
||||
@@ -124,13 +128,16 @@ namespace APKToolGUI.Utils
|
||||
var densities = Regex.Matches(line.Split(':')[1], @"(?<= \')(.*?)(?=\')").Cast<Match>().Select(m => m.Value).ToList();
|
||||
Densities = string.Join(", ", densities);
|
||||
break;
|
||||
case "alt-native-code":
|
||||
nativecode2 = Regex.Matches(line.Split(':')[1], @"(?<= \')(.*?)(?=\')").Cast<Match>().Select(m => m.Value).ToList();
|
||||
break;
|
||||
case "native-code":
|
||||
var nativecode = Regex.Matches(line.Split(':')[1], @"(?<= \')(.*?)(?=\')").Cast<Match>().Select(m => m.Value).ToList();
|
||||
NativeCode = string.Join(", ", nativecode);
|
||||
nativecode = Regex.Matches(line.Split(':')[1], @"(?<= \')(.*?)(?=\')").Cast<Match>().Select(m => m.Value).ToList();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
List<string> combinedList = nativecode2.Concat(nativecode).ToList();
|
||||
NativeCode += string.Join(", ", combinedList);
|
||||
ApkFile = file;
|
||||
PlayStoreLink = "https://play.google.com/store/apps/details?id=" + PackageName;
|
||||
ApkComboLink = "https://apkcombo.com/a/" + PackageName;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using Java;
|
||||
using Microsoft.Build.Framework.XamlTypes;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
@@ -84,6 +85,7 @@ namespace APKToolGUI
|
||||
|
||||
string args = String.Format($"{Keys.Serial} {mdevice.Groups[1].Value} install {setVendor} \"{inputApk}\"");
|
||||
|
||||
Log.d("ADB: " + adbFileName + " " + args);
|
||||
Debug.WriteLine("Adb: " + args);
|
||||
|
||||
processAdb.EnableRaisingEvents = false;
|
||||
@@ -98,6 +100,8 @@ namespace APKToolGUI
|
||||
|
||||
public string GetDevices()
|
||||
{
|
||||
Log.d("ADB: " + adbFileName + " " + Keys.Devices);
|
||||
|
||||
Process process = new Process();
|
||||
process.EnableRaisingEvents = true;
|
||||
process.StartInfo.FileName = adbFileName;
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Diagnostics;
|
||||
using APKToolGUI.Properties;
|
||||
using System.IO;
|
||||
using APKToolGUI.Utils;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -11,12 +12,14 @@ namespace APKToolGUI
|
||||
{
|
||||
public new event ApkEditorExitedEventHandler Exited;
|
||||
|
||||
string _jarPath;
|
||||
public ApkEditor(string javaPath, string jarPath)
|
||||
: base(javaPath, jarPath)
|
||||
{
|
||||
this._jarPath = jarPath;
|
||||
base.Exited += ApkEditor_Exited;
|
||||
OutputDataReceived += ApkEditor_OutputDataReceived;
|
||||
//ErrorDataReceived += ApkEditor_ErrorDataReceived; //Output makes process way slower
|
||||
ErrorDataReceived += ApkEditor_ErrorDataReceived; //Output makes process way slower
|
||||
}
|
||||
|
||||
ApkEditorDataReceivedEventHandler onApkEditorOutputDataRecieved;
|
||||
@@ -84,7 +87,9 @@ namespace APKToolGUI
|
||||
string inputFile = String.Format("-i \"{0}\"", input);
|
||||
string keyOutputDir = String.Format("-o \"{0}\"", output);
|
||||
|
||||
string args = String.Format("m {0} {1}", inputFile, keyOutputDir);
|
||||
string args = String.Format("m {0} {1} -f", inputFile, keyOutputDir);
|
||||
|
||||
Log.d("ApkEditor CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
|
||||
|
||||
@@ -12,9 +12,9 @@ namespace APKToolGUI.ApkTool
|
||||
{
|
||||
public class ApkFixer
|
||||
{
|
||||
public static bool FixAndroidManifest(string path)
|
||||
public static bool FixAndroidManifest(string decompilePath)
|
||||
{
|
||||
string manifestPath = Path.Combine(path, "AndroidManifest.xml");
|
||||
string manifestPath = Path.Combine(decompilePath, "AndroidManifest.xml");
|
||||
if (File.Exists(manifestPath))
|
||||
{
|
||||
string maniFestText = File.ReadAllText(manifestPath);
|
||||
@@ -24,17 +24,29 @@ namespace APKToolGUI.ApkTool
|
||||
maniFestText = maniFestText.Replace("android:useEmbeddedDex=\"true\"", "");
|
||||
maniFestText = maniFestText.Replace("android:manageSpace=\"true\"", "");
|
||||
maniFestText = maniFestText.Replace("android:localeConfig=\"@xml/locales_config\"", "");
|
||||
maniFestText = maniFestText.Replace("<queries>\r\n <intent>\r\n <action android:name=\"android.intent.action.MAIN\"/>\r\n </intent>\r\n </queries>", "");
|
||||
maniFestText = maniFestText.Replace("<intent> <action android:name=\"android.intent.action.MAIN\"/> </intent>", "");
|
||||
maniFestText = maniFestText.Replace("STAMP_TYPE_DISTRIBUTION_APK", "STAMP_TYPE_STANDALONE_APK");
|
||||
|
||||
File.WriteAllText(Path.Combine(path, "AndroidManifest.xml"), maniFestText);
|
||||
File.WriteAllText(manifestPath, maniFestText);
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool FixApktoolYml(string decompilePath)
|
||||
{
|
||||
string ymlPath = Path.Combine(decompilePath, "apktool.yml");
|
||||
if (File.Exists(ymlPath))
|
||||
{
|
||||
string yml = File.ReadAllText(ymlPath);
|
||||
yml = yml.Replace("sparseResources: true", "sparseResources: false");
|
||||
|
||||
File.WriteAllText(ymlPath, yml);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool RemoveApkToolDummies(string path)
|
||||
{
|
||||
string resPath = Path.Combine(path, "res", "values");
|
||||
@@ -45,24 +57,5 @@ namespace APKToolGUI.ApkTool
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool ChangeSdkTo29(string path)
|
||||
{
|
||||
string ymlPath = Path.Combine(path, "apktool.yml");
|
||||
if (File.Exists(ymlPath))
|
||||
{
|
||||
string ymll = File.ReadAllText(ymlPath);
|
||||
|
||||
int sdk = 30;
|
||||
int.TryParse(StringExt.Regex(@"(?<= targetSdkVersion: \')(.*?)(?=\')", ymll), out sdk);
|
||||
if (sdk >= 30)
|
||||
{
|
||||
ymll = ymll.Replace("targetSdkVersion: '" + sdk + "'", "targetSdkVersion: '29'");
|
||||
File.WriteAllText(ymlPath, ymll);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ namespace APKToolGUI
|
||||
public const string NoCrunch = " -nc"; // Disable crunching of resource files during the build step.
|
||||
public const string ApiLevel = " -api"; //The numeric api-level of the file to generate, e.g. 14 for ICS.
|
||||
public const string UseAapt2 = " --use-aapt2"; //Upgrades apktool to use experimental aapt2 binary.
|
||||
public const string NetSecConf = " --net-sec-conf"; //Add a generic Network Security Configuration file in the output APK
|
||||
}
|
||||
|
||||
static class InstallFrameworkKeys
|
||||
@@ -86,8 +87,10 @@ namespace APKToolGUI
|
||||
}
|
||||
}
|
||||
|
||||
string _jarPath;
|
||||
public Apktool(string javaPath, string jarPath) : base(javaPath, jarPath)
|
||||
{
|
||||
_jarPath = jarPath;
|
||||
Exited += Apktool_Exited;
|
||||
OutputDataReceived += Apktool_OutputDataReceived;
|
||||
ErrorDataReceived += Apktool_ErrorDataReceived;
|
||||
@@ -139,6 +142,8 @@ namespace APKToolGUI
|
||||
|
||||
string args = String.Format($"d{keyNoSrc}{keyNoRes}{keyForce}{onlyMainClasses}{noDebugInfo}{keyMatchOriginal}{keyFramePath}{keyKeepBrokenRes}{apiLevel}{keyOutputDir} \"{inputPath}\"");
|
||||
|
||||
Log.d("Apktool CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
@@ -167,7 +172,8 @@ namespace APKToolGUI
|
||||
|
||||
public int Build(string inputFolder, string outputFile)
|
||||
{
|
||||
string keyForceAll = null, keyAapt = null, keyCopyOriginal = null, noCrunch = null, keyFramePath = null, keyOutputAppPath = null, apiLevel = null, useAapt2 = null;
|
||||
string keyForceAll = null, keyAapt = null, keyCopyOriginal = null, noCrunch = null, keyFramePath = null, keyOutputAppPath = null, apiLevel = null, useAapt2 = null, netSecConf = null;
|
||||
|
||||
if (Settings.Default.Build_ForceAll)
|
||||
keyForceAll = BuildKeys.ForceAll;
|
||||
if (Settings.Default.Build_CopyOriginal)
|
||||
@@ -184,9 +190,13 @@ namespace APKToolGUI
|
||||
apiLevel = String.Format("{0} {1}", DecompileKeys.ApiLevel, Settings.Default.Build_ApiLevel);
|
||||
if (Settings.Default.Build_UseAapt2)
|
||||
useAapt2 = BuildKeys.UseAapt2;
|
||||
if (Settings.Default.Build_NetSecConf)
|
||||
netSecConf = BuildKeys.NetSecConf;
|
||||
keyOutputAppPath = String.Format("{0} \"{1}\"", BuildKeys.OutputAppPath, outputFile);
|
||||
|
||||
string args = String.Format($"b{keyForceAll}{keyAapt}{keyCopyOriginal}{noCrunch}{keyFramePath}{apiLevel}{useAapt2}{keyOutputAppPath} \"{inputFolder}\"");
|
||||
string args = String.Format($"b{keyForceAll}{keyAapt}{keyCopyOriginal}{noCrunch}{keyFramePath}{apiLevel}{useAapt2}{netSecConf}{keyOutputAppPath} \"{inputFolder}\"");
|
||||
|
||||
Log.d("Apktool CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
@@ -207,6 +217,8 @@ namespace APKToolGUI
|
||||
|
||||
string args = String.Format($"if{keyFrameDir}{keyTag} \"{inputPath}\"");
|
||||
|
||||
Log.d("Apktool CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
@@ -224,6 +236,8 @@ namespace APKToolGUI
|
||||
|
||||
string args = String.Format($"empty-framework-dir {EmptyFrameworkKeys.ForceDelete} {keyFramePath}");
|
||||
|
||||
Log.d("Apktool CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
|
||||
@@ -11,9 +11,11 @@ namespace APKToolGUI
|
||||
{
|
||||
public new event BaksmaliExitedEventHandler Exited;
|
||||
|
||||
string _jarPath;
|
||||
public Baksmali(string javaPath, string jarPath)
|
||||
: base(javaPath, jarPath)
|
||||
{
|
||||
_jarPath = jarPath;
|
||||
base.Exited += Baksmali_Exited;
|
||||
OutputDataReceived += Baksmali_OutputDataReceived;
|
||||
ErrorDataReceived += Baksmali_ErrorDataReceived;
|
||||
@@ -86,6 +88,9 @@ namespace APKToolGUI
|
||||
string keyOutputDir = String.Format("-o \"{0}\"", output);
|
||||
|
||||
string args = String.Format("d {0} {1}", inputFile, keyOutputDir);
|
||||
|
||||
Log.v("Baksmali CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
|
||||
@@ -40,9 +40,11 @@ namespace APKToolGUI
|
||||
}
|
||||
}
|
||||
|
||||
string _jarPath;
|
||||
public Signapk(string javaPath, string jarPath)
|
||||
: base(javaPath, jarPath)
|
||||
{
|
||||
_jarPath = jarPath;
|
||||
Exited += Signapk_Exited;
|
||||
OutputDataReceived += Signapk_OutputDataReceived;
|
||||
ErrorDataReceived += Signapk_ErrorDataReceived;
|
||||
@@ -125,6 +127,9 @@ namespace APKToolGUI
|
||||
v4 = "--v4-signing-enabled false";
|
||||
|
||||
string args = String.Format("sign {0} {1} {2} {3} {4} {5} {6} \"{7}\"", key, alias, v1, v2, v3, v4, outputDir, lastSourceApk);
|
||||
|
||||
Log.v("Signapk CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
|
||||
@@ -11,9 +11,11 @@ namespace APKToolGUI
|
||||
{
|
||||
public new event SmaliExitedEventHandler Exited;
|
||||
|
||||
string _jarPath;
|
||||
public Smali(string javaPath, string jarPath)
|
||||
: base(javaPath, jarPath)
|
||||
{
|
||||
_jarPath = jarPath;
|
||||
base.Exited += Smali_Exited;
|
||||
}
|
||||
|
||||
@@ -83,6 +85,9 @@ namespace APKToolGUI
|
||||
string keyOutputDir = String.Format("-o \"{0}\"", output);
|
||||
|
||||
string args = String.Format("a {0} {1}", inputFile, keyOutputDir);
|
||||
|
||||
Log.v("Smali CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
|
||||
@@ -30,8 +30,10 @@ namespace APKToolGUI
|
||||
public event EventHandler Exited;
|
||||
public int ExitCode { get { return processZipalign.ExitCode; } }
|
||||
|
||||
string _zipalignFileName;
|
||||
public Zipalign(string zipalignFileName)
|
||||
{
|
||||
_zipalignFileName = zipalignFileName;
|
||||
processZipalign = new Process();
|
||||
processZipalign.EnableRaisingEvents = true;
|
||||
processZipalign.StartInfo.FileName = zipalignFileName;
|
||||
@@ -92,7 +94,7 @@ namespace APKToolGUI
|
||||
|
||||
string args = String.Format("{0}{1}{2}{3} {4} \"{5}\" {6}", keyCheckOnly, keyOverwriteOutputFile, keyVerbose, keyRecompress, Settings.Default.Zipalign_AlignmentInBytes, input, keyOutputFile);
|
||||
|
||||
Debug.WriteLine("Zipalign: " + args);
|
||||
Log.v("Zipalign: " + _zipalignFileName + " " + args);
|
||||
|
||||
processZipalign.StartInfo.Arguments = args;
|
||||
processZipalign.Start();
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI.Controls
|
||||
{
|
||||
internal class DarkTheme
|
||||
{
|
||||
public static Color bgColor = Color.FromArgb(32, 32, 32);
|
||||
public static Color txtBoxColor = Color.FromArgb(64, 64, 64);
|
||||
public static Color btnColor = Color.FromArgb(51, 51, 51);
|
||||
public static Color btnBorderColor = Color.FromArgb(155, 155, 155);
|
||||
public static Color tabBorderColor = Color.FromArgb(45, 45, 45);
|
||||
public static Color menuItemHoverColor = Color.FromArgb(51, 51, 51);
|
||||
public static Color menuItemSelectedColor = Color.FromArgb(41, 41, 41);
|
||||
public static Color separatorColor = Color.FromArgb(62, 62, 62);
|
||||
|
||||
public static void SetTheme(Control.ControlCollection container, Form form)
|
||||
{
|
||||
form.BackColor = bgColor;
|
||||
form.ForeColor = Color.White;
|
||||
foreach (Control component in container)
|
||||
{
|
||||
Debug.WriteLine(component.GetType());
|
||||
component.BackColor = bgColor;
|
||||
component.ForeColor = Color.White;
|
||||
|
||||
SetThemeTabControl(component, container);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetThemeTabControl(Control component, Control.ControlCollection container)
|
||||
{
|
||||
if (component is TabControl)
|
||||
{
|
||||
((TabControl)component).DrawMode = TabDrawMode.OwnerDrawFixed;
|
||||
|
||||
foreach (Control tabControl in component.Controls)
|
||||
{
|
||||
SetThemeTabControl(tabControl, container);
|
||||
|
||||
//Debug.WriteLine("tabPage " + tabControl.GetType());
|
||||
|
||||
((TabControl)component).DrawItem += (sender, e) =>
|
||||
{
|
||||
// Set Border header
|
||||
e.Graphics.FillRectangle(new SolidBrush(tabBorderColor), e.Bounds);
|
||||
Rectangle paddedBounds = e.Bounds;
|
||||
|
||||
paddedBounds.Inflate(0, 0);
|
||||
|
||||
// Set the rectangle for the tab button
|
||||
Rectangle tabRect = ((TabControl)component).GetTabRect(e.Index);
|
||||
|
||||
// Draw the border color
|
||||
using (Pen borderPen = new Pen(tabBorderColor, 7))
|
||||
{
|
||||
e.Graphics.DrawRectangle(borderPen, tabRect);
|
||||
}
|
||||
|
||||
StringFormat stringFlags = new StringFormat();
|
||||
stringFlags.Alignment = StringAlignment.Center;
|
||||
stringFlags.LineAlignment = StringAlignment.Center;
|
||||
|
||||
e.Graphics.DrawString(((TabControl)component).TabPages[e.Index].Text, FormMain.Instance.Font, SystemBrushes.HighlightText, tabRect, stringFlags);
|
||||
|
||||
//set Tabcontrol border
|
||||
Graphics g = e.Graphics;
|
||||
Pen p = new Pen(tabBorderColor, 8);
|
||||
g.DrawRectangle(p, tabControl.Bounds.X, tabControl.Bounds.Y, tabControl.Bounds.Width, tabControl.Bounds.Height);
|
||||
|
||||
SolidBrush fillbrush = new SolidBrush(bgColor);
|
||||
|
||||
//draw rectangle behind the tabs
|
||||
Rectangle lasttabrect = ((TabControl)component).GetTabRect(((TabControl)component).TabPages.Count - 1);
|
||||
Rectangle background = new Rectangle();
|
||||
background.Location = new Point(lasttabrect.Right, 0);
|
||||
|
||||
//pad the rectangle to cover the 1 pixel line between the top of the tabpage and the start of the tabs
|
||||
background.Size = new Size(((TabControl)component).Right - background.Left, lasttabrect.Height + 1);
|
||||
e.Graphics.FillRectangle(fillbrush, background);
|
||||
};
|
||||
|
||||
foreach (Control tabPage in tabControl.Controls)
|
||||
{
|
||||
SetThemeTabControl(tabPage, container);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (component is Panel)
|
||||
{
|
||||
foreach (Control control in component.Controls)
|
||||
{
|
||||
SetThemeTabControl(control, container);
|
||||
}
|
||||
component.BackColor = bgColor;
|
||||
component.ForeColor = Color.White;
|
||||
}
|
||||
if (component is MenuStrip menuStrip)
|
||||
{
|
||||
((MenuStrip)component).Renderer = new ToolStripProfessionalRenderer(new MenuItemColorTable());
|
||||
|
||||
foreach (ToolStripItem item in menuStrip.Items)
|
||||
{
|
||||
if (item is ToolStripMenuItem toolStripMenuItem)
|
||||
{
|
||||
foreach (ToolStripMenuItem dditem in toolStripMenuItem.DropDownItems.OfType<ToolStripMenuItem>())
|
||||
{
|
||||
dditem.BackColor = bgColor;
|
||||
dditem.ForeColor = Color.White;
|
||||
//Debug.WriteLine(dditem.Text);
|
||||
}
|
||||
foreach (ToolStripSeparator toolStripSeparator in toolStripMenuItem.DropDownItems.OfType<ToolStripSeparator>())
|
||||
{
|
||||
toolStripSeparator.BackColor = Color.Blue;
|
||||
toolStripSeparator.ForeColor = Color.Blue;
|
||||
Debug.WriteLine(toolStripSeparator.Name);
|
||||
}
|
||||
|
||||
toolStripMenuItem.BackColor = bgColor;
|
||||
toolStripMenuItem.ForeColor = Color.White;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (component is GroupBox)
|
||||
{
|
||||
foreach (Control control in component.Controls)
|
||||
{
|
||||
SetThemeTabControl(control, container);
|
||||
}
|
||||
component.BackColor = bgColor;
|
||||
component.ForeColor = Color.White;
|
||||
}
|
||||
else if (component is ComboBox)
|
||||
{
|
||||
component.BackColor = bgColor;
|
||||
component.ForeColor = Color.White;
|
||||
((ComboBox)component).FlatStyle = FlatStyle.Flat;
|
||||
}
|
||||
else if (component is Button)
|
||||
{
|
||||
component.BackColor = btnColor;
|
||||
component.ForeColor = Color.White;
|
||||
((Button)component).FlatStyle = FlatStyle.Flat;
|
||||
((Button)component).FlatAppearance.BorderColor = btnBorderColor;
|
||||
|
||||
}
|
||||
else if (component is TextBox)
|
||||
{
|
||||
component.BackColor = txtBoxColor;
|
||||
component.ForeColor = Color.White;
|
||||
((TextBox)component).BorderStyle = BorderStyle.FixedSingle;
|
||||
}
|
||||
else if (component is RichTextBox)
|
||||
{
|
||||
if (component.Name == "logTxtBox")
|
||||
((RichTextBox)component).BorderStyle = BorderStyle.None;
|
||||
component.BackColor = bgColor;
|
||||
component.ForeColor = Color.White;
|
||||
}
|
||||
else
|
||||
{
|
||||
component.BackColor = bgColor;
|
||||
component.ForeColor = Color.White;
|
||||
}
|
||||
}
|
||||
|
||||
public class MenuItemColorTable : ProfessionalColorTable
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the starting color of the gradient used when
|
||||
/// a top-level System.Windows.Forms.ToolStripMenuItem is pressed.
|
||||
/// </summary>
|
||||
public override Color MenuItemPressedGradientBegin => menuItemSelectedColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the end color of the gradient used when a top-level
|
||||
/// System.Windows.Forms.ToolStripMenuItem is pressed.
|
||||
/// </summary>
|
||||
public override Color MenuItemPressedGradientEnd => menuItemSelectedColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the border color to use with a
|
||||
/// System.Windows.Forms.ToolStripMenuItem.
|
||||
/// </summary>
|
||||
public override Color MenuItemBorder => menuItemSelectedColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the starting color of the gradient used when the
|
||||
/// System.Windows.Forms.ToolStripMenuItem is selected.
|
||||
/// </summary>
|
||||
public override Color MenuItemSelectedGradientBegin => menuItemSelectedColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the end color of the gradient used when the
|
||||
/// System.Windows.Forms.ToolStripMenuItem is selected.
|
||||
/// </summary>
|
||||
public override Color MenuItemSelectedGradientEnd => menuItemSelectedColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the border color to use with a
|
||||
/// System.Windows.Forms.ToolStripMenuItem.
|
||||
/// </summary>
|
||||
public override Color MenuItemSelected => menuItemHoverColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the solid background color of the
|
||||
/// System.Windows.Forms.ToolStripDropDown.
|
||||
/// </summary>
|
||||
public override Color ToolStripDropDownBackground => bgColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the starting color of the gradient used in the image
|
||||
/// margin of a System.Windows.Forms.ToolStripDropDownMenu.
|
||||
/// </summary>
|
||||
public override Color ImageMarginGradientBegin => bgColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the middle color of the gradient used in the image
|
||||
/// margin of a System.Windows.Forms.ToolStripDropDownMenu.
|
||||
/// </summary>
|
||||
public override Color ImageMarginGradientMiddle => bgColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the end color of the gradient used in the image
|
||||
/// margin of a System.Windows.Forms.ToolStripDropDownMenu.
|
||||
/// </summary>
|
||||
public override Color ImageMarginGradientEnd => bgColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the color to use to for shadow effects on
|
||||
/// the System.Windows.Forms.ToolStripSeparator.
|
||||
/// </summary>
|
||||
public override Color SeparatorDark => separatorColor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the color that is the border color to use
|
||||
/// on a System.Windows.Forms.MenuStrip.
|
||||
/// </summary>
|
||||
public override Color MenuBorder => menuItemHoverColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
@@ -90,6 +90,7 @@
|
||||
// linkLabel1
|
||||
//
|
||||
resources.ApplyResources(this.linkLabel1, "linkLabel1");
|
||||
this.linkLabel1.LinkColor = System.Drawing.Color.DodgerBlue;
|
||||
this.linkLabel1.Name = "linkLabel1";
|
||||
this.linkLabel1.TabStop = true;
|
||||
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using APKToolGUI.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
@@ -13,6 +14,10 @@ namespace APKToolGUI
|
||||
public FormAboutBox()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (Program.IsDarkTheme())
|
||||
DarkTheme.SetTheme(Controls, this);
|
||||
|
||||
this.Text = String.Format("{0} {1}", this.Text, AssemblyTitle);
|
||||
this.labelProductName.Text = AssemblyProduct;
|
||||
this.labelVersion.Text = String.Format("{0} {1}", labelVersion.Text, AssemblyVersion);
|
||||
|
||||
Generated
+88
-55
@@ -64,6 +64,7 @@
|
||||
this.tabPageApkInfo = new System.Windows.Forms.TabPage();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.basicInfoTabPage = new System.Windows.Forms.TabPage();
|
||||
this.label34 = new System.Windows.Forms.Label();
|
||||
this.launchActivityTxtBox = new System.Windows.Forms.TextBox();
|
||||
this.label31 = new System.Windows.Forms.Label();
|
||||
this.archSdkTxtBox = new System.Windows.Forms.TextBox();
|
||||
@@ -106,11 +107,10 @@
|
||||
this.fullInfoTextBox = new System.Windows.Forms.RichTextBox();
|
||||
this.tabPageDecode = new System.Windows.Forms.TabPage();
|
||||
this.groupBox_DECODE_Options = new System.Windows.Forms.GroupBox();
|
||||
this.checkBox7 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox_DECODE_UseApkEditorMerge = new System.Windows.Forms.CheckBox();
|
||||
this.decApiLvlUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.decSetApiLvlChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.checkBox_DECODE_FixError = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox_DECODE_OnlyMainClasses = new System.Windows.Forms.CheckBox();
|
||||
this.textBox_DECODE_FrameDir = new System.Windows.Forms.TextBox();
|
||||
@@ -127,12 +127,11 @@
|
||||
this.checkBox_DECODE_NoDebugInfo = new System.Windows.Forms.CheckBox();
|
||||
this.tabPageBuild = new System.Windows.Forms.TabPage();
|
||||
this.groupBox_BUILD_Options = new System.Windows.Forms.GroupBox();
|
||||
this.checkBox_BUILD_NetSecConf = new System.Windows.Forms.CheckBox();
|
||||
this.useAapt2ChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.buildApiLvlUpDown = new System.Windows.Forms.NumericUpDown();
|
||||
this.buildSetApiLvlChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.label23 = new System.Windows.Forms.Label();
|
||||
this.createUnsignApkChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.signAfterBuildChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.zipalignAfterBuildChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox_BUILD_NoCrunch = new System.Windows.Forms.CheckBox();
|
||||
@@ -227,24 +226,28 @@
|
||||
this.killAdbBtn = new System.Windows.Forms.Button();
|
||||
this.installApkBtn = new System.Windows.Forms.Button();
|
||||
this.refreshDevicesBtn = new System.Windows.Forms.Button();
|
||||
this.setVendorChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.selApkAdbBtn = new System.Windows.Forms.Button();
|
||||
this.setVendorChkBox = new System.Windows.Forms.CheckBox();
|
||||
this.apkPathAdbTxtBox = new System.Windows.Forms.TextBox();
|
||||
this.label32 = new System.Windows.Forms.Label();
|
||||
this.devicesListBox = new System.Windows.Forms.ListBox();
|
||||
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.progressBar = new System.Windows.Forms.ToolStripProgressBar();
|
||||
this.contextMenuStripLog = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.clearLogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.logTxtBox = new System.Windows.Forms.RichTextBox();
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.newInsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveLogToFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.openTempFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.clearTempFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.checkForUpdateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -302,6 +305,7 @@
|
||||
this.tabControlMain.Controls.Add(this.tabPageAdb);
|
||||
this.tabControlMain.Name = "tabControlMain";
|
||||
this.tabControlMain.SelectedIndex = 0;
|
||||
this.tabControlMain.SelectedIndexChanged += new System.EventHandler(this.tabControlMain_SelectedIndexChanged);
|
||||
//
|
||||
// tabPageMain
|
||||
//
|
||||
@@ -542,6 +546,7 @@
|
||||
//
|
||||
this.basicInfoTabPage.AllowDrop = true;
|
||||
resources.ApplyResources(this.basicInfoTabPage, "basicInfoTabPage");
|
||||
this.basicInfoTabPage.Controls.Add(this.label34);
|
||||
this.basicInfoTabPage.Controls.Add(this.launchActivityTxtBox);
|
||||
this.basicInfoTabPage.Controls.Add(this.label31);
|
||||
this.basicInfoTabPage.Controls.Add(this.archSdkTxtBox);
|
||||
@@ -583,6 +588,11 @@
|
||||
this.basicInfoTabPage.Name = "basicInfoTabPage";
|
||||
this.basicInfoTabPage.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label34
|
||||
//
|
||||
resources.ApplyResources(this.label34, "label34");
|
||||
this.label34.Name = "label34";
|
||||
//
|
||||
// launchActivityTxtBox
|
||||
//
|
||||
resources.ApplyResources(this.launchActivityTxtBox, "launchActivityTxtBox");
|
||||
@@ -819,11 +829,10 @@
|
||||
//
|
||||
// groupBox_DECODE_Options
|
||||
//
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.checkBox7);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.checkBox_DECODE_UseApkEditorMerge);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.decApiLvlUpDown);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.decSetApiLvlChkBox);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.label6);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.label5);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.checkBox_DECODE_FixError);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.checkBox_DECODE_OnlyMainClasses);
|
||||
this.groupBox_DECODE_Options.Controls.Add(this.textBox_DECODE_FrameDir);
|
||||
@@ -842,6 +851,14 @@
|
||||
this.groupBox_DECODE_Options.Name = "groupBox_DECODE_Options";
|
||||
this.groupBox_DECODE_Options.TabStop = false;
|
||||
//
|
||||
// checkBox7
|
||||
//
|
||||
resources.ApplyResources(this.checkBox7, "checkBox7");
|
||||
this.checkBox7.Checked = global::APKToolGUI.Properties.Settings.Default.Decode_DontParseApkInfo;
|
||||
this.checkBox7.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Decode_DontParseApkInfo", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox7.Name = "checkBox7";
|
||||
this.checkBox7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox_DECODE_UseApkEditorMerge
|
||||
//
|
||||
resources.ApplyResources(this.checkBox_DECODE_UseApkEditorMerge, "checkBox_DECODE_UseApkEditorMerge");
|
||||
@@ -866,18 +883,6 @@
|
||||
this.decSetApiLvlChkBox.Name = "decSetApiLvlChkBox";
|
||||
this.decSetApiLvlChkBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
resources.ApplyResources(this.label6, "label6");
|
||||
this.label6.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.label6.Name = "label6";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// checkBox_DECODE_FixError
|
||||
//
|
||||
resources.ApplyResources(this.checkBox_DECODE_FixError, "checkBox_DECODE_FixError");
|
||||
@@ -885,6 +890,7 @@
|
||||
this.checkBox_DECODE_FixError.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBox_DECODE_FixError.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Decode_FixError", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox_DECODE_FixError.Name = "checkBox_DECODE_FixError";
|
||||
this.toolTip1.SetToolTip(this.checkBox_DECODE_FixError, resources.GetString("checkBox_DECODE_FixError.ToolTip"));
|
||||
this.checkBox_DECODE_FixError.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox_DECODE_OnlyMainClasses
|
||||
@@ -894,6 +900,7 @@
|
||||
this.checkBox_DECODE_OnlyMainClasses.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBox_DECODE_OnlyMainClasses.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Decode_OnlyMainClasses", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox_DECODE_OnlyMainClasses.Name = "checkBox_DECODE_OnlyMainClasses";
|
||||
this.toolTip1.SetToolTip(this.checkBox_DECODE_OnlyMainClasses, resources.GetString("checkBox_DECODE_OnlyMainClasses.ToolTip"));
|
||||
this.checkBox_DECODE_OnlyMainClasses.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// textBox_DECODE_FrameDir
|
||||
@@ -1004,12 +1011,11 @@
|
||||
//
|
||||
// groupBox_BUILD_Options
|
||||
//
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.checkBox_BUILD_NetSecConf);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.useAapt2ChkBox);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.buildApiLvlUpDown);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.buildSetApiLvlChkBox);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.label23);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.createUnsignApkChkBox);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.label16);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.signAfterBuildChkBox);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.zipalignAfterBuildChkBox);
|
||||
this.groupBox_BUILD_Options.Controls.Add(this.checkBox_BUILD_NoCrunch);
|
||||
@@ -1028,6 +1034,14 @@
|
||||
this.groupBox_BUILD_Options.Name = "groupBox_BUILD_Options";
|
||||
this.groupBox_BUILD_Options.TabStop = false;
|
||||
//
|
||||
// checkBox_BUILD_NetSecConf
|
||||
//
|
||||
resources.ApplyResources(this.checkBox_BUILD_NetSecConf, "checkBox_BUILD_NetSecConf");
|
||||
this.checkBox_BUILD_NetSecConf.Checked = global::APKToolGUI.Properties.Settings.Default.Build_NetSecConf;
|
||||
this.checkBox_BUILD_NetSecConf.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Build_NetSecConf", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox_BUILD_NetSecConf.Name = "checkBox_BUILD_NetSecConf";
|
||||
this.checkBox_BUILD_NetSecConf.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// useAapt2ChkBox
|
||||
//
|
||||
resources.ApplyResources(this.useAapt2ChkBox, "useAapt2ChkBox");
|
||||
@@ -1052,26 +1066,15 @@
|
||||
this.buildSetApiLvlChkBox.Name = "buildSetApiLvlChkBox";
|
||||
this.buildSetApiLvlChkBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label23
|
||||
//
|
||||
resources.ApplyResources(this.label23, "label23");
|
||||
this.label23.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.label23.Name = "label23";
|
||||
//
|
||||
// createUnsignApkChkBox
|
||||
//
|
||||
resources.ApplyResources(this.createUnsignApkChkBox, "createUnsignApkChkBox");
|
||||
this.createUnsignApkChkBox.Checked = global::APKToolGUI.Properties.Settings.Default.Build_CreateUnsignedApk;
|
||||
this.createUnsignApkChkBox.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Build_CreateUnsignedApk", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.createUnsignApkChkBox.Name = "createUnsignApkChkBox";
|
||||
this.toolTip1.SetToolTip(this.createUnsignApkChkBox, resources.GetString("createUnsignApkChkBox.ToolTip"));
|
||||
this.createUnsignApkChkBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label16
|
||||
//
|
||||
resources.ApplyResources(this.label16, "label16");
|
||||
this.label16.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.label16.Name = "label16";
|
||||
//
|
||||
// signAfterBuildChkBox
|
||||
//
|
||||
resources.ApplyResources(this.signAfterBuildChkBox, "signAfterBuildChkBox");
|
||||
@@ -1137,6 +1140,7 @@
|
||||
this.checkBox_BUILD_OutputAppPath.Checked = global::APKToolGUI.Properties.Settings.Default.Build_UseOutputAppPath;
|
||||
this.checkBox_BUILD_OutputAppPath.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Build_UseOutputAppPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox_BUILD_OutputAppPath.Name = "checkBox_BUILD_OutputAppPath";
|
||||
this.toolTip1.SetToolTip(this.checkBox_BUILD_OutputAppPath, resources.GetString("checkBox_BUILD_OutputAppPath.ToolTip"));
|
||||
this.checkBox_BUILD_OutputAppPath.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox_BUILD_CopyOriginal
|
||||
@@ -1787,8 +1791,8 @@
|
||||
this.tabPageAdb.Controls.Add(this.killAdbBtn);
|
||||
this.tabPageAdb.Controls.Add(this.installApkBtn);
|
||||
this.tabPageAdb.Controls.Add(this.refreshDevicesBtn);
|
||||
this.tabPageAdb.Controls.Add(this.setVendorChkBox);
|
||||
this.tabPageAdb.Controls.Add(this.selApkAdbBtn);
|
||||
this.tabPageAdb.Controls.Add(this.setVendorChkBox);
|
||||
this.tabPageAdb.Controls.Add(this.apkPathAdbTxtBox);
|
||||
this.tabPageAdb.Controls.Add(this.label32);
|
||||
this.tabPageAdb.Controls.Add(this.devicesListBox);
|
||||
@@ -1825,6 +1829,12 @@
|
||||
this.refreshDevicesBtn.Name = "refreshDevicesBtn";
|
||||
this.refreshDevicesBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// selApkAdbBtn
|
||||
//
|
||||
resources.ApplyResources(this.selApkAdbBtn, "selApkAdbBtn");
|
||||
this.selApkAdbBtn.Name = "selApkAdbBtn";
|
||||
this.selApkAdbBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// setVendorChkBox
|
||||
//
|
||||
resources.ApplyResources(this.setVendorChkBox, "setVendorChkBox");
|
||||
@@ -1833,12 +1843,6 @@
|
||||
this.setVendorChkBox.Name = "setVendorChkBox";
|
||||
this.setVendorChkBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// selApkAdbBtn
|
||||
//
|
||||
resources.ApplyResources(this.selApkAdbBtn, "selApkAdbBtn");
|
||||
this.selApkAdbBtn.Name = "selApkAdbBtn";
|
||||
this.selApkAdbBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// apkPathAdbTxtBox
|
||||
//
|
||||
this.apkPathAdbTxtBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "Adb_SelectedApkPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
@@ -1863,7 +1867,7 @@
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabelStateImage,
|
||||
this.toolStripStatusLabelStateText,
|
||||
this.toolStripProgressBar1});
|
||||
this.progressBar});
|
||||
resources.ApplyResources(this.statusStrip1, "statusStrip1");
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.SizingGrip = false;
|
||||
@@ -1883,14 +1887,14 @@
|
||||
this.toolStripStatusLabelStateText.Spring = true;
|
||||
this.toolStripStatusLabelStateText.Click += new System.EventHandler(this.toolStripStatusLabelStateText_Click);
|
||||
//
|
||||
// toolStripProgressBar1
|
||||
// progressBar
|
||||
//
|
||||
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;
|
||||
this.toolStripProgressBar1.Click += new System.EventHandler(this.toolStripProgressBar1_Click);
|
||||
this.progressBar.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
|
||||
resources.ApplyResources(this.progressBar, "progressBar");
|
||||
this.progressBar.MarqueeAnimationSpeed = 30;
|
||||
this.progressBar.Name = "progressBar";
|
||||
this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
|
||||
this.progressBar.Click += new System.EventHandler(this.toolStripProgressBar1_Click);
|
||||
//
|
||||
// contextMenuStripLog
|
||||
//
|
||||
@@ -1915,9 +1919,10 @@
|
||||
//
|
||||
this.logTxtBox.ContextMenuStrip = this.contextMenuStripLog;
|
||||
resources.ApplyResources(this.logTxtBox, "logTxtBox");
|
||||
this.logTxtBox.HideSelection = false;
|
||||
this.logTxtBox.Name = "logTxtBox";
|
||||
this.logTxtBox.ReadOnly = true;
|
||||
this.logTxtBox.TabStop = false;
|
||||
this.logTxtBox.TextChanged += new System.EventHandler(this.logTxtBox_TextChanged);
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
@@ -1931,13 +1936,22 @@
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.newInsToolStripMenuItem,
|
||||
this.saveLogToFileToolStripMenuItem,
|
||||
this.settingsToolStripMenuItem,
|
||||
this.toolStripMenuItem1,
|
||||
this.openTempFolderToolStripMenuItem,
|
||||
this.clearTempFolderToolStripMenuItem,
|
||||
this.toolStripMenuItem2,
|
||||
this.exitToolStripMenuItem});
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
resources.ApplyResources(this.fileToolStripMenuItem, "fileToolStripMenuItem");
|
||||
//
|
||||
// newInsToolStripMenuItem
|
||||
//
|
||||
this.newInsToolStripMenuItem.Name = "newInsToolStripMenuItem";
|
||||
resources.ApplyResources(this.newInsToolStripMenuItem, "newInsToolStripMenuItem");
|
||||
//
|
||||
// saveLogToFileToolStripMenuItem
|
||||
//
|
||||
this.saveLogToFileToolStripMenuItem.Name = "saveLogToFileToolStripMenuItem";
|
||||
@@ -1948,11 +1962,27 @@
|
||||
this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
|
||||
resources.ApplyResources(this.settingsToolStripMenuItem, "settingsToolStripMenuItem");
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
|
||||
//
|
||||
// openTempFolderToolStripMenuItem
|
||||
//
|
||||
this.openTempFolderToolStripMenuItem.Name = "openTempFolderToolStripMenuItem";
|
||||
resources.ApplyResources(this.openTempFolderToolStripMenuItem, "openTempFolderToolStripMenuItem");
|
||||
//
|
||||
// clearTempFolderToolStripMenuItem
|
||||
//
|
||||
this.clearTempFolderToolStripMenuItem.Name = "clearTempFolderToolStripMenuItem";
|
||||
resources.ApplyResources(this.clearTempFolderToolStripMenuItem, "clearTempFolderToolStripMenuItem");
|
||||
this.clearTempFolderToolStripMenuItem.Click += new System.EventHandler(this.clearTempFolderToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
resources.ApplyResources(this.toolStripMenuItem2, "toolStripMenuItem2");
|
||||
//
|
||||
// exitToolStripMenuItem
|
||||
//
|
||||
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||
@@ -2076,7 +2106,7 @@
|
||||
internal System.Windows.Forms.TabPage tabPageZipAlign;
|
||||
internal System.Windows.Forms.StatusStrip statusStrip1;
|
||||
internal System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateText;
|
||||
internal System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
|
||||
internal System.Windows.Forms.ToolStripProgressBar progressBar;
|
||||
internal System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateImage;
|
||||
internal System.Windows.Forms.ContextMenuStrip contextMenuStripLog;
|
||||
internal System.Windows.Forms.ToolStripMenuItem clearLogToolStripMenuItem;
|
||||
@@ -2158,8 +2188,6 @@
|
||||
internal System.Windows.Forms.Button openAndroidMainfestBtn;
|
||||
internal System.Windows.Forms.CheckBox checkBox_DECODE_OnlyMainClasses;
|
||||
internal System.Windows.Forms.CheckBox checkBox_BUILD_NoCrunch;
|
||||
internal System.Windows.Forms.Label label6;
|
||||
internal System.Windows.Forms.Label label5;
|
||||
internal System.Windows.Forms.CheckBox checkBox_DECODE_FixError;
|
||||
internal System.Windows.Forms.TabPage tabPageApkInfo;
|
||||
internal System.Windows.Forms.RichTextBox permTxtBox;
|
||||
@@ -2197,7 +2225,6 @@
|
||||
internal System.Windows.Forms.CheckBox clearFwBeforeDecodeChkBox;
|
||||
internal System.Windows.Forms.Button clearFwBtn;
|
||||
internal System.Windows.Forms.GroupBox groupBox1;
|
||||
internal System.Windows.Forms.Label label16;
|
||||
internal System.Windows.Forms.CheckBox signAfterBuildChkBox;
|
||||
internal System.Windows.Forms.CheckBox signAfterZipalignChkBox;
|
||||
internal System.Windows.Forms.CheckBox zipalignOutputDirChkBox;
|
||||
@@ -2211,7 +2238,6 @@
|
||||
internal System.Windows.Forms.Button selectKeyStoreFileBtn;
|
||||
internal System.Windows.Forms.TextBox aliasTxtBox;
|
||||
internal System.Windows.Forms.CheckBox useAliasChkBox;
|
||||
internal System.Windows.Forms.Label label23;
|
||||
internal System.Windows.Forms.CheckBox createUnsignApkChkBox;
|
||||
internal System.Windows.Forms.ComboBox schemev4ComboBox;
|
||||
internal System.Windows.Forms.Label label27;
|
||||
@@ -2293,6 +2319,13 @@
|
||||
internal System.Windows.Forms.ToolStripMenuItem openTempFolderToolStripMenuItem;
|
||||
internal System.Windows.Forms.ToolStripMenuItem reportAnIsuueToolStripMenuItem;
|
||||
public System.Windows.Forms.ToolStripMenuItem saveLogToFileToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem clearTempFolderToolStripMenuItem;
|
||||
internal System.Windows.Forms.CheckBox checkBox_BUILD_NetSecConf;
|
||||
internal System.Windows.Forms.Label label34;
|
||||
private System.Windows.Forms.CheckBox checkBox7;
|
||||
internal System.Windows.Forms.ToolStripMenuItem newInsToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+126
-56
@@ -19,6 +19,10 @@ using Ionic.Zip;
|
||||
using System.Linq;
|
||||
using System.Windows.Interop;
|
||||
using System.Security.Cryptography;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
using APKToolGUI.Controls;
|
||||
using Dark.Net;
|
||||
using APKEasyTool;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -52,6 +56,9 @@ namespace APKToolGUI
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
if (Program.IsDarkTheme())
|
||||
DarkTheme.SetTheme(Controls, this);
|
||||
|
||||
Text += " - v" + ProductVersion;
|
||||
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
|
||||
|
||||
@@ -97,6 +104,7 @@ namespace APKToolGUI
|
||||
new ApkinfoControlEventHandlers(this);
|
||||
new MainWindowEventHandlers(this);
|
||||
new MenuItemHandlers(this);
|
||||
new TaskBarJumpList(Handle);
|
||||
}
|
||||
|
||||
private async void FormMain_Shown(object sender, EventArgs e)
|
||||
@@ -121,7 +129,7 @@ namespace APKToolGUI
|
||||
ToLog(ApktoolEventType.None, javaVersion);
|
||||
string apktoolVersion = apktool.GetVersion();
|
||||
if (!String.IsNullOrWhiteSpace(apktoolVersion))
|
||||
ToLog(ApktoolEventType.None, String.Format(Language.APKToolVersion + " \"{0}\"", apktoolVersion));
|
||||
ToLog(ApktoolEventType.None, String.Format(Language.APKToolVersion + " {0}", apktoolVersion));
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, Language.CantDetectApktoolVersion);
|
||||
}
|
||||
@@ -152,13 +160,8 @@ namespace APKToolGUI
|
||||
if (updateInterval.Days > 0 && Settings.Default.CheckForUpdateAtStartup)
|
||||
updateCheker.CheckAsync(true);
|
||||
});
|
||||
|
||||
ToStatus(Language.Done, Resources.done);
|
||||
|
||||
string decApkPath = Settings.Default.Decode_InputAppPath;
|
||||
|
||||
await GetApkInfo(decApkPath);
|
||||
|
||||
RunCmdArgs();
|
||||
|
||||
await ListDevices();
|
||||
@@ -217,11 +220,11 @@ namespace APKToolGUI
|
||||
if (await Smali(file) == 0)
|
||||
Close();
|
||||
break;
|
||||
case "apkinfo":
|
||||
await GetApkInfo(file);
|
||||
case "viewinfo":
|
||||
tabControlMain.SelectedIndex = 1;
|
||||
await GetApkInfo(file);
|
||||
break;
|
||||
default: //Fix when running app as Release from Visual studio
|
||||
default:
|
||||
IgnoreOutputDirContextMenu = false;
|
||||
break;
|
||||
}
|
||||
@@ -245,7 +248,7 @@ namespace APKToolGUI
|
||||
try
|
||||
{
|
||||
string splitPath = Path.Combine(Program.TEMP_PATH, "SplitInfo");
|
||||
string arch = null;
|
||||
string arch = "";
|
||||
|
||||
await Task.Factory.StartNew(() =>
|
||||
{
|
||||
@@ -388,7 +391,7 @@ namespace APKToolGUI
|
||||
{
|
||||
BeginInvoke(new MethodInvoker(delegate
|
||||
{
|
||||
toolStripStatusLabelStateText.Text = message;
|
||||
toolStripStatusLabelStateText.Text = message.Replace("\n", "").Replace("\r", "");
|
||||
toolStripStatusLabelStateImage.Image = statusImage;
|
||||
}));
|
||||
}
|
||||
@@ -413,33 +416,48 @@ namespace APKToolGUI
|
||||
|
||||
internal void ToLog(ApktoolEventType eventType, string message)
|
||||
{
|
||||
if (String.IsNullOrWhiteSpace(message))
|
||||
if (String.IsNullOrWhiteSpace(message) || message.Contains("_JAVA_OPTIONS"))
|
||||
return;
|
||||
|
||||
Color color = Color.Black;
|
||||
|
||||
switch (eventType)
|
||||
{
|
||||
case ApktoolEventType.None:
|
||||
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Black);
|
||||
if (Program.IsDarkTheme())
|
||||
color = Color.White;
|
||||
break;
|
||||
case ApktoolEventType.Success:
|
||||
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.DarkGreen);
|
||||
if (Program.IsDarkTheme())
|
||||
color = Color.LightGreen;
|
||||
else
|
||||
color = Color.DarkGreen;
|
||||
break;
|
||||
case ApktoolEventType.Infomation:
|
||||
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Blue);
|
||||
if (Program.IsDarkTheme())
|
||||
color = Color.LightBlue;
|
||||
else
|
||||
color = Color.Blue;
|
||||
break;
|
||||
case ApktoolEventType.Error:
|
||||
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Red);
|
||||
if (Program.IsDarkTheme())
|
||||
color = Color.LightPink;
|
||||
else
|
||||
color = Color.Red;
|
||||
break;
|
||||
case ApktoolEventType.Warning:
|
||||
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.DarkOrange);
|
||||
if (Program.IsDarkTheme())
|
||||
color = Color.DarkOrange;
|
||||
else
|
||||
color = Color.Orange;
|
||||
break;
|
||||
case ApktoolEventType.Unknown:
|
||||
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Red);
|
||||
break;
|
||||
default:
|
||||
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Color.Blue);
|
||||
if (Program.IsDarkTheme())
|
||||
color = Color.White;
|
||||
break;
|
||||
}
|
||||
|
||||
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, color);
|
||||
}
|
||||
|
||||
internal void Running(string msg)
|
||||
@@ -447,7 +465,8 @@ namespace APKToolGUI
|
||||
Invoke(new Action(delegate ()
|
||||
{
|
||||
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Indeterminate, Handle);
|
||||
toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
|
||||
progressBar.Style = ProgressBarStyle.Marquee;
|
||||
progressBar.Visible = true;
|
||||
ActionButtonsEnabled = false;
|
||||
ClearLog();
|
||||
}));
|
||||
@@ -479,16 +498,21 @@ namespace APKToolGUI
|
||||
|
||||
TaskbarManager.Instance.SetProgressValue(1, 1);
|
||||
if (statusStrip1.InvokeRequired)
|
||||
statusStrip1.BeginInvoke(new Action(delegate { toolStripProgressBar1.Style = ProgressBarStyle.Continuous; }));
|
||||
statusStrip1.BeginInvoke(new Action(delegate { progressBar.Style = ProgressBarStyle.Continuous; }));
|
||||
else
|
||||
toolStripProgressBar1.Style = ProgressBarStyle.Continuous;
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
|
||||
Invoke(new Action(delegate ()
|
||||
{
|
||||
progressBar.Visible = false;
|
||||
}));
|
||||
|
||||
ActionButtonsEnabled = true;
|
||||
|
||||
ToStatus(Language.Done, Resources.done);
|
||||
}
|
||||
|
||||
internal void Error(string msg)
|
||||
internal void Error(string msg, string status = null)
|
||||
{
|
||||
isRunning = false;
|
||||
|
||||
@@ -505,13 +529,21 @@ namespace APKToolGUI
|
||||
|
||||
TaskbarManager.Instance.SetProgressValue(1, 1);
|
||||
if (statusStrip1.InvokeRequired)
|
||||
statusStrip1.BeginInvoke(new Action(delegate { toolStripProgressBar1.Style = ProgressBarStyle.Continuous; }));
|
||||
statusStrip1.BeginInvoke(new Action(delegate { progressBar.Style = ProgressBarStyle.Continuous; }));
|
||||
else
|
||||
toolStripProgressBar1.Style = ProgressBarStyle.Continuous;
|
||||
progressBar.Style = ProgressBarStyle.Continuous;
|
||||
|
||||
Invoke(new Action(delegate ()
|
||||
{
|
||||
progressBar.Visible = false;
|
||||
}));
|
||||
|
||||
ActionButtonsEnabled = true;
|
||||
|
||||
ToStatus(msg, Resources.error);
|
||||
if (status == null)
|
||||
ToStatus(msg, Resources.error);
|
||||
else
|
||||
ToStatus(status, Resources.error);
|
||||
}
|
||||
|
||||
internal void ClearLog()
|
||||
@@ -717,10 +749,10 @@ namespace APKToolGUI
|
||||
ToLog(ApktoolEventType.None, String.Format(Language.DecompilingSuccessfullyCompleted, outputDir));
|
||||
if (Settings.Default.Decode_FixError)
|
||||
{
|
||||
if (ApkFixer.ChangeSdkTo29(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.ChangedTargetSdkTo29);
|
||||
if (ApkFixer.FixAndroidManifest(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.FixAndroidManifest);
|
||||
if (ApkFixer.FixApktoolYml(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.FixApktoolYml);
|
||||
if (ApkFixer.RemoveApkToolDummies(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.RemoveApkToolDummies);
|
||||
}
|
||||
@@ -860,10 +892,10 @@ namespace APKToolGUI
|
||||
ToLog(ApktoolEventType.None, String.Format(Language.DecompilingSuccessfullyCompleted, outputDir));
|
||||
if (Settings.Default.Decode_FixError)
|
||||
{
|
||||
if (ApkFixer.ChangeSdkTo29(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.ChangedTargetSdkTo29);
|
||||
if (ApkFixer.FixAndroidManifest(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.FixAndroidManifest);
|
||||
if (ApkFixer.FixApktoolYml(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.FixApktoolYml);
|
||||
if (ApkFixer.RemoveApkToolDummies(outputDir))
|
||||
ToLog(ApktoolEventType.None, Language.RemoveApkToolDummies);
|
||||
}
|
||||
@@ -877,7 +909,7 @@ namespace APKToolGUI
|
||||
catch (Exception ex)
|
||||
{
|
||||
code = 1;
|
||||
Error(ex.ToString());
|
||||
Error(ex.ToString(), Language.ErrorDecompiling);
|
||||
}
|
||||
|
||||
return code;
|
||||
@@ -1001,18 +1033,21 @@ namespace APKToolGUI
|
||||
}
|
||||
|
||||
string device = selAdbDeviceLbl.Text;
|
||||
if (!String.IsNullOrEmpty(device) && Settings.Default.Sign_InstallApkAfterSign)
|
||||
if (Settings.Default.Sign_InstallApkAfterSign)
|
||||
{
|
||||
ToStatus(Language.InstallingApk, Resources.waiting);
|
||||
ToLog(ApktoolEventType.Infomation, "=====[ " + Language.InstallingApk + " ]=====");
|
||||
if (!String.IsNullOrEmpty(device))
|
||||
{
|
||||
ToStatus(Language.InstallingApk, Resources.waiting);
|
||||
ToLog(ApktoolEventType.Infomation, "=====[ " + Language.InstallingApk + " ]=====");
|
||||
|
||||
if (adb.Install(device, outputFile) == 0)
|
||||
ToLog(ApktoolEventType.None, Language.InstallApkSuccessful);
|
||||
if (adb.Install(device, outputFile) == 0)
|
||||
ToLog(ApktoolEventType.None, Language.InstallApkSuccessful);
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, Language.InstallApkFailed);
|
||||
}
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, Language.InstallApkFailed); ;
|
||||
ToLog(ApktoolEventType.Error, String.Format(Language.DeviceNotSelected, outputFile));
|
||||
}
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, String.Format(Language.DeviceNotSelected, outputFile));
|
||||
}
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, Language.ErrorSigning);
|
||||
@@ -1197,6 +1232,23 @@ namespace APKToolGUI
|
||||
code = zipalign.Align(inputFile, outputDir);
|
||||
if (code == 0)
|
||||
{
|
||||
if (Settings.Default.Zipalign_SignAfterZipAlign)
|
||||
{
|
||||
ToLog(ApktoolEventType.Infomation, "=====[ " + Language.Signing + " ]=====");
|
||||
if (signapk.Sign(outputDir, outputDir) == 0)
|
||||
{
|
||||
ToLog(ApktoolEventType.None, Language.Done);
|
||||
|
||||
if (Settings.Default.AutoDeleteIdsigFile)
|
||||
{
|
||||
ToLog(ApktoolEventType.None, String.Format(Language.DeleteFile, outputDir + ".idsig"));
|
||||
FileUtils.Delete(outputDir + ".idsig");
|
||||
}
|
||||
}
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, Language.ErrorSigning);
|
||||
}
|
||||
|
||||
ToLog(ApktoolEventType.None, String.Format(Language.ZipalignFileSavedTo, outputDir));
|
||||
if (Settings.Default.Utf8FilenameSupport)
|
||||
{
|
||||
@@ -1275,18 +1327,21 @@ namespace APKToolGUI
|
||||
|
||||
string device = selAdbDeviceLbl.Text;
|
||||
|
||||
if (!String.IsNullOrEmpty(device) && Settings.Default.Sign_InstallApkAfterSign)
|
||||
if (Settings.Default.Sign_InstallApkAfterSign)
|
||||
{
|
||||
ToLog(ApktoolEventType.Infomation, "=====[ " + Language.InstallingApk + " ]=====");
|
||||
if (adb.Install(device, outputFile) == 0)
|
||||
if (!string.IsNullOrEmpty(device))
|
||||
{
|
||||
ToLog(ApktoolEventType.Success, Language.InstallApkSuccessful);
|
||||
ToLog(ApktoolEventType.Infomation, "=====[ " + Language.InstallingApk + " ]=====");
|
||||
if (adb.Install(device, outputFile) == 0)
|
||||
{
|
||||
ToLog(ApktoolEventType.Success, Language.InstallApkSuccessful);
|
||||
}
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, Language.InstallApkFailed);
|
||||
}
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, Language.InstallApkFailed);
|
||||
ToLog(ApktoolEventType.Error, String.Format(Language.DeviceNotSelected, outputFile));
|
||||
}
|
||||
else
|
||||
ToLog(ApktoolEventType.Error, String.Format(Language.DeviceNotSelected, outputFile));
|
||||
|
||||
if (Settings.Default.AutoDeleteIdsigFile)
|
||||
{
|
||||
@@ -1420,15 +1475,31 @@ namespace APKToolGUI
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Main menu event handlers
|
||||
|
||||
#endregion
|
||||
|
||||
#region Form handlers
|
||||
private void logTxtBox_TextChanged(object sender, EventArgs e)
|
||||
private void clearTempFolderToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
logTxtBox.SelectionStart = logTxtBox.Text.Length;
|
||||
logTxtBox.ScrollToCaret();
|
||||
Running(Language.ClearTempFolder);
|
||||
try
|
||||
{
|
||||
foreach (var subDir in new DirectoryInfo(Program.TEMP_MAIN).EnumerateDirectories())
|
||||
{
|
||||
ToLog(ApktoolEventType.None, String.Format(Language.DeletingFolder, subDir));
|
||||
subDir.Delete(true);
|
||||
}
|
||||
Done();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ToLog(ApktoolEventType.Error, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private async void tabControlMain_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (tabControlMain.SelectedIndex == 1 && String.IsNullOrEmpty(appTxtBox.Text) && Environment.GetCommandLineArgs().Length == 1)
|
||||
{
|
||||
await GetApkInfo(Settings.Default.Decode_InputAppPath);
|
||||
}
|
||||
}
|
||||
|
||||
private void FormMain_Activated(object sender, EventArgs e)
|
||||
@@ -1569,6 +1640,5 @@ namespace APKToolGUI
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
+831
-3106
File diff suppressed because it is too large
Load Diff
+155
-101
@@ -32,29 +32,34 @@
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.customApkToolTxtBox = new System.Windows.Forms.TextBox();
|
||||
this.themeComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.customApktoolBtn = new System.Windows.Forms.Button();
|
||||
this.useCustomApktoolChk = new System.Windows.Forms.CheckBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.checkBox5 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox4 = new System.Windows.Forms.CheckBox();
|
||||
this.customTempLocationTxtBox = new System.Windows.Forms.TextBox();
|
||||
this.textBoxCustomJavaLocation = new System.Windows.Forms.TextBox();
|
||||
this.buttonCustomTempLocation = new System.Windows.Forms.Button();
|
||||
this.checkBox3 = new System.Windows.Forms.CheckBox();
|
||||
this.buttonCustomJavaLocation = new System.Windows.Forms.Button();
|
||||
this.checkBox2 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxCheckUpdateStartup = new System.Windows.Forms.CheckBox();
|
||||
this.groupBoxLanguage = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.groupBoxContextMenu = new System.Windows.Forms.GroupBox();
|
||||
this.ignoreOutputContextMenuBox = new System.Windows.Forms.CheckBox();
|
||||
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.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.checkBox7 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox6 = new System.Windows.Forms.CheckBox();
|
||||
this.customApkToolTxtBox = new System.Windows.Forms.TextBox();
|
||||
this.useCustomApktoolChk = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox5 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox4 = new System.Windows.Forms.CheckBox();
|
||||
this.customTempLocationTxtBox = new System.Windows.Forms.TextBox();
|
||||
this.textBoxCustomJavaLocation = new System.Windows.Forms.TextBox();
|
||||
this.checkBox3 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox2 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxCheckUpdateStartup = new System.Windows.Forms.CheckBox();
|
||||
this.ignoreOutputContextMenuBox = new System.Windows.Forms.CheckBox();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
@@ -71,16 +76,21 @@
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||
this.tabPage1.Controls.Add(this.groupBox1);
|
||||
this.tabPage1.Controls.Add(this.groupBoxLanguage);
|
||||
this.tabPage1.Controls.Add(this.groupBoxContextMenu);
|
||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Controls.Add(this.textBox1);
|
||||
this.groupBox1.Controls.Add(this.checkBox7);
|
||||
this.groupBox1.Controls.Add(this.checkBox6);
|
||||
this.groupBox1.Controls.Add(this.themeComboBox);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Controls.Add(this.customApkToolTxtBox);
|
||||
this.groupBox1.Controls.Add(this.customApktoolBtn);
|
||||
this.groupBox1.Controls.Add(this.useCustomApktoolChk);
|
||||
@@ -98,13 +108,20 @@
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// customApkToolTxtBox
|
||||
// themeComboBox
|
||||
//
|
||||
resources.ApplyResources(this.customApkToolTxtBox, "customApkToolTxtBox");
|
||||
this.customApkToolTxtBox.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.customApkToolTxtBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "ApktoolPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.customApkToolTxtBox.Name = "customApkToolTxtBox";
|
||||
this.customApkToolTxtBox.Text = global::APKToolGUI.Properties.Settings.Default.ApktoolPath;
|
||||
this.themeComboBox.FormattingEnabled = true;
|
||||
this.themeComboBox.Items.AddRange(new object[] {
|
||||
resources.GetString("themeComboBox.Items"),
|
||||
resources.GetString("themeComboBox.Items1"),
|
||||
resources.GetString("themeComboBox.Items2")});
|
||||
resources.ApplyResources(this.themeComboBox, "themeComboBox");
|
||||
this.themeComboBox.Name = "themeComboBox";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// customApktoolBtn
|
||||
//
|
||||
@@ -113,52 +130,12 @@
|
||||
this.customApktoolBtn.UseVisualStyleBackColor = true;
|
||||
this.customApktoolBtn.Click += new System.EventHandler(this.customApktoolBtn_Click);
|
||||
//
|
||||
// useCustomApktoolChk
|
||||
//
|
||||
resources.ApplyResources(this.useCustomApktoolChk, "useCustomApktoolChk");
|
||||
this.useCustomApktoolChk.Checked = global::APKToolGUI.Properties.Settings.Default.UseCustomApktool;
|
||||
this.useCustomApktoolChk.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "UseCustomApktool", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.useCustomApktoolChk.Name = "useCustomApktoolChk";
|
||||
this.useCustomApktoolChk.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
resources.ApplyResources(this.label6, "label6");
|
||||
this.label6.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.label6.Name = "label6";
|
||||
//
|
||||
// checkBox5
|
||||
//
|
||||
resources.ApplyResources(this.checkBox5, "checkBox5");
|
||||
this.checkBox5.Checked = global::APKToolGUI.Properties.Settings.Default.Utf8FilenameSupport;
|
||||
this.checkBox5.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Utf8FilenameSupport", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox5.Name = "checkBox5";
|
||||
this.checkBox5.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox4
|
||||
//
|
||||
resources.ApplyResources(this.checkBox4, "checkBox4");
|
||||
this.checkBox4.Checked = global::APKToolGUI.Properties.Settings.Default.UseCustomJavaExe;
|
||||
this.checkBox4.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "UseCustomJavaExe", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox4.Name = "checkBox4";
|
||||
this.checkBox4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// customTempLocationTxtBox
|
||||
//
|
||||
resources.ApplyResources(this.customTempLocationTxtBox, "customTempLocationTxtBox");
|
||||
this.customTempLocationTxtBox.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.customTempLocationTxtBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "TempDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.customTempLocationTxtBox.Name = "customTempLocationTxtBox";
|
||||
this.customTempLocationTxtBox.Text = global::APKToolGUI.Properties.Settings.Default.TempDir;
|
||||
//
|
||||
// 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;
|
||||
//
|
||||
// buttonCustomTempLocation
|
||||
//
|
||||
resources.ApplyResources(this.buttonCustomTempLocation, "buttonCustomTempLocation");
|
||||
@@ -166,14 +143,6 @@
|
||||
this.buttonCustomTempLocation.UseVisualStyleBackColor = true;
|
||||
this.buttonCustomTempLocation.Click += new System.EventHandler(this.buttonCustomTempLocation_Click);
|
||||
//
|
||||
// checkBox3
|
||||
//
|
||||
resources.ApplyResources(this.checkBox3, "checkBox3");
|
||||
this.checkBox3.Checked = global::APKToolGUI.Properties.Settings.Default.UseCustomTempDir;
|
||||
this.checkBox3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "UseCustomTempDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox3.Name = "checkBox3";
|
||||
this.checkBox3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonCustomJavaLocation
|
||||
//
|
||||
resources.ApplyResources(this.buttonCustomJavaLocation, "buttonCustomJavaLocation");
|
||||
@@ -181,32 +150,6 @@
|
||||
this.buttonCustomJavaLocation.UseVisualStyleBackColor = true;
|
||||
this.buttonCustomJavaLocation.Click += new System.EventHandler(this.buttonCustomJavaLocation_Click);
|
||||
//
|
||||
// checkBox2
|
||||
//
|
||||
resources.ApplyResources(this.checkBox2, "checkBox2");
|
||||
this.checkBox2.Checked = global::APKToolGUI.Properties.Settings.Default.PlaySoundWhenDone;
|
||||
this.checkBox2.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "PlaySoundWhenDone", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox2.Name = "checkBox2";
|
||||
this.checkBox2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
resources.ApplyResources(this.checkBox1, "checkBox1");
|
||||
this.checkBox1.Checked = global::APKToolGUI.Properties.Settings.Default.ClearLogBeforeAction;
|
||||
this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
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;
|
||||
//
|
||||
// groupBoxLanguage
|
||||
//
|
||||
resources.ApplyResources(this.groupBoxLanguage, "groupBoxLanguage");
|
||||
@@ -216,8 +159,8 @@
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
resources.ApplyResources(this.comboBox1, "comboBox1");
|
||||
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
resources.ApplyResources(this.comboBox1, "comboBox1");
|
||||
this.comboBox1.FormattingEnabled = true;
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
//
|
||||
@@ -231,14 +174,6 @@
|
||||
this.groupBoxContextMenu.Name = "groupBoxContextMenu";
|
||||
this.groupBoxContextMenu.TabStop = false;
|
||||
//
|
||||
// ignoreOutputContextMenuBox
|
||||
//
|
||||
resources.ApplyResources(this.ignoreOutputContextMenuBox, "ignoreOutputContextMenuBox");
|
||||
this.ignoreOutputContextMenuBox.Checked = global::APKToolGUI.Properties.Settings.Default.IgnoreOutputDirContextMenu;
|
||||
this.ignoreOutputContextMenuBox.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "IgnoreOutputDirContextMenu", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ignoreOutputContextMenuBox.Name = "ignoreOutputContextMenuBox";
|
||||
this.ignoreOutputContextMenuBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// labelAdminRights
|
||||
//
|
||||
resources.ApplyResources(this.labelAdminRights, "labelAdminRights");
|
||||
@@ -272,6 +207,120 @@
|
||||
this.buttonОК.UseVisualStyleBackColor = true;
|
||||
this.buttonОК.Click += new System.EventHandler(this.buttonОК_Click);
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "CustomJVMArgs", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
resources.ApplyResources(this.textBox1, "textBox1");
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Text = global::APKToolGUI.Properties.Settings.Default.CustomJVMArgs;
|
||||
//
|
||||
// checkBox7
|
||||
//
|
||||
resources.ApplyResources(this.checkBox7, "checkBox7");
|
||||
this.checkBox7.Checked = global::APKToolGUI.Properties.Settings.Default.UseCustomJVMArgs;
|
||||
this.checkBox7.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "UseCustomJVMArgs", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox7.Name = "checkBox7";
|
||||
this.checkBox7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox6
|
||||
//
|
||||
resources.ApplyResources(this.checkBox6, "checkBox6");
|
||||
this.checkBox6.Checked = global::APKToolGUI.Properties.Settings.Default.DebugMode;
|
||||
this.checkBox6.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DebugMode", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox6.Name = "checkBox6";
|
||||
this.checkBox6.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// customApkToolTxtBox
|
||||
//
|
||||
this.customApkToolTxtBox.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.customApkToolTxtBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "ApktoolPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
resources.ApplyResources(this.customApkToolTxtBox, "customApkToolTxtBox");
|
||||
this.customApkToolTxtBox.Name = "customApkToolTxtBox";
|
||||
this.customApkToolTxtBox.Text = global::APKToolGUI.Properties.Settings.Default.ApktoolPath;
|
||||
//
|
||||
// useCustomApktoolChk
|
||||
//
|
||||
resources.ApplyResources(this.useCustomApktoolChk, "useCustomApktoolChk");
|
||||
this.useCustomApktoolChk.Checked = global::APKToolGUI.Properties.Settings.Default.UseCustomApktool;
|
||||
this.useCustomApktoolChk.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "UseCustomApktool", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.useCustomApktoolChk.Name = "useCustomApktoolChk";
|
||||
this.useCustomApktoolChk.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox5
|
||||
//
|
||||
resources.ApplyResources(this.checkBox5, "checkBox5");
|
||||
this.checkBox5.Checked = global::APKToolGUI.Properties.Settings.Default.Utf8FilenameSupport;
|
||||
this.checkBox5.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "Utf8FilenameSupport", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox5.Name = "checkBox5";
|
||||
this.checkBox5.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox4
|
||||
//
|
||||
resources.ApplyResources(this.checkBox4, "checkBox4");
|
||||
this.checkBox4.Checked = global::APKToolGUI.Properties.Settings.Default.UseCustomJavaExe;
|
||||
this.checkBox4.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "UseCustomJavaExe", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox4.Name = "checkBox4";
|
||||
this.checkBox4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// customTempLocationTxtBox
|
||||
//
|
||||
this.customTempLocationTxtBox.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.customTempLocationTxtBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "TempDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
resources.ApplyResources(this.customTempLocationTxtBox, "customTempLocationTxtBox");
|
||||
this.customTempLocationTxtBox.Name = "customTempLocationTxtBox";
|
||||
this.customTempLocationTxtBox.Text = global::APKToolGUI.Properties.Settings.Default.TempDir;
|
||||
//
|
||||
// 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));
|
||||
resources.ApplyResources(this.textBoxCustomJavaLocation, "textBoxCustomJavaLocation");
|
||||
this.textBoxCustomJavaLocation.Name = "textBoxCustomJavaLocation";
|
||||
this.textBoxCustomJavaLocation.Text = global::APKToolGUI.Properties.Settings.Default.JavaExe;
|
||||
//
|
||||
// checkBox3
|
||||
//
|
||||
resources.ApplyResources(this.checkBox3, "checkBox3");
|
||||
this.checkBox3.Checked = global::APKToolGUI.Properties.Settings.Default.UseCustomTempDir;
|
||||
this.checkBox3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "UseCustomTempDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox3.Name = "checkBox3";
|
||||
this.checkBox3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox2
|
||||
//
|
||||
resources.ApplyResources(this.checkBox2, "checkBox2");
|
||||
this.checkBox2.Checked = global::APKToolGUI.Properties.Settings.Default.PlaySoundWhenDone;
|
||||
this.checkBox2.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "PlaySoundWhenDone", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox2.Name = "checkBox2";
|
||||
this.checkBox2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
resources.ApplyResources(this.checkBox1, "checkBox1");
|
||||
this.checkBox1.Checked = global::APKToolGUI.Properties.Settings.Default.ClearLogBeforeAction;
|
||||
this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
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;
|
||||
//
|
||||
// ignoreOutputContextMenuBox
|
||||
//
|
||||
resources.ApplyResources(this.ignoreOutputContextMenuBox, "ignoreOutputContextMenuBox");
|
||||
this.ignoreOutputContextMenuBox.Checked = global::APKToolGUI.Properties.Settings.Default.IgnoreOutputDirContextMenu;
|
||||
this.ignoreOutputContextMenuBox.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "IgnoreOutputDirContextMenu", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.ignoreOutputContextMenuBox.Name = "ignoreOutputContextMenuBox";
|
||||
this.ignoreOutputContextMenuBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// FormSettings
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
@@ -323,5 +372,10 @@
|
||||
private System.Windows.Forms.TextBox customApkToolTxtBox;
|
||||
private System.Windows.Forms.Button customApktoolBtn;
|
||||
private System.Windows.Forms.CheckBox useCustomApktoolChk;
|
||||
private System.Windows.Forms.ComboBox themeComboBox;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.CheckBox checkBox6;
|
||||
private System.Windows.Forms.CheckBox checkBox7;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,8 @@ using System.Reflection;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Shapes;
|
||||
using static APKToolGUI.UpdateChecker;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Controls;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -18,11 +20,15 @@ namespace APKToolGUI
|
||||
string currentLanguage;
|
||||
bool currentUseApktoolChk;
|
||||
string currentApktoolPath;
|
||||
int currentTheme;
|
||||
|
||||
public FormSettings()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (Program.IsDarkTheme())
|
||||
DarkTheme.SetTheme(Controls, this);
|
||||
|
||||
currentUseApktoolChk = useCustomApktoolChk.Checked;
|
||||
currentApktoolPath = customApkToolTxtBox.Text;
|
||||
|
||||
@@ -31,6 +37,10 @@ namespace APKToolGUI
|
||||
SetButtonShield(buttonAddContextMenu, true);
|
||||
SetButtonShield(buttonRemoveContextMenu, true);
|
||||
}
|
||||
|
||||
int themeInt = (themeComboBox.Items.Count + 1 > Settings.Default.Theme) ? Settings.Default.Theme : 0;
|
||||
themeComboBox.SelectedIndex = themeInt;
|
||||
currentTheme = themeInt;
|
||||
}
|
||||
|
||||
#region GUI
|
||||
@@ -114,19 +124,28 @@ namespace APKToolGUI
|
||||
|
||||
private void SaveSettings()
|
||||
{
|
||||
if (Language.SystemLanguage.Equals(comboBox1.SelectedItem.ToString()))
|
||||
Properties.Settings.Default.Culture = "Auto";
|
||||
else
|
||||
Properties.Settings.Default.Culture = StringExt.Regex(@"(?<=\[)(.*?)(?=\])", comboBox1.SelectedItem.ToString());
|
||||
Properties.Settings.Default.Save();
|
||||
|
||||
if (!comboBox1.SelectedItem.ToString().Contains(currentLanguage))
|
||||
if (MessageBox.Show(Language.SetLanguageRestartApplication, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
Application.Restart();
|
||||
|
||||
if (currentUseApktoolChk != useCustomApktoolChk.Checked || currentApktoolPath != customApkToolTxtBox.Text)
|
||||
try
|
||||
{
|
||||
FormMain.Instance.SetApktoolPath();
|
||||
if (Language.SystemLanguage.Equals(comboBox1.SelectedItem.ToString()))
|
||||
Settings.Default.Culture = "Auto";
|
||||
else
|
||||
Settings.Default.Culture = StringExt.Regex(@"(?<=\[)(.*?)(?=\])", comboBox1.SelectedItem.ToString());
|
||||
|
||||
Settings.Default.Theme = themeComboBox.SelectedIndex;
|
||||
Settings.Default.Save();
|
||||
|
||||
if (!comboBox1.SelectedItem.ToString().Contains(currentLanguage) || themeComboBox.SelectedIndex != currentTheme)
|
||||
if (MessageBox.Show(Language.RestartApplicationPrompt, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
Application.Restart();
|
||||
|
||||
if (currentUseApktoolChk != useCustomApktoolChk.Checked || currentApktoolPath != customApkToolTxtBox.Text)
|
||||
{
|
||||
FormMain.Instance.SetApktoolPath();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.e(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,8 +191,7 @@ namespace APKToolGUI
|
||||
DirectoryUtils.Delete(Program.TEMP_PATH);
|
||||
|
||||
//Create new temp folder
|
||||
|
||||
Program.TEMP_PATH = Program.TempDirectory();
|
||||
Program.TEMP_PATH = Program.RandTempDirectory();
|
||||
Directory.CreateDirectory(Program.TEMP_PATH);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,20 +121,164 @@
|
||||
<data name="tabControl1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="tabPage1.AutoScroll" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="customApkToolTxtBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>230, 139</value>
|
||||
</data>
|
||||
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>265, 22</value>
|
||||
</data>
|
||||
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>20</value>
|
||||
</data>
|
||||
<data name="textBox1.WordWrap" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>textBox1.Name" xml:space="preserve">
|
||||
<value>textBox1</value>
|
||||
</data>
|
||||
<data name=">>textBox1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>textBox1.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>textBox1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="checkBox7.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBox7.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox7.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 141</value>
|
||||
</data>
|
||||
<data name="checkBox7.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 17</value>
|
||||
</data>
|
||||
<data name="checkBox7.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>19</value>
|
||||
</data>
|
||||
<data name="checkBox7.Text" xml:space="preserve">
|
||||
<value>Custom JVM arguments</value>
|
||||
</data>
|
||||
<data name=">>checkBox7.Name" xml:space="preserve">
|
||||
<value>checkBox7</value>
|
||||
</data>
|
||||
<data name=">>checkBox7.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>checkBox7.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox7.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="checkBox6.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBox6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox6.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 265</value>
|
||||
</data>
|
||||
<data name="checkBox6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>93, 17</value>
|
||||
</data>
|
||||
<data name="checkBox6.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>18</value>
|
||||
</data>
|
||||
<data name="checkBox6.Text" xml:space="preserve">
|
||||
<value>Debug mode</value>
|
||||
</data>
|
||||
<data name=">>checkBox6.Name" xml:space="preserve">
|
||||
<value>checkBox6</value>
|
||||
</data>
|
||||
<data name=">>checkBox6.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>checkBox6.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox6.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items" xml:space="preserve">
|
||||
<value>Auto</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items1" xml:space="preserve">
|
||||
<value>Light</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items2" xml:space="preserve">
|
||||
<value>Dark</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>128, 238</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>121, 21</value>
|
||||
</data>
|
||||
<data name="themeComboBox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name=">>themeComboBox.Name" xml:space="preserve">
|
||||
<value>themeComboBox</value>
|
||||
</data>
|
||||
<data name=">>themeComboBox.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>themeComboBox.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>themeComboBox.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 241</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>41, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Theme</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name=">>label1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label1.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="customApkToolTxtBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>203, 180</value>
|
||||
<value>230, 205</value>
|
||||
</data>
|
||||
<data name="customApkToolTxtBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>215, 22</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="customApkToolTxtBox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
@@ -151,10 +295,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>customApkToolTxtBox.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
@@ -163,7 +304,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>421, 180</value>
|
||||
<value>448, 205</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 23</value>
|
||||
@@ -184,7 +325,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>customApktoolBtn.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -193,7 +334,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 182</value>
|
||||
<value>9, 207</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>153, 17</value>
|
||||
@@ -214,7 +355,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>useCustomApktoolChk.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -223,7 +364,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>24, 160</value>
|
||||
<value>24, 185</value>
|
||||
</data>
|
||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>349, 13</value>
|
||||
@@ -244,7 +385,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="checkBox5.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -253,7 +394,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 140</value>
|
||||
<value>9, 165</value>
|
||||
</data>
|
||||
<data name="checkBox5.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 17</value>
|
||||
@@ -274,7 +415,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox5.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="checkBox4.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -283,7 +424,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox4.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 114</value>
|
||||
<value>9, 115</value>
|
||||
</data>
|
||||
<data name="checkBox4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>134, 17</value>
|
||||
@@ -304,13 +445,10 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox4.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>203, 86</value>
|
||||
<value>230, 86</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>215, 22</value>
|
||||
@@ -331,13 +469,10 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>customTempLocationTxtBox.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>203, 112</value>
|
||||
<value>230, 112</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>215, 22</value>
|
||||
@@ -358,14 +493,11 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.AccessibleName" xml:space="preserve">
|
||||
<value>buttonCustomTempLocation</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
</data>
|
||||
@@ -373,7 +505,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>421, 86</value>
|
||||
<value>448, 86</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 23</value>
|
||||
@@ -394,7 +526,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomTempLocation.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="checkBox3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -403,7 +535,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 89</value>
|
||||
<value>9, 90</value>
|
||||
</data>
|
||||
<data name="checkBox3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>139, 17</value>
|
||||
@@ -424,10 +556,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox3.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
@@ -436,7 +565,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>421, 112</value>
|
||||
<value>448, 112</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 23</value>
|
||||
@@ -457,7 +586,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="checkBox2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -487,7 +616,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox2.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name="checkBox1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -517,7 +646,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox1.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="checkBoxCheckUpdateStartup.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -547,13 +676,13 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBoxCheckUpdateStartup.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
<value>18</value>
|
||||
</data>
|
||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 6</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>454, 217</value>
|
||||
<value>511, 299</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
@@ -576,14 +705,11 @@
|
||||
<data name="groupBoxLanguage.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="comboBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="comboBox1.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
</data>
|
||||
<data name="comboBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>129, 17</value>
|
||||
<value>156, 17</value>
|
||||
</data>
|
||||
<data name="comboBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>319, 21</value>
|
||||
@@ -604,10 +730,10 @@
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 229</value>
|
||||
<value>8, 311</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>454, 47</value>
|
||||
<value>512, 47</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
@@ -663,9 +789,6 @@
|
||||
<data name=">>ignoreOutputContextMenuBox.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="labelAdminRights.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="labelAdminRights.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
@@ -696,9 +819,6 @@
|
||||
<data name=">>labelAdminRights.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
</data>
|
||||
@@ -706,7 +826,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>276, 18</value>
|
||||
<value>303, 18</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>83, 23</value>
|
||||
@@ -732,9 +852,6 @@
|
||||
<data name=">>buttonAddContextMenu.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
</data>
|
||||
@@ -742,7 +859,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>365, 18</value>
|
||||
<value>392, 18</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>83, 23</value>
|
||||
@@ -766,10 +883,10 @@
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 282</value>
|
||||
<value>8, 364</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>454, 74</value>
|
||||
<value>513, 74</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
@@ -796,7 +913,7 @@
|
||||
<value>3, 3, 3, 3</value>
|
||||
</data>
|
||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>466, 360</value>
|
||||
<value>525, 442</value>
|
||||
</data>
|
||||
<data name="tabPage1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -823,7 +940,7 @@
|
||||
<value>0, 1</value>
|
||||
</data>
|
||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>474, 386</value>
|
||||
<value>533, 468</value>
|
||||
</data>
|
||||
<data name="tabControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@@ -850,7 +967,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>392, 393</value>
|
||||
<value>451, 475</value>
|
||||
</data>
|
||||
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
@@ -883,7 +1000,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonОК.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>311, 393</value>
|
||||
<value>370, 475</value>
|
||||
</data>
|
||||
<data name="buttonОК.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
@@ -913,7 +1030,10 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>473, 421</value>
|
||||
<value>532, 503</value>
|
||||
</data>
|
||||
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
|
||||
@@ -57,7 +57,10 @@ namespace APKToolGUI.Handlers
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
main.textBox_DECODE_InputAppPath.Text = ofd.FileName;
|
||||
main.GetApkInfo(ofd.FileName);
|
||||
|
||||
if (!Settings.Default.Decode_DontParseApkInfo)
|
||||
main.GetApkInfo(ofd.FileName);
|
||||
|
||||
if (main.checkBox_DECODE_OutputDirectory.Checked)
|
||||
{
|
||||
main.textBox_DECODE_OutputDirectory.Text = Path.Combine(Path.GetDirectoryName(main.textBox_DECODE_InputAppPath.Text), Path.GetFileNameWithoutExtension(main.textBox_DECODE_InputAppPath.Text));
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using APKToolGUI.ApkTool;
|
||||
using APKToolGUI.Controls;
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
@@ -66,9 +67,9 @@ namespace APKToolGUI.Handlers
|
||||
{
|
||||
if (extCtrl == null)
|
||||
extCtrl = ctrl;
|
||||
ctrl.DragLeave += new EventHandler((sender, e) => extCtrl.BackColor = Color.White);
|
||||
ctrl.DragLeave += new EventHandler((sender, e) => extCtrl.BackColor = PanelBackColor());
|
||||
ctrl.DragEnter += new DragEventHandler((sender, e) => e.CheckDragEnter(extension));
|
||||
ctrl.DragOver += new DragEventHandler((sender, e) => { if (e.CheckManyDragOver(extension)) extCtrl.BackColor = Color.LightGreen; });
|
||||
ctrl.DragOver += new DragEventHandler((sender, e) => { if (e.CheckManyDragOver(extension)) extCtrl.BackColor = PanelHoverBackColor(); });
|
||||
ctrl.DragDrop += dragHandler;
|
||||
}
|
||||
|
||||
@@ -77,13 +78,14 @@ namespace APKToolGUI.Handlers
|
||||
string[] apkFiles = null;
|
||||
if (e.DropManyByEnd(file => apkFiles = file, apks))
|
||||
{
|
||||
main.decPanel.BackColor = Color.White;
|
||||
main.decPanel.BackColor = PanelBackColor();
|
||||
|
||||
foreach (var apkFile in apkFiles)
|
||||
{
|
||||
main.textBox_DECODE_InputAppPath.Text = apkFile;
|
||||
|
||||
await main.GetApkInfo(apkFile);
|
||||
if (!Settings.Default.Decode_DontParseApkInfo)
|
||||
await main.GetApkInfo(apkFile);
|
||||
|
||||
if (apkFile.ContainsAny(".xapk", ".zip", ".apks", ".apkm"))
|
||||
{
|
||||
@@ -105,14 +107,14 @@ namespace APKToolGUI.Handlers
|
||||
private async void DropDirToCom(DragEventArgs e)
|
||||
{
|
||||
string[] folders = null;
|
||||
if (e.DropManyByEnd(file => folders = file, null))
|
||||
if (e.DropManyByEnd(file => folders = file, ""))
|
||||
{
|
||||
foreach (var folder in folders)
|
||||
{
|
||||
if (File.Exists(Path.Combine(folder, "AndroidManifest.xml")))
|
||||
{
|
||||
main.textBox_BUILD_InputProjectDir.Text = folder;
|
||||
main.comPanel.BackColor = Color.White;
|
||||
main.comPanel.BackColor = PanelBackColor();
|
||||
await main.Build(folder);
|
||||
}
|
||||
else
|
||||
@@ -126,7 +128,7 @@ namespace APKToolGUI.Handlers
|
||||
string[] apkFiles = null;
|
||||
if (e.DropManyByEnd(file => apkFiles = file, apks))
|
||||
{
|
||||
main.zipalignPanel.BackColor = Color.White;
|
||||
main.zipalignPanel.BackColor = PanelBackColor();
|
||||
|
||||
foreach (var apkFile in apkFiles)
|
||||
{
|
||||
@@ -142,7 +144,7 @@ namespace APKToolGUI.Handlers
|
||||
string[] apkFiles = null;
|
||||
if (e.DropManyByEnd(file => apkFiles = file, apks))
|
||||
{
|
||||
main.signPanel.BackColor = Color.White;
|
||||
main.signPanel.BackColor = PanelBackColor();
|
||||
|
||||
foreach (var apkFile in apkFiles)
|
||||
{
|
||||
@@ -159,7 +161,7 @@ namespace APKToolGUI.Handlers
|
||||
if (e.DropOneByEnd(file => apkFile = file, ".dex"))
|
||||
{
|
||||
main.baksmaliBrowseInputDexTxtBox.Text = apkFile;
|
||||
main.bakSmaliGroupBox.BackColor = Color.White;
|
||||
main.bakSmaliGroupBox.BackColor = PanelBackColor();
|
||||
await main.Baksmali(apkFile);
|
||||
}
|
||||
}
|
||||
@@ -170,18 +172,18 @@ namespace APKToolGUI.Handlers
|
||||
if (e.DropOneByEnd(file => dir = file, null))
|
||||
{
|
||||
main.smaliBrowseInputDirTxtBox.Text = dir;
|
||||
main.smaliGroupBox.BackColor = Color.White;
|
||||
main.smaliGroupBox.BackColor = PanelBackColor();
|
||||
await main.Smali(dir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async void DropApkToInstall(DragEventArgs e)
|
||||
{
|
||||
string dir = null;
|
||||
if (e.DropOneByEnd(file => dir = file, ".apk"))
|
||||
{
|
||||
main.apkPathAdbTxtBox.Text = dir;
|
||||
main.tabPageAdb.BackColor = Color.White;
|
||||
main.tabPageAdb.BackColor = PanelBackColor();
|
||||
await main.Install(dir);
|
||||
}
|
||||
}
|
||||
@@ -192,9 +194,23 @@ namespace APKToolGUI.Handlers
|
||||
if (e.DropOneByEnd(file => apkFile = file, apks))
|
||||
{
|
||||
main.smaliBrowseInputDirTxtBox.Text = apkFile;
|
||||
main.basicInfoTabPage.BackColor = Color.White;
|
||||
main.basicInfoTabPage.BackColor = PanelBackColor();
|
||||
main.GetApkInfo(apkFile);
|
||||
}
|
||||
}
|
||||
|
||||
Color PanelBackColor()
|
||||
{
|
||||
if (Program.IsDarkTheme())
|
||||
return DarkTheme.bgColor;
|
||||
return Color.White;
|
||||
}
|
||||
|
||||
Color PanelHoverBackColor()
|
||||
{
|
||||
if (Program.IsDarkTheme())
|
||||
return Color.Gray;
|
||||
return Color.LightGreen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using Dark.Net;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
@@ -25,8 +27,14 @@ namespace APKToolGUI.Handlers
|
||||
main.apktoolIssuesToolStripMenuItem.Click += apktoolIssuesLinkItem_Click;
|
||||
main.baksmaliIssuesToolStripMenuItem.Click += baksmaliIssuesLinkItem_Click;
|
||||
main.reportAnIsuueToolStripMenuItem.Click += reportAnIsuueToolStripMenuItem_Click;
|
||||
|
||||
main.newInsToolStripMenuItem.Click += newInsToolStripMenuItem_Click;
|
||||
}
|
||||
|
||||
private void newInsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);
|
||||
}
|
||||
|
||||
private void saveLogItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (var sfd = new SaveFileDialog())
|
||||
@@ -44,7 +52,15 @@ namespace APKToolGUI.Handlers
|
||||
|
||||
private void menuItemSettings_Click(object sender, EventArgs e)
|
||||
{
|
||||
Theme theme = (Theme)Settings.Default.Theme;
|
||||
|
||||
if (Program.IsWin10OrAbove())
|
||||
DarkNet.Instance.SetCurrentProcessTheme(theme);
|
||||
|
||||
FormSettings frm = new FormSettings();
|
||||
|
||||
if (Program.IsWin10OrAbove())
|
||||
DarkNet.Instance.SetWindowThemeForms(frm, theme);
|
||||
frm.ShowDialog();
|
||||
}
|
||||
|
||||
@@ -66,7 +82,14 @@ namespace APKToolGUI.Handlers
|
||||
|
||||
private void menuItemAbout_Click(object sender, EventArgs e)
|
||||
{
|
||||
Theme theme = (Theme)Settings.Default.Theme;
|
||||
|
||||
if (Program.IsWin10OrAbove())
|
||||
DarkNet.Instance.SetCurrentProcessTheme(theme);
|
||||
|
||||
FormAboutBox frm = new FormAboutBox();
|
||||
if (Program.IsWin10OrAbove())
|
||||
DarkNet.Instance.SetWindowThemeForms(frm, theme);
|
||||
frm.ShowDialog();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using APKToolGUI.Properties;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -32,8 +33,13 @@ namespace Java
|
||||
public new bool Start(string args)
|
||||
{
|
||||
EnableRaisingEvents = true;
|
||||
StartInfo.Arguments = String.Format("-jar \"{0}\" {1}", JarPath, args);
|
||||
Debug.WriteLine(String.Format("-jar \"{0}\" {1}", JarPath, args));
|
||||
string customArgs = null;
|
||||
|
||||
if (Settings.Default.UseCustomJVMArgs)
|
||||
customArgs = Settings.Default.CustomJVMArgs;
|
||||
|
||||
StartInfo.Arguments = String.Format("-jar {0} \"{1}\" {2}", customArgs, JarPath, args);
|
||||
Debug.WriteLine(String.Format("-jar {0} \"{1}\" {2}", customArgs, JarPath, args));
|
||||
return base.Start();
|
||||
}
|
||||
|
||||
@@ -78,8 +84,21 @@ namespace Java
|
||||
javaProcess.Start();
|
||||
string output = javaProcess.StandardError.ReadToEnd();
|
||||
javaProcess.WaitForExit(3000);
|
||||
|
||||
//I use _JAVA_OPTIONS so I want the prompt removed
|
||||
if (output.Contains("_JAVA_OPTIONS"))
|
||||
{
|
||||
int n = 2;
|
||||
string[] lines = output
|
||||
.Split(Environment.NewLine.ToCharArray())
|
||||
.Skip(n)
|
||||
.ToArray();
|
||||
|
||||
output = string.Join(Environment.NewLine, lines);
|
||||
}
|
||||
|
||||
if (!String.IsNullOrEmpty(output))
|
||||
return output = output.Remove(output.LastIndexOf(Environment.NewLine));
|
||||
return output.Replace("\r\n\r\n", "\n").Trim();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
+58
-4
@@ -195,6 +195,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Clearing temp folder.
|
||||
/// </summary>
|
||||
internal static string ClearTempFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("ClearTempFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Compile APK.
|
||||
/// </summary>
|
||||
@@ -393,6 +402,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Deleting folder: {0}.
|
||||
/// </summary>
|
||||
internal static string DeletingFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("DeletingFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} detected as base.
|
||||
/// </summary>
|
||||
@@ -438,6 +456,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The directory "{0}" does not exist.
|
||||
/// </summary>
|
||||
internal static string DirectoryNotExist {
|
||||
get {
|
||||
return ResourceManager.GetString("DirectoryNotExist", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Directory "{0}" does not exist.
|
||||
/// </summary>
|
||||
@@ -735,6 +762,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Fixed apktool.yml.
|
||||
/// </summary>
|
||||
internal static string FixApktoolYml {
|
||||
get {
|
||||
return ResourceManager.GetString("FixApktoolYml", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Folder does not exist.
|
||||
/// </summary>
|
||||
@@ -781,7 +817,7 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Get APK Info.
|
||||
/// Looks up a localized string similar to View APK Info.
|
||||
/// </summary>
|
||||
internal static string GetApkInfo {
|
||||
get {
|
||||
@@ -996,6 +1032,24 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Open compile output folder.
|
||||
/// </summary>
|
||||
internal static string OpenComFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("OpenComFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Open decompile output folder.
|
||||
/// </summary>
|
||||
internal static string OpenDecFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("OpenDecFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Parsing APK Info....
|
||||
/// </summary>
|
||||
@@ -1033,11 +1087,11 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The language is set. Do you want to restart the application?.
|
||||
/// Looks up a localized string similar to Restart is required to apply changes. Do you want to restart the application?.
|
||||
/// </summary>
|
||||
internal static string SetLanguageRestartApplication {
|
||||
internal static string RestartApplicationPrompt {
|
||||
get {
|
||||
return ResourceManager.GetString("SetLanguageRestartApplication", resourceCulture);
|
||||
return ResourceManager.GetString("RestartApplicationPrompt", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
<value>Beállítások</value>
|
||||
</data>
|
||||
<data name="ErrorJavaDetect" xml:space="preserve">
|
||||
<value>Java nincs vagy rosszul van telepítve. Telepítse a Javát, vagy adja meg az egyéni helyét a Beállításokban</value>
|
||||
<value>Java nincs vagy rosszul van telepítve. Telepítse a Javát vagy adja meg az egyéni helyét a Beállításokban</value>
|
||||
</data>
|
||||
<data name="ErrorReadSettings" xml:space="preserve">
|
||||
<value>Hiba a beállítások olvasásakor!</value>
|
||||
@@ -249,18 +249,6 @@
|
||||
<data name="SignInputFileNotFound" xml:space="preserve">
|
||||
<value>A bemeneti fájl nem található.</value>
|
||||
</data>
|
||||
<data name="Decoding" xml:space="preserve">
|
||||
<value>Dekódolás</value>
|
||||
</data>
|
||||
<data name="DecodeDesDirExists" xml:space="preserve">
|
||||
<value>"{0}" célkönyvtár már létezik. Ha felül kívánja írni a célkönyvtárat, kapcsolja be a "Célkönyvtár törlésének kikényszerítése" opciót.</value>
|
||||
</data>
|
||||
<data name="MoveTempApkFileToOutput" xml:space="preserve">
|
||||
<value>"{0}" ideiglenes mappa áthelyezése "{1}" kimeneti könyvtárba.</value>
|
||||
</data>
|
||||
<data name="MoveTempApkToOutput" xml:space="preserve">
|
||||
<value>"{0}" ideiglenes apk fájl áthelyezése "{1}" kimeneti könyvtárba.</value>
|
||||
</data>
|
||||
<data name="SignPrivateKeyNotFound" xml:space="preserve">
|
||||
<value>Privát kulcs nem található.</value>
|
||||
</data>
|
||||
@@ -279,6 +267,9 @@
|
||||
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
|
||||
<value>A kiválasztott keretkönyvtár nem létezik.</value>
|
||||
</data>
|
||||
<data name="Decoding" xml:space="preserve">
|
||||
<value>Dekódolás</value>
|
||||
</data>
|
||||
<data name="ErrorDecompiling" xml:space="preserve">
|
||||
<value>A dekompilálás sikertelen</value>
|
||||
</data>
|
||||
@@ -391,7 +382,7 @@
|
||||
<value>Ez a mappa nem dekompilált DEX</value>
|
||||
</data>
|
||||
<data name="RequiredFilesMissing" xml:space="preserve">
|
||||
<value>A szükséges fájlok hiányoznak</value>
|
||||
<value>Szükséges fájlok hiányoznak</value>
|
||||
</data>
|
||||
<data name="SignApk" xml:space="preserve">
|
||||
<value>APK aláírása</value>
|
||||
@@ -426,4 +417,103 @@
|
||||
<data name="CopyFolderToTemp" xml:space="preserve">
|
||||
<value>Dekompilált apk mappa "{0}" másolása "{1}" ideiglenes könyvtárba.</value>
|
||||
</data>
|
||||
<data name="DecodeDesDirExists" xml:space="preserve">
|
||||
<value>A "{0}" célkönyvtár már létezik. Ha felül szeretné írni, engedélyezze a "Célkönyvtár kényszerített törlésének" beállítását.</value>
|
||||
</data>
|
||||
<data name="MoveTempApkFileToOutput" xml:space="preserve">
|
||||
<value>A "{0}" ideiglenes mappa áthelyezése a "{1}" kimeneti könyvtárba</value>
|
||||
</data>
|
||||
<data name="MoveTempApkToOutput" xml:space="preserve">
|
||||
<value>A(z) "{0}" ideiglenes apk áthelyezése a "{1}" kimeneti könyvtárba</value>
|
||||
</data>
|
||||
<data name="ParsingApkInfo" xml:space="preserve">
|
||||
<value>APK információk elemzése...</value>
|
||||
</data>
|
||||
<data name="SetLanguageRestartApplication" xml:space="preserve">
|
||||
<value>A nyelv be van állítva. Újra akarja indítani az alkalmazást?</value>
|
||||
</data>
|
||||
<data name="DecompilingAllApkFiles" xml:space="preserve">
|
||||
<value>Az összes APK fájl visszafejtése</value>
|
||||
</data>
|
||||
<data name="DetectedAsBase" xml:space="preserve">
|
||||
<value>{0} bázisként észlelve</value>
|
||||
</data>
|
||||
<data name="DetectedAsSplit" xml:space="preserve">
|
||||
<value>{0} részeként észlelve</value>
|
||||
</data>
|
||||
<data name="ExtractingAllApkFiles" xml:space="preserve">
|
||||
<value>Az összes APK fájl kicsomagolása</value>
|
||||
</data>
|
||||
<data name="MergeFinishedMoveDir" xml:space="preserve">
|
||||
<value>Egyesítés kész. Könyvtár áthelyezése ide: "{0}"</value>
|
||||
</data>
|
||||
<data name="MergingApk" xml:space="preserve">
|
||||
<value>APK egyesítése</value>
|
||||
</data>
|
||||
<data name="MovingBasedirectory" xml:space="preserve">
|
||||
<value>Bázis könyvtár áthelyezése ide: "{0}"</value>
|
||||
</data>
|
||||
<data name="DirNotExist" xml:space="preserve">
|
||||
<value>A(z) "{0}" könyvtár nem létezik</value>
|
||||
</data>
|
||||
<data name="TempDirectory" xml:space="preserve">
|
||||
<value>Temp könyvtár: "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorMerging" xml:space="preserve">
|
||||
<value>Az ˘egyesítés nem sikerült</value>
|
||||
</data>
|
||||
<data name="ExtractOrigSignature" xml:space="preserve">
|
||||
<value>Az eredeti aláírás kibontása</value>
|
||||
</data>
|
||||
<data name="MergingApkEditor" xml:space="preserve">
|
||||
<value>APK egyesítése az APKEditor.jar használatával</value>
|
||||
</data>
|
||||
<data name="Aborted" xml:space="preserve">
|
||||
<value>Megszakítva</value>
|
||||
</data>
|
||||
<data name="CancelProcess" xml:space="preserve">
|
||||
<value>Biztosan megszakítja a folyamatot?</value>
|
||||
</data>
|
||||
<data name="GettingDevices" xml:space="preserve">
|
||||
<value>Eszközök keresése...</value>
|
||||
</data>
|
||||
<data name="PleaseWait" xml:space="preserve">
|
||||
<value>Kis türelmet...</value>
|
||||
</data>
|
||||
<data name="ConfirmKillingAdbServer" xml:space="preserve">
|
||||
<value>Biztosan leállítja az ADB szervert? Lehet, hogy újra kell csatlakoztatnia az eszközt, vagy újra kell indítania az emulátort</value>
|
||||
</data>
|
||||
<data name="DeviceNotSelected" xml:space="preserve">
|
||||
<value>Az eszköz nincs kiválasztva</value>
|
||||
</data>
|
||||
<data name="DeviceSelected" xml:space="preserve">
|
||||
<value>Kiválasztott eszköz: "{0}"</value>
|
||||
</data>
|
||||
<data name="DevicesFound" xml:space="preserve">
|
||||
<value>{0} eszköz található</value>
|
||||
</data>
|
||||
<data name="InstallApkFailed" xml:space="preserve">
|
||||
<value>Az APK telepítése nem sikerült</value>
|
||||
</data>
|
||||
<data name="InstallApkSuccessful" xml:space="preserve">
|
||||
<value>Az APK telepítése sikeres volt</value>
|
||||
</data>
|
||||
<data name="InstallingApk" xml:space="preserve">
|
||||
<value>APK telepítése</value>
|
||||
</data>
|
||||
<data name="InstallingApkPath" xml:space="preserve">
|
||||
<value>"{0}" APK telepítése</value>
|
||||
</data>
|
||||
<data name="NoDevicesFound" xml:space="preserve">
|
||||
<value>Nem találhatók eszközök. Győződjön meg róla, hogy eszközén be van kapcsolva az adb hibakeresés. Ha emulátort használ, indítsa újra és várja meg amíg elindul</value>
|
||||
</data>
|
||||
<data name="TimeEnded" xml:space="preserve">
|
||||
<value>Befejezve: {0}</value>
|
||||
</data>
|
||||
<data name="TimeStarted" xml:space="preserve">
|
||||
<value>Elkezdve: {0}</value>
|
||||
</data>
|
||||
<data name="ClearFrameworkPrompt" xml:space="preserve">
|
||||
<value>A váratlan hibák elkerülése érdekében az Apktool verziójának módosítása után törölni kell a framework gyorsítótárát. Szeretné most törölni?</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -373,7 +373,7 @@
|
||||
<value>Disassemble DEX</value>
|
||||
</data>
|
||||
<data name="GetApkInfo" xml:space="preserve">
|
||||
<value>Get APK Info</value>
|
||||
<value>View APK Info</value>
|
||||
</data>
|
||||
<data name="NotDecompiledApk" xml:space="preserve">
|
||||
<value>This folder is not a decompiled APK</value>
|
||||
@@ -429,8 +429,8 @@
|
||||
<data name="ParsingApkInfo" xml:space="preserve">
|
||||
<value>Parsing APK Info...</value>
|
||||
</data>
|
||||
<data name="SetLanguageRestartApplication" xml:space="preserve">
|
||||
<value>The language is set. Do you want to restart the application?</value>
|
||||
<data name="RestartApplicationPrompt" xml:space="preserve">
|
||||
<value>Restart is required to apply changes. Do you want to restart the application?</value>
|
||||
</data>
|
||||
<data name="DecompilingAllApkFiles" xml:space="preserve">
|
||||
<value>Decompiling all APK files</value>
|
||||
@@ -516,4 +516,22 @@
|
||||
<data name="ClearFrameworkPrompt" xml:space="preserve">
|
||||
<value>It is required to clear framework cache after changing Apktool version to avoid unexpected errors. Do you want to clear it now?</value>
|
||||
</data>
|
||||
<data name="ClearTempFolder" xml:space="preserve">
|
||||
<value>Clearing temp folder</value>
|
||||
</data>
|
||||
<data name="DeletingFolder" xml:space="preserve">
|
||||
<value>Deleting folder: {0}</value>
|
||||
</data>
|
||||
<data name="DirectoryNotExist" xml:space="preserve">
|
||||
<value>The directory "{0}" does not exist</value>
|
||||
</data>
|
||||
<data name="OpenComFolder" xml:space="preserve">
|
||||
<value>Open compile output folder</value>
|
||||
</data>
|
||||
<data name="OpenDecFolder" xml:space="preserve">
|
||||
<value>Open decompile output folder</value>
|
||||
</data>
|
||||
<data name="FixApktoolYml" xml:space="preserve">
|
||||
<value>Fixed apktool.yml</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -117,26 +117,83 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="SystemLanguage" xml:space="preserve">
|
||||
<value>Язык системы</value>
|
||||
<data name="About" xml:space="preserve">
|
||||
<value>О программе</value>
|
||||
</data>
|
||||
<data name="UpdateNewVersion" xml:space="preserve">
|
||||
<value>Доступна новая версия. Выполнить обновление?</value>
|
||||
<data name="APKToolVersion" xml:space="preserve">
|
||||
<value>Версия Apktool</value>
|
||||
</data>
|
||||
<data name="Done" xml:space="preserve">
|
||||
<value>Готово</value>
|
||||
<data name="CheckForUpdate" xml:space="preserve">
|
||||
<value>Проверить обновления</value>
|
||||
</data>
|
||||
<data name="DebugMode" xml:space="preserve">
|
||||
<value>Режим Debug</value>
|
||||
</data>
|
||||
<data name="Exit" xml:space="preserve">
|
||||
<value>Выход</value>
|
||||
</data>
|
||||
<data name="File" xml:space="preserve">
|
||||
<value>Файл</value>
|
||||
</data>
|
||||
<data name="Help" xml:space="preserve">
|
||||
<value>Помощь</value>
|
||||
</data>
|
||||
<data name="Settings" xml:space="preserve">
|
||||
<value>Настройки</value>
|
||||
</data>
|
||||
<data name="ErrorJavaDetect" xml:space="preserve">
|
||||
<value>Java не установлена или установлена не корректно. Программа будет закрыта.</value>
|
||||
<value>Java не установлена или установлена некорректно. Пожалуйста, установите Java или укажите путь в настройках</value>
|
||||
</data>
|
||||
<data name="ErrorReadSettings" xml:space="preserve">
|
||||
<value>Ошибка при чтении файла настроек!</value>
|
||||
</data>
|
||||
<data name="UpdateNewVersion" xml:space="preserve">
|
||||
<value>Доступна новая версия. Загрузить обновление?</value>
|
||||
</data>
|
||||
<data name="UpdateNoUpdates" xml:space="preserve">
|
||||
<value>Нет доступных обновлений.</value>
|
||||
<value>Нет обновлений.</value>
|
||||
</data>
|
||||
<data name="DoYouWantToSelectJavaLocation" xml:space="preserve">
|
||||
<value>Java не найдена. Хотите указать расположение вручную?</value>
|
||||
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
|
||||
<value>Папка для декодирования не выбрана!</value>
|
||||
</data>
|
||||
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
|
||||
<value>Файл для декодирования не выбран!</value>
|
||||
</data>
|
||||
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
|
||||
<value>Файл для подписи не выбран!</value>
|
||||
</data>
|
||||
<data name="WarningFrameworkNotSelected" xml:space="preserve">
|
||||
<value>Фреймворк не выбран!</value>
|
||||
<value>Не выбраны необходимые компоненты!</value>
|
||||
</data>
|
||||
<data name="ErrorSaveSettings" xml:space="preserve">
|
||||
<value>Ошибка при сохранении файла настроек!</value>
|
||||
</data>
|
||||
<data name="NeedRestart" xml:space="preserve">
|
||||
<value>Для завершения обновления необходим перезапуск. Перезапустить сейчас?</value>
|
||||
</data>
|
||||
<data name="FileNotFound" xml:space="preserve">
|
||||
<value>Файл не найден</value>
|
||||
</data>
|
||||
<data name="FolderNotExist" xml:space="preserve">
|
||||
<value>Папка не найдена</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Ошибка</value>
|
||||
</data>
|
||||
<data name="Build" xml:space="preserve">
|
||||
<value>Build</value>
|
||||
</data>
|
||||
<data name="Decode" xml:space="preserve">
|
||||
<value>Декодирование</value>
|
||||
</data>
|
||||
<data name="InstallFramework" xml:space="preserve">
|
||||
<value>Установка</value>
|
||||
</data>
|
||||
<data name="Sign" xml:space="preserve">
|
||||
<value>Подпись</value>
|
||||
</data>
|
||||
<data name="SystemLanguage" xml:space="preserve">
|
||||
<value>Язык системы</value>
|
||||
</data>
|
||||
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
|
||||
<value>Вы действительно хотите установить контекстное меню?</value>
|
||||
@@ -144,4 +201,319 @@
|
||||
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
|
||||
<value>Вы действительно хотите удалить контекстное меню?</value>
|
||||
</data>
|
||||
<data name="Done" xml:space="preserve">
|
||||
<value>Готово</value>
|
||||
</data>
|
||||
<data name="CantDetectApktoolVersion" xml:space="preserve">
|
||||
<value>Не определена версия apktool.</value>
|
||||
</data>
|
||||
<data name="DecompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Декомпиляция успешно завершена. Выходная директория "{0}".</value>
|
||||
</data>
|
||||
<data name="ErrorUpdateChecking" xml:space="preserve">
|
||||
<value>Ошибка при проверке обновлений:</value>
|
||||
</data>
|
||||
<data name="SignSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Операция успешно завершена. Файл сохранен в "{0}".</value>
|
||||
</data>
|
||||
<data name="Aligning" xml:space="preserve">
|
||||
<value>Aligning</value>
|
||||
</data>
|
||||
<data name="ErrorCompiling" xml:space="preserve">
|
||||
<value>Ошибка при компиляции</value>
|
||||
</data>
|
||||
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
|
||||
<value>Ошибка ввода тегов</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
|
||||
<value>Выбранный файл не существует.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
|
||||
<value>Ошибка при выборе папки.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
|
||||
<value>Ошибка при выборе файла. Файл не существует.</value>
|
||||
</data>
|
||||
<data name="ErrorSigning" xml:space="preserve">
|
||||
<value>Sign: ошибка</value>
|
||||
</data>
|
||||
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
|
||||
<value>Ошибка. Установка не запущена.</value>
|
||||
</data>
|
||||
<data name="InstallingFramework" xml:space="preserve">
|
||||
<value>Установка</value>
|
||||
</data>
|
||||
<data name="Signing" xml:space="preserve">
|
||||
<value>Подписывание</value>
|
||||
</data>
|
||||
<data name="SignInputFileNotFound" xml:space="preserve">
|
||||
<value>Входной файл не найден.</value>
|
||||
</data>
|
||||
<data name="SignPrivateKeyNotFound" xml:space="preserve">
|
||||
<value>Приватный ключ не найден.</value>
|
||||
</data>
|
||||
<data name="SignPublicKeyNotFound" xml:space="preserve">
|
||||
<value>Публичный ключ не найден.</value>
|
||||
</data>
|
||||
<data name="ZIPArchives" xml:space="preserve">
|
||||
<value>ZIP архивы</value>
|
||||
</data>
|
||||
<data name="DecodeCouldNotCreate" xml:space="preserve">
|
||||
<value>Выбранная директория содержит недопустимые символы и не может быть создана.</value>
|
||||
</data>
|
||||
<data name="DecodeDirNotSelected" xml:space="preserve">
|
||||
<value>Папка для декомпиляции не выбрана.</value>
|
||||
</data>
|
||||
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
|
||||
<value>Выбранная папка не существует</value>
|
||||
</data>
|
||||
<data name="Decoding" xml:space="preserve">
|
||||
<value>Декодирование</value>
|
||||
</data>
|
||||
<data name="ErrorDecompiling" xml:space="preserve">
|
||||
<value>Ошибка при декодировании</value>
|
||||
</data>
|
||||
<data name="ExecutableFile" xml:space="preserve">
|
||||
<value>Исполняемый файл</value>
|
||||
</data>
|
||||
<data name="ChangedTargetSdkTo29" xml:space="preserve">
|
||||
<value>Изменена версия SDK на 29</value>
|
||||
</data>
|
||||
<data name="ErrorVersionParsing" xml:space="preserve">
|
||||
<value>Ошибка при считывании версии</value>
|
||||
</data>
|
||||
<data name="FixAndroidManifest" xml:space="preserve">
|
||||
<value>Измененный AndroidManifest.xml</value>
|
||||
</data>
|
||||
<data name="RemoveApkToolDummies" xml:space="preserve">
|
||||
<value>Удалены все дополнения для ApkTool</value>
|
||||
</data>
|
||||
<data name="APKSelected" xml:space="preserve">
|
||||
<value>Выбранный APK:</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFolderNotExist" xml:space="preserve">
|
||||
<value>Выбранная папка не существует.</value>
|
||||
</data>
|
||||
<data name="AndroidManifestNotExist" xml:space="preserve">
|
||||
<value>AndroidManifest.xml не найден</value>
|
||||
</data>
|
||||
<data name="DecompiledAPKNotExist" xml:space="preserve">
|
||||
<value>Декомпилированный каталог APK не существует</value>
|
||||
</data>
|
||||
<data name="MainActivityFound" xml:space="preserve">
|
||||
<value>MainActivity найден в "{0}"</value>
|
||||
</data>
|
||||
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
|
||||
<value>Не найден MainActivity. Попробуйте выполнить поиск вручную</value>
|
||||
</data>
|
||||
<data name="ClearingFramework" xml:space="preserve">
|
||||
<value>Очистка</value>
|
||||
</data>
|
||||
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Компиляция успешно завершена. Выходная папка "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorZipalign" xml:space="preserve">
|
||||
<value>Zipalign: ошибка</value>
|
||||
</data>
|
||||
<data name="ZipalignFileSavedTo" xml:space="preserve">
|
||||
<value>Zipalign: успешно завершено. Файл сохранен в "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorClearingFw" xml:space="preserve">
|
||||
<value>Ошибка при очистке</value>
|
||||
</data>
|
||||
<data name="FrameworkCacheCleared" xml:space="preserve">
|
||||
<value>Кеш очищен</value>
|
||||
</data>
|
||||
<data name="AllDone" xml:space="preserve">
|
||||
<value>Завершено!</value>
|
||||
</data>
|
||||
<data name="FrameworkInstalled" xml:space="preserve">
|
||||
<value>Успешно установлено</value>
|
||||
</data>
|
||||
<data name="FrameworkDirNotExist" xml:space="preserve">
|
||||
<value>Папка не существует</value>
|
||||
</data>
|
||||
<data name="DecompilingDex" xml:space="preserve">
|
||||
<value>Декомпиляция DEX</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedOutputFolderNotExist" xml:space="preserve">
|
||||
<value>Выбранная выходная папка не существует.</value>
|
||||
</data>
|
||||
<data name="CompilingDex" xml:space="preserve">
|
||||
<value>Компиляция DEX</value>
|
||||
</data>
|
||||
<data name="DragDropNotSupported" xml:space="preserve">
|
||||
<value>Программа запущена в режиме администратора. Drag & drop не поддерживается</value>
|
||||
</data>
|
||||
<data name="DragDropSupported" xml:space="preserve">
|
||||
<value>Drag & drop поддерживается</value>
|
||||
</data>
|
||||
<data name="ErrorNotAnApk" xml:space="preserve">
|
||||
<value>Эта папка не является пакетом Android</value>
|
||||
</data>
|
||||
<data name="Baksmali" xml:space="preserve">
|
||||
<value>Baksmali</value>
|
||||
</data>
|
||||
<data name="Smali" xml:space="preserve">
|
||||
<value>Smali</value>
|
||||
</data>
|
||||
<data name="Zipalign" xml:space="preserve">
|
||||
<value>Zipalign</value>
|
||||
</data>
|
||||
<data name="CompileApk" xml:space="preserve">
|
||||
<value>Компиляция APK</value>
|
||||
</data>
|
||||
<data name="CompileDex" xml:space="preserve">
|
||||
<value>Assemble DEX</value>
|
||||
</data>
|
||||
<data name="DecompileApk" xml:space="preserve">
|
||||
<value>Декомпиляция APK</value>
|
||||
</data>
|
||||
<data name="DecompileDex" xml:space="preserve">
|
||||
<value>Дизассемблирование DEX</value>
|
||||
</data>
|
||||
<data name="GetApkInfo" xml:space="preserve">
|
||||
<value>Информация о APK</value>
|
||||
</data>
|
||||
<data name="NotDecompiledApk" xml:space="preserve">
|
||||
<value>Эта папка не является декомпилированным АРК</value>
|
||||
</data>
|
||||
<data name="NotDecompiledDex" xml:space="preserve">
|
||||
<value>Эта папка не является декомпилированным DEX</value>
|
||||
</data>
|
||||
<data name="RequiredFilesMissing" xml:space="preserve">
|
||||
<value>Отсутствуют необходимые файлы</value>
|
||||
</data>
|
||||
<data name="SignApk" xml:space="preserve">
|
||||
<value>Подпись APK</value>
|
||||
</data>
|
||||
<data name="TextFile" xml:space="preserve">
|
||||
<value>Текстовый файл</value>
|
||||
</data>
|
||||
<data name="ZipalignApk" xml:space="preserve">
|
||||
<value>Zipalign APK</value>
|
||||
</data>
|
||||
<data name="CreateUnsignedApk" xml:space="preserve">
|
||||
<value>Создание APK (unsigned)</value>
|
||||
</data>
|
||||
<data name="MetainfNotExist" xml:space="preserve">
|
||||
<value>Папка META-INF не существует.</value>
|
||||
</data>
|
||||
<data name="ErrorGettingApkInfo" xml:space="preserve">
|
||||
<value>Ошибка при получении информации о APK</value>
|
||||
</data>
|
||||
<data name="InputDirectory" xml:space="preserve">
|
||||
<value>Входная папка: {0}</value>
|
||||
</data>
|
||||
<data name="InputFile" xml:space="preserve">
|
||||
<value>Входной файл: {0}</value>
|
||||
</data>
|
||||
<data name="DeleteFile" xml:space="preserve">
|
||||
<value>Удален файл "{0}"</value>
|
||||
</data>
|
||||
<data name="CopyFileToTemp" xml:space="preserve">
|
||||
<value>Файл "{0}" скопирован во временную папку "{1}"</value>
|
||||
</data>
|
||||
<data name="CopyFolderToTemp" xml:space="preserve">
|
||||
<value>Копирование декомпилированного АРК "{0}" во временную папку "{1}"</value>
|
||||
</data>
|
||||
<data name="DecodeDesDirExists" xml:space="preserve">
|
||||
<value>Целевая папка "{0}" уже существует. Используйте опцию принудительного удаления, если вы хотите ее перезаписать.</value>
|
||||
</data>
|
||||
<data name="MoveTempApkFileToOutput" xml:space="preserve">
|
||||
<value>Перемещение временной папки "{0}" в выходной каталог "{1}"</value>
|
||||
</data>
|
||||
<data name="MoveTempApkToOutput" xml:space="preserve">
|
||||
<value>Перемещение временного АРК "{0}" в выходной каталог "{1}"</value>
|
||||
</data>
|
||||
<data name="ParsingApkInfo" xml:space="preserve">
|
||||
<value>Чтение информации о APK...</value>
|
||||
</data>
|
||||
<data name="SetLanguageRestartApplication" xml:space="preserve">
|
||||
<value>Язык установлен. Хотите перезапустить программу?</value>
|
||||
</data>
|
||||
<data name="DecompilingAllApkFiles" xml:space="preserve">
|
||||
<value>Декомпиляция всех APK файлов</value>
|
||||
</data>
|
||||
<data name="DetectedAsBase" xml:space="preserve">
|
||||
<value>{0} определен как базовый</value>
|
||||
</data>
|
||||
<data name="DetectedAsSplit" xml:space="preserve">
|
||||
<value>{0} определен как split</value>
|
||||
</data>
|
||||
<data name="ExtractingAllApkFiles" xml:space="preserve">
|
||||
<value>Извлечение всех APK файлов</value>
|
||||
</data>
|
||||
<data name="MergeFinishedMoveDir" xml:space="preserve">
|
||||
<value>Слияние завершено. Перемещение каталога в "{0}"</value>
|
||||
</data>
|
||||
<data name="MergingApk" xml:space="preserve">
|
||||
<value>Слияние APK</value>
|
||||
</data>
|
||||
<data name="MovingBasedirectory" xml:space="preserve">
|
||||
<value>Перемещение базового каталога в "{0}"</value>
|
||||
</data>
|
||||
<data name="DirNotExist" xml:space="preserve">
|
||||
<value>Папка "{0}" не существует</value>
|
||||
</data>
|
||||
<data name="TempDirectory" xml:space="preserve">
|
||||
<value>Временная папка: "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorMerging" xml:space="preserve">
|
||||
<value>Ошибка при слиянии</value>
|
||||
</data>
|
||||
<data name="ExtractOrigSignature" xml:space="preserve">
|
||||
<value>Извлечение оригинальной подписи</value>
|
||||
</data>
|
||||
<data name="MergingApkEditor" xml:space="preserve">
|
||||
<value>Слияние APK с помощью APKEditor.jar</value>
|
||||
</data>
|
||||
<data name="Aborted" xml:space="preserve">
|
||||
<value>Отменено</value>
|
||||
</data>
|
||||
<data name="CancelProcess" xml:space="preserve">
|
||||
<value>Вы действительно хотите прервать процесс?</value>
|
||||
</data>
|
||||
<data name="GettingDevices" xml:space="preserve">
|
||||
<value>Получение устройств...</value>
|
||||
</data>
|
||||
<data name="PleaseWait" xml:space="preserve">
|
||||
<value>Пожалуйста, подождите...</value>
|
||||
</data>
|
||||
<data name="ConfirmKillingAdbServer" xml:space="preserve">
|
||||
<value>Вы действительно хотите завершить работу ADB сервера? После завершения работы необходимо переподключить устройство или перезапустить эмулятор</value>
|
||||
</data>
|
||||
<data name="DeviceNotSelected" xml:space="preserve">
|
||||
<value>Устройство не выбрано</value>
|
||||
</data>
|
||||
<data name="DeviceSelected" xml:space="preserve">
|
||||
<value>Выбрано устройство "{0}"</value>
|
||||
</data>
|
||||
<data name="DevicesFound" xml:space="preserve">
|
||||
<value>Найдено {0} устройств</value>
|
||||
</data>
|
||||
<data name="InstallApkFailed" xml:space="preserve">
|
||||
<value>Ошибка при установке АРК</value>
|
||||
</data>
|
||||
<data name="InstallApkSuccessful" xml:space="preserve">
|
||||
<value>Установка АРК успешно завершена</value>
|
||||
</data>
|
||||
<data name="InstallingApk" xml:space="preserve">
|
||||
<value>Установка APK</value>
|
||||
</data>
|
||||
<data name="InstallingApkPath" xml:space="preserve">
|
||||
<value>Установлено APK "{0}"</value>
|
||||
</data>
|
||||
<data name="NoDevicesFound" xml:space="preserve">
|
||||
<value>Устройств не обнаружено. Убедитесь, что ваше устройство подключено к компьютеру с включенной отладкой ADB. Если вы используете эмулятор, перезапустите его и дождитесь завершения загрузки</value>
|
||||
</data>
|
||||
<data name="TimeEnded" xml:space="preserve">
|
||||
<value>Время завершения: {0}</value>
|
||||
</data>
|
||||
<data name="TimeStarted" xml:space="preserve">
|
||||
<value>Время начала: {0}</value>
|
||||
</data>
|
||||
<data name="ClearFrameworkPrompt" xml:space="preserve">
|
||||
<value>После изменения версии Apktool необходимо очистить кеш. Вы хотите очистить его сейчас?</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -426,4 +426,94 @@
|
||||
<data name="MoveTempApkToOutput" xml:space="preserve">
|
||||
<value>移动临时 apk"{0}" 到输出目录 "{1}"</value>
|
||||
</data>
|
||||
<data name="ParsingApkInfo" xml:space="preserve">
|
||||
<value>正在解析 APK 信息...</value>
|
||||
</data>
|
||||
<data name="RestartApplicationPrompt" xml:space="preserve">
|
||||
<value>需要重新启动才能应用更改。 是否要重新启动应用程序?</value>
|
||||
</data>
|
||||
<data name="DecompilingAllApkFiles" xml:space="preserve">
|
||||
<value>正在反编译所有 APK 文件</value>
|
||||
</data>
|
||||
<data name="DetectedAsBase" xml:space="preserve">
|
||||
<value>{0} 检测为基本模块</value>
|
||||
</data>
|
||||
<data name="DetectedAsSplit" xml:space="preserve">
|
||||
<value>{0} 检测为拆分</value>
|
||||
</data>
|
||||
<data name="ExtractingAllApkFiles" xml:space="preserve">
|
||||
<value>提取所有 APK 文件</value>
|
||||
</data>
|
||||
<data name="MergeFinishedMoveDir" xml:space="preserve">
|
||||
<value>合并完成。移动目录到 "{0}"</value>
|
||||
</data>
|
||||
<data name="MergingApk" xml:space="preserve">
|
||||
<value>正在合并 APK</value>
|
||||
</data>
|
||||
<data name="MovingBasedirectory" xml:space="preserve">
|
||||
<value>正在基本模块目录到 "{0}"</value>
|
||||
</data>
|
||||
<data name="DirNotExist" xml:space="preserve">
|
||||
<value>目录 "{0}" 不存在</value>
|
||||
</data>
|
||||
<data name="TempDirectory" xml:space="preserve">
|
||||
<value>临时目录: "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorMerging" xml:space="preserve">
|
||||
<value>合并失败</value>
|
||||
</data>
|
||||
<data name="ExtractOrigSignature" xml:space="preserve">
|
||||
<value>提取原始签名</value>
|
||||
</data>
|
||||
<data name="MergingApkEditor" xml:space="preserve">
|
||||
<value>使用 APKEditor.jar 合并 APK</value>
|
||||
</data>
|
||||
<data name="Aborted" xml:space="preserve">
|
||||
<value>已终止</value>
|
||||
</data>
|
||||
<data name="CancelProcess" xml:space="preserve">
|
||||
<value>您确定要取消该进程吗?</value>
|
||||
</data>
|
||||
<data name="GettingDevices" xml:space="preserve">
|
||||
<value>正在获取设备...</value>
|
||||
</data>
|
||||
<data name="PleaseWait" xml:space="preserve">
|
||||
<value>请稍候...</value>
|
||||
</data>
|
||||
<data name="ConfirmKillingAdbServer" xml:space="preserve">
|
||||
<value>您确定要终止 ADB 服务器吗? 您可能需要重新连接您的设备或重新启动模拟器</value>
|
||||
</data>
|
||||
<data name="DeviceNotSelected" xml:space="preserve">
|
||||
<value>未选择设备</value>
|
||||
</data>
|
||||
<data name="DeviceSelected" xml:space="preserve">
|
||||
<value>已选择 "{0}" 设备</value>
|
||||
</data>
|
||||
<data name="DevicesFound" xml:space="preserve">
|
||||
<value>发现 {0} 设备</value>
|
||||
</data>
|
||||
<data name="InstallApkFailed" xml:space="preserve">
|
||||
<value>APK 安装失败</value>
|
||||
</data>
|
||||
<data name="InstallApkSuccessful" xml:space="preserve">
|
||||
<value>APK 安装成功</value>
|
||||
</data>
|
||||
<data name="InstallingApk" xml:space="preserve">
|
||||
<value>正在安装 APK</value>
|
||||
</data>
|
||||
<data name="InstallingApkPath" xml:space="preserve">
|
||||
<value>正在安装 APK "{0}"</value>
|
||||
</data>
|
||||
<data name="NoDevicesFound" xml:space="preserve">
|
||||
<value>未找到设备。 确保您的设备已连接到计算机并打开了 adb 调试。 如果您使用模拟器,请重新启动它并等待它启动</value>
|
||||
</data>
|
||||
<data name="TimeEnded" xml:space="preserve">
|
||||
<value>结束时间: {0}</value>
|
||||
</data>
|
||||
<data name="TimeStarted" xml:space="preserve">
|
||||
<value>开始时间: {0}</value>
|
||||
</data>
|
||||
<data name="ClearFrameworkPrompt" xml:space="preserve">
|
||||
<value>更改 Apktool 版本后需要清除框架缓存以避免意外错误。 你想现在清除它吗?</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
+71
-13
@@ -2,6 +2,8 @@
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using Bluegrams.Application;
|
||||
using Dark.Net;
|
||||
using OSVersionExtension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
@@ -28,13 +30,17 @@ namespace APKToolGUI
|
||||
{
|
||||
try
|
||||
{
|
||||
//Debug.WriteLine(Application.ProductName);
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
if (Environment.OSVersion.Version.Major == 6)
|
||||
{
|
||||
SetProcessDPIAware();
|
||||
}
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
PortableSettingsProvider.SettingsFileName = "config.xml";
|
||||
PortableSettingsProvider.ApplyProvider(Settings.Default);
|
||||
|
||||
if (arg.Length == 1)
|
||||
{
|
||||
@@ -46,6 +52,26 @@ namespace APKToolGUI
|
||||
case "rcm":
|
||||
ExplorerContextMenuMethod(ExplorerContextMenu.Action.Remove);
|
||||
break;
|
||||
case "opendecfolder":
|
||||
if (Settings.Default.Decode_UseOutputDir)
|
||||
{
|
||||
string outDir = Settings.Default.Decode_OutputDir;
|
||||
if (Directory.Exists(outDir))
|
||||
Process.Start(outDir);
|
||||
else
|
||||
MessageBox.Show(String.Format(Language.DirectoryNotExist, outDir), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
break;
|
||||
case "opencomfolder":
|
||||
if (Settings.Default.Build_UseOutputAppPath)
|
||||
{
|
||||
string outDir = Settings.Default.Build_OutputAppPath;
|
||||
if (Directory.Exists(outDir))
|
||||
Process.Start(outDir);
|
||||
else
|
||||
MessageBox.Show(String.Format(Language.DirectoryNotExist, outDir), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -65,13 +91,20 @@ namespace APKToolGUI
|
||||
}
|
||||
if (FilesCheck() == true)
|
||||
{
|
||||
PortableSettingsProvider.SettingsFileName = "config.xml";
|
||||
PortableSettingsProvider.ApplyProvider(Settings.Default);
|
||||
|
||||
TEMP_PATH = TempDirectory();
|
||||
TEMP_PATH = RandTempDirectory();
|
||||
TEMP_MAIN = TempDirectory();
|
||||
Directory.CreateDirectory(TEMP_PATH);
|
||||
|
||||
Application.Run(new FormMain());
|
||||
Theme theme = (Theme)Settings.Default.Theme;
|
||||
if (IsWin10OrAbove())
|
||||
DarkNet.Instance.SetCurrentProcessTheme(theme);
|
||||
|
||||
Form mainForm = new FormMain();
|
||||
|
||||
if (IsWin10OrAbove())
|
||||
DarkNet.Instance.SetWindowThemeForms(mainForm, theme);
|
||||
|
||||
Application.Run(mainForm);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,6 +115,29 @@ namespace APKToolGUI
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsWin10OrAbove()
|
||||
{
|
||||
// Check if the operating system is Windows 10 or above
|
||||
if (OSVersion.GetOSVersion().Version.Major >= 10 && OSVersion.GetOSVersion().Version.Minor >= 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static bool IsDarkTheme()
|
||||
{
|
||||
if (IsWin10OrAbove())
|
||||
return DarkNet.Instance.EffectiveCurrentProcessThemeIsDark;
|
||||
else if (Settings.Default.Theme == 2)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void SetLanguage()
|
||||
{
|
||||
String settingsCulture = Settings.Default.Culture;
|
||||
@@ -137,7 +193,6 @@ namespace APKToolGUI
|
||||
AAPT2_PATH,
|
||||
SIGNAPK_KEYPRIVATE,
|
||||
SIGNAPK_KEYPUBLIC,
|
||||
AAPT2JNI_PATH,
|
||||
APKEDITOR_PATH,
|
||||
ADB_PATH,
|
||||
ADBWINAPI_PATH,
|
||||
@@ -187,15 +242,19 @@ namespace APKToolGUI
|
||||
//Generate new every new instance to avoid conflict
|
||||
//We want to keep obfuscated path short as possible to prevent long path error
|
||||
if (Settings.Default.UseCustomTempDir)
|
||||
return Path.Combine(Settings.Default.TempDir, StringExt.RandStrWithCaps(5));
|
||||
return Path.Combine(Settings.Default.TempDir);
|
||||
else
|
||||
return Path.Combine(LOCAL_APPDATA_PATH, ASSEMBLY_NAME, StringExt.RandStrWithCaps(5));
|
||||
return Path.Combine(LOCAL_APPDATA_PATH, ASSEMBLY_NAME);
|
||||
}
|
||||
|
||||
public static string RandTempDirectory()
|
||||
{
|
||||
return Path.Combine(TempDirectory(), StringExt.RandStrWithCaps(5));
|
||||
}
|
||||
|
||||
public static string ASSEMBLY_NAME { get { return AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().Location).Name; } }
|
||||
public static string APP_NAME { get { return "APK Tool GUI"; } }
|
||||
|
||||
public static string TEMP_PATH { get; set; }
|
||||
public static string TEMP_MAIN { get; set; }
|
||||
public static string LOCAL_APPDATA_PATH { get { return Environment.GetEnvironmentVariable("LocalAppData"); } }
|
||||
public static string APP_PATH { get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); } }
|
||||
public static string RES_PATH { get { return Path.Combine(APP_PATH, "Resources"); } }
|
||||
@@ -208,7 +267,6 @@ namespace APKToolGUI
|
||||
public static string ZIPALIGN_PATH { get { return Path.Combine(RES_PATH, "zipalign.exe"); } }
|
||||
public static string AAPT_PATH { get { return Path.Combine(RES_PATH, "aapt.exe"); } }
|
||||
public static string AAPT2_PATH { get { return Path.Combine(RES_PATH, "aapt2.exe"); } }
|
||||
public static string AAPT2JNI_PATH { get { return Path.Combine(RES_PATH, "libaapt2_jni.dll"); } }
|
||||
public static string APKEDITOR_PATH { get { return Path.Combine(RES_PATH, "apkeditor.jar"); } }
|
||||
public static string ADB_PATH { get { return Path.Combine(RES_PATH, "adb.exe"); } }
|
||||
public static string ADBWINAPI_PATH { get { return Path.Combine(RES_PATH, "AdbWinApi.dll"); } }
|
||||
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
|
||||
// используя "*", как показано ниже:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("3.2.0.0")]
|
||||
[assembly: AssemblyFileVersion("3.2.0.0")]
|
||||
[assembly: AssemblyVersion("3.3.0.0")]
|
||||
[assembly: AssemblyFileVersion("3.3.0.0")]
|
||||
|
||||
+92
-1
@@ -12,7 +12,7 @@ namespace APKToolGUI.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -1039,6 +1039,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool UseCustomTempDir {
|
||||
get {
|
||||
return ((bool)(this["UseCustomTempDir"]));
|
||||
@@ -1051,6 +1052,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string TempDir {
|
||||
get {
|
||||
return ((string)(this["TempDir"]));
|
||||
@@ -1063,6 +1065,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool UseCustomJavaExe {
|
||||
get {
|
||||
return ((bool)(this["UseCustomJavaExe"]));
|
||||
@@ -1075,6 +1078,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool AutoDeleteIdsigFile {
|
||||
get {
|
||||
return ((bool)(this["AutoDeleteIdsigFile"]));
|
||||
@@ -1087,6 +1091,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Utf8FilenameSupport {
|
||||
get {
|
||||
return ((bool)(this["Utf8FilenameSupport"]));
|
||||
@@ -1099,6 +1104,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Sign_OverwriteInputFile {
|
||||
get {
|
||||
return ((bool)(this["Sign_OverwriteInputFile"]));
|
||||
@@ -1111,6 +1117,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_UseApkEditorMergeApk {
|
||||
get {
|
||||
return ((bool)(this["Decode_UseApkEditorMergeApk"]));
|
||||
@@ -1123,6 +1130,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Adb_SetVendor {
|
||||
get {
|
||||
return ((bool)(this["Adb_SetVendor"]));
|
||||
@@ -1135,6 +1143,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Adb_SelectedApkPath {
|
||||
get {
|
||||
return ((string)(this["Adb_SelectedApkPath"]));
|
||||
@@ -1147,6 +1156,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Sign_InstallApkAfterSign {
|
||||
get {
|
||||
return ((bool)(this["Sign_InstallApkAfterSign"]));
|
||||
@@ -1159,6 +1169,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool UseCustomApktool {
|
||||
get {
|
||||
return ((bool)(this["UseCustomApktool"]));
|
||||
@@ -1171,6 +1182,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string ApktoolPath {
|
||||
get {
|
||||
return ((string)(this["ApktoolPath"]));
|
||||
@@ -1179,5 +1191,84 @@ namespace APKToolGUI.Properties {
|
||||
this["ApktoolPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public int Theme {
|
||||
get {
|
||||
return ((int)(this["Theme"]));
|
||||
}
|
||||
set {
|
||||
this["Theme"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool DebugMode {
|
||||
get {
|
||||
return ((bool)(this["DebugMode"]));
|
||||
}
|
||||
set {
|
||||
this["DebugMode"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_NetSecConf {
|
||||
get {
|
||||
return ((bool)(this["Build_NetSecConf"]));
|
||||
}
|
||||
set {
|
||||
this["Build_NetSecConf"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_DontParseApkInfo {
|
||||
get {
|
||||
return ((bool)(this["Decode_DontParseApkInfo"]));
|
||||
}
|
||||
set {
|
||||
this["Decode_DontParseApkInfo"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool UseCustomJVMArgs {
|
||||
get {
|
||||
return ((bool)(this["UseCustomJVMArgs"]));
|
||||
}
|
||||
set {
|
||||
this["UseCustomJVMArgs"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("-Dfile.encoding=UTF8 -Djdk.util.zip.disableZip64ExtraFieldValidation=true -Djdk.n" +
|
||||
"io.zipfs.allowDotZipEntry=true")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string CustomJVMArgs {
|
||||
get {
|
||||
return ((string)(this["CustomJVMArgs"]));
|
||||
}
|
||||
set {
|
||||
this["CustomJVMArgs"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,41 +221,59 @@
|
||||
<Setting Name="PlaySoundWhenDone" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UseCustomTempDir" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="UseCustomTempDir" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="TempDir" Type="System.String" Scope="User">
|
||||
<Setting Name="TempDir" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="UseCustomJavaExe" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="UseCustomJavaExe" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="AutoDeleteIdsigFile" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="AutoDeleteIdsigFile" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Utf8FilenameSupport" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Utf8FilenameSupport" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_OverwriteInputFile" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Sign_OverwriteInputFile" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_UseApkEditorMergeApk" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_UseApkEditorMergeApk" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Adb_SetVendor" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Adb_SetVendor" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Adb_SelectedApkPath" Type="System.String" Scope="User">
|
||||
<Setting Name="Adb_SelectedApkPath" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Sign_InstallApkAfterSign" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Sign_InstallApkAfterSign" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UseCustomApktool" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="UseCustomApktool" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ApktoolPath" Type="System.String" Scope="User">
|
||||
<Setting Name="ApktoolPath" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Theme" Roaming="true" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="DebugMode" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_NetSecConf" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_DontParseApkInfo" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UseCustomJVMArgs" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="CustomJVMArgs" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">-Dfile.encoding=UTF8 -Djdk.util.zip.disableZip64ExtraFieldValidation=true -Djdk.nio.zipfs.allowDotZipEntry=true</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -28,19 +28,19 @@
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.WindowsAPICodePack.Taskbar;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using Microsoft.WindowsAPICodePack.Shell;
|
||||
using APKToolGUI.Languages;
|
||||
|
||||
namespace APKEasyTool
|
||||
{
|
||||
public class TaskBarJumpList
|
||||
{
|
||||
private JumpList list;
|
||||
|
||||
/// <summary>
|
||||
/// Creating a JumpList for the application
|
||||
/// </summary>
|
||||
/// <param name="windowHandle"></param>
|
||||
public TaskBarJumpList(IntPtr windowHandle)
|
||||
{
|
||||
list = JumpList.CreateJumpListForIndividualWindow(TaskbarManager.Instance.ApplicationId, windowHandle);
|
||||
list.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;
|
||||
BuildList();
|
||||
}
|
||||
|
||||
public void AddToRecent(string destination)
|
||||
{
|
||||
//Call JumpList.AddToRecent(destination); because of bug
|
||||
JumpList.AddToRecent(destination);
|
||||
list.Refresh();
|
||||
}
|
||||
|
||||
public void AddTasks(string titleValue, string args)
|
||||
{
|
||||
JumpListLink jumpListLink = new JumpListLink(Assembly.GetEntryAssembly().Location, titleValue);
|
||||
jumpListLink.IconReference = new IconReference(Assembly.GetEntryAssembly().Location, 3);
|
||||
jumpListLink.Arguments = args;
|
||||
|
||||
list.AddUserTasks(jumpListLink);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds the Jumplist
|
||||
/// </summary>
|
||||
private void BuildList()
|
||||
{
|
||||
JumpListCustomCategory userActionsCategory = new JumpListCustomCategory("Actions");
|
||||
|
||||
AddTasks(Language.OpenDecFolder, "opendecfolder");
|
||||
AddTasks(Language.OpenComFolder, "opencomfolder");
|
||||
|
||||
list.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ namespace APKToolGUI.Utils
|
||||
|
||||
public static string ProcessStartWithOutput(string FileName, string Arguments)
|
||||
{
|
||||
// Debug.WriteLine("CMD: " + FileName + " " + Arguments);
|
||||
Log.d("CMD: " + FileName + " " + Arguments);
|
||||
string result = string.Empty;
|
||||
try
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Markup;
|
||||
|
||||
namespace SaveToGameWpf.Logic.Utils
|
||||
{
|
||||
@@ -39,7 +40,7 @@ namespace SaveToGameWpf.Logic.Utils
|
||||
string[] files = e.GetFilesDrop();
|
||||
if (extensions == null && Directory.Exists(files[0]))
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
else if (extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
else if (extensions != null && extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
else
|
||||
e.Effect = DragDropEffects.None;
|
||||
@@ -73,7 +74,7 @@ namespace SaveToGameWpf.Logic.Utils
|
||||
e.Effect = DragDropEffects.Move;
|
||||
return true;
|
||||
}
|
||||
else if (extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
else if (extensions != null && extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
{
|
||||
e.Effect = DragDropEffects.Move;
|
||||
return true;
|
||||
|
||||
@@ -3,6 +3,7 @@ using Microsoft.Win32;
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Utils;
|
||||
using Microsoft.Build.Framework.XamlTypes;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -24,13 +25,13 @@ namespace APKToolGUI
|
||||
try
|
||||
{
|
||||
#region Add context menu to registry
|
||||
RegistryKey apkToolGUIFolderShell = Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(Program.APP_NAME, RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
RegistryKey apkToolGUIFolderShell = Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(Application.ProductName, RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
apkToolGUIFolderShell.SetValue("Icon", executablePath);
|
||||
apkToolGUIFolderShell.SetValue("MUIVerb", Program.APP_NAME);
|
||||
apkToolGUIFolderShell.SetValue("MUIVerb", Application.ProductName);
|
||||
apkToolGUIFolderShell.SetValue("SubCommands", "APKToolGUI.Build;APKToolGUI.Smali");
|
||||
apkToolGUIFolderShell.Close();
|
||||
|
||||
CreateFileAssociationsSubKey(executablePath, ".apk", "APKToolGUI.Decompile;APKToolGUI.Sign;APKToolGUI.Zipalign");
|
||||
CreateFileAssociationsSubKey(executablePath, ".apk", "APKToolGUI.Apkinfo;APKToolGUI.Decompile;APKToolGUI.Sign;APKToolGUI.Zipalign");
|
||||
CreateFileAssociationsSubKey(executablePath, ".xapk", "APKToolGUI.Decompile");
|
||||
CreateFileAssociationsSubKey(executablePath, ".apks", "APKToolGUI.Decompile");
|
||||
CreateFileAssociationsSubKey(executablePath, ".zip", "APKToolGUI.Decompile");
|
||||
@@ -85,7 +86,7 @@ namespace APKToolGUI
|
||||
RegistryKey apkinfo = shell.CreateSubKey("APKToolGUI.Apkinfo", RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
apkinfo.SetValue("", Language.GetApkInfo, RegistryValueKind.String);
|
||||
apkinfo.SetValue("Icon", executablePath, RegistryValueKind.String);
|
||||
apkinfo.CreateSubKey("command").SetValue("", "\"" + executablePath + "\" \"apkinfo\" \"%1\"", RegistryValueKind.String);
|
||||
apkinfo.CreateSubKey("command").SetValue("", "\"" + executablePath + "\" \"viewinfo\" \"%1\"", RegistryValueKind.String);
|
||||
apkinfo.Close();
|
||||
|
||||
shell.Close();
|
||||
@@ -103,10 +104,10 @@ namespace APKToolGUI
|
||||
{
|
||||
Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(fileExtension, RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", executablePath, RegistryValueKind.ExpandString);
|
||||
|
||||
RegistryKey shell = Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\" + fileExtension, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.CreateSubKey).CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey(Program.APP_NAME, RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
RegistryKey shell = Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\" + fileExtension, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.CreateSubKey).CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey(Application.ProductName, RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
|
||||
shell.SetValue("Icon", "\"" + executablePath + "\"");
|
||||
shell.SetValue("MUIVerb", Program.APP_NAME);
|
||||
shell.SetValue("MUIVerb", Application.ProductName);
|
||||
shell.SetValue("SubCommands", subCommands);
|
||||
shell.Close();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
using APKToolGUI;
|
||||
using APKToolGUI.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace APKToolGUI.Utils
|
||||
{
|
||||
/// <summary>
|
||||
/// simple logging wrapper class
|
||||
/// </summary>
|
||||
public static class Log
|
||||
{
|
||||
#region direct logs
|
||||
/// <summary>
|
||||
/// log message with level VERY VERBOSE (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void vv(string s)
|
||||
{
|
||||
if (!Settings.Default.DebugMode) return;
|
||||
FormMain.Instance.ToLog(ApktoolEventType.None, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level VERBOSE (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void v(string s)
|
||||
{
|
||||
if (!Settings.Default.DebugMode) return;
|
||||
FormMain.Instance.ToLog(ApktoolEventType.None, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level DEBUG (may be disabled)
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void d(string s)
|
||||
{
|
||||
if (!Settings.Default.DebugMode) return;
|
||||
FormMain.Instance.ToLog(ApktoolEventType.None, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level INFO
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void i(string s)
|
||||
{
|
||||
FormMain.Instance.ToLog(ApktoolEventType.Infomation, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level WARNING
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void w(string s)
|
||||
{
|
||||
FormMain.Instance.ToLog(ApktoolEventType.Warning, s);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// log message with level ERROR
|
||||
/// </summary>
|
||||
/// <param name="s">the string to log</param>
|
||||
public static void e(string s)
|
||||
{
|
||||
FormMain.Instance.ToLog(ApktoolEventType.Error, s);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -262,6 +262,24 @@
|
||||
<setting name="ApktoolPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="Theme" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="DebugMode" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Build_NetSecConf" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Decode_DontParseApkInfo" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UseCustomJVMArgs" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="CustomJVMArgs" serializeAs="String">
|
||||
<value>-Dfile.encoding=UTF8 -Djdk.util.zip.disableZip64ExtraFieldValidation=true -Djdk.nio.zipfs.allowDotZipEntry=true</value>
|
||||
</setting>
|
||||
</APKToolGUI.Properties.Settings>
|
||||
</userSettings>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup>
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Costura.Fody" version="5.7.0" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="DarkNet" version="2.3.0" targetFramework="net48" />
|
||||
<package id="DotNetZip" version="1.16.0" targetFramework="net48" />
|
||||
<package id="Fody" version="6.6.4" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="7.0.0" targetFramework="net48" />
|
||||
<package id="Fody" version="6.8.0" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="7.0.4" targetFramework="net48" />
|
||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="Microsoft-WindowsAPICodePack-Core" version="1.1.4" targetFramework="net48" />
|
||||
<package id="Microsoft-WindowsAPICodePack-Shell" version="1.1.4" targetFramework="net48" />
|
||||
<package id="Microsoft-WindowsAPICodePack-Core" version="1.1.5" targetFramework="net48" />
|
||||
<package id="Microsoft-WindowsAPICodePack-Shell" version="1.1.5" targetFramework="net48" />
|
||||
<package id="NETStandard.Library" version="2.0.3" targetFramework="net48" />
|
||||
<package id="Ookii.Dialogs.WinForms" version="4.0.0" targetFramework="net48" />
|
||||
<package id="PortableSettingsProvider" version="0.2.4" targetFramework="net48" />
|
||||
<package id="OSVersionExt" version="3.0.0" targetFramework="net48" />
|
||||
<package id="PortableSettingsProvider" version="0.2.5" targetFramework="net48" />
|
||||
<package id="Resource.Embedder" version="2.2.0" targetFramework="net48" />
|
||||
<package id="ResourceLoader" version="3.2.4" targetFramework="net48" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
@@ -18,7 +20,7 @@
|
||||
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Console" version="4.3.1" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="7.0.1" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="7.0.2" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 97 KiB |
@@ -0,0 +1,24 @@
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more information, please refer to <https://unlicense.org>
|
||||
@@ -1,5 +1,5 @@
|
||||
# APK Tool GUI
|
||||

|
||||

|
||||
|
||||
[](https://github.com/AndnixSH/APKToolGUI/releases) [](https://github.com/AndnixSH/APKToolGUI/releases)
|
||||
|
||||
@@ -12,12 +12,12 @@ https://github.com/AndnixSH/APKToolGUI/releases
|
||||
|
||||
# Requirements
|
||||
- Windows 7 32-bit/64-bit and above
|
||||
- [Java Runtime Environment](https://www.java.com/en/)/[Java SE Development Kit](https://www.oracle.com/java/technologies/downloads/) 8 and above. Highly recommended to use 64-bit version if your system is 64-bit
|
||||
- [.NET Framework 4.8](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48) (Windows 10 and above have it preinstalled)
|
||||
- [Java](https://www.java.com/en/) or [JDK](https://www.oracle.com/java/technologies/downloads/) 8 or above. Using latest JDK is not really necessary, it tends to cause unexpected issues. Java 8 and 17 (long-term support release) is enough. Use 64-bit version if your system is 64-bit
|
||||
- [.NET Framework 4.8](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48) (Windows 8 and above already have it preinstalled)
|
||||
|
||||
# Features
|
||||
- Decompile APK
|
||||
- Decompile and merge split APK/XAPK/APKS/ZIP/APKM using build-in split merging and APKEditor.jar (Default)
|
||||
- Decompile and merge split APK/XAPK/APKS/ZIP/APKM using build-in split merging or APKEditor.jar (Default)
|
||||
- Compile APK
|
||||
- Sign APK
|
||||
- Zipalign APK
|
||||
@@ -42,13 +42,19 @@ https://github.com/AndnixSH/APKToolGUI/releases
|
||||
- Chinese Simplified (Incomplete)
|
||||
|
||||
### Translation
|
||||
If you like to help translate with your native language, use Visual Studio 2022
|
||||
If you like to help translate with your native language, I recommend using Visual Studio 2022. You don't need any programming knowledge, you just edit the GUI and the `.resx` files
|
||||
|
||||
- Create new resx file under Languages folder within Visual Studio.
|
||||
Create new `.resx` file under `Languages` folder, and `Forms/FormXXX.cs/`. To create a new `.resx` under `Forms/FormXXX.cs/`, open the form and select the form to show the properties. In the properties, scroll down until you see Language, and select any language you would like to translate.
|
||||
|
||||
- Open any forms. Under properties, scroll down until you see Language, and select any language you would like to translate. It will create new resx file inside cs file
|
||||
<details>
|
||||
|
||||
If you can't use Visual Studio, you can use translator tools like [resxtranslator](https://github.com/HakanL/resxtranslator) or [RESX Translator automat](https://www.utilstudio.com/en/resx-translator/), but make sure the .resx file is added to [APKToolGUI.csproj](https://github.com/AndnixSH/APKToolGUI/blob/master/APKToolGUI/APKToolGUI.csproj), otherwise Visual Studio would not compile it
|
||||
<summary>Video tutorial</summary>
|
||||
|
||||
https://user-images.githubusercontent.com/40742924/227244601-6f796141-ac2d-4c60-b5cd-7f6872604cd7.mp4
|
||||
|
||||
</details>
|
||||
|
||||
If you can't use Visual Studio, you can use translator tools like [resxtranslator](https://github.com/HakanL/resxtranslator) or [RESX Translator automat](https://www.utilstudio.com/en/resx-translator/), but make sure the `.resx` file is added to [APKToolGUI.csproj](https://github.com/AndnixSH/APKToolGUI/blob/master/APKToolGUI/APKToolGUI.csproj), otherwise Visual Studio would not be able to detect it
|
||||
|
||||
Make pull request when you are done
|
||||
|
||||
@@ -63,7 +69,7 @@ Anything else, [create a new issue](https://github.com/AndnixSH/APKToolGUI/issue
|
||||
|
||||
# FAQ
|
||||
##### Q: Can it be ported to other OS like Linux?
|
||||
A: Maybe, but it's not easy since Microsoft is dumb for not supporting it for .NET Core, unlike Java FX which supported all platforms. If you know, feel free to open an issue
|
||||
A: Notthing is impossible, but it's not easy as long as Microsoft not supporting WinForm for other platforms, making .NET Core useless, unlike Java FX that supports other platforms since decades. If you know, feel free to open an issue. Until then, use [WineHQ](https://www.winehq.org/) or similar to run exe
|
||||
|
||||
##### Q: How to update Apktool?
|
||||
A: Download [Apktool.jar](https://github.com/iBotPeaches/Apktool/releases) and replace it on Resources folder
|
||||
@@ -78,13 +84,10 @@ A: Simply delete the config.xml file from the directory of the executeable
|
||||
A: It just a false positive, anti-virus always flag tools/softwares like this as virus. Don't always believe what your anti-virus are telling you. Try to compile the source by yourself and you will see
|
||||
|
||||
##### Q: Can you make an automatic APK injecting tool?
|
||||
A: No, that's out of scope of this tool, and I'm not interested.
|
||||
A: No, I'm not interested.
|
||||
|
||||
##### Q: Can you implement an option to protect/pack/obfuscate APK?
|
||||
A: No, APK protection is beyond the scope of this tool
|
||||
|
||||
##### Q: Can you implement an option to deobfuscate/unpack APK or bypass anti-cheat/security?
|
||||
A: No, they are also beyond the scope of this tool. I don't condone bypassing such protections
|
||||
##### Q: Can you implement to convert APK to AAB?
|
||||
A: No, apktool is about recompiling, not converting to other formats. AAB is only used for distributing an application to Play Store, so it is not directly installable. If you really want to convert APK to ABB, try APK2AAB tool https://github.com/sensei-z/APK2AAB
|
||||
|
||||
##### Q: I don't like split APK. Where can I get single APK instead?
|
||||
A: Download from [Apkcombo's APK downloader](https://apkcombo.com/downloader/), or [Apkpure](https://apkpure.com/) (Choose APK instead XAPK)
|
||||
@@ -92,6 +95,12 @@ A: Download from [Apkcombo's APK downloader](https://apkcombo.com/downloader/),
|
||||
##### Q: Can you help me with modding APK in general?
|
||||
A: Sorry, I don't offer support with it.
|
||||
|
||||
##### Q: Can you implement features to protect/pack/obfuscate APK?
|
||||
A: No, APK protection is beyond the scope of this tool
|
||||
|
||||
##### Q: Can you implement features to deobfuscate/unpack APK or bypass anti-cheat/security?
|
||||
A: No, they are also beyond the scope of this tool. I don't condone bypassing such protections
|
||||
|
||||
# Development
|
||||
This project is written in C#
|
||||
|
||||
@@ -105,4 +114,7 @@ Use Visual Studio 2019 and above. NET Framework 4.8 SDK is required
|
||||
- shadow578 ([ApksMerger](https://github.com/shadow578/ApksMerger))
|
||||
|
||||
# Disclaimer
|
||||
Same as Apktool by iBotPeaches, It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms and other GOOD purposes. Just try to be fair with authors of an app, that you use and probably like.
|
||||
Same as Apktool by iBotPeaches, It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms and other GOOD purposes. Just try to be fair with authors of an app, that you use and probably like.
|
||||
|
||||
# License
|
||||
The original repo does not have a license but I have permission from the author to use ane distriute this project as open source, without license. He doesn't seems to know much about licensing. For this project, I'll just add license as unlicensed
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,41 @@
|
||||
3.3.0.0
|
||||
- Updated Simplified Chinese translation
|
||||
- Removed android.intent.action.MAIN from "Fix ApkTool errors after decompile"
|
||||
- Updated tools (apktool.jar (2.8.1), APKEditor.jar (1.3.2), aapt.exe (SDK 34), aapt2.exe (SDK 34), adb.exe (34.0.4-10411341), apksigner.jar (SDK 34), zipalign.exe (SDK 34))
|
||||
- Added debug mode to print more logs
|
||||
- Fixed java version
|
||||
- "Fix ApkTool errors after decompile" No longer change target SDK to 29
|
||||
- Added option to clear temp folder
|
||||
- Improve dark theme a bit
|
||||
- Added option to not parse APK info when selecting APK for decompiling
|
||||
- Fixed sign after zipalign
|
||||
- Added option to open new Instance
|
||||
- Added jump list
|
||||
- Parse alt-native-code from aapt
|
||||
- Added custom JVM args
|
||||
- All settings portable
|
||||
- Move labels to tooltips to keep UI clean
|
||||
- Change sparseResources to false for "Fix ApkTool errors after decompile"
|
||||
- Fix crash when drag and dropping APK file
|
||||
|
||||
If you are using Java 20 and encountered "Invalid CEN header (invalid zip64 extra data field size)" error, enable "custom JVM arguments" in settings to temporary fix this issue. See issue #13 on Github repo
|
||||
|
||||
3.2.2.0
|
||||
- Dark theme (Currently there is no dark scrollbar, and tabs looks quite ugly)
|
||||
- Fix crash when dropping decompiled APK on compile panel
|
||||
- Added View APK info in context menu (You must reinstall context menu)
|
||||
- Fixed attempting to install APK even it's disabled
|
||||
- Updated APKEditor.jar to 1.2.0
|
||||
|
||||
3.2.1.0
|
||||
- Fixed an error when decompiling split APK for the second time
|
||||
- Updated Russian language
|
||||
- Updated Hungarian language
|
||||
- Updated dependencies
|
||||
- Make log output read only
|
||||
- Updated resources: aapt.exe, aapt2.exe, apksigner.jar, zipalign.exe, adb.exe
|
||||
- Removed libaapt2_jni.dll
|
||||
|
||||
3.2.0.0
|
||||
- Added split APK merging (Build-in and APKEditor.jar) for decompilation. APKEditor.jar is set to default
|
||||
- Added incompleted Hungarian translation
|
||||
|
||||
Reference in New Issue
Block a user