Compare commits
258 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f7caefaab | |||
| 48b6736ccf | |||
| f2329a4b57 | |||
| 456b971183 | |||
| 3417aedbe0 | |||
| 6e3bb9a6dd | |||
| 26763b0cfa | |||
| ca05365c16 | |||
| 7581a5c45c | |||
| 7e7de5f653 | |||
| 7ccbac83b2 | |||
| af96daca95 | |||
| 208d14cb9b | |||
| d4fcd90024 | |||
| bcc597ac0a | |||
| 674fc210f5 | |||
| aa5d017c74 | |||
| 012b6f3c07 | |||
| c8bfc38fac | |||
| 6a0e01937a | |||
| 542bc64b80 | |||
| e47ce35b5c | |||
| 7c3280a2ad | |||
| d32a068e9a | |||
| 90f8ba18f3 | |||
| 39219eaf65 | |||
| 9675fa6d85 | |||
| 67a0bb877d | |||
| d8d1c50f00 | |||
| 608dd37522 | |||
| d2f8e42664 | |||
| 6cf1931bbc | |||
| 67667784fd | |||
| 0df16541d4 | |||
| e141b886ef | |||
| 9e00fd2d75 | |||
| a841fe0ce5 | |||
| d7edc9ced2 | |||
| f9cad819b6 | |||
| 02a48151c2 | |||
| 8fddb8d760 | |||
| 0e18c8194c | |||
| aa1078660a | |||
| 33749af569 | |||
| c431d2e90c | |||
| 2dfac5d667 | |||
| de6588a148 | |||
| 05cbb3cb4b | |||
| de415e8232 | |||
| cfec6c9a81 | |||
| 28f15a41ac | |||
| 8513ab4788 | |||
| e4f9e5da21 | |||
| b191d547d0 | |||
| 1d764709f2 | |||
| 7ccf7da0f3 | |||
| 2bed8a468b | |||
| 6d4dc8396d | |||
| 67672a8871 | |||
| e7b942f09b | |||
| f71bd165a8 | |||
| 984735d9a2 | |||
| 3e7ebe157e | |||
| e42e2f3897 | |||
| ae8106d967 | |||
| 462447de6c | |||
| 67a4b79efc | |||
| ba418f7427 | |||
| f28fa25001 | |||
| db8be4b428 | |||
| 7cea4c2959 | |||
| 7def211556 | |||
| 9e81f5b791 | |||
| ec6fd42592 | |||
| 07e4026aba | |||
| 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 | |||
| ff76f936b1 | |||
| 92f7de3e7f | |||
| ef6ebdbab4 | |||
| 285df8e366 | |||
| 6fede45027 | |||
| 55d2f4a59c | |||
| a436a90c33 | |||
| 2a1170bbfa | |||
| e92b0f780b | |||
| 7b0a5768ac | |||
| 605633331c | |||
| c123c98954 | |||
| 47a776ee66 | |||
| 45bf85bd1b | |||
| 94c586b92f | |||
| 36e0b6240f | |||
| 5bc620271d | |||
| 957696e5b3 | |||
| e69a8f2b72 | |||
| 713378275d | |||
| 1841712c10 | |||
| bb24c0b7b9 | |||
| 094ffbfa57 | |||
| b9eaa4b4b5 | |||
| dd7b84b86b | |||
| 7965234e4e | |||
| 636b093943 | |||
| 8fcceaba36 | |||
| 1880b592f4 | |||
| 8b4717c4b9 | |||
| 056f912e40 | |||
| 1b068f0dbe | |||
| 87b621f8c7 | |||
| deacb7c05f | |||
| 9be1957e9d | |||
| 152ef2e855 | |||
| 026c9145b1 | |||
| 06c222af58 | |||
| 1d250a2dc8 | |||
| 55633e1505 | |||
| 9661e72d6b | |||
| 4408a0d06d | |||
| 8671f87a1a | |||
| 011b46fbc2 | |||
| 63a0a0e028 | |||
| 34270f6236 | |||
| 3a36a79fce | |||
| 2698917d02 | |||
| 974d36c847 | |||
| e0317eb19d | |||
| 4831f51f30 | |||
| 70914c70e2 | |||
| 4f2f98d2f9 | |||
| efefda1104 | |||
| dfb99358dc | |||
| 2e2420bd91 | |||
| 2d1072d511 | |||
| 724bc5f60a | |||
| f18e5b3031 | |||
| 98e4efce0f | |||
| e6dbba208c | |||
| 7accee6cc1 | |||
| 0e7e911cc4 | |||
| 083122d0eb | |||
| 6e3dfdb0f3 | |||
| a4adc2a23c | |||
| c37b71a362 | |||
| 88e9d504c5 | |||
| f2b711e675 | |||
| c360808e36 | |||
| b9febf125c | |||
| 57dd8a798b | |||
| b7e3e3d1f0 | |||
| a49c7e7538 | |||
| d35abe0f9a | |||
| 9454e2ac0e | |||
| d012b58bf9 | |||
| 945afaa509 | |||
| 7c78e39c75 | |||
| 6023bad531 | |||
| 79f21cfe42 | |||
| 28f11f1870 | |||
| ed978d1994 | |||
| 7a00679d5d | |||
| d17ac508f0 | |||
| 60c96318b0 | |||
| e93d4dfac8 | |||
| e7ffba97d1 | |||
| 3cdbb108bc | |||
| 65a5802782 | |||
| 89a973a41e | |||
| 6433fc54c2 | |||
| 480edd3e59 | |||
| b471d96fa0 | |||
| 0c957b21a8 | |||
| fb699cbfe8 | |||
| 903cc5af42 | |||
| 172b15a8d0 | |||
| b9241c02a5 | |||
| 986d6e180e | |||
| ced4f9888f | |||
| 3f105d026b | |||
| 0acfd3f73e | |||
| 884b75b371 | |||
| 0247010ae2 | |||
| 53ad4af6e4 | |||
| 6dc216ee0d | |||
| 1a1746af47 | |||
| 41809f1892 |
@@ -0,0 +1,98 @@
|
||||
name: Bug report
|
||||
description: Report a bug in APK Tool GUI
|
||||
labels: bug
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Prerequisites
|
||||
description: To rule out invalid issues, confirm and check each one of the checkboxes.
|
||||
options:
|
||||
- label: This is not a support issue or a question. For support, questions, or help, see [support links](https://github.com/AndnixSH/APKToolGUI/issues/new/choose).
|
||||
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: I performed a cursory search of the issue tracker on [Apktool] (https://github.com/iBotPeaches/Apktool/issues?q=is%3Aissue) and [Baksmali](https://github.com/JesusFreke/smali/issues?q=is%3Aissue) but did not found an answer
|
||||
required: true
|
||||
- label: I am running the latest version of [APK Tool GUI](https://github.com/AndnixSH/APKToolGUI/releases) and [Apktool.jar](https://github.com/iBotPeaches/Apktool/releases).
|
||||
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
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
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
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: To Reproduce
|
||||
description: Steps to reproduce the behavior
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Logs
|
||||
description: Please surround the logs with 3 backticks (```) to format it properly
|
||||
placeholder: |
|
||||
Copy and paste the logs here
|
||||
|
||||
This is an example how you should surround the logs with 3 backticks (```)
|
||||
```
|
||||
[12:50:54]java version "19.0.2" 2023-01-17
|
||||
Java(TM) SE Runtime Environment (build 19.0.2+7-44)
|
||||
Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)
|
||||
[12:50:55] Apktool version "2.7.0"
|
||||
[12:50:55] Drag & drop is supported
|
||||
[12:50:55] Temp directory: "D:\Temp\ATG\xeaMO"
|
||||
[12:50:55] Parsing APK Info...
|
||||
[12:50:55] Done
|
||||
[12:50:55] Getting devices...
|
||||
[12:50:57] No devices found. Make sure your device is connected to the computer with the adb debugging turned on. If you use an emulator, restart it and wait until it boot up
|
||||
```
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: APK
|
||||
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:
|
||||
required: false
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: APK Tool GUI version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Apktool version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Java version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating system and version
|
||||
placeholder: |
|
||||
(Example: Windows 11 2h22)
|
||||
validations:
|
||||
required: true
|
||||
@@ -0,0 +1,23 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Apktool Issues List
|
||||
url: https://github.com/iBotPeaches/Apktool/issues?q=is%3Aissue
|
||||
about: Check Apktool issues before reporting issue here. Your issue might already exists
|
||||
- name: Baksmali Issues List
|
||||
url: https://github.com/JesusFreke/smali/issues?q=is%3Aissue
|
||||
about: Check Baksmali issues before reporting issue here. Your issue might already exists
|
||||
- name: System apps modding support forum
|
||||
url: https://forum.xda-developers.com/all-forums-by-manufacturer
|
||||
about: For support, questions or help with modding system apps.
|
||||
- name: Apktool forum
|
||||
url: https://github.com/iBotPeaches/Apktool/discussions
|
||||
about: For support, questions or help with Apktool, development and modding
|
||||
- name: Android development and modding support forum
|
||||
url: https://forum.xda-developers.com/c/android-development-and-hacking.564/
|
||||
about: For support, questions or help with development and modding
|
||||
- name: Android development and modding support forum 2
|
||||
url: https://androidforums.com/forums/android-development.28/
|
||||
about: For support, questions or help with development and modding
|
||||
- name: Android development and modding support forum 3
|
||||
url: https://platinmods.com/forums/modding-questions-discussions.11/
|
||||
about: For support, questions or help with development and modding
|
||||
@@ -0,0 +1,23 @@
|
||||
name: Feature request
|
||||
description: Request a feature for APK Tool GUI
|
||||
labels: enhancement
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Prerequisites
|
||||
description: To rule out invalid issues, confirm and check each one of the checkboxes.
|
||||
options:
|
||||
- label: This is not a support issue or a question. For support, questions, or help, see [support links](https://github.com/AndnixSH/APKToolGUI/issues/new/choose).
|
||||
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: I have read the [FAQ](https://github.com/AndnixSH/APKToolGUI#faq)
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the feature you'd like
|
||||
description: A clear and concise description of what you want to happen. Not all features will be accepted
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
name: Language suggestion/error
|
||||
description: Suggest a change or report an error of language. Use this form if you can't pull request
|
||||
labels: language
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Language
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
description: A clear and concise description of what you want to be changed. You can upload/paste screenshots here. For full translation, please upload zip file of translated files or full project
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<DebugSymbols>false</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>D:\Portable Apps\APK Tool GUI\</OutputPath>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -56,7 +56,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>D:\Portable Apps\APK Tool GUI\</OutputPath>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -80,6 +80,10 @@
|
||||
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<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>
|
||||
@@ -91,14 +95,25 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<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.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="ResourceLoader, Version=3.2.4.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ResourceLoader.3.2.4\lib\netstandard2.0\ResourceLoader.dll</HintPath>
|
||||
<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" />
|
||||
<Reference Include="ResourceLoader, Version=3.3.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ResourceLoader.3.3.1\lib\netstandard2.0\ResourceLoader.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
@@ -118,8 +133,8 @@
|
||||
</Reference>
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.6.0.0\lib\net461\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.8.0.0\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>
|
||||
@@ -167,8 +182,9 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
|
||||
@@ -189,8 +205,8 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Resources.Extensions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Resources.Extensions.6.0.0\lib\net461\System.Resources.Extensions.dll</HintPath>
|
||||
<Reference Include="System.Resources.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Resources.Extensions.8.0.0\lib\net462\System.Resources.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll</HintPath>
|
||||
@@ -241,6 +257,7 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Data" />
|
||||
@@ -253,13 +270,20 @@
|
||||
<Private>True</Private>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="WindowsFormsIntegration" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ApkTool\ApkEditor.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ApkTool\Smali.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@@ -269,16 +293,23 @@
|
||||
<Compile Include="ApkTool\Signapk.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ApkTool\Adb.cs" />
|
||||
<Compile Include="ApkTool\Zipalign.cs" />
|
||||
<Compile Include="Handlers\AdbControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\ApkinfoControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\BaksmaliControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\BuildControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\DecodeControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\DragDropHandlers.cs" />
|
||||
<Compile Include="Handlers\FrameworkControlEventHandlers.cs" />
|
||||
<Compile Include="Handlers\MainWindowEventHandlers.cs" />
|
||||
<Compile Include="Handlers\MenuItemHandlers.cs" />
|
||||
<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" />
|
||||
<Compile Include="Utils\CommonUtils.cs" />
|
||||
<Compile Include="Utils\DirectoryUtils.cs" />
|
||||
@@ -306,6 +337,7 @@
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Java\JavaUtils.cs" />
|
||||
<Compile Include="Utils\FileUtils.cs" />
|
||||
<Compile Include="Utils\PathUtils.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
@@ -314,31 +346,55 @@
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Language.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Utils\ProcessUtils.cs" />
|
||||
<Compile Include="Utils\StringExt.cs" />
|
||||
<Compile Include="Web\UpdateChecker.cs" />
|
||||
<Compile Include="Utils\ZipUtils.cs" />
|
||||
<Compile Include="Web\WebDownload.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Forms\FormAboutBox.de.resx">
|
||||
<DependentUpon>FormAboutBox.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormAboutBox.resx">
|
||||
<DependentUpon>FormAboutBox.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormAboutBox.ru.resx">
|
||||
<DependentUpon>FormAboutBox.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormAboutBox.zh-CN.resx">
|
||||
<DependentUpon>FormAboutBox.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormMain.de.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormMain.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormMain.ru.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormMain.zh-CN.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormSettings.de.resx">
|
||||
<DependentUpon>FormSettings.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormSettings.resx">
|
||||
<DependentUpon>FormSettings.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormSettings.ru.resx">
|
||||
<DependentUpon>FormSettings.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormSettings.zh-CN.resx">
|
||||
<DependentUpon>FormSettings.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Languages\Language.de.resx" />
|
||||
<EmbeddedResource Include="Languages\Language.hu.resx" />
|
||||
<EmbeddedResource Include="Languages\Language.pt-BR.resx" />
|
||||
<EmbeddedResource Include="Languages\Language.ru.resx" />
|
||||
<EmbeddedResource Include="Languages\Language.zh-CN.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
@@ -368,18 +424,10 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="android-thin.ico" />
|
||||
<None Include="Resources\apkaio.png" />
|
||||
<None Include="Resources\info.png" />
|
||||
<None Include="Resources\waiting.png" />
|
||||
<None Include="Resources\warning.png" />
|
||||
<None Include="Resources\Error.png" />
|
||||
<None Include="Resources\playstore.png" />
|
||||
<None Include="Resources\apkpure.png" />
|
||||
<None Include="Resources\apkcombo.png" />
|
||||
<None Include="Resources\apkpure.ico" />
|
||||
<None Include="Resources\apkcombo.ico" />
|
||||
<None Include="Resources\playstore-2.png" />
|
||||
<None Include="Resources\playstore.ico" />
|
||||
<None Include="Resources\android-thin.ico" />
|
||||
<None Include="Resources\Done.png" />
|
||||
<None Include="Resources\android.png" />
|
||||
@@ -409,21 +457,25 @@
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>xcopy "$(ProjectDir)tools" "$(OutDir)Resources" /Y /I /S</PreBuildEvent>
|
||||
<PreBuildEvent>if not exist "$(ProjectDir)\$(OutDir)\Resources" xcopy "$(SolutionDir)\Tools" "$(ProjectDir)\$(OutDir)\Resources" /Y /I /S</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\Fody.6.6.0\build\Fody.targets" Condition="Exists('..\packages\Fody.6.6.0\build\Fody.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Fody.6.6.0\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.6.0\build\Fody.targets'))" />
|
||||
<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\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')" />
|
||||
<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,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
|
||||
{
|
||||
@@ -12,6 +14,12 @@ namespace APKToolGUI.Utils
|
||||
{
|
||||
public string ApkFile;
|
||||
|
||||
public string RealApkFile;
|
||||
|
||||
public string Armv7ApkFile;
|
||||
|
||||
public string Arm64ApkFile;
|
||||
|
||||
public string AppName;
|
||||
|
||||
public string PackageName;
|
||||
@@ -20,7 +28,11 @@ namespace APKToolGUI.Utils
|
||||
|
||||
public string VersionCode;
|
||||
|
||||
public string SdkVersion;
|
||||
public string MinSdkVersionDetailed;
|
||||
|
||||
public string TargetSdkVersionDetailed;
|
||||
|
||||
public string MinSdkVersion;
|
||||
|
||||
public string TargetSdkVersion;
|
||||
|
||||
@@ -34,6 +46,8 @@ namespace APKToolGUI.Utils
|
||||
|
||||
public string Densities;
|
||||
|
||||
public string NativeCode;
|
||||
|
||||
public string PlayStoreLink;
|
||||
|
||||
public string ApkComboLink;
|
||||
@@ -42,19 +56,37 @@ namespace APKToolGUI.Utils
|
||||
|
||||
public string ApkAioLink;
|
||||
|
||||
public string AppIcon = null;
|
||||
public string ApkGkLink;
|
||||
|
||||
public string ApkSupportLink;
|
||||
|
||||
public string ApkSosLink;
|
||||
|
||||
public string ApkMirrorLink;
|
||||
|
||||
public string ApkDlLink;
|
||||
|
||||
public string AppIcon;
|
||||
|
||||
public string FullInfo;
|
||||
|
||||
|
||||
public bool Parse(string file)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
string info = ParseApkInfo(file);
|
||||
|
||||
FullInfo = info;
|
||||
|
||||
if (!String.IsNullOrEmpty(info))
|
||||
{
|
||||
string[] lines = info.Split(
|
||||
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])
|
||||
@@ -68,10 +100,12 @@ namespace APKToolGUI.Utils
|
||||
Permissions += StringExt.Regex(@"(?<=name=\')(.*?)(?=\')", line) + "\n";
|
||||
break;
|
||||
case "sdkVersion":
|
||||
SdkVersion = SdkToAndroidVer(StringExt.Regex(@"(?<=sdkVersion:\')(.*?)(?=\')", line));
|
||||
MinSdkVersionDetailed = SdkToAndroidVer(StringExt.Regex(@"(?<=sdkVersion:\')(.*?)(?=\')", line));
|
||||
MinSdkVersion = StringExt.Regex(@"(?<=sdkVersion:\')(.*?)(?=\')", line);
|
||||
break;
|
||||
case "targetSdkVersion":
|
||||
TargetSdkVersion = SdkToAndroidVer(StringExt.Regex(@"(?<=targetSdkVersion:\')(.*?)(?=\')", line));
|
||||
TargetSdkVersionDetailed = SdkToAndroidVer(StringExt.Regex(@"(?<=targetSdkVersion:\')(.*?)(?=\')", line));
|
||||
TargetSdkVersion = StringExt.Regex(@"(?<=targetSdkVersion:\')(.*?)(?=\')", line);
|
||||
break;
|
||||
case "application-label":
|
||||
AppName = StringExt.Regex(@"(?<=application-label:\')(.*?)(?=\')", line);
|
||||
@@ -94,9 +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":
|
||||
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;
|
||||
@@ -105,6 +146,8 @@ namespace APKToolGUI.Utils
|
||||
|
||||
result = true;
|
||||
}
|
||||
else
|
||||
result = false;
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -154,72 +197,81 @@ namespace APKToolGUI.Utils
|
||||
}
|
||||
}
|
||||
|
||||
//https://apilevels.com/
|
||||
public string SdkToAndroidVer(string sdk)
|
||||
{
|
||||
switch (sdk)
|
||||
{
|
||||
case "35":
|
||||
return sdk + ": Android 15";
|
||||
case "34":
|
||||
return sdk + ": Android 14";
|
||||
case "33":
|
||||
return sdk + ": Android 14";
|
||||
case "32":
|
||||
return sdk + ": Android 12.0L";
|
||||
case "31":
|
||||
return "31: Android 12.0";
|
||||
return sdk + ": Android 12";
|
||||
case "30":
|
||||
return "30: Android 11.0";
|
||||
return sdk + ": Android 11";
|
||||
case "29":
|
||||
return "29: Android 10.0";
|
||||
return sdk + ": Android 10";
|
||||
case "28":
|
||||
return "28: Android 9.0 (Pie)";
|
||||
return sdk + ": Android 9 (Pie)";
|
||||
case "27":
|
||||
return "27: Android 8.1 (Oreo MR1)";
|
||||
return sdk + ": Android 8.1 (Oreo)";
|
||||
case "26":
|
||||
return "26: Android 8.0 (Oreo)";
|
||||
return sdk + ": Android 8.0 (Oreo)";
|
||||
case "25":
|
||||
return "25: Android 7.1 (Nougat MR1)";
|
||||
return sdk + ": Android 7.1 (Nougat)";
|
||||
case "24":
|
||||
return "24: Android 7.0 (Nougat)";
|
||||
return sdk + ": Android 7.0 (Nougat)";
|
||||
case "23":
|
||||
return "23: Android 6.0 (Marshmallow)";
|
||||
return sdk + ": Android 6 (Marshmallow)";
|
||||
case "22":
|
||||
return "22: Android 5.1 (Lollipop MR1)";
|
||||
return sdk + ": Android 5.1 (Lollipop)";
|
||||
case "21":
|
||||
return "21: Android 5.0 (Lollipop)";
|
||||
return sdk + ": Android 5.0 (Lollipop)";
|
||||
case "20":
|
||||
return "20: Android 4.4W (KitKat Watch)";
|
||||
return sdk + ": Android 4.4W (KitKat Watch)";
|
||||
case "19":
|
||||
return "19: Android 4.4 (KitKat)";
|
||||
return sdk + ": Android 4.4 (KitKat)";
|
||||
case "18":
|
||||
return "18: Android 4.3 (Jelly Bean MR2)";
|
||||
return sdk + ": Android 4.3 (Jelly Bean)";
|
||||
case "17":
|
||||
return "17: Android 4.2 (Jelly Bean MR1)";
|
||||
return sdk + ": Android 4.2 (Jelly Bean)";
|
||||
case "16":
|
||||
return "16: Android 4.1 (Jelly Bean)";
|
||||
return sdk + ": Android 4.1 (Jelly Bean)";
|
||||
case "15":
|
||||
return "15: Android 4.0.3 (Ice Cream Sandwich MR1)";
|
||||
return sdk + ": Android 4.0.3 (Ice Cream Sandwich)";
|
||||
case "14":
|
||||
return "14: Android 4.0 (Ice Cream Sandwich)";
|
||||
return sdk + ": Android 4.0 (Ice Cream Sandwich)";
|
||||
case "13":
|
||||
return "13: Android 3.2 (Honeycomb MR2)";
|
||||
return sdk + ": Android 3.2 (Honeycomb)";
|
||||
case "12":
|
||||
return "12: Android 3.1 (Honeycomb MR1)";
|
||||
return sdk + ": Android 3.1 (Honeycomb)";
|
||||
case "11":
|
||||
return "11: Android 3.0 (Honeycomb)";
|
||||
return sdk + ": Android 3.0 (Honeycomb)";
|
||||
case "10":
|
||||
return "10: Android 2.3.3 Gingerbread MR1";
|
||||
return sdk + ": Android 2.3.3 Gingerbread";
|
||||
case "9":
|
||||
return "9: Android 2.3 (Gingerbread)";
|
||||
return sdk + ": Android 2.3 (Gingerbread)";
|
||||
case "8":
|
||||
return "8: Android 2.2 (Froyo)";
|
||||
return sdk + ": Android 2.2 (Froyo)";
|
||||
case "7":
|
||||
return "7: Android 2.1 (Eclair MR1)";
|
||||
return sdk + ": Android 2.1 (Eclair)";
|
||||
case "6":
|
||||
return "6: Android 2.0.1 (Eclair 0.1)";
|
||||
return sdk + ": Android 2.0.1 (Eclair)";
|
||||
case "5":
|
||||
return "5: Android 2.0 (Eclair)";
|
||||
return sdk + ": Android 2.0 (Eclair)";
|
||||
case "4":
|
||||
return "4: Android 1.6 (Donut)";
|
||||
return sdk + ": Android 1.6 (Donut)";
|
||||
case "3":
|
||||
return "3: Android 1.5 (Cupcake)";
|
||||
return sdk + ": Android 1.5 (Cupcake)";
|
||||
case "2":
|
||||
return "2: Android 1.1 (Base 1.1)";
|
||||
return sdk + ": Android 1.1 (Base 1.1)";
|
||||
case "1":
|
||||
return "1: Android 1.0 (Base)";
|
||||
return sdk + ": Android 1.0 (Base)";
|
||||
default:
|
||||
return sdk;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using Java;
|
||||
using Microsoft.Build.Framework.XamlTypes;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
public class Adb
|
||||
{
|
||||
Process processAdb;
|
||||
static class Keys
|
||||
{
|
||||
public const string Devices = " devices -l"; //list connected devices (-l for long output)
|
||||
public const string Serial = " -s"; // use device with given serial (overrides $ANDROID_SERIAL)
|
||||
public const string Vendor = " -i"; //Vendor
|
||||
public const string ApkPath = " -r";
|
||||
public const string Abi = " --abi"; //override platform's default ABI
|
||||
}
|
||||
|
||||
public event DataReceivedEventHandler OutputDataReceived
|
||||
{
|
||||
add { processAdb.OutputDataReceived += value; }
|
||||
remove { processAdb.OutputDataReceived -= value; }
|
||||
}
|
||||
|
||||
public event DataReceivedEventHandler ErrorDataReceived
|
||||
{
|
||||
add { processAdb.ErrorDataReceived += value; }
|
||||
remove { processAdb.ErrorDataReceived -= value; }
|
||||
}
|
||||
|
||||
public event EventHandler Exited;
|
||||
public int ExitCode { get { return processAdb.ExitCode; } }
|
||||
string adbFileName = null;
|
||||
public Adb(string AdbFileName)
|
||||
{
|
||||
adbFileName = AdbFileName;
|
||||
processAdb = new Process();
|
||||
processAdb.EnableRaisingEvents = true;
|
||||
processAdb.StartInfo.FileName = AdbFileName;
|
||||
processAdb.StartInfo.UseShellExecute = false; //отключаем использование оболочки, чтобы можно было читать данные вывода
|
||||
processAdb.StartInfo.RedirectStandardOutput = true; // разрешаем перенаправление данных вывода
|
||||
processAdb.StartInfo.RedirectStandardError = true; // разрешаем перенаправление данных вывода
|
||||
processAdb.StartInfo.CreateNoWindow = true; //запрещаем создавать окно для запускаемой программы
|
||||
processAdb.Exited += processAdb_Exited;
|
||||
}
|
||||
|
||||
void processAdb_Exited(object sender, EventArgs e)
|
||||
{
|
||||
processAdb.CancelOutputRead();
|
||||
processAdb.CancelErrorRead();
|
||||
if (this.Exited != null)
|
||||
Exited(this, new EventArgs());
|
||||
}
|
||||
|
||||
public void Cancel()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("adb"))
|
||||
{
|
||||
if (process.Id == processAdb.Id)
|
||||
{
|
||||
ProcessUtils.KillAllProcessesSpawnedBy((uint)processAdb.Id);
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public int Install(string device, string inputApk)
|
||||
{
|
||||
Regex regex = new Regex(@"^(\S+)\s+.*model:(\w+).*");
|
||||
Match mdevice = regex.Match(device);
|
||||
|
||||
string setVendor = null, abi = null;
|
||||
if (Settings.Default.Adb_SetVendor)
|
||||
setVendor = $"{Keys.Vendor} com.android.vending {Keys.ApkPath}";
|
||||
if (Settings.Default.Adb_SetOverrideAbi)
|
||||
{
|
||||
switch (Settings.Default.Adb_OverrideAbi)
|
||||
{
|
||||
case 0:
|
||||
abi = Keys.Abi + " arm64-v8a";
|
||||
break;
|
||||
case 1:
|
||||
abi = Keys.Abi + " armeabi-v7a";
|
||||
break;
|
||||
case 2:
|
||||
abi = Keys.Abi + " x86";
|
||||
break;
|
||||
case 3:
|
||||
abi = Keys.Abi + " x86_64";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
string args = String.Format($"{Keys.Serial} {mdevice.Groups[1].Value} install {setVendor} {abi} \"{inputApk}\"");
|
||||
|
||||
Log.d("ADB: " + adbFileName + " " + args);
|
||||
Debug.WriteLine("Adb: " + args);
|
||||
|
||||
processAdb.EnableRaisingEvents = false;
|
||||
processAdb.StartInfo.Arguments = args;
|
||||
processAdb.Start();
|
||||
processAdb.BeginOutputReadLine();
|
||||
processAdb.BeginErrorReadLine();
|
||||
processAdb.WaitForExit();
|
||||
|
||||
return ExitCode;
|
||||
}
|
||||
|
||||
public string GetDevices()
|
||||
{
|
||||
Log.d("ADB: " + adbFileName + " " + Keys.Devices);
|
||||
|
||||
Process process = new Process();
|
||||
process.EnableRaisingEvents = true;
|
||||
process.StartInfo.FileName = adbFileName;
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.RedirectStandardOutput = true;
|
||||
process.StartInfo.RedirectStandardError = true;
|
||||
process.StartInfo.CreateNoWindow = true;
|
||||
process.EnableRaisingEvents = false;
|
||||
process.StartInfo.Arguments = Keys.Devices;
|
||||
process.Start();
|
||||
string devices = process.StandardOutput.ReadToEnd();
|
||||
process.WaitForExit();
|
||||
return devices;
|
||||
}
|
||||
|
||||
public void KillProcess()
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("adb"))
|
||||
{
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
using System;
|
||||
using Java;
|
||||
using System.Diagnostics;
|
||||
using APKToolGUI.Properties;
|
||||
using System.IO;
|
||||
using APKToolGUI.Utils;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
public class ApkEditor : JarProcess
|
||||
{
|
||||
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
|
||||
}
|
||||
|
||||
ApkEditorDataReceivedEventHandler onApkEditorOutputDataRecieved;
|
||||
ApkEditorDataReceivedEventHandler onApkEditorErrorDataRecieved;
|
||||
|
||||
public event ApkEditorDataReceivedEventHandler ApkEditorOutputDataRecieved
|
||||
{
|
||||
add
|
||||
{
|
||||
onApkEditorOutputDataRecieved += value;
|
||||
}
|
||||
remove
|
||||
{
|
||||
onApkEditorOutputDataRecieved -= value;
|
||||
}
|
||||
}
|
||||
public event ApkEditorDataReceivedEventHandler ApkEditorErrorDataRecieved
|
||||
{
|
||||
add
|
||||
{
|
||||
onApkEditorErrorDataRecieved += value;
|
||||
}
|
||||
remove
|
||||
{
|
||||
onApkEditorErrorDataRecieved -= value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ApkEditor_ErrorDataReceived(object sender, DataReceivedEventArgs e)
|
||||
{
|
||||
if (onApkEditorErrorDataRecieved != null && e.Data != null)
|
||||
onApkEditorErrorDataRecieved(this, new ApkEditorDataReceivedEventArgs(e.Data));
|
||||
}
|
||||
|
||||
private void ApkEditor_OutputDataReceived(object sender, DataReceivedEventArgs e)
|
||||
{
|
||||
if (onApkEditorOutputDataRecieved != null && e.Data != null)
|
||||
onApkEditorOutputDataRecieved(this, new ApkEditorDataReceivedEventArgs(e.Data));
|
||||
}
|
||||
|
||||
void ApkEditor_Exited(object sender, EventArgs e)
|
||||
{
|
||||
if (Exited != null)
|
||||
Exited(this, new ApkEditorExitedEventArgs(ExitCode));
|
||||
}
|
||||
public void Cancel()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("java"))
|
||||
{
|
||||
if (process.Id == Id)
|
||||
{
|
||||
ProcessUtils.KillAllProcessesSpawnedBy((uint)Id);
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public int Merge(string input, string output)
|
||||
{
|
||||
string inputFile = String.Format("-i \"{0}\"", input);
|
||||
string keyOutputDir = String.Format("-o \"{0}\"", output);
|
||||
|
||||
string args = String.Format("m {0} {1} -f", inputFile, keyOutputDir);
|
||||
|
||||
Log.d("ApkEditor CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
|
||||
WaitForExit();
|
||||
|
||||
CancelOutputRead();
|
||||
CancelErrorRead();
|
||||
return ExitCode;
|
||||
}
|
||||
|
||||
public int Decompile(string input, string output)
|
||||
{
|
||||
string inputFile = String.Format("-i \"{0}\"", input);
|
||||
string keyOutputDir = String.Format("-o \"{0}\"", output);
|
||||
|
||||
string args = String.Format("d {0} {1} -f", inputFile, keyOutputDir);
|
||||
|
||||
Log.d("ApkEditor CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
|
||||
WaitForExit();
|
||||
|
||||
CancelOutputRead();
|
||||
CancelErrorRead();
|
||||
return ExitCode;
|
||||
}
|
||||
|
||||
public int Build(string input, string output)
|
||||
{
|
||||
string inputFile = String.Format("-i \"{0}\"", input);
|
||||
string keyOutputDir = String.Format("-o \"{0}\"", output);
|
||||
|
||||
string args = String.Format("b {0} {1} -f", inputFile, keyOutputDir);
|
||||
|
||||
Log.d("ApkEditor CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
|
||||
WaitForExit();
|
||||
|
||||
CancelOutputRead();
|
||||
CancelErrorRead();
|
||||
return ExitCode;
|
||||
}
|
||||
public string GetVersion()
|
||||
{
|
||||
using (JarProcess jar = new JarProcess(JavaPath, JarPath))
|
||||
{
|
||||
jar.EnableRaisingEvents = false;
|
||||
jar.Start("-version");
|
||||
|
||||
//APKEditor always print as errors as usual :)
|
||||
string version = jar.StandardOutput.ReadToEnd();
|
||||
version += jar.StandardError.ReadToEnd();
|
||||
jar.WaitForExit(3000);
|
||||
return version.Replace("\r\n", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ApkEditorExitedEventArgs : EventArgs
|
||||
{
|
||||
public ApkEditorExitedEventArgs(int exitCode)
|
||||
{
|
||||
ExitCode = exitCode;
|
||||
}
|
||||
|
||||
public int ExitCode { get; private set; }
|
||||
}
|
||||
|
||||
public delegate void ApkEditorExitedEventHandler(object sender, ApkEditorExitedEventArgs e);
|
||||
|
||||
public delegate void ApkEditorDataReceivedEventHandler(Object sender, ApkEditorDataReceivedEventArgs e);
|
||||
|
||||
public class ApkEditorDataReceivedEventArgs : EventArgs
|
||||
{
|
||||
string message;
|
||||
|
||||
public ApkEditorDataReceivedEventArgs(string _data)
|
||||
{
|
||||
message = _data;
|
||||
}
|
||||
public String Message
|
||||
{
|
||||
get
|
||||
{
|
||||
return message;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,16 +12,36 @@ 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 text = File.ReadAllText(manifestPath);
|
||||
text = text.Replace("android:isSplitRequired=\"true\"", "");
|
||||
text = text.Replace("android:extractNativeLibs=\"false\"", "");
|
||||
text = text.Replace("android:useEmbeddedDex=\"true\"", "");
|
||||
File.WriteAllText(Path.Combine(path, "AndroidManifest.xml"), text);
|
||||
string maniFestText = File.ReadAllText(manifestPath);
|
||||
maniFestText = maniFestText.Replace("\\ ", "\\u003");
|
||||
maniFestText = maniFestText.Replace("android:isSplitRequired=\"true\"", "");
|
||||
maniFestText = maniFestText.Replace("android:extractNativeLibs=\"false\"", "");
|
||||
maniFestText = maniFestText.Replace("android:useEmbeddedDex=\"true\"", "");
|
||||
maniFestText = maniFestText.Replace("android:manageSpace=\"true\"", "");
|
||||
maniFestText = maniFestText.Replace("android:localeConfig=\"@xml/locales_config\"", "");
|
||||
maniFestText = maniFestText.Replace("STAMP_TYPE_DISTRIBUTION_APK", "STAMP_TYPE_STANDALONE_APK");
|
||||
|
||||
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;
|
||||
@@ -37,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using System.Windows.Forms;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using Java;
|
||||
|
||||
namespace APKToolGUI
|
||||
@@ -20,7 +22,6 @@ namespace APKToolGUI
|
||||
Null
|
||||
}
|
||||
|
||||
//Note: I don't use some features and don't use any framework related since I make it simple for game modding purposes
|
||||
static class DecompileKeys
|
||||
{
|
||||
public const string NoSource = " -s"; //Do not decode sources.
|
||||
@@ -45,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
|
||||
@@ -53,6 +55,12 @@ namespace APKToolGUI
|
||||
public const string Tag = " -t"; //Tag frameworks using <tag>.
|
||||
}
|
||||
|
||||
static class EmptyFrameworkKeys
|
||||
{
|
||||
public const string FrameDir = " -p"; //Stores framework files into <dir>.
|
||||
public const string ForceDelete = " -f"; //Force delete destination directory.
|
||||
}
|
||||
|
||||
ApktoolDataReceivedEventHandler onApktoolOutputDataRecieved;
|
||||
ApktoolDataReceivedEventHandler onApktoolErrorDataRecieved;
|
||||
|
||||
@@ -79,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;
|
||||
@@ -118,18 +128,22 @@ namespace APKToolGUI
|
||||
keyKeepBrokenRes = DecompileKeys.KeepBrokenResource;
|
||||
if (Settings.Default.Decode_MatchOriginal)
|
||||
keyMatchOriginal = DecompileKeys.MatchOriginal;
|
||||
if (Settings.Default.Decode_OnlyMainClasses)
|
||||
if (Settings.Default.Decode_OnlyMainClasses && !Settings.Default.Decode_NoSrc)
|
||||
onlyMainClasses = DecompileKeys.OnlyMainClasses;
|
||||
if (Settings.Default.Decode_NoDebugInfo)
|
||||
noDebugInfo = DecompileKeys.NoDebugInfo;
|
||||
if (Settings.Default.Decode_UseFramework)
|
||||
keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, Settings.Default.Decode_FrameDir);
|
||||
keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, Settings.Default.Framework_FrameDir);
|
||||
else
|
||||
keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, Program.STANDALONE_FRAMEWORK_DIR);
|
||||
if (Settings.Default.Decode_SetApiLevel)
|
||||
apiLevel = String.Format("{0} {1}", DecompileKeys.ApiLevel, Settings.Default.Decode_ApiLevel);
|
||||
keyOutputDir = String.Format("{0} \"{1}\"", DecompileKeys.OutputDir, outputDir);
|
||||
|
||||
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();
|
||||
@@ -137,11 +151,29 @@ namespace APKToolGUI
|
||||
return ExitCode;
|
||||
}
|
||||
|
||||
public int Build(string outputFile)
|
||||
public void Cancel()
|
||||
{
|
||||
string decApkDir = Settings.Default.Build_InputDir;
|
||||
try
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("java"))
|
||||
{
|
||||
if (process.Id == Id)
|
||||
{
|
||||
ProcessUtils.KillAllProcessesSpawnedBy((uint)Id);
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public int Build(string inputFolder, string outputFile)
|
||||
{
|
||||
string keyForceAll = null, keyAapt = null, keyCopyOriginal = null, noCrunch = null, keyFramePath = null, keyOutputAppPath = null, apiLevel = null, useAapt2 = null, netSecConf = null;
|
||||
|
||||
string keyForceAll = null, keyAapt = null, keyCopyOriginal = null, noCrunch = null, keyFramePath = null, keyOutputAppPath = null, apiLevel = null, useAapt2 = null;
|
||||
if (Settings.Default.Build_ForceAll)
|
||||
keyForceAll = BuildKeys.ForceAll;
|
||||
if (Settings.Default.Build_CopyOriginal)
|
||||
@@ -151,14 +183,20 @@ namespace APKToolGUI
|
||||
if (Settings.Default.Build_UseAapt)
|
||||
keyAapt = String.Format("{0} \"{1}\"", BuildKeys.Aapt, Settings.Default.Build_AaptPath);
|
||||
if (Settings.Default.Build_UseFramework)
|
||||
keyFramePath = String.Format("{0} \"{1}\"", BuildKeys.FrameworkPath, Settings.Default.Build_FrameDir);
|
||||
keyFramePath = String.Format("{0} \"{1}\"", BuildKeys.FrameworkPath, Settings.Default.Framework_FrameDir);
|
||||
else
|
||||
keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, Program.STANDALONE_FRAMEWORK_DIR);
|
||||
if (Settings.Default.Build_SetApiLevel)
|
||||
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} \"{decApkDir}\"");
|
||||
string args = String.Format($"b{keyForceAll}{keyAapt}{keyCopyOriginal}{noCrunch}{keyFramePath}{apiLevel}{useAapt2}{netSecConf}{keyOutputAppPath} \"{inputFolder}\"");
|
||||
|
||||
Log.d("Apktool CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
@@ -172,13 +210,15 @@ namespace APKToolGUI
|
||||
string inputPath = Settings.Default.InstallFramework_InputFramePath;
|
||||
string keyFrameDir = null, keyTag = null;
|
||||
|
||||
if (Settings.Default.InstallFramework_UseFrameDir)
|
||||
keyFrameDir = String.Format("{0} \"{1}\"", InstallFrameworkKeys.FrameDir, Settings.Default.InstallFramework_FrameDir);
|
||||
if (Settings.Default.Framework_UseFrameDir)
|
||||
keyFrameDir = String.Format("{0} \"{1}\"", InstallFrameworkKeys.FrameDir, Settings.Default.Framework_FrameDir);
|
||||
if (Settings.Default.InstallFramework_UseTag)
|
||||
keyTag = String.Format("{0} \"{1}\"", InstallFrameworkKeys.Tag, Settings.Default.InstallFramework_Tag);
|
||||
|
||||
string args = String.Format($"if{keyFrameDir}{keyTag} \"{inputPath}\"");
|
||||
|
||||
Log.d("Apktool CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
BeginErrorReadLine();
|
||||
@@ -188,7 +228,15 @@ namespace APKToolGUI
|
||||
|
||||
public int ClearFramework()
|
||||
{
|
||||
string args = String.Format("empty-framework-dir --force");
|
||||
string keyFramePath = null;
|
||||
if (Settings.Default.Decode_UseFramework)
|
||||
keyFramePath = String.Format("{0} \"{1}\"", InstallFrameworkKeys.FrameDir, Settings.Default.Framework_FrameDir);
|
||||
else
|
||||
keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, Program.STANDALONE_FRAMEWORK_DIR);
|
||||
|
||||
string args = String.Format($"empty-framework-dir {EmptyFrameworkKeys.ForceDelete} {keyFramePath}");
|
||||
|
||||
Log.d("Apktool CMD: " + _jarPath + " " + args);
|
||||
|
||||
Start(args);
|
||||
BeginOutputReadLine();
|
||||
@@ -254,7 +302,7 @@ namespace APKToolGUI
|
||||
message = mCol[0].Groups[2].Value;
|
||||
break;
|
||||
case "I":
|
||||
eventType = ApktoolEventType.Information;
|
||||
eventType = ApktoolEventType.None;
|
||||
message = mCol[0].Groups[2].Value;
|
||||
break;
|
||||
case "Error":
|
||||
@@ -281,7 +329,9 @@ namespace APKToolGUI
|
||||
|
||||
public enum ApktoolEventType
|
||||
{
|
||||
Information,
|
||||
None,
|
||||
Success,
|
||||
Infomation,
|
||||
Warning,
|
||||
Error,
|
||||
Unknown
|
||||
|
||||
@@ -3,6 +3,7 @@ using Java;
|
||||
using System.Diagnostics;
|
||||
using APKToolGUI.Properties;
|
||||
using System.IO;
|
||||
using APKToolGUI.Utils;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -10,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;
|
||||
@@ -63,12 +66,31 @@ namespace APKToolGUI
|
||||
Exited(this, new BaksmaliExitedEventArgs(ExitCode));
|
||||
}
|
||||
|
||||
public int Disassemble(string output)
|
||||
public void Cancel()
|
||||
{
|
||||
string inputFile = String.Format("\"{0}\"", Settings.Default.Baksmali_InputDexFile);
|
||||
try
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("java"))
|
||||
{
|
||||
if (process.Id == Id)
|
||||
{
|
||||
ProcessUtils.KillAllProcessesSpawnedBy((uint)Id);
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public int Disassemble(string input, string output)
|
||||
{
|
||||
string inputFile = String.Format("\"{0}\"", input);
|
||||
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();
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
using Java;
|
||||
using System.Diagnostics;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using System.IO.Packaging;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -39,9 +41,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;
|
||||
@@ -65,6 +69,22 @@ namespace APKToolGUI
|
||||
Exited(this, new SignapkExitedEventArgs(base.ExitCode, lastSourceApk, lastOutApk));
|
||||
}
|
||||
|
||||
public void Cancel()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("java"))
|
||||
{
|
||||
if (process.Id == Id)
|
||||
{
|
||||
ProcessUtils.KillAllProcessesSpawnedBy((uint)Id);
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public int Sign(string input, string output)
|
||||
{
|
||||
lastSourceApk = input;
|
||||
@@ -80,7 +100,7 @@ namespace APKToolGUI
|
||||
alias = String.Format("--ks-key-alias {0}", Settings.Default.Sign_Alias);
|
||||
|
||||
string outputDir = null;
|
||||
if (Settings.Default.Sign_UseOutputDir)
|
||||
if (Settings.Default.Sign_UseOutputDir || !Settings.Default.Sign_OverwriteInputFile)
|
||||
outputDir = String.Format("--out \"{0}\"", output);
|
||||
|
||||
string v1 = null;
|
||||
@@ -108,6 +128,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();
|
||||
@@ -116,6 +139,19 @@ namespace APKToolGUI
|
||||
CancelErrorRead();
|
||||
return ExitCode;
|
||||
}
|
||||
|
||||
public string GetSignature(string apkFile)
|
||||
{
|
||||
using (JarProcess apktoolJar = new JarProcess(JavaPath, JarPath))
|
||||
{
|
||||
apktoolJar.EnableRaisingEvents = false;
|
||||
apktoolJar.Start($"verify --print-certs \"{apkFile}\"");
|
||||
string version = apktoolJar.StandardOutput.ReadToEnd();
|
||||
version += apktoolJar.StandardError.ReadToEnd();
|
||||
apktoolJar.WaitForExit();
|
||||
return version;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void SignapkExitedEventHandler(object sender, SignapkExitedEventArgs e);
|
||||
|
||||
@@ -3,6 +3,7 @@ using Java;
|
||||
using System.Diagnostics;
|
||||
using APKToolGUI.Properties;
|
||||
using System.IO;
|
||||
using APKToolGUI.Utils;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -10,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;
|
||||
}
|
||||
|
||||
@@ -60,12 +63,31 @@ namespace APKToolGUI
|
||||
Exited(this, new SmaliExitedEventArgs(ExitCode));
|
||||
}
|
||||
|
||||
public int Assemble(string output)
|
||||
public void Cancel()
|
||||
{
|
||||
string inputFile = String.Format("\"{0}\"", Settings.Default.Smali_InputDir);
|
||||
try
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("java"))
|
||||
{
|
||||
if (process.Id == Id)
|
||||
{
|
||||
ProcessUtils.KillAllProcessesSpawnedBy((uint)Id);
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public int Assemble(string input, string output)
|
||||
{
|
||||
string inputFile = String.Format("\"{0}\"", input);
|
||||
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;
|
||||
@@ -50,6 +52,22 @@ namespace APKToolGUI
|
||||
Exited(this, new EventArgs());
|
||||
}
|
||||
|
||||
public void Cancel()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName("zipalign"))
|
||||
{
|
||||
if (process.Id == processZipalign.Id)
|
||||
{
|
||||
ProcessUtils.KillAllProcessesSpawnedBy((uint)processZipalign.Id);
|
||||
process.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public int Align(string input, string output)
|
||||
{
|
||||
string keyCheckOnly = null, keyVerbose = null, keyRecompress = null, keyOverwriteOutputFile = null, keyOutputFile = null;
|
||||
@@ -76,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,3 +1,3 @@
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<Costura />
|
||||
<Costura DisableCompression='true' />
|
||||
</Weavers>
|
||||
@@ -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);
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Über</value>
|
||||
</data>
|
||||
<data name="labelCopyright.Text" xml:space="preserve">
|
||||
<value>Copyright</value>
|
||||
</data>
|
||||
<data name="labelProductName.Text" xml:space="preserve">
|
||||
<value>Produktname</value>
|
||||
</data>
|
||||
<data name="labelVersion.Text" xml:space="preserve">
|
||||
<value>Version</value>
|
||||
</data>
|
||||
<data name="linkLabel1.Text" xml:space="preserve">
|
||||
<value>Github Repo</value>
|
||||
</data>
|
||||
<data name="okButton.Text" xml:space="preserve">
|
||||
<value>&ОК</value>
|
||||
</data>
|
||||
<data name="textBoxDescription.Text" xml:space="preserve">
|
||||
<value>Beschreibung</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -550,7 +550,7 @@
|
||||
<value>25</value>
|
||||
</data>
|
||||
<data name="linkLabel1.Text" xml:space="preserve">
|
||||
<value>Page</value>
|
||||
<value>Github Repo</value>
|
||||
</data>
|
||||
<data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleLeft</value>
|
||||
@@ -606,6 +606,9 @@
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>508, 283</value>
|
||||
</data>
|
||||
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Segoe UI, 8.25pt</value>
|
||||
</data>
|
||||
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||
<value>9, 9, 9, 9</value>
|
||||
</data>
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="labelProductName.Text" xml:space="preserve">
|
||||
<value>软件名</value>
|
||||
</data>
|
||||
<data name="labelVersion.Text" xml:space="preserve">
|
||||
<value>版本</value>
|
||||
</data>
|
||||
<data name="labelCopyright.Text" xml:space="preserve">
|
||||
<value>版权</value>
|
||||
</data>
|
||||
<data name="textBoxDescription.Text" xml:space="preserve">
|
||||
<value>描述</value>
|
||||
</data>
|
||||
<data name="linkLabel1.Text" xml:space="preserve">
|
||||
<value>Github反馈</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>关于</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,537 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="comApkOpenDir.Text" xml:space="preserve">
|
||||
<value>编译的APK目录</value>
|
||||
</data>
|
||||
<data name="decOutOpenDirBtn.Text" xml:space="preserve">
|
||||
<value>反编译输出目录</value>
|
||||
</data>
|
||||
<data name="signApkOpenDirBtn.Text" xml:space="preserve">
|
||||
<value>签名的APK目录</value>
|
||||
</data>
|
||||
<data name="button_SIGN_Sign.Text" xml:space="preserve">
|
||||
<value>签名</value>
|
||||
</data>
|
||||
<data name="button_BUILD_Build.Text" xml:space="preserve">
|
||||
<value>编译</value>
|
||||
</data>
|
||||
<data name="button_DECODE_Decode.Text" xml:space="preserve">
|
||||
<value>反编译</value>
|
||||
</data>
|
||||
<data name="tabPageMain.Text" xml:space="preserve">
|
||||
<value>首页</value>
|
||||
</data>
|
||||
<data name="basicInfoTabPage.Text" xml:space="preserve">
|
||||
<value>基本信息</value>
|
||||
</data>
|
||||
<data name="tabPage3.Text" xml:space="preserve">
|
||||
<value>完整信息</value>
|
||||
</data>
|
||||
<data name="tabPageApkInfo.Text" xml:space="preserve">
|
||||
<value>APK信息</value>
|
||||
</data>
|
||||
<data name="label17.Text" xml:space="preserve">
|
||||
<value>文件:</value>
|
||||
</data>
|
||||
<data name="label18.Text" xml:space="preserve">
|
||||
<value>本地化:</value>
|
||||
</data>
|
||||
<data name="label15.Text" xml:space="preserve">
|
||||
<value>权限:</value>
|
||||
</data>
|
||||
<data name="label19.Text" xml:space="preserve">
|
||||
<value>商店链接:</value>
|
||||
</data>
|
||||
<data name="label7.Text" xml:space="preserve">
|
||||
<value>应用名:</value>
|
||||
</data>
|
||||
<data name="label9.Text" xml:space="preserve">
|
||||
<value>应用包名:</value>
|
||||
</data>
|
||||
<data name="label8.Text" xml:space="preserve">
|
||||
<value>版本:</value>
|
||||
</data>
|
||||
<data name="label11.Text" xml:space="preserve">
|
||||
<value>最小兼容SDK:</value>
|
||||
</data>
|
||||
<data name="label10.Text" xml:space="preserve">
|
||||
<value>代号:</value>
|
||||
</data>
|
||||
<data name="label13.Text" xml:space="preserve">
|
||||
<value>屏幕尺寸</value>
|
||||
</data>
|
||||
<data name="label12.Text" xml:space="preserve">
|
||||
<value>目标SDK:</value>
|
||||
</data>
|
||||
<data name="label14.Text" xml:space="preserve">
|
||||
<value>密度:</value>
|
||||
</data>
|
||||
<data name="label31.Text" xml:space="preserve">
|
||||
<value>桌面启动项</value>
|
||||
</data>
|
||||
<data name="label30.Text" xml:space="preserve">
|
||||
<value>架构:</value>
|
||||
</data>
|
||||
<data name="newInsToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>新进程</value>
|
||||
</data>
|
||||
<data name="saveLogToFileToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>保存日志</value>
|
||||
</data>
|
||||
<data name="settingsToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>设置</value>
|
||||
</data>
|
||||
<data name="openTempFolderToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>打开缓存目录</value>
|
||||
</data>
|
||||
<data name="clearTempFolderToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>清空缓存目录</value>
|
||||
</data>
|
||||
<data name="exitToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>退出</value>
|
||||
</data>
|
||||
<data name="fileToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>文件</value>
|
||||
</data>
|
||||
<data name="checkForUpdateToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>检查更新</value>
|
||||
</data>
|
||||
<data name="reportAnIsuueToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>反馈问题</value>
|
||||
</data>
|
||||
<data name="apktoolIssuesToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Apktool问题反馈</value>
|
||||
</data>
|
||||
<data name="baksmaliIssuesToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Baksmail问题反馈</value>
|
||||
</data>
|
||||
<data name="aboutToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>关于</value>
|
||||
</data>
|
||||
<data name="helpToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>帮助</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_NetSecConf.Text" xml:space="preserve">
|
||||
<value>在输出APK中添加通用的网络安全配置文件</value>
|
||||
</data>
|
||||
<data name="useAapt2ChkBox.Text" xml:space="preserve">
|
||||
<value>使用aapt2(升级apktool使用实验性的aapt2二进制)</value>
|
||||
</data>
|
||||
<data name="buildSetApiLvlChkBox.Text" xml:space="preserve">
|
||||
<value>设置要生成的文件的API级别,例如ICS为14</value>
|
||||
</data>
|
||||
<data name="createUnsignApkChkBox.Text" xml:space="preserve">
|
||||
<value>构建后创建带有原始签名的未签名APK</value>
|
||||
</data>
|
||||
<data name="createUnsignApkChkBox.ToolTip" xml:space="preserve">
|
||||
<value>只兼容核心补丁模块,需要root设备。</value>
|
||||
</data>
|
||||
<data name="signAfterBuildChkBox.Text" xml:space="preserve">
|
||||
<value>在构建 / zip对齐后进行签名</value>
|
||||
</data>
|
||||
<data name="zipalignAfterBuildChkBox.Text" xml:space="preserve">
|
||||
<value>在构建后进行zip对齐优化</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_NoCrunch.Text" xml:space="preserve">
|
||||
<value>在构建步骤中禁用对resource文件的处理</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_ForceAll.Text" xml:space="preserve">
|
||||
<value>跳过变更检测并构建所有文件</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_OutputAppPath.Text" xml:space="preserve">
|
||||
<value>APK输出目录</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_OutputAppPath.ToolTip" xml:space="preserve">
|
||||
<value>编译后的输出目录也将用于Zipalign和签名</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_CopyOriginal.Text" xml:space="preserve">
|
||||
<value>复制原来的AndroidManifest.xml和META-INF文件夹</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_UseAapt.Text" xml:space="preserve">
|
||||
<value>使用的aapt.exe文件位置:</value>
|
||||
</data>
|
||||
<data name="checkBox_BUILD_UseFramework.Text" xml:space="preserve">
|
||||
<value>使用的framework文件位置:</value>
|
||||
</data>
|
||||
<data name="groupBox_BUILD_Options.Text" xml:space="preserve">
|
||||
<value>选项</value>
|
||||
</data>
|
||||
<data name="tabPageBuild.Text" xml:space="preserve">
|
||||
<value>构建</value>
|
||||
</data>
|
||||
<data name="label33.Text" xml:space="preserve">
|
||||
<value>选择设备</value>
|
||||
</data>
|
||||
<data name="killAdbBtn.Text" xml:space="preserve">
|
||||
<value>结束ADB进程</value>
|
||||
</data>
|
||||
<data name="installApkBtn.Text" xml:space="preserve">
|
||||
<value>安装APK</value>
|
||||
</data>
|
||||
<data name="refreshDevicesBtn.Text" xml:space="preserve">
|
||||
<value>刷新</value>
|
||||
</data>
|
||||
<data name="setVendorChkBox.Text" xml:space="preserve">
|
||||
<value>设置vendor为Play Store (com.android.vending)</value>
|
||||
</data>
|
||||
<data name="label32.Text" xml:space="preserve">
|
||||
<value>选择APK</value>
|
||||
</data>
|
||||
<data name="toolStripStatusLabelStateText.Text" xml:space="preserve">
|
||||
<value>加载中...</value>
|
||||
</data>
|
||||
<data name="clearLogToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>清除日志</value>
|
||||
</data>
|
||||
<data name="checkBox2.Text" xml:space="preserve">
|
||||
<value>签名后安装APK(确保首先在ADB选项中选择设备)</value>
|
||||
</data>
|
||||
<data name="checkBox1.Text" xml:space="preserve">
|
||||
<value>覆盖输入文件</value>
|
||||
</data>
|
||||
<data name="autoDelIdsigChkBox.Text" xml:space="preserve">
|
||||
<value>自动删除idsig文件</value>
|
||||
</data>
|
||||
<data name="schemev4ComboBox.Items" xml:space="preserve">
|
||||
<value>默认</value>
|
||||
</data>
|
||||
<data name="schemev4ComboBox.Items1" xml:space="preserve">
|
||||
<value>开启</value>
|
||||
</data>
|
||||
<data name="schemev4ComboBox.Items2" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="label27.Text" xml:space="preserve">
|
||||
<value>签名方案 v4:</value>
|
||||
</data>
|
||||
<data name="schemev3ComboBox.Items" xml:space="preserve">
|
||||
<value>默认</value>
|
||||
</data>
|
||||
<data name="schemev3ComboBox.Items1" xml:space="preserve">
|
||||
<value>开启</value>
|
||||
</data>
|
||||
<data name="schemev3ComboBox.Items2" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="label26.Text" xml:space="preserve">
|
||||
<value>签名方案 v3:</value>
|
||||
</data>
|
||||
<data name="schemev2ComboBox.Items" xml:space="preserve">
|
||||
<value>默认</value>
|
||||
</data>
|
||||
<data name="schemev2ComboBox.Items1" xml:space="preserve">
|
||||
<value>选择</value>
|
||||
</data>
|
||||
<data name="schemev2ComboBox.Items2" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="label25.Text" xml:space="preserve">
|
||||
<value>签名方案 v2:</value>
|
||||
</data>
|
||||
<data name="schemev1ComboBox.Items" xml:space="preserve">
|
||||
<value>默认</value>
|
||||
</data>
|
||||
<data name="schemev1ComboBox.Items1" xml:space="preserve">
|
||||
<value>开启</value>
|
||||
</data>
|
||||
<data name="schemev1ComboBox.Items2" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="label24.Text" xml:space="preserve">
|
||||
<value>签名方案 v1:</value>
|
||||
</data>
|
||||
<data name="label21.Text" xml:space="preserve">
|
||||
<value>密码:</value>
|
||||
</data>
|
||||
<data name="label20.Text" xml:space="preserve">
|
||||
<value>keystore/jks文件:</value>
|
||||
</data>
|
||||
<data name="useKeyStoreChkBox.Text" xml:space="preserve">
|
||||
<value>使用keystore</value>
|
||||
</data>
|
||||
<data name="useSigningOutputDir.Text" xml:space="preserve">
|
||||
<value>APK输出目录:</value>
|
||||
</data>
|
||||
<data name="label_SIGN_PrivateKey.Text" xml:space="preserve">
|
||||
<value>私钥:</value>
|
||||
</data>
|
||||
<data name="label_SIGN_PublicKey.Text" xml:space="preserve">
|
||||
<value>公钥:</value>
|
||||
</data>
|
||||
<data name="groupBox_SIGN_Options.Text" xml:space="preserve">
|
||||
<value>选项</value>
|
||||
</data>
|
||||
<data name="tabPageSign.Text" xml:space="preserve">
|
||||
<value>签名</value>
|
||||
</data>
|
||||
<data name="zipalignOutputDirChkBox.Text" xml:space="preserve">
|
||||
<value>APK输出目录:</value>
|
||||
</data>
|
||||
<data name="signAfterZipalignChkBox.Text" xml:space="preserve">
|
||||
<value>zip对齐后进行签名</value>
|
||||
</data>
|
||||
<data name="checkBox7.Text" xml:space="preserve">
|
||||
<value>在选择APK进行反编译时,不要解析APK信息</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_UseApkEditorMerge.Text" xml:space="preserve">
|
||||
<value>使用APKEditor.jar合并、分离APK(速度更快)</value>
|
||||
</data>
|
||||
<data name="decSetApiLvlChkBox.Text" xml:space="preserve">
|
||||
<value>设置要生成的文件的API级别,例如ICS为14</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_FixError.Text" xml:space="preserve">
|
||||
<value>修复反编译后的ApkTool错误</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_FixError.ToolTip" xml:space="preserve">
|
||||
<value>将删除extractNativeLibs, useEmbeddedDex, APKTOOL_DUMMY,拆分相关属性并将sparseresource设置为false</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_OnlyMainClasses.Text" xml:space="preserve">
|
||||
<value>只反汇编根目录中的主索引类(classes[0-9]*.dex)。</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_OnlyMainClasses.ToolTip" xml:space="preserve">
|
||||
<value>修复异常的ApkTool错误</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_UseFramework.Text" xml:space="preserve">
|
||||
<value>使用的framework文件位置:</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_MatchOriginal.Text" xml:space="preserve">
|
||||
<value>尽可能保持文件最接近原始,防止重建</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_OutputDirectory.Text" xml:space="preserve">
|
||||
<value>输出目录:</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_KeepBrokenRes.Text" xml:space="preserve">
|
||||
<value>保留损坏资源</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_Force.Text" xml:space="preserve">
|
||||
<value>强制删除目标目录</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_NoDebugInfo.Text" xml:space="preserve">
|
||||
<value>不要输出调试信息(.Local, .param, .line等)</value>
|
||||
</data>
|
||||
<data name="groupBox_DECODE_Options.Text" xml:space="preserve">
|
||||
<value>选项</value>
|
||||
</data>
|
||||
<data name="tabPageDecode.Text" xml:space="preserve">
|
||||
<value>反编译</value>
|
||||
</data>
|
||||
<data name="useAliasChkBox.Text" xml:space="preserve">
|
||||
<value>别名</value>
|
||||
</data>
|
||||
<data name="label22.Text" xml:space="preserve">
|
||||
<value>强烈建议您使用自己的密钥,通过Android Studio或其他工具创建</value>
|
||||
</data>
|
||||
<data name="checkBox_ZIPALIGN_Recompress.Text" xml:space="preserve">
|
||||
<value>使用Zopfli重新压缩</value>
|
||||
</data>
|
||||
<data name="label_ZIPALIGN_AlignmentBytes.Text" xml:space="preserve">
|
||||
<value>以bytes为单位的对齐,例如: '4' 提供32-bit对齐</value>
|
||||
</data>
|
||||
<data name="checkBox_ZIPALIGN_CheckAlignment.Text" xml:space="preserve">
|
||||
<value>只检查对齐(不修改文件)</value>
|
||||
</data>
|
||||
<data name="checkBox_ZIPALIGN_VerboseOutput.Text" xml:space="preserve">
|
||||
<value>详细输出</value>
|
||||
</data>
|
||||
<data name="checkBox_ZIPALIGN_OverwriteOutputFile.Text" xml:space="preserve">
|
||||
<value>覆盖现有的输出文件</value>
|
||||
</data>
|
||||
<data name="groupBox_ZIPALIGN_Options.Text" xml:space="preserve">
|
||||
<value>选项</value>
|
||||
</data>
|
||||
<data name="openFwFolderBtn.Text" xml:space="preserve">
|
||||
<value>打开framework目录</value>
|
||||
</data>
|
||||
<data name="clearFwBtn.Text" xml:space="preserve">
|
||||
<value>清空framework缓存</value>
|
||||
</data>
|
||||
<data name="clearFwBeforeDecodeChkBox.Text" xml:space="preserve">
|
||||
<value>反编译前清空Framework缓存</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>选项</value>
|
||||
</data>
|
||||
<data name="checkBox_IF_Tag.Text" xml:space="preserve">
|
||||
<value>Tag frameworks 使用:</value>
|
||||
</data>
|
||||
<data name="checkBox_IF_FramePath.Text" xml:space="preserve">
|
||||
<value>将framework文件存储到:</value>
|
||||
</data>
|
||||
<data name="groupBox_IF_Options.Text" xml:space="preserve">
|
||||
<value>选项</value>
|
||||
</data>
|
||||
<data name="alignApkOpenDirBtn.Text" xml:space="preserve">
|
||||
<value>Zip对齐的APK目录</value>
|
||||
</data>
|
||||
<data name="decApkOpenDirBtn.Text" xml:space="preserve">
|
||||
<value>反编译的APK目录</value>
|
||||
</data>
|
||||
<data name="compileOutputOpenDirBtn.Text" xml:space="preserve">
|
||||
<value>编译输出目录</value>
|
||||
</data>
|
||||
<data name="label4.Text" xml:space="preserve">
|
||||
<value>APK签名:</value>
|
||||
</data>
|
||||
<data name="button_ZIPALIGN_Align.Text" xml:space="preserve">
|
||||
<value>对齐优化</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_NoSrc.Text" xml:space="preserve">
|
||||
<value>不反编译源码</value>
|
||||
</data>
|
||||
<data name="checkBox_DECODE_NoRes.Text" xml:space="preserve">
|
||||
<value>不反编译resouces</value>
|
||||
</data>
|
||||
<data name="button_IF_InstallFramework.Text" xml:space="preserve">
|
||||
<value>安装</value>
|
||||
</data>
|
||||
<data name="label29.Text" xml:space="preserve">
|
||||
<value>Smali编译目录:</value>
|
||||
</data>
|
||||
<data name="smaliUseOutputChkBox.Text" xml:space="preserve">
|
||||
<value>Dex输出目录:</value>
|
||||
</data>
|
||||
<data name="comSmaliBtn.Text" xml:space="preserve">
|
||||
<value>编译</value>
|
||||
</data>
|
||||
<data name="label28.Text" xml:space="preserve">
|
||||
<value>dex反编译</value>
|
||||
</data>
|
||||
<data name="baksmaliUseOutputChkBox.Text" xml:space="preserve">
|
||||
<value>输出目录:</value>
|
||||
</data>
|
||||
<data name="decSmaliBtn.Text" xml:space="preserve">
|
||||
<value>反编译</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>反编译APK目录:</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>APK文件对齐优化:</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>APK/XAPK/APKS/ZIP/APKM文件:</value>
|
||||
</data>
|
||||
<data name="button_OpenMainActivity.Text" xml:space="preserve">
|
||||
<value>启动项smail</value>
|
||||
</data>
|
||||
<data name="tabPageZipAlign.Text" xml:space="preserve">
|
||||
<value>Zip对齐</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -32,25 +32,37 @@
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBoxJava = new System.Windows.Forms.GroupBox();
|
||||
this.labelCustomJavaLocation = new System.Windows.Forms.Label();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.checkBox7 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox6 = new System.Windows.Forms.CheckBox();
|
||||
this.themeComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.customApkToolTxtBox = new System.Windows.Forms.TextBox();
|
||||
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.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBoxCheckUpdateStartup = new System.Windows.Forms.CheckBox();
|
||||
this.textBoxCustomJavaLocation = new System.Windows.Forms.TextBox();
|
||||
this.ignoreOutputContextMenuBox = new System.Windows.Forms.CheckBox();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBoxJava.SuspendLayout();
|
||||
this.groupBoxLanguage.SuspendLayout();
|
||||
this.groupBoxContextMenu.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
@@ -64,35 +76,152 @@
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
||||
this.tabPage1.Controls.Add(this.groupBox1);
|
||||
this.tabPage1.Controls.Add(this.groupBoxJava);
|
||||
this.tabPage1.Controls.Add(this.groupBoxLanguage);
|
||||
this.tabPage1.Controls.Add(this.groupBoxContextMenu);
|
||||
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);
|
||||
this.groupBox1.Controls.Add(this.label6);
|
||||
this.groupBox1.Controls.Add(this.checkBox5);
|
||||
this.groupBox1.Controls.Add(this.checkBox4);
|
||||
this.groupBox1.Controls.Add(this.customTempLocationTxtBox);
|
||||
this.groupBox1.Controls.Add(this.textBoxCustomJavaLocation);
|
||||
this.groupBox1.Controls.Add(this.buttonCustomTempLocation);
|
||||
this.groupBox1.Controls.Add(this.checkBox3);
|
||||
this.groupBox1.Controls.Add(this.buttonCustomJavaLocation);
|
||||
this.groupBox1.Controls.Add(this.checkBox2);
|
||||
this.groupBox1.Controls.Add(this.checkBox1);
|
||||
this.groupBox1.Controls.Add(this.checkBoxCheckUpdateStartup);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// groupBoxJava
|
||||
// textBox1
|
||||
//
|
||||
resources.ApplyResources(this.groupBoxJava, "groupBoxJava");
|
||||
this.groupBoxJava.Controls.Add(this.labelCustomJavaLocation);
|
||||
this.groupBoxJava.Controls.Add(this.textBoxCustomJavaLocation);
|
||||
this.groupBoxJava.Controls.Add(this.buttonCustomJavaLocation);
|
||||
this.groupBoxJava.Name = "groupBoxJava";
|
||||
this.groupBoxJava.TabStop = false;
|
||||
resources.ApplyResources(this.textBox1, "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));
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Text = global::APKToolGUI.Properties.Settings.Default.CustomJVMArgs;
|
||||
//
|
||||
// labelCustomJavaLocation
|
||||
// checkBox7
|
||||
//
|
||||
resources.ApplyResources(this.labelCustomJavaLocation, "labelCustomJavaLocation");
|
||||
this.labelCustomJavaLocation.Name = "labelCustomJavaLocation";
|
||||
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;
|
||||
//
|
||||
// themeComboBox
|
||||
//
|
||||
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";
|
||||
//
|
||||
// customApkToolTxtBox
|
||||
//
|
||||
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;
|
||||
//
|
||||
// customApktoolBtn
|
||||
//
|
||||
resources.ApplyResources(this.customApktoolBtn, "customApktoolBtn");
|
||||
this.customApktoolBtn.Name = "customApktoolBtn";
|
||||
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");
|
||||
this.buttonCustomTempLocation.Name = "buttonCustomTempLocation";
|
||||
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
|
||||
//
|
||||
@@ -101,6 +230,32 @@
|
||||
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");
|
||||
@@ -110,8 +265,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";
|
||||
//
|
||||
@@ -125,6 +280,14 @@
|
||||
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");
|
||||
@@ -158,39 +321,6 @@
|
||||
this.buttonОК.UseVisualStyleBackColor = true;
|
||||
this.buttonОК.Click += new System.EventHandler(this.buttonОК_Click);
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
resources.ApplyResources(this.checkBox1, "checkBox1");
|
||||
this.checkBox1.Checked = global::APKToolGUI.Properties.Settings.Default.ClearLogBeforeAction;
|
||||
this.checkBox1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "ClearLogBeforeAction", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBoxCheckUpdateStartup
|
||||
//
|
||||
resources.ApplyResources(this.checkBoxCheckUpdateStartup, "checkBoxCheckUpdateStartup");
|
||||
this.checkBoxCheckUpdateStartup.Checked = global::APKToolGUI.Properties.Settings.Default.CheckForUpdateAtStartup;
|
||||
this.checkBoxCheckUpdateStartup.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBoxCheckUpdateStartup.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "CheckForUpdateAtStartup", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
|
||||
this.checkBoxCheckUpdateStartup.Name = "checkBoxCheckUpdateStartup";
|
||||
this.checkBoxCheckUpdateStartup.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// 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;
|
||||
//
|
||||
// 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");
|
||||
@@ -207,8 +337,6 @@
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBoxJava.ResumeLayout(false);
|
||||
this.groupBoxJava.PerformLayout();
|
||||
this.groupBoxLanguage.ResumeLayout(false);
|
||||
this.groupBoxContextMenu.ResumeLayout(false);
|
||||
this.groupBoxContextMenu.PerformLayout();
|
||||
@@ -220,7 +348,6 @@
|
||||
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.GroupBox groupBoxJava;
|
||||
private System.Windows.Forms.GroupBox groupBoxLanguage;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.GroupBox groupBoxContextMenu;
|
||||
@@ -231,10 +358,24 @@
|
||||
private System.Windows.Forms.Button buttonОК;
|
||||
private System.Windows.Forms.TextBox textBoxCustomJavaLocation;
|
||||
private System.Windows.Forms.Button buttonCustomJavaLocation;
|
||||
private System.Windows.Forms.Label labelCustomJavaLocation;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.CheckBox checkBoxCheckUpdateStartup;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.CheckBox ignoreOutputContextMenuBox;
|
||||
private System.Windows.Forms.CheckBox checkBox2;
|
||||
private System.Windows.Forms.CheckBox checkBox4;
|
||||
private System.Windows.Forms.TextBox customTempLocationTxtBox;
|
||||
private System.Windows.Forms.Button buttonCustomTempLocation;
|
||||
private System.Windows.Forms.CheckBox checkBox3;
|
||||
internal System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.CheckBox checkBox5;
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -4,19 +4,45 @@ using System.Runtime.InteropServices;
|
||||
using System.IO;
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Utils;
|
||||
using Ookii.Dialogs.WinForms;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Shapes;
|
||||
using static APKToolGUI.UpdateChecker;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Controls;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
public partial class FormSettings : Form
|
||||
{
|
||||
string currentLanguage;
|
||||
bool currentUseApktoolChk;
|
||||
string currentApktoolPath;
|
||||
int currentTheme;
|
||||
|
||||
public FormSettings()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (Program.IsDarkTheme())
|
||||
DarkTheme.SetTheme(Controls, this);
|
||||
|
||||
currentUseApktoolChk = useCustomApktoolChk.Checked;
|
||||
currentApktoolPath = customApkToolTxtBox.Text;
|
||||
|
||||
if (!AdminUtils.IsAdministrator())
|
||||
{
|
||||
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
|
||||
@@ -29,9 +55,9 @@ namespace APKToolGUI
|
||||
private void buttonОК_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveSettings();
|
||||
this.Close();
|
||||
Close();
|
||||
}
|
||||
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
|
||||
public static extern IntPtr SendMessage(HandleRef hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
|
||||
|
||||
@@ -43,13 +69,13 @@ namespace APKToolGUI
|
||||
|
||||
private void buttonAddContextMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(MessageBox.Show(Language.DoYouRealyWantToInstallCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
|
||||
if (MessageBox.Show(Language.DoYouRealyWantToInstallCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
RunAsAdmin(Application.ExecutablePath, "ccm");
|
||||
}
|
||||
|
||||
private void buttonRemoveContextMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (MessageBox.Show(Language.DoYouRealyWantToRemoveCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
|
||||
if (MessageBox.Show(Language.DoYouRealyWantToRemoveCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
RunAsAdmin(Application.ExecutablePath, "rcm");
|
||||
}
|
||||
|
||||
@@ -57,45 +83,85 @@ namespace APKToolGUI
|
||||
|
||||
private void LoadSettings()
|
||||
{
|
||||
//textBox1.Font = Properties.Settings.Default.FontLogMainWindow;
|
||||
//textBox2.Font = Properties.Settings.Default.FontLogContextMenuWindow;
|
||||
//textBox1.Text = textBox1.Font.Name + ", " + textBox1.Font.Size;
|
||||
//textBox2.Text = textBox2.Font.Name + ", " + textBox2.Font.Size;
|
||||
string sysLang = Language.SystemLanguage;
|
||||
|
||||
String sysLang = Language.SystemLanguage;
|
||||
comboBox1.Items.Add(sysLang);
|
||||
comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("ru"));
|
||||
comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("en"));
|
||||
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("uk"));
|
||||
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("ru-RU"));
|
||||
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
|
||||
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("uk-UA"));
|
||||
|
||||
comboBox1.Items.Add(CultureInfo.GetCultureInfo("en"));
|
||||
|
||||
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
|
||||
string _culture = Settings.Default.Culture;
|
||||
|
||||
foreach (CultureInfo culture in cultures)
|
||||
{
|
||||
foreach (string resourceName in Assembly.GetExecutingAssembly().GetManifestResourceNames())
|
||||
{
|
||||
//Debug.WriteLine(resourceName);
|
||||
string[] cultName = resourceName.Split('.');
|
||||
if (cultName[1] == culture.Name)
|
||||
{
|
||||
//Debug.WriteLine("Lang: " + cultName[1] + " " + culture.Name);
|
||||
string lang = string.Format("{0} [{1}]", culture.DisplayName, culture.Name);
|
||||
comboBox1.Items.Add(lang);
|
||||
|
||||
if (culture.Name == _culture)
|
||||
comboBox1.SelectedItem = lang;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
comboBox1.DisplayMember = "NativeName"; // <= System.Globalization.CultureInfo.GetCultureInfo("ru-RU").NativeName
|
||||
comboBox1.ValueMember = "Name"; // <= System.Globalization.CultureInfo.GetCultureInfo("ru-RU").Name
|
||||
|
||||
// Если в настройках есть язык, выбираем его в списке.
|
||||
String _culture = Properties.Settings.Default.Culture;
|
||||
if (_culture.Equals("Auto"))
|
||||
{
|
||||
currentLanguage = sysLang;
|
||||
comboBox1.SelectedItem = sysLang;
|
||||
}
|
||||
else if (string.IsNullOrEmpty(_culture))
|
||||
{
|
||||
comboBox1.SelectedIndex = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var qwe = System.Globalization.CultureInfo.GetCultureInfo(_culture);
|
||||
comboBox1.SelectedItem = qwe;
|
||||
try
|
||||
{
|
||||
currentLanguage = Settings.Default.Culture;
|
||||
comboBox1.SelectedItem = _culture;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void SaveSettings()
|
||||
{
|
||||
//Properties.Settings.Default.FontLogMainWindow = textBox1.Font;
|
||||
//Properties.Settings.Default.FontLogContextMenuWindow = textBox2.Font;
|
||||
try
|
||||
{
|
||||
if (Language.SystemLanguage.Equals(comboBox1.SelectedItem.ToString()))
|
||||
Settings.Default.Culture = "Auto";
|
||||
else
|
||||
Settings.Default.Culture = StringExt.Regex(@"(?<=\[)(.*?)(?=\])", comboBox1.SelectedItem.ToString());
|
||||
|
||||
if (Language.SystemLanguage.Equals(comboBox1.SelectedItem.ToString()))
|
||||
Properties.Settings.Default.Culture = "Auto";
|
||||
else
|
||||
Properties.Settings.Default.Culture = comboBox1.SelectedItem.ToString();
|
||||
Properties.Settings.Default.Save();
|
||||
Settings.Default.Theme = themeComboBox.SelectedIndex;
|
||||
Settings.Default.Save();
|
||||
|
||||
if (string.IsNullOrEmpty(currentLanguage))
|
||||
currentLanguage = "en";
|
||||
|
||||
Debug.WriteLine("Combobox: " + comboBox1.SelectedItem.ToString() + " Language: " + currentLanguage);
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
public static void RunAsAdmin(string aFileName, string anArguments)
|
||||
@@ -105,7 +171,7 @@ namespace APKToolGUI
|
||||
processInfo.FileName = aFileName;
|
||||
processInfo.Arguments = anArguments;
|
||||
processInfo.UseShellExecute = true;
|
||||
processInfo.Verb = "runas"; // здесь вся соль
|
||||
processInfo.Verb = "runas";
|
||||
|
||||
try
|
||||
{
|
||||
@@ -117,46 +183,45 @@ namespace APKToolGUI
|
||||
}
|
||||
}
|
||||
|
||||
//private void button1_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// FontDialog fontDialog1 = new FontDialog();
|
||||
// fontDialog1.Font = textBox1.Font;
|
||||
// if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||
// {
|
||||
// textBox1.Text = fontDialog1.Font.Name + ", " + fontDialog1.Font.Size;
|
||||
// textBox1.Font = fontDialog1.Font;
|
||||
// }
|
||||
//}
|
||||
|
||||
//private void button2_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// FontDialog fontDialog1 = new FontDialog();
|
||||
// fontDialog1.Font = textBox2.Font;
|
||||
// if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||
// {
|
||||
// textBox2.Text = fontDialog1.Font.Name + ", " + fontDialog1.Font.Size;
|
||||
// textBox2.Font = fontDialog1.Font;
|
||||
// }
|
||||
//}
|
||||
|
||||
private void buttonCustomJavaLocation_Click(object sender, EventArgs e)
|
||||
{
|
||||
using(OpenFileDialog openJavaExe = new OpenFileDialog())
|
||||
using (OpenFileDialog openJavaExe = new OpenFileDialog())
|
||||
{
|
||||
openJavaExe.Filter = "java.exe|java.exe";
|
||||
if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||
if (openJavaExe.ShowDialog() == DialogResult.OK)
|
||||
textBoxCustomJavaLocation.Text = Program.GetPortablePath(openJavaExe.FileName);
|
||||
}
|
||||
}
|
||||
|
||||
//OpenFileDialog openJavaExe = new OpenFileDialog()
|
||||
//{
|
||||
// Multiselect = false,
|
||||
// Filter = "java.exe|java.exe"
|
||||
//};
|
||||
//if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||
//{
|
||||
// textBoxCustomJavaLocation.Text = openJavaExe.FileName;
|
||||
//}
|
||||
private void buttonCustomTempLocation_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (VistaFolderBrowserDialog fbd = new VistaFolderBrowserDialog())
|
||||
{
|
||||
if (!String.IsNullOrWhiteSpace(customTempLocationTxtBox.Text))
|
||||
fbd.SelectedPath = customTempLocationTxtBox.Text;
|
||||
if (fbd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
customTempLocationTxtBox.Text = fbd.SelectedPath;
|
||||
//Clear temp folder
|
||||
DirectoryUtils.Delete(Program.TEMP_PATH);
|
||||
|
||||
//Create new temp folder
|
||||
Program.TEMP_PATH = Program.RandTempDirectory();
|
||||
Directory.CreateDirectory(Program.TEMP_PATH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void customApktoolBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (OpenFileDialog ofd = new OpenFileDialog())
|
||||
{
|
||||
ofd.Filter = "Apktool (*.jar)|*.jar";
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
customApkToolTxtBox.Text = ofd.FileName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="checkBox7.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>206, 17</value>
|
||||
</data>
|
||||
<data name="checkBox7.Text" xml:space="preserve">
|
||||
<value>Benutzerdefinierte JVM-Argumente</value>
|
||||
</data>
|
||||
<data name="checkBox6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>101, 17</value>
|
||||
</data>
|
||||
<data name="checkBox6.Text" xml:space="preserve">
|
||||
<value>Debug-Modus</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items" xml:space="preserve">
|
||||
<value>Automatisch</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items1" xml:space="preserve">
|
||||
<value>Hell</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items2" xml:space="preserve">
|
||||
<value>Dunkel</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Thema</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Text" xml:space="preserve">
|
||||
<value>…</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>232, 17</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Text" xml:space="preserve">
|
||||
<value>Benutzerdefinierter APKTool-Speicherort</value>
|
||||
</data>
|
||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>502, 13</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>Der Vorgang wird langsamer sein, da die Dateien in den temporären Ordner verschoben werden</value>
|
||||
</data>
|
||||
<data name="checkBox5.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>218, 17</value>
|
||||
</data>
|
||||
<data name="checkBox5.Text" xml:space="preserve">
|
||||
<value>Unterstützung für UTF-8-Dateinamen</value>
|
||||
</data>
|
||||
<data name="checkBox4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>212, 17</value>
|
||||
</data>
|
||||
<data name="checkBox4.Text" xml:space="preserve">
|
||||
<value>Benutzerdefinierter Java-Speicherort</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.Text" xml:space="preserve">
|
||||
<value>…</value>
|
||||
</data>
|
||||
<data name="checkBox3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>233, 17</value>
|
||||
</data>
|
||||
<data name="checkBox3.Text" xml:space="preserve">
|
||||
<value>Benutzerdefinierter temporärer Standort</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Text" xml:space="preserve">
|
||||
<value>…</value>
|
||||
</data>
|
||||
<data name="checkBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 17</value>
|
||||
</data>
|
||||
<data name="checkBox2.Text" xml:space="preserve">
|
||||
<value>Ton abspielen, wenn du fertig bist</value>
|
||||
</data>
|
||||
<data name="checkBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>281, 17</value>
|
||||
</data>
|
||||
<data name="checkBox1.Text" xml:space="preserve">
|
||||
<value>Protokoll löschen, bevor du Maßnahmen ergreifst</value>
|
||||
</data>
|
||||
<data name="checkBoxCheckUpdateStartup.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>191, 17</value>
|
||||
</data>
|
||||
<data name="checkBoxCheckUpdateStartup.Text" xml:space="preserve">
|
||||
<value>Beim Start nach Updates suchen</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>Allgemein</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.Text" xml:space="preserve">
|
||||
<value>Sprache</value>
|
||||
</data>
|
||||
<data name="ignoreOutputContextMenuBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>376, 17</value>
|
||||
</data>
|
||||
<data name="ignoreOutputContextMenuBox.Text" xml:space="preserve">
|
||||
<value>Benutzerdefiniertes Ausgabeverzeichnis für Kontextmenü ignorieren</value>
|
||||
</data>
|
||||
<data name="labelAdminRights.Text" xml:space="preserve">
|
||||
<value>Administratorrechte erforderlich</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.Text" xml:space="preserve">
|
||||
<value>Install …</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Text" xml:space="preserve">
|
||||
<value>Deinstall …</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.Text" xml:space="preserve">
|
||||
<value>Kontextmenü</value>
|
||||
</data>
|
||||
<data name="tabPage1.Text" xml:space="preserve">
|
||||
<value>Allgemein</value>
|
||||
</data>
|
||||
<data name="buttonCancel.Text" xml:space="preserve">
|
||||
<value>Abbrechen</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Einstellungen</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -121,22 +121,535 @@
|
||||
<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>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="textBox1.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>274, 139</value>
|
||||
</data>
|
||||
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>239, 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>276, 234</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>153, 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>7, 239</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.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="customApkToolTxtBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>274, 205</value>
|
||||
</data>
|
||||
<data name="customApkToolTxtBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 22</value>
|
||||
</data>
|
||||
<data name="customApkToolTxtBox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="customApkToolTxtBox.WordWrap" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>customApkToolTxtBox.Name" xml:space="preserve">
|
||||
<value>customApkToolTxtBox</value>
|
||||
</data>
|
||||
<data name=">>customApkToolTxtBox.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=">>customApkToolTxtBox.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>customApkToolTxtBox.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>483, 205</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 23</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="customApktoolBtn.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
</data>
|
||||
<data name=">>customApktoolBtn.Name" xml:space="preserve">
|
||||
<value>customApktoolBtn</value>
|
||||
</data>
|
||||
<data name=">>customApktoolBtn.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>customApktoolBtn.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>customApktoolBtn.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 207</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>153, 17</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Text" xml:space="preserve">
|
||||
<value>Custom apktool location</value>
|
||||
</data>
|
||||
<data name=">>useCustomApktoolChk.Name" xml:space="preserve">
|
||||
<value>useCustomApktoolChk</value>
|
||||
</data>
|
||||
<data name=">>useCustomApktoolChk.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=">>useCustomApktoolChk.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>useCustomApktoolChk.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 185</value>
|
||||
</data>
|
||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>349, 13</value>
|
||||
</data>
|
||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>The process will be slower since files will be moved to temp folder </value>
|
||||
</data>
|
||||
<data name=">>label6.Name" xml:space="preserve">
|
||||
<value>label6</value>
|
||||
</data>
|
||||
<data name=">>label6.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=">>label6.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="checkBox5.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBox5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox5.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 165</value>
|
||||
</data>
|
||||
<data name="checkBox5.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 17</value>
|
||||
</data>
|
||||
<data name="checkBox5.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="checkBox5.Text" xml:space="preserve">
|
||||
<value>UTF-8 filename support</value>
|
||||
</data>
|
||||
<data name=">>checkBox5.Name" xml:space="preserve">
|
||||
<value>checkBox5</value>
|
||||
</data>
|
||||
<data name=">>checkBox5.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=">>checkBox5.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox5.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="checkBox4.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBox4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox4.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 115</value>
|
||||
</data>
|
||||
<data name="checkBox4.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>134, 17</value>
|
||||
</data>
|
||||
<data name="checkBox4.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="checkBox4.Text" xml:space="preserve">
|
||||
<value>Custom Java location</value>
|
||||
</data>
|
||||
<data name=">>checkBox4.Name" xml:space="preserve">
|
||||
<value>checkBox4</value>
|
||||
</data>
|
||||
<data name=">>checkBox4.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=">>checkBox4.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox4.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>274, 86</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 22</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="customTempLocationTxtBox.WordWrap" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>customTempLocationTxtBox.Name" xml:space="preserve">
|
||||
<value>customTempLocationTxtBox</value>
|
||||
</data>
|
||||
<data name=">>customTempLocationTxtBox.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=">>customTempLocationTxtBox.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>customTempLocationTxtBox.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>274, 112</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>203, 22</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.WordWrap" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.Name" xml:space="preserve">
|
||||
<value>textBoxCustomJavaLocation</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.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=">>textBoxCustomJavaLocation.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<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>
|
||||
<data name="buttonCustomTempLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>483, 86</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 23</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="buttonCustomTempLocation.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomTempLocation.Name" xml:space="preserve">
|
||||
<value>buttonCustomTempLocation</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomTempLocation.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomTempLocation.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomTempLocation.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="checkBox3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBox3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 90</value>
|
||||
</data>
|
||||
<data name="checkBox3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>139, 17</value>
|
||||
</data>
|
||||
<data name="checkBox3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="checkBox3.Text" xml:space="preserve">
|
||||
<value>Custom temp location</value>
|
||||
</data>
|
||||
<data name=">>checkBox3.Name" xml:space="preserve">
|
||||
<value>checkBox3</value>
|
||||
</data>
|
||||
<data name=">>checkBox3.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=">>checkBox3.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox3.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>483, 112</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>30, 23</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.Name" xml:space="preserve">
|
||||
<value>buttonCustomJavaLocation</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="checkBox2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBox2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="checkBox2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 65</value>
|
||||
</data>
|
||||
<data name="checkBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>144, 17</value>
|
||||
</data>
|
||||
<data name="checkBox2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="checkBox2.Text" xml:space="preserve">
|
||||
<value>Play sound when done</value>
|
||||
</data>
|
||||
<data name=">>checkBox2.Name" xml:space="preserve">
|
||||
<value>checkBox2</value>
|
||||
</data>
|
||||
<data name=">>checkBox2.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=">>checkBox2.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox2.ZOrder" xml:space="preserve">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name="checkBox1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="checkBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="checkBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 42</value>
|
||||
</data>
|
||||
<data name="checkBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>132, 17</value>
|
||||
<value>144, 17</value>
|
||||
</data>
|
||||
<data name="checkBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@@ -154,7 +667,7 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBox1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="checkBoxCheckUpdateStartup.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -166,7 +679,7 @@
|
||||
<value>9, 19</value>
|
||||
</data>
|
||||
<data name="checkBoxCheckUpdateStartup.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>160, 17</value>
|
||||
<value>173, 17</value>
|
||||
</data>
|
||||
<data name="checkBoxCheckUpdateStartup.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -184,19 +697,19 @@
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>checkBoxCheckUpdateStartup.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>18</value>
|
||||
</data>
|
||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 206</value>
|
||||
<value>8, 6</value>
|
||||
</data>
|
||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>447, 65</value>
|
||||
<value>521, 299</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>Other</value>
|
||||
<value>General</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
@@ -210,137 +723,17 @@
|
||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBoxJava.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="labelCustomJavaLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="labelCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 17</value>
|
||||
</data>
|
||||
<data name="labelCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>183, 23</value>
|
||||
</data>
|
||||
<data name="labelCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="labelCustomJavaLocation.Text" xml:space="preserve">
|
||||
<value>Custom Java location</value>
|
||||
</data>
|
||||
<data name="labelCustomJavaLocation.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleRight</value>
|
||||
</data>
|
||||
<data name=">>labelCustomJavaLocation.Name" xml:space="preserve">
|
||||
<value>labelCustomJavaLocation</value>
|
||||
</data>
|
||||
<data name=">>labelCustomJavaLocation.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=">>labelCustomJavaLocation.Parent" xml:space="preserve">
|
||||
<value>groupBoxJava</value>
|
||||
</data>
|
||||
<data name=">>labelCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>195, 18</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>222, 20</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.WordWrap" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.Name" xml:space="preserve">
|
||||
<value>textBoxCustomJavaLocation</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.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=">>textBoxCustomJavaLocation.Parent" xml:space="preserve">
|
||||
<value>groupBoxJava</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
|
||||
<value>System</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>418, 17</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 20</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.Name" xml:space="preserve">
|
||||
<value>buttonCustomJavaLocation</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.Parent" xml:space="preserve">
|
||||
<value>groupBoxJava</value>
|
||||
</data>
|
||||
<data name=">>buttonCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="groupBoxJava.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 153</value>
|
||||
</data>
|
||||
<data name="groupBoxJava.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>447, 47</value>
|
||||
</data>
|
||||
<data name="groupBoxJava.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="groupBoxJava.Text" xml:space="preserve">
|
||||
<value>Java</value>
|
||||
</data>
|
||||
<data name=">>groupBoxJava.Name" xml:space="preserve">
|
||||
<value>groupBoxJava</value>
|
||||
</data>
|
||||
<data name=">>groupBoxJava.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>groupBoxJava.Parent" xml:space="preserve">
|
||||
<value>tabPage1</value>
|
||||
</data>
|
||||
<data name=">>groupBoxJava.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<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, 19</value>
|
||||
<value>9, 17</value>
|
||||
</data>
|
||||
<data name="comboBox1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>312, 21</value>
|
||||
<value>347, 21</value>
|
||||
</data>
|
||||
<data name="comboBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
@@ -358,10 +751,10 @@
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 6</value>
|
||||
<value>8, 311</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>447, 47</value>
|
||||
<value>522, 47</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>8</value>
|
||||
@@ -379,7 +772,7 @@
|
||||
<value>tabPage1</value>
|
||||
</data>
|
||||
<data name=">>groupBoxLanguage.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
@@ -394,13 +787,16 @@
|
||||
<value>6, 45</value>
|
||||
</data>
|
||||
<data name="ignoreOutputContextMenuBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>238, 17</value>
|
||||
<value>278, 17</value>
|
||||
</data>
|
||||
<data name="ignoreOutputContextMenuBox.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="ignoreOutputContextMenuBox.Text" xml:space="preserve">
|
||||
<value>Use default output directory for context menu</value>
|
||||
<value>Ignore custom output directory for context menu</value>
|
||||
</data>
|
||||
<data name="ignoreOutputContextMenuBox.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleCenter</value>
|
||||
</data>
|
||||
<data name=">>ignoreOutputContextMenuBox.Name" xml:space="preserve">
|
||||
<value>ignoreOutputContextMenuBox</value>
|
||||
@@ -414,9 +810,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>
|
||||
@@ -424,7 +817,7 @@
|
||||
<value>3, 18</value>
|
||||
</data>
|
||||
<data name="labelAdminRights.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>260, 23</value>
|
||||
<value>267, 23</value>
|
||||
</data>
|
||||
<data name="labelAdminRights.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
@@ -447,9 +840,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>
|
||||
@@ -457,7 +847,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>269, 18</value>
|
||||
<value>343, 18</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>83, 23</value>
|
||||
@@ -483,9 +873,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>
|
||||
@@ -493,7 +880,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>358, 18</value>
|
||||
<value>432, 18</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>83, 23</value>
|
||||
@@ -517,10 +904,10 @@
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>6, 59</value>
|
||||
<value>8, 364</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>447, 74</value>
|
||||
<value>523, 74</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>9</value>
|
||||
@@ -538,7 +925,7 @@
|
||||
<value>tabPage1</value>
|
||||
</data>
|
||||
<data name=">>groupBoxContextMenu.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="tabPage1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>4, 22</value>
|
||||
@@ -547,7 +934,7 @@
|
||||
<value>3, 3, 3, 3</value>
|
||||
</data>
|
||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>459, 278</value>
|
||||
<value>535, 442</value>
|
||||
</data>
|
||||
<data name="tabPage1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
@@ -567,11 +954,14 @@
|
||||
<data name=">>tabPage1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="tabControl1.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Segoe UI, 8.25pt</value>
|
||||
</data>
|
||||
<data name="tabControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 1</value>
|
||||
</data>
|
||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>467, 304</value>
|
||||
<value>543, 468</value>
|
||||
</data>
|
||||
<data name="tabControl1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@@ -598,7 +988,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>385, 311</value>
|
||||
<value>461, 475</value>
|
||||
</data>
|
||||
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
@@ -631,7 +1021,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="buttonОК.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>304, 311</value>
|
||||
<value>380, 475</value>
|
||||
</data>
|
||||
<data name="buttonОК.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
@@ -661,7 +1051,10 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>466, 339</value>
|
||||
<value>542, 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>
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="checkBox7.Text" xml:space="preserve">
|
||||
<value>自定义JVM命令</value>
|
||||
</data>
|
||||
<data name="checkBox6.Text" xml:space="preserve">
|
||||
<value>调试模式</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items" xml:space="preserve">
|
||||
<value>自动</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items1" xml:space="preserve">
|
||||
<value>浅色</value>
|
||||
</data>
|
||||
<data name="themeComboBox.Items2" xml:space="preserve">
|
||||
<value>深色</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>主题</value>
|
||||
</data>
|
||||
<data name="useCustomApktoolChk.Text" xml:space="preserve">
|
||||
<value>自定义apktool位置</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>操作过程的文件移动到缓存目录中需要时间,请耐心等待</value>
|
||||
</data>
|
||||
<data name="checkBox5.Text" xml:space="preserve">
|
||||
<value>UTF-8文件名支持,中文乱码开启</value>
|
||||
</data>
|
||||
<data name="checkBox4.Text" xml:space="preserve">
|
||||
<value>自定义Java位置</value>
|
||||
</data>
|
||||
<data name="checkBox3.Text" xml:space="preserve">
|
||||
<value>自定义缓存位置</value>
|
||||
</data>
|
||||
<data name="checkBox2.Text" xml:space="preserve">
|
||||
<value>完成提示音</value>
|
||||
</data>
|
||||
<data name="checkBox1.Text" xml:space="preserve">
|
||||
<value>动作前清理日志</value>
|
||||
</data>
|
||||
<data name="checkBoxCheckUpdateStartup.Text" xml:space="preserve">
|
||||
<value>启动时检查更新</value>
|
||||
</data>
|
||||
<data name="groupBox1.Text" xml:space="preserve">
|
||||
<value>常规</value>
|
||||
</data>
|
||||
<data name="groupBoxLanguage.Text" xml:space="preserve">
|
||||
<value>语言</value>
|
||||
</data>
|
||||
<data name="ignoreOutputContextMenuBox.Text" xml:space="preserve">
|
||||
<value>忽略右键菜单的自定义输出目录</value>
|
||||
</data>
|
||||
<data name="labelAdminRights.Text" xml:space="preserve">
|
||||
<value>需要管理员权限</value>
|
||||
</data>
|
||||
<data name="buttonAddContextMenu.Text" xml:space="preserve">
|
||||
<value>安装</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Text" xml:space="preserve">
|
||||
<value>卸载</value>
|
||||
</data>
|
||||
<data name="groupBoxContextMenu.Text" xml:space="preserve">
|
||||
<value>右键菜单</value>
|
||||
</data>
|
||||
<data name="tabPage1.Text" xml:space="preserve">
|
||||
<value>常规</value>
|
||||
</data>
|
||||
<data name="buttonCancel.Text" xml:space="preserve">
|
||||
<value>取消</value>
|
||||
</data>
|
||||
<data name="buttonОК.Text" xml:space="preserve">
|
||||
<value>确定</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>设置</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,74 @@
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI.Handlers
|
||||
{
|
||||
internal class AdbControlEventHandlers
|
||||
{
|
||||
private static FormMain main;
|
||||
public AdbControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.killAdbBtn.Click += killAdbBtn_Click;
|
||||
main.installApkBtn.Click += installApkBtn_Click;
|
||||
main.refreshDevicesBtn.Click += refreshDevicesBtn_Click;
|
||||
main.selApkAdbBtn.Click += selApkAdbBtn_Click;
|
||||
main.devicesListBox.SelectedValueChanged += devicesListBox_SelectedValueChanged;
|
||||
main.overrideAbiComboBox.SelectedIndexChanged += ComboBoxChanged;
|
||||
}
|
||||
|
||||
private void ComboBoxChanged(object sender, EventArgs e)
|
||||
{
|
||||
Settings.Default.Adb_OverrideAbi = main.overrideAbiComboBox.SelectedIndex;
|
||||
}
|
||||
|
||||
private async void refreshDevicesBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
await main.ListDevices();
|
||||
}
|
||||
|
||||
private async void killAdbBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (MessageBox.Show(Language.ConfirmKillingAdbServer, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
main.adb.KillProcess();
|
||||
await main.ListDevices();
|
||||
}
|
||||
}
|
||||
|
||||
private async void installApkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string inputFile = main.apkPathAdbTxtBox.Text;
|
||||
if (File.Exists(inputFile))
|
||||
{
|
||||
await main.Install(inputFile);
|
||||
}
|
||||
else
|
||||
MessageBox.Show(Language.ErrorSelectedFileNotExist, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
private void selApkAdbBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (OpenFileDialog ofd = new OpenFileDialog())
|
||||
{
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
main.apkPathAdbTxtBox.Text = ofd.FileName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void devicesListBox_SelectedValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.None, String.Format(Language.DeviceSelected, main.devicesListBox.SelectedItem));
|
||||
main.selAdbDeviceLbl.Text = main.devicesListBox.GetItemText(main.devicesListBox.SelectedItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI.Handlers
|
||||
{
|
||||
internal class ApkinfoControlEventHandlers
|
||||
{
|
||||
private static FormMain main;
|
||||
public ApkinfoControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.selApkFileInfoBtn.Click += selApkFileInfoBtn_Click;
|
||||
main.psLinkBtn.Click += psLinkBtn_Click;
|
||||
main.apkComboLinkBtn.Click += apkComboLinkBtn_Click;
|
||||
main.apkPureLinkBtn.Click += apkPureLinkBtn_Click;
|
||||
main.apkGkLinkBtn.Click += apkGkLinkBtn_Click;
|
||||
main.apkSupportLinkBtn.Click += apkSupportLinkBtn_Click;
|
||||
main.apkSosLinkBtn.Click += apkSosLinkBtn_Click;
|
||||
main.apkMirrorLinkBtn.Click += apkMirrorLinkBtn_Click;
|
||||
main.apkAioLinkBtn.Click += apkAioLinkBtn_Click;
|
||||
main.apkDlLinkBtn.Click += apkDlLinkBtn_Click;
|
||||
}
|
||||
|
||||
private void selApkFileInfoBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (OpenFileDialog ofd = new OpenFileDialog())
|
||||
{
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
main.GetApkInfo(ofd.FileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void psLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.PlayStoreLink);
|
||||
}
|
||||
|
||||
private void apkComboLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkComboLink);
|
||||
}
|
||||
|
||||
private void apkPureLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkPureLink);
|
||||
}
|
||||
|
||||
private void apkGkLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkGkLink);
|
||||
}
|
||||
|
||||
private void apkSupportLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkSupportLink);
|
||||
}
|
||||
|
||||
private void apkSosLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkSosLink);
|
||||
}
|
||||
|
||||
private void apkMirrorLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkMirrorLink);
|
||||
}
|
||||
|
||||
private void apkAioLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkAioLink);
|
||||
}
|
||||
|
||||
private void apkDlLinkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (main.aapt != null)
|
||||
Process.Start(main.aapt.ApkDlLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,9 @@ namespace APKToolGUI.Handlers
|
||||
public BaksmaliControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.baksmaliBrowseOutputBtn.Click += baksmaliBrowseOutputBtn_Click;
|
||||
main.baksmaliBrowseInputDexBtn.Click += baksmaliBrowseInputDexBtn_Click;
|
||||
main.decSmaliBtn.Click += decSmaliBtn_Click;
|
||||
}
|
||||
|
||||
internal void baksmaliBrowseOutputBtn_Click(object sender, EventArgs e)
|
||||
|
||||
@@ -21,6 +21,11 @@ namespace APKToolGUI.Handlers
|
||||
public BuildControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.button_BUILD_BrowseAaptPath.Click += button_BUILD_BrowseAaptPath_Click;
|
||||
main.button_BUILD_BrowseFrameDir.Click += button_BUILD_BrowseFrameDir_Click;
|
||||
main.button_BUILD_BrowseOutputAppPath.Click += button_BUILD_BrowseOutputAppPath_Click;
|
||||
main.button_BUILD_BrowseInputProjectDir.Click += button_BUILD_BrowseInputProjectDir_Click;
|
||||
main.button_BUILD_Build.Click += button_BUILD_Build_Click;
|
||||
}
|
||||
|
||||
internal void button_BUILD_BrowseAaptPath_Click(object sender, EventArgs e)
|
||||
@@ -81,27 +86,5 @@ namespace APKToolGUI.Handlers
|
||||
else
|
||||
MessageBox.Show(Language.WarningDecodingFolderNotSelected, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
internal void comApkOpenDir_Click(object sender, EventArgs e)
|
||||
{
|
||||
string decApkDir = main.textBox_BUILD_InputProjectDir.Text;
|
||||
|
||||
string outputFile = decApkDir + " compiled.apk";
|
||||
if (Settings.Default.Build_SignAfterBuild)
|
||||
outputFile = decApkDir + " signed.apk";
|
||||
if (Settings.Default.Build_UseOutputAppPath)
|
||||
{
|
||||
outputFile = Path.Combine(Settings.Default.Build_OutputAppPath, Path.GetFileName(decApkDir)) + ".apk";
|
||||
if (Settings.Default.Build_SignAfterBuild)
|
||||
outputFile = Path.Combine(Settings.Default.Build_OutputAppPath, Path.GetFileName(decApkDir)) + " signed.apk";
|
||||
}
|
||||
|
||||
if (File.Exists(outputFile))
|
||||
Process.Start("explorer.exe", string.Format("/select,\"{0}\"", outputFile));
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,10 @@ namespace APKToolGUI.Handlers
|
||||
public DecodeControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.button_DECODE_BrowseFrameDir.Click += button_DECODE_BrowseFrameDir_Click;
|
||||
main.button_DECODE_BrowseOutputDirectory.Click += button_DECODE_BrowseOutputDirectory_Click;
|
||||
main.button_DECODE_BrowseInputAppPath.Click += button_DECODE_BrowseInputAppPath_Click;
|
||||
main.button_DECODE_Decode.Click += button_DECODE_Decode_Click;
|
||||
}
|
||||
|
||||
internal void button_DECODE_BrowseFrameDir_Click(object sender, EventArgs e)
|
||||
@@ -50,10 +54,15 @@ namespace APKToolGUI.Handlers
|
||||
{
|
||||
using (OpenFileDialog ofd = new OpenFileDialog())
|
||||
{
|
||||
ofd.Filter = "Android Package (*.apk;*.xapk;*.zip*.apkm;*.apks)|*.apk;*.xapk;*.zip*.apkm;*.apks";
|
||||
|
||||
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));
|
||||
@@ -64,7 +73,8 @@ namespace APKToolGUI.Handlers
|
||||
|
||||
internal async void button_DECODE_Decode_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists(main.textBox_DECODE_InputAppPath.Text))
|
||||
string inputFile = main.textBox_DECODE_InputAppPath.Text;
|
||||
if (File.Exists(inputFile))
|
||||
{
|
||||
if (main.checkBox_DECODE_UseFramework.Checked && !Directory.Exists(main.textBox_DECODE_FrameDir.Text))
|
||||
{
|
||||
@@ -73,43 +83,28 @@ namespace APKToolGUI.Handlers
|
||||
}
|
||||
if (main.checkBox_DECODE_OutputDirectory.Checked)
|
||||
{
|
||||
if (String.IsNullOrWhiteSpace(main.textBox_DECODE_OutputDirectory.Text))
|
||||
if (String.IsNullOrWhiteSpace(Settings.Default.Decode_OutputDir))
|
||||
{
|
||||
main.ShowMessage(Language.DecodeDirNotSelected, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
else
|
||||
if (!PathUtils.IsValidPath(main.textBox_DECODE_OutputDirectory.Text))
|
||||
if (!PathUtils.IsValidPath(Settings.Default.Decode_OutputDir))
|
||||
{
|
||||
main.ShowMessage(Language.DecodeCouldNotCreate, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
await main.Decompile(main.textBox_DECODE_InputAppPath.Text);
|
||||
if (inputFile.ContainsAny(".xapk", ".zip", ".apks", ".apkm"))
|
||||
{
|
||||
await main.MergeAndDecompile(inputFile);
|
||||
}
|
||||
else
|
||||
await main.Decompile(inputFile);
|
||||
}
|
||||
else
|
||||
MessageBox.Show(Language.WarningFileForDecodingNotSelected, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
internal void decApkOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(main.textBox_BUILD_InputProjectDir.Text))
|
||||
Process.Start("explorer.exe", main.textBox_BUILD_InputProjectDir.Text);
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
}
|
||||
|
||||
internal void decOutOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(main.textBox_DECODE_OutputDirectory.Text))
|
||||
Process.Start("explorer.exe", main.textBox_DECODE_OutputDirectory.Text);
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedOutputFolderNotExist);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.ApkTool;
|
||||
using APKToolGUI.Controls;
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using SaveToGameWpf.Logic.Utils;
|
||||
@@ -16,184 +18,214 @@ namespace APKToolGUI.Handlers
|
||||
class DragDropHandlers
|
||||
{
|
||||
private static FormMain main;
|
||||
|
||||
string[] apks = { ".apk", ".xapk", ".zip", ".apks", ".apkm" };
|
||||
string[] apk = { ".apk" };
|
||||
|
||||
public DragDropHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
|
||||
//Decode
|
||||
DragEventHandler decEventHandler = new DragEventHandler((sender, e) => { DropApkToDec(e); });
|
||||
Register(main.decPanel, ".apk", decEventHandler);
|
||||
Register(main.textBox_DECODE_InputAppPath, ".apk", decEventHandler, main.decPanel);
|
||||
Register(main.button_DECODE_Decode, ".apk", decEventHandler, main.decPanel);
|
||||
Register(main.decPanel, null, decEventHandler, apks);
|
||||
Register(main.textBox_DECODE_InputAppPath, main.decPanel, decEventHandler, apks);
|
||||
Register(main.button_DECODE_Decode, main.decPanel, decEventHandler, apks);
|
||||
|
||||
DragEventHandler comEventHandler = new DragEventHandler((sender, e) => { DropDirToCom(e); });
|
||||
Register(main.comPanel, "", comEventHandler);
|
||||
Register(main.textBox_BUILD_InputProjectDir, "", comEventHandler, main.comPanel);
|
||||
Register(main.button_BUILD_Build, "", comEventHandler, main.comPanel);
|
||||
Register(main.comPanel, null, comEventHandler, null);
|
||||
Register(main.textBox_BUILD_InputProjectDir, main.comPanel, comEventHandler, null);
|
||||
Register(main.button_BUILD_Build, main.comPanel, comEventHandler, null);
|
||||
|
||||
DragEventHandler alignEventHandler = new DragEventHandler((sender, e) => { DropApkToAlign(e); });
|
||||
Register(main.zipalignPanel, ".apk", alignEventHandler);
|
||||
Register(main.textBox_ZIPALIGN_InputFile, ".apk", alignEventHandler, main.zipalignPanel);
|
||||
Register(main.button_ZIPALIGN_Align, ".apk", alignEventHandler, main.zipalignPanel);
|
||||
Register(main.zipalignPanel, null, alignEventHandler, apk);
|
||||
Register(main.textBox_ZIPALIGN_InputFile, main.zipalignPanel, alignEventHandler, apk);
|
||||
Register(main.button_ZIPALIGN_Align, main.zipalignPanel, alignEventHandler, apk);
|
||||
|
||||
DragEventHandler signEventHandler = new DragEventHandler((sender, e) => { DropApkToSign(e); });
|
||||
Register(main.signPanel, ".apk", signEventHandler);
|
||||
Register(main.textBox_SIGN_InputFile, ".apk", signEventHandler, main.signPanel);
|
||||
Register(main.button_SIGN_Sign, ".apk", signEventHandler, main.signPanel);
|
||||
Register(main.signPanel, null, signEventHandler, apk);
|
||||
Register(main.textBox_SIGN_InputFile, main.signPanel, signEventHandler, apk);
|
||||
Register(main.button_SIGN_Sign, main.signPanel, signEventHandler, apk);
|
||||
|
||||
DragEventHandler mergeEventHandler = new DragEventHandler((sender, e) => { DropApkToMerge(e); });
|
||||
Register(main.mergePanel, null, mergeEventHandler, apks);
|
||||
Register(main.splitApkPathTxtBox, main.mergePanel, mergeEventHandler, apks);
|
||||
Register(main.mergeApkBtn, main.mergePanel, mergeEventHandler, apks);
|
||||
|
||||
DragEventHandler baksmaliEventHandler = new DragEventHandler((sender, e) => { DropDexToBaksmali(e); });
|
||||
Register(main.bakSmaliGroupBox, ".dex", baksmaliEventHandler);
|
||||
Register(main.bakSmaliGroupBox, null, baksmaliEventHandler, new string[] { ".dex" });
|
||||
main.bakSmaliGroupBox.AllowDrop = true;
|
||||
|
||||
DragEventHandler smaliEventHandler = new DragEventHandler((sender, e) => { DropDirToSmali(e); });
|
||||
Register(main.smaliGroupBox, "", smaliEventHandler);
|
||||
Register(main.smaliGroupBox, null, smaliEventHandler, null);
|
||||
main.smaliGroupBox.AllowDrop = true;
|
||||
|
||||
DragEventHandler apkInfoEventHandler = new DragEventHandler((sender, e) => { DropApkToGetInfo(e); });
|
||||
Register(main.tabPageApkInfo, ".apk", apkInfoEventHandler);
|
||||
Register(main.fileTxtBox, ".apk", apkInfoEventHandler);
|
||||
Register(main.basicInfoTabPage, null, apkInfoEventHandler, apks);
|
||||
Register(main.fileTxtBox, null, apkInfoEventHandler, apks);
|
||||
|
||||
DragEventHandler adbEventHandler = new DragEventHandler((sender, e) => { DropApkToInstall(e); });
|
||||
Register(main.tabPageAdb, null, adbEventHandler, apk);
|
||||
Register(main.installApkBtn, null, adbEventHandler, apk);
|
||||
}
|
||||
|
||||
void Register(Control ctrl, string extension, DragEventHandler dragHandler, Control extCtrl = null)
|
||||
void Register(Control ctrl, Control extCtrl, DragEventHandler dragHandler, string[] extension)
|
||||
{
|
||||
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.CheckDragOver(extension)) extCtrl.BackColor = Color.LightGreen; });
|
||||
ctrl.DragOver += new DragEventHandler((sender, e) => { if (e.CheckManyDragOver(extension)) extCtrl.BackColor = PanelHoverBackColor(); });
|
||||
ctrl.DragDrop += dragHandler;
|
||||
}
|
||||
|
||||
private async void DropApkToDec(DragEventArgs e)
|
||||
{
|
||||
string apkFile = null;
|
||||
if (e.DropOneByEnd(".apk", file => apkFile = file))
|
||||
string[] apkFiles = null;
|
||||
if (e.DropManyByEnd(file => apkFiles = file, apks))
|
||||
{
|
||||
main.GetApkInfo(apkFile);
|
||||
main.textBox_DECODE_InputAppPath.Text = apkFile;
|
||||
main.decPanel.BackColor = Color.White;
|
||||
main.decPanel.BackColor = PanelBackColor();
|
||||
|
||||
await main.Decompile(apkFile);
|
||||
foreach (var apkFile in apkFiles)
|
||||
{
|
||||
main.textBox_DECODE_InputAppPath.Text = apkFile;
|
||||
|
||||
if (!Settings.Default.Decode_DontParseApkInfo)
|
||||
await main.GetApkInfo(apkFile);
|
||||
|
||||
if (apkFile.ContainsAny(".xapk", ".zip", ".apks", ".apkm"))
|
||||
{
|
||||
await main.MergeAndDecompile(apkFile);
|
||||
}
|
||||
else
|
||||
await main.Decompile(apkFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void DropDirToCom(DragEventArgs e)
|
||||
{
|
||||
string folder = null;
|
||||
if (e.DropOneByEnd("", file => folder = file))
|
||||
string[] folders = null;
|
||||
if (e.DropManyByEnd(file => folders = file, ""))
|
||||
{
|
||||
if (File.Exists(Path.Combine(folder, "AndroidManifest.xml")))
|
||||
foreach (var folder in folders)
|
||||
{
|
||||
main.textBox_BUILD_InputProjectDir.Text = folder;
|
||||
main.comPanel.BackColor = Color.White;
|
||||
await main.Build(folder);
|
||||
if (File.Exists(Path.Combine(folder, "AndroidManifest.xml")))
|
||||
{
|
||||
main.textBox_BUILD_InputProjectDir.Text = folder;
|
||||
main.comPanel.BackColor = PanelBackColor();
|
||||
await main.Build(folder);
|
||||
}
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorNotAnApk);
|
||||
}
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorNotAnApk);
|
||||
}
|
||||
}
|
||||
|
||||
private async void DropApkToAlign(DragEventArgs e)
|
||||
{
|
||||
string apkFile = null;
|
||||
if (e.DropOneByEnd(".apk", file => apkFile = file))
|
||||
string[] apkFiles = null;
|
||||
if (e.DropManyByEnd(file => apkFiles = file, apks))
|
||||
{
|
||||
main.textBox_ZIPALIGN_InputFile.Text = apkFile;
|
||||
main.zipalignPanel.BackColor = Color.White;
|
||||
main.zipalignPanel.BackColor = PanelBackColor();
|
||||
|
||||
try
|
||||
foreach (var apkFile in apkFiles)
|
||||
{
|
||||
main.Running();
|
||||
main.textBox_ZIPALIGN_InputFile.Text = apkFile;
|
||||
|
||||
await Task.Factory.StartNew(() =>
|
||||
{
|
||||
string outputDir = apkFile;
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputDir = Path.Combine(Settings.Default.Zipalign_OutputDir, Path.GetFileName(apkFile));
|
||||
|
||||
if (!Settings.Default.Zipalign_OverwriteOutputFile)
|
||||
outputDir = PathUtils.GetDirectoryNameWithoutExtension(outputDir) + " aligned.apk";
|
||||
|
||||
if (main.Align(apkFile, outputDir) == 0)
|
||||
main.ToLog(ApktoolEventType.Information, String.Format(Language.ZipalignFileSavedTo, outputDir));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorZipalign);
|
||||
});
|
||||
await main.Align(apkFile);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, ex.Message);
|
||||
}
|
||||
main.Done();
|
||||
}
|
||||
}
|
||||
|
||||
private async void DropApkToSign(DragEventArgs e)
|
||||
{
|
||||
string apkFile = null;
|
||||
if (e.DropOneByEnd(".apk", file => apkFile = file))
|
||||
string[] apkFiles = null;
|
||||
if (e.DropManyByEnd(file => apkFiles = file, apks))
|
||||
{
|
||||
main.textBox_SIGN_InputFile.Text = apkFile;
|
||||
main.signPanel.BackColor = Color.White;
|
||||
main.signPanel.BackColor = PanelBackColor();
|
||||
|
||||
try
|
||||
foreach (var apkFile in apkFiles)
|
||||
{
|
||||
main.Running();
|
||||
main.textBox_SIGN_InputFile.Text = apkFile;
|
||||
|
||||
await Task.Factory.StartNew(() =>
|
||||
{
|
||||
string inputFile = apkFile;
|
||||
string outputDir = apkFile;
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputDir = Path.Combine(Settings.Default.Sign_OutputDir, Path.GetFileName(inputFile));
|
||||
|
||||
if (main.Sign(inputFile, outputDir) == 0)
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
main.ToLog(ApktoolEventType.Information, String.Format(Language.SignSuccessfullyCompleted, inputFile));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Information, String.Format(Language.SignSuccessfullyCompleted, outputDir));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, String.Format(Language.ErrorSigning, outputDir));
|
||||
});
|
||||
await main.Sign(apkFile);
|
||||
}
|
||||
catch (Exception ex)
|
||||
}
|
||||
}
|
||||
|
||||
private async void DropApkToMerge(DragEventArgs e)
|
||||
{
|
||||
string[] apkFiles = null;
|
||||
if (e.DropManyByEnd(file => apkFiles = file, apks))
|
||||
{
|
||||
main.mergePanel.BackColor = PanelBackColor();
|
||||
|
||||
foreach (var apkFile in apkFiles)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, ex.Message);
|
||||
main.splitApkPathTxtBox.Text = apkFile;
|
||||
|
||||
await main.Merge(apkFile);
|
||||
}
|
||||
main.Done();
|
||||
}
|
||||
}
|
||||
|
||||
private async void DropDexToBaksmali(DragEventArgs e)
|
||||
{
|
||||
string apkFile = null;
|
||||
if (e.DropOneByEnd(".dex", file => apkFile = file))
|
||||
if (e.DropOneByEnd(file => apkFile = file, ".dex"))
|
||||
{
|
||||
main.baksmaliBrowseInputDexTxtBox.Text = apkFile;
|
||||
main.bakSmaliGroupBox.BackColor = Color.White;
|
||||
await main.Baksmali(apkFile);
|
||||
main.bakSmaliGroupBox.BackColor = PanelBackColor();
|
||||
await main.Baksmali(apkFile);
|
||||
}
|
||||
}
|
||||
|
||||
private async void DropDirToSmali(DragEventArgs e)
|
||||
{
|
||||
string dir = null;
|
||||
if (e.DropOneByEnd("", file => dir = file))
|
||||
if (e.DropOneByEnd(file => dir = file, null))
|
||||
{
|
||||
main.smaliBrowseInputDirTxtBox.Text = dir;
|
||||
main.smaliGroupBox.BackColor = Color.White;
|
||||
await main.Smali(dir + ".dex");
|
||||
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 = PanelBackColor();
|
||||
await main.Install(dir);
|
||||
}
|
||||
}
|
||||
|
||||
private void DropApkToGetInfo(DragEventArgs e)
|
||||
{
|
||||
string apkFile = null;
|
||||
if (e.DropOneByEnd(".apk", file => apkFile = file))
|
||||
if (e.DropOneByEnd(file => apkFile = file, apks))
|
||||
{
|
||||
main.smaliBrowseInputDirTxtBox.Text = apkFile;
|
||||
main.tabPageApkInfo.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,11 @@ namespace APKToolGUI.Handlers
|
||||
public FrameworkControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.button_IF_BrowseFrameDir.Click += button_IF_BrowseFrameDir_Click;
|
||||
main.button_IF_BrowseInputFramePath.Click += button_IF_BrowseInputFramePath_Click;
|
||||
main.button_IF_InstallFramework.Click += button_IF_InstallFramework_Click;
|
||||
main.clearFwBtn.Click += clearFwBtn_Click;
|
||||
main.openFwFolderBtn.Click += openFwFolderBtn_Click;
|
||||
}
|
||||
|
||||
internal void button_IF_BrowseFrameDir_Click(object sender, EventArgs e)
|
||||
@@ -72,30 +77,23 @@ namespace APKToolGUI.Handlers
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
main.Running();
|
||||
main.ToLog(ApktoolEventType.Information, Language.InstallingFramework + " " + Path.GetFileName(main.textBox_IF_InputFramePath.Text));
|
||||
main.ToStatus(String.Format(Language.InstallingFramework + " \"{0}\"...", Path.GetFileName(main.textBox_IF_InputFramePath.Text)), Resources.waiting);
|
||||
main.Running(Language.InstallingFramework);
|
||||
main.ToLog(ApktoolEventType.None, Language.InstallingFramework + " " + Path.GetFileName(main.textBox_IF_InputFramePath.Text));
|
||||
|
||||
await Task.Factory.StartNew(() =>
|
||||
{
|
||||
if (main.apktool.InstallFramework() == 0)
|
||||
main.ToLog(ApktoolEventType.Information, Language.FrameworkInstalled);
|
||||
main.Done(Language.FrameworkInstalled);
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.FrameworkInstallationNotStarted);
|
||||
main.Error(Language.FrameworkInstallationNotStarted);
|
||||
});
|
||||
main.Done();
|
||||
}
|
||||
|
||||
internal async void clearFwBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
await Task.Factory.StartNew(() =>
|
||||
{
|
||||
if (main.ClearFramework() == 0)
|
||||
main.ToLog(ApktoolEventType.Information, Language.Done);
|
||||
});
|
||||
|
||||
main.Done();
|
||||
main.Running(Language.ClearingFramework);
|
||||
|
||||
await main.ClearFramework();
|
||||
}
|
||||
|
||||
internal void openFwFolderBtn_Click(object sender, EventArgs e)
|
||||
|
||||
@@ -0,0 +1,238 @@
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI.Handlers
|
||||
{
|
||||
internal class MainWindowEventHandlers
|
||||
{
|
||||
private static FormMain main;
|
||||
public MainWindowEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.clearLogToolStripMenuItem.Click += clearLogToolStripMenuItem_Click;
|
||||
main.copyToolStripMenuItem.Click += copyToolStripMenuItem_Click;
|
||||
main.openAndroidMainfestBtn.Click += openAndroidMainfestBtn_Click;
|
||||
main.openApktoolYmlBtn.Click += openApktoolYmlBtn_Click;
|
||||
main.compileOutputOpenDirBtn.Click += compiledApkOpenDirBtn_Click;
|
||||
main.button_OpenMainActivity.Click += button_OpenMainActivity_Click;
|
||||
main.decApkOpenDirBtn.Click += decApkOpenDirBtn_Click;
|
||||
main.decOutOpenDirBtn.Click += decOutOpenDirBtn_Click;
|
||||
main.comApkOpenDir.Click += comApkOpenDir_Click;
|
||||
main.signApkOpenDirBtn.Click += signApkOpenDirBtn_Click;
|
||||
main.alignApkOpenDirBtn.Click += alignApkOpenDirBtn_Click;
|
||||
main.mergeApkBtn.Click += mergeApkBtn_Click;
|
||||
main.selSplitApkBtn.Click += selSplitApkBtn_Click;
|
||||
}
|
||||
|
||||
internal void selSplitApkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (OpenFileDialog ofd = new OpenFileDialog())
|
||||
{
|
||||
ofd.Filter = "Split APK Package (*.xapk;*.zip*.apkm;*.apks)|*.xapk;*.zip*.apkm;*.apks";
|
||||
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
main.splitApkPathTxtBox.Text = ofd.FileName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal async void mergeApkBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
main.Save();
|
||||
if (!File.Exists(Settings.Default.SplitApk_InputFile))
|
||||
{
|
||||
main.ShowMessage(Language.SplitApkNotFound, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
await main.Merge(Settings.Default.SplitApk_InputFile);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void clearLogToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
main.logTxtBox.Text = "";
|
||||
}
|
||||
|
||||
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Windows.Forms.Clipboard.SetText(main.logTxtBox.SelectedText);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
internal void decApkOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(main.textBox_BUILD_InputProjectDir.Text))
|
||||
Process.Start("explorer.exe", main.textBox_BUILD_InputProjectDir.Text);
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
}
|
||||
|
||||
internal void decOutOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(Settings.Default.Decode_OutputDir))
|
||||
Process.Start("explorer.exe", Settings.Default.Decode_OutputDir);
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedOutputFolderNotExist);
|
||||
}
|
||||
}
|
||||
|
||||
private void openAndroidMainfestBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists(Path.Combine(main.textBox_BUILD_InputProjectDir.Text, "AndroidManifest.xml")))
|
||||
Process.Start("explorer.exe", Path.Combine(main.textBox_BUILD_InputProjectDir.Text, "AndroidManifest.xml"));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.AndroidManifestNotExist);
|
||||
}
|
||||
|
||||
private void openApktoolYmlBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (File.Exists(Path.Combine(main.textBox_BUILD_InputProjectDir.Text, "apktool.yml")))
|
||||
Process.Start("explorer.exe", Path.Combine(main.textBox_BUILD_InputProjectDir.Text, "apktool.yml"));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.AndroidManifestNotExist);
|
||||
}
|
||||
|
||||
private void compiledApkOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(Settings.Default.Build_OutputAppPath))
|
||||
{
|
||||
Process.Start("explorer.exe", Settings.Default.Build_OutputAppPath);
|
||||
}
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
|
||||
private void button_OpenMainActivity_Click(object sender, EventArgs e)
|
||||
{
|
||||
string decPath = main.textBox_BUILD_InputProjectDir.Text;
|
||||
if (Directory.Exists(decPath))
|
||||
{
|
||||
var launchActivityList = new List<string>
|
||||
{
|
||||
main.aapt != null ? main.aapt.LaunchableActivity : CommonUtils.GetActivityFromManifest(decPath),
|
||||
"com\\unity3d\\player\\UnityPlayerActivity",
|
||||
CommonUtils.GetApplicationNameFromManifest(decPath)
|
||||
};
|
||||
|
||||
foreach (string launchActivity in launchActivityList)
|
||||
{
|
||||
if (String.IsNullOrEmpty(launchActivity))
|
||||
continue;
|
||||
|
||||
Debug.WriteLine(launchActivity);
|
||||
|
||||
string path = null;
|
||||
bool activityFound = false;
|
||||
for (int i = 1; i < 100; i++)
|
||||
{
|
||||
string smaliFolder = (i == 1) ? "smali" : "smali_classes" + i;
|
||||
path = Path.Combine(decPath, smaliFolder, launchActivity.Replace(".", "\\") + ".smali");
|
||||
if (File.Exists(path))
|
||||
{
|
||||
Debug.WriteLine(path);
|
||||
activityFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (activityFound && !CommonUtils.OnCreateExists(path))
|
||||
continue;
|
||||
|
||||
if (activityFound)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.None, String.Format(Language.MainActivityFound, path));
|
||||
Process.Start("explorer.exe", path);
|
||||
return;
|
||||
}
|
||||
else
|
||||
continue;
|
||||
}
|
||||
|
||||
main.ToLog(ApktoolEventType.Warning, Language.MainActivityNotFoundPleaseFindManually);
|
||||
}
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.DecompiledAPKNotExist);
|
||||
}
|
||||
|
||||
internal void comApkOpenDir_Click(object sender, EventArgs e)
|
||||
{
|
||||
string decApkDir = main.textBox_BUILD_InputProjectDir.Text;
|
||||
|
||||
string outputFile = decApkDir + " compiled.apk";
|
||||
if (Settings.Default.Build_SignAfterBuild)
|
||||
outputFile = decApkDir + " signed.apk";
|
||||
if (Settings.Default.Build_UseOutputAppPath)
|
||||
{
|
||||
outputFile = Path.Combine(Settings.Default.Build_OutputAppPath, Path.GetFileName(decApkDir)) + ".apk";
|
||||
if (Settings.Default.Build_SignAfterBuild)
|
||||
outputFile = Path.Combine(Settings.Default.Build_OutputAppPath, Path.GetFileName(decApkDir)) + " signed.apk";
|
||||
}
|
||||
|
||||
if (File.Exists(outputFile))
|
||||
Process.Start("explorer.exe", string.Format("/select,\"{0}\"", outputFile));
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
}
|
||||
|
||||
internal void signApkOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string inputFile = Settings.Default.Sign_InputFile;
|
||||
string outputFile = inputFile;
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputFile = Path.Combine(Settings.Default.Sign_OutputDir, Path.GetFileName(inputFile));
|
||||
|
||||
if (File.Exists(outputFile))
|
||||
Process.Start("explorer.exe", string.Format("/select,\"{0}\"", outputFile));
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
}
|
||||
|
||||
internal void alignApkOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string inputFile = Settings.Default.Zipalign_InputFile;
|
||||
|
||||
string outputFile = inputFile;
|
||||
if (!String.IsNullOrEmpty(outputFile))
|
||||
{
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputFile = Path.Combine(Settings.Default.Zipalign_OutputDir, Path.GetFileName(inputFile));
|
||||
|
||||
if (!Settings.Default.Zipalign_OverwriteOutputFile)
|
||||
outputFile = PathUtils.GetDirectoryNameWithoutExtension(outputFile) + " aligned.apk";
|
||||
}
|
||||
if (File.Exists(outputFile))
|
||||
Process.Start("explorer.exe", string.Format("/select,\"{0}\"", outputFile));
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using Dark.Net;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI.Handlers
|
||||
{
|
||||
internal class MenuItemHandlers
|
||||
{
|
||||
private static FormMain main;
|
||||
public MenuItemHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.saveLogToFileToolStripMenuItem.Click += saveLogItem_Click;
|
||||
main.settingsToolStripMenuItem.Click += menuItemSettings_Click;
|
||||
main.exitToolStripMenuItem.Click += menuItemExit_Click;
|
||||
main.openTempFolderToolStripMenuItem.Click += openTempFolderToolStripMenuItem_Click;
|
||||
main.checkForUpdateToolStripMenuItem.Click += menuItemCheckUpdate_Click;
|
||||
main.aboutToolStripMenuItem.Click += menuItemAbout_Click;
|
||||
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())
|
||||
{
|
||||
sfd.FileName = "APK Tool GUI logs";
|
||||
sfd.Filter = Language.TextFile + " (*.txt)|*.txt";
|
||||
sfd.FilterIndex = 2;
|
||||
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
File.WriteAllText(sfd.FileName, main.logTxtBox.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
private void menuItemExit_Click(object sender, EventArgs e)
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
private void openTempFolderToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(Program.TEMP_PATH))
|
||||
Process.Start("explorer.exe", Program.TEMP_PATH);
|
||||
else
|
||||
{
|
||||
Directory.CreateDirectory(Program.TEMP_PATH);
|
||||
Process.Start("explorer.exe", Program.TEMP_PATH);
|
||||
}
|
||||
}
|
||||
|
||||
private void menuItemCheckUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
main.updateCheker.CheckAsync();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
private void apktoolIssuesLinkItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start("https://github.com/iBotPeaches/Apktool/issues?q=is%3Aissue");
|
||||
}
|
||||
|
||||
private void baksmaliIssuesLinkItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start("https://github.com/JesusFreke/smali/issues?q=is%3Aissue");
|
||||
}
|
||||
|
||||
private void reportAnIsuueToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start("https://github.com/AndnixSH/APKToolGUI/issues/new/choose");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.ApkTool;
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using Ookii.Dialogs.WinForms;
|
||||
@@ -21,6 +22,17 @@ namespace APKToolGUI.Handlers
|
||||
public SignControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.button_SIGN_BrowsePublicKey.Click += button_SIGN_BrowsePublicKey_Click;
|
||||
main.button_SIGN_BrowsePrivateKey.Click += button_SIGN_BrowsePrivateKey_Click;
|
||||
main.button_SIGN_BrowsePrivateKey.Click += button_SIGN_BrowsePrivateKey_Click;
|
||||
main.button_SIGN_BrowseInputFile.Click += button_SIGN_BrowseInputFile_Click;
|
||||
main.button_SIGN_BrowseOutputFile.Click += button_SIGN_BrowseOutputFile_Click;
|
||||
main.schemev1ComboBox.SelectedIndexChanged += schemeComboBoxChanged;
|
||||
main.schemev2ComboBox.SelectedIndexChanged += schemeComboBoxChanged;
|
||||
main.schemev3ComboBox.SelectedIndexChanged += schemeComboBoxChanged;
|
||||
main.schemev4ComboBox.SelectedIndexChanged += schemeComboBoxChanged;
|
||||
main.button_SIGN_Sign.Click += button_SIGN_Sign_Click;
|
||||
main.selectKeyStoreFileBtn.Click += selectKeyStoreFileBtn_Click;
|
||||
}
|
||||
|
||||
internal void button_SIGN_BrowsePublicKey_Click(object sender, EventArgs e)
|
||||
@@ -105,29 +117,12 @@ namespace APKToolGUI.Handlers
|
||||
return;
|
||||
}
|
||||
|
||||
main.Running();
|
||||
|
||||
await Task.Factory.StartNew(() =>
|
||||
{
|
||||
string inputFile = Settings.Default.Sign_InputFile;
|
||||
string outputDir = inputFile;
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputDir = Path.Combine(Settings.Default.Sign_OutputDir, Path.GetFileName(inputFile));
|
||||
|
||||
if (main.Sign(inputFile, outputDir) == 0)
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
main.ToLog(ApktoolEventType.Information, String.Format(Language.SignSuccessfullyCompleted, inputFile));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Information, String.Format(Language.SignSuccessfullyCompleted, outputDir));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, String.Format(Language.ErrorSigning, outputDir));
|
||||
});
|
||||
await main.Sign(Settings.Default.Sign_InputFile);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, ex.Message);
|
||||
}
|
||||
main.Done();
|
||||
}
|
||||
|
||||
internal void selectKeyStoreFileBtn_Click(object sender, EventArgs e)
|
||||
@@ -140,19 +135,12 @@ namespace APKToolGUI.Handlers
|
||||
}
|
||||
}
|
||||
|
||||
internal void signApkOpenDirBtn_Click(object sender, EventArgs e)
|
||||
private void schemeComboBoxChanged(object sender, EventArgs e)
|
||||
{
|
||||
string inputFile = Settings.Default.Sign_InputFile;
|
||||
string outputFile = inputFile;
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputFile = Path.Combine(Settings.Default.Sign_OutputDir, Path.GetFileName(inputFile));
|
||||
|
||||
if (File.Exists(outputFile))
|
||||
Process.Start("explorer.exe", string.Format("/select,\"{0}\"", outputFile));
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
Settings.Default.Sign_Schemev1 = main.schemev1ComboBox.SelectedIndex;
|
||||
Settings.Default.Sign_Schemev2 = main.schemev2ComboBox.SelectedIndex;
|
||||
Settings.Default.Sign_Schemev3 = main.schemev3ComboBox.SelectedIndex;
|
||||
Settings.Default.Sign_Schemev4 = main.schemev4ComboBox.SelectedIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@ namespace APKToolGUI.Handlers
|
||||
public SmaliControlEventHandlers(FormMain Main)
|
||||
{
|
||||
main = Main;
|
||||
main.smaliBrowseOutputBtn.Click += smaliBrowseOutputBtn_Click;
|
||||
main.smaliBrowseInputDirBtn.Click += smaliBrowseInputDirBtn_Click;
|
||||
main.comSmaliBtn.Click += comSmaliBtn_Click;
|
||||
}
|
||||
|
||||
internal void smaliBrowseOutputBtn_Click(object sender, EventArgs e)
|
||||
@@ -60,7 +63,7 @@ namespace APKToolGUI.Handlers
|
||||
return;
|
||||
}
|
||||
|
||||
main.Smali(Settings.Default.Smali_InputDir + ".dex");
|
||||
main.Smali(Settings.Default.Smali_InputDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,10 @@ namespace APKToolGUI.Handlers
|
||||
{
|
||||
main = Main;
|
||||
CheckAlignSwitch = !Settings.Default.Zipalign_CheckOnly;
|
||||
main.checkBox_ZIPALIGN_CheckAlignment.Click += checkBox_ZIPALIGN_CheckAlignment_CheckedChanged;
|
||||
main.button_ZIPALIGN_BrowseOutputFile.Click += button_ZIPALIGN_BrowseOutputFile_Click;
|
||||
main.button_ZIPALIGN_BrowseInputFile.Click += button_ZIPALIGN_BrowseInputFile_Click;
|
||||
main.button_ZIPALIGN_Align.Click += button_ZIPALIGN_Align_Click;
|
||||
}
|
||||
|
||||
internal bool CheckAlignSwitch
|
||||
@@ -74,55 +78,15 @@ namespace APKToolGUI.Handlers
|
||||
|
||||
internal async void button_ZIPALIGN_Align_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
if (!File.Exists(main.textBox_ZIPALIGN_InputFile.Text))
|
||||
{
|
||||
if (!File.Exists(main.textBox_ZIPALIGN_InputFile.Text))
|
||||
{
|
||||
main.ShowMessage(Language.ErrorSelectedFileNotExist, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
await Task.Factory.StartNew(() =>
|
||||
{
|
||||
string inputFile = Settings.Default.Zipalign_InputFile;
|
||||
|
||||
string outputDir = inputFile;
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputDir = Path.Combine(Settings.Default.Zipalign_OutputDir, Path.GetFileName(inputFile));
|
||||
|
||||
if (!Settings.Default.Zipalign_OverwriteOutputFile)
|
||||
outputDir = PathUtils.GetDirectoryNameWithoutExtension(outputDir) + " aligned.apk";
|
||||
|
||||
if (main.Align(inputFile, outputDir) == 0)
|
||||
main.ToLog(ApktoolEventType.Information, String.Format(Language.ZipalignFileSavedTo, outputDir));
|
||||
else
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorZipalign);
|
||||
});
|
||||
main.ShowMessage(Language.ErrorSelectedFileNotExist, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, ex.Message);
|
||||
}
|
||||
main.Done();
|
||||
}
|
||||
|
||||
internal void alignApkOpenDirBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string inputFile = Settings.Default.Zipalign_InputFile;
|
||||
|
||||
string outputFile = inputFile;
|
||||
if (Settings.Default.Zipalign_UseOutputDir)
|
||||
outputFile = Path.Combine(Settings.Default.Zipalign_OutputDir, Path.GetFileName(inputFile));
|
||||
|
||||
if (!Settings.Default.Zipalign_OverwriteOutputFile)
|
||||
outputFile = PathUtils.GetDirectoryNameWithoutExtension(outputFile) + " aligned.apk";
|
||||
|
||||
if (File.Exists(outputFile))
|
||||
Process.Start("explorer.exe", string.Format("/select,\"{0}\"", outputFile));
|
||||
else
|
||||
{
|
||||
main.ToLog(ApktoolEventType.Error, Language.ErrorSelectedFileNotExist);
|
||||
}
|
||||
await main.Align(inputFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using APKToolGUI.Properties;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Java
|
||||
@@ -20,10 +22,8 @@ namespace Java
|
||||
private void Initialize()
|
||||
{
|
||||
EnableRaisingEvents = true;
|
||||
if (!String.IsNullOrEmpty(JavaPath))
|
||||
StartInfo.FileName = JavaPath;
|
||||
else
|
||||
StartInfo.FileName = "cmd.exe";
|
||||
StartInfo.FileName = JavaPath;
|
||||
StartInfo.StandardOutputEncoding = Encoding.GetEncoding("UTF-8");
|
||||
StartInfo.UseShellExecute = false;
|
||||
StartInfo.RedirectStandardOutput = true;
|
||||
StartInfo.RedirectStandardError = true;
|
||||
@@ -33,16 +33,13 @@ namespace Java
|
||||
public new bool Start(string args)
|
||||
{
|
||||
EnableRaisingEvents = true;
|
||||
if (!String.IsNullOrEmpty(JavaPath))
|
||||
{
|
||||
StartInfo.Arguments = String.Format("-jar \"{0}\" {1}", JarPath, args);
|
||||
Debug.WriteLine(String.Format("-jar \"{0}\" {1}", JarPath, args));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartInfo.Arguments = String.Format("/c \" java -jar \"{0}\" {1} \"", JarPath, args);
|
||||
Debug.WriteLine(String.Format("CMD: java -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();
|
||||
}
|
||||
|
||||
@@ -52,17 +49,8 @@ namespace Java
|
||||
{
|
||||
using (Process javaProcess = new Process())
|
||||
{
|
||||
if (!String.IsNullOrEmpty(JavaPath))
|
||||
{
|
||||
javaProcess.StartInfo.FileName = JavaPath;
|
||||
javaProcess.StartInfo.Arguments = String.Format("-jar \"{0}\" {1}", JarPath, args);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
javaProcess.StartInfo.FileName = "cmd.exe";
|
||||
javaProcess.StartInfo.Arguments = String.Format("/c \" java -jar \"{0}\" {1} \"", JarPath, args);
|
||||
}
|
||||
javaProcess.StartInfo.FileName = JavaPath;
|
||||
javaProcess.StartInfo.Arguments = String.Format("-jar \"{0}\" {1}", JarPath, args);
|
||||
javaProcess.StartInfo.CreateNoWindow = true;
|
||||
javaProcess.StartInfo.UseShellExecute = false;
|
||||
javaProcess.StartInfo.RedirectStandardError = true;
|
||||
@@ -88,31 +76,36 @@ namespace Java
|
||||
{
|
||||
using (Process javaProcess = new Process())
|
||||
{
|
||||
if (!String.IsNullOrEmpty(JavaPath))
|
||||
{
|
||||
javaProcess.StartInfo.FileName = JavaPath;
|
||||
javaProcess.StartInfo.Arguments = "-version";
|
||||
}
|
||||
else
|
||||
{
|
||||
javaProcess.StartInfo.FileName = "cmd.exe";
|
||||
javaProcess.StartInfo.Arguments = "/c \"java -version \"";
|
||||
}
|
||||
javaProcess.StartInfo.FileName = JavaPath;
|
||||
javaProcess.StartInfo.Arguments = "-version";
|
||||
javaProcess.StartInfo.CreateNoWindow = true;
|
||||
javaProcess.StartInfo.UseShellExecute = false;
|
||||
javaProcess.StartInfo.RedirectStandardError = true;
|
||||
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.Split(new[] { '\r', '\n' }).FirstOrDefault().Replace("java", "Java");
|
||||
return output.Replace("\r\n\r\n", "\n").Trim();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,40 +4,44 @@ using APKToolGUI.Properties;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using static Microsoft.WindowsAPICodePack.Shell.PropertySystem.SystemProperties.System;
|
||||
|
||||
namespace Java
|
||||
{
|
||||
public class JavaUtils
|
||||
{
|
||||
public static bool TryGetSystemVariable(out string javaExeLocation)
|
||||
public static string GetSystemVariable()
|
||||
{
|
||||
try
|
||||
{
|
||||
ProcessStartInfo procStartInfo = new ProcessStartInfo("java", "-version ");
|
||||
procStartInfo.RedirectStandardOutput = true;
|
||||
procStartInfo.RedirectStandardError = true;
|
||||
procStartInfo.UseShellExecute = false;
|
||||
procStartInfo.CreateNoWindow = true;
|
||||
Process proc = new Process();
|
||||
proc.StartInfo = procStartInfo;
|
||||
proc.Start();
|
||||
if (!String.IsNullOrEmpty(proc.StandardError.ReadToEnd()))
|
||||
using (Process javaProcess = new Process())
|
||||
{
|
||||
javaExeLocation = "java";
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
javaExeLocation = null;
|
||||
return false;
|
||||
javaProcess.StartInfo.FileName = "where";
|
||||
javaProcess.StartInfo.Arguments = "java";
|
||||
javaProcess.StartInfo.CreateNoWindow = true;
|
||||
javaProcess.StartInfo.UseShellExecute = false;
|
||||
javaProcess.StartInfo.RedirectStandardError = true;
|
||||
javaProcess.StartInfo.RedirectStandardOutput = true;
|
||||
javaProcess.Start();
|
||||
string output = javaProcess.StandardOutput.ReadToEnd();
|
||||
javaProcess.WaitForExit();
|
||||
if (!String.IsNullOrEmpty(output))
|
||||
{
|
||||
string[] paths = output.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
|
||||
foreach (string path in paths)
|
||||
{
|
||||
return path;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
javaExeLocation = null;
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private static string GetJavaInstallationPath()
|
||||
{
|
||||
@@ -82,34 +86,23 @@ namespace Java
|
||||
|
||||
public static string GetJavaPath()
|
||||
{
|
||||
string javaExec;
|
||||
if (!JavaUtils.TryGetSystemVariable(out javaExec))
|
||||
if (Settings.Default.UseCustomJavaExe)
|
||||
{
|
||||
javaExec = JavaUtils.SearchPath();
|
||||
if (!File.Exists(javaExec))
|
||||
{
|
||||
if (MessageBox.Show(Language.DoYouWantToSelectJavaLocation, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
using (OpenFileDialog openJavaExe = new OpenFileDialog())
|
||||
{
|
||||
openJavaExe.Filter = "java.exe|java.exe";
|
||||
if (openJavaExe.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
javaExec = Program.GetPortablePath(openJavaExe.FileName);
|
||||
}
|
||||
else
|
||||
Environment.Exit(0);
|
||||
}
|
||||
}
|
||||
else
|
||||
Environment.Exit(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return javaExec;
|
||||
}
|
||||
return Settings.Default.JavaExe;
|
||||
}
|
||||
else
|
||||
{
|
||||
string javaExec = JavaUtils.GetSystemVariable();
|
||||
if (String.IsNullOrEmpty(javaExec))
|
||||
{
|
||||
javaExec = JavaUtils.SearchPath();
|
||||
if (File.Exists(javaExec))
|
||||
{
|
||||
return javaExec;
|
||||
}
|
||||
}
|
||||
return javaExec;
|
||||
}
|
||||
return javaExec;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace APKToolGUI.Languages {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Language {
|
||||
@@ -60,6 +60,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Aborted.
|
||||
/// </summary>
|
||||
internal static string Aborted {
|
||||
get {
|
||||
return ResourceManager.GetString("Aborted", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About.
|
||||
/// </summary>
|
||||
@@ -132,6 +141,24 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Are you sure you want to cancel the process?.
|
||||
/// </summary>
|
||||
internal static string CancelProcess {
|
||||
get {
|
||||
return ResourceManager.GetString("CancelProcess", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Can't detect APKEditor version.
|
||||
/// </summary>
|
||||
internal static string CantDetectApkeditorVersion {
|
||||
get {
|
||||
return ResourceManager.GetString("CantDetectApkeditorVersion", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Can't detect apktool version..
|
||||
/// </summary>
|
||||
@@ -159,6 +186,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to It is required to clear framework cache after changing Apktool version to avoid unexpected errors. Do you want to clear it now?.
|
||||
/// </summary>
|
||||
internal static string ClearFrameworkPrompt {
|
||||
get {
|
||||
return ResourceManager.GetString("ClearFrameworkPrompt", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Clearing Framework.
|
||||
/// </summary>
|
||||
@@ -168,6 +204,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>
|
||||
@@ -204,6 +249,42 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Are you sure you want to kill ADB server? You might need to reconnect your device or restart emulator.
|
||||
/// </summary>
|
||||
internal static string ConfirmKillingAdbServer {
|
||||
get {
|
||||
return ResourceManager.GetString("ConfirmKillingAdbServer", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Copy file "{0}" to "{1}".
|
||||
/// </summary>
|
||||
internal static string CopyFileTo {
|
||||
get {
|
||||
return ResourceManager.GetString("CopyFileTo", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Copy file "{0}" to temp directory "{1}".
|
||||
/// </summary>
|
||||
internal static string CopyFileToTemp {
|
||||
get {
|
||||
return ResourceManager.GetString("CopyFileToTemp", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Copy decompiled apk folder "{0}" to temp directory "{1}".
|
||||
/// </summary>
|
||||
internal static string CopyFolderToTemp {
|
||||
get {
|
||||
return ResourceManager.GetString("CopyFolderToTemp", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Creating Unsigned APK.
|
||||
/// </summary>
|
||||
@@ -240,6 +321,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Destination directory "{0}" already exists. Enable "Force delete destination directory" if you want to overwrite it..
|
||||
/// </summary>
|
||||
internal static string DecodeDesDirExists {
|
||||
get {
|
||||
return ResourceManager.GetString("DecodeDesDirExists", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Decompilation directory not selected..
|
||||
/// </summary>
|
||||
@@ -294,6 +384,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Decompiling all APK files.
|
||||
/// </summary>
|
||||
internal static string DecompilingAllApkFiles {
|
||||
get {
|
||||
return ResourceManager.GetString("DecompilingAllApkFiles", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Decompiling dex.
|
||||
/// </summary>
|
||||
@@ -312,6 +411,87 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Delete file "{0}".
|
||||
/// </summary>
|
||||
internal static string DeleteFile {
|
||||
get {
|
||||
return ResourceManager.GetString("DeleteFile", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <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>
|
||||
internal static string DetectedAsBase {
|
||||
get {
|
||||
return ResourceManager.GetString("DetectedAsBase", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} detected as split.
|
||||
/// </summary>
|
||||
internal static string DetectedAsSplit {
|
||||
get {
|
||||
return ResourceManager.GetString("DetectedAsSplit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Device is not selected.
|
||||
/// </summary>
|
||||
internal static string DeviceNotSelected {
|
||||
get {
|
||||
return ResourceManager.GetString("DeviceNotSelected", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Device selected "{0}".
|
||||
/// </summary>
|
||||
internal static string DeviceSelected {
|
||||
get {
|
||||
return ResourceManager.GetString("DeviceSelected", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} devices found.
|
||||
/// </summary>
|
||||
internal static string DevicesFound {
|
||||
get {
|
||||
return ResourceManager.GetString("DevicesFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <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>
|
||||
internal static string DirNotExist {
|
||||
get {
|
||||
return ResourceManager.GetString("DirNotExist", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Done.
|
||||
/// </summary>
|
||||
@@ -340,16 +520,7 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Java is not found. Do you want to select custom location?.
|
||||
/// </summary>
|
||||
internal static string DoYouWantToSelectJavaLocation {
|
||||
get {
|
||||
return ResourceManager.GetString("DoYouWantToSelectJavaLocation", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You are running as administrator. Drag & drop is not supported.
|
||||
/// Looks up a localized string similar to You are running as administrator. Drag & drop may not be supported.
|
||||
/// </summary>
|
||||
internal static string DragDropNotSupported {
|
||||
get {
|
||||
@@ -412,7 +583,16 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Java is not installed or is installed incorrectly. The program will be closed..
|
||||
/// Looks up a localized string similar to There was an error getting APK infomation.
|
||||
/// </summary>
|
||||
internal static string ErrorGettingApkInfo {
|
||||
get {
|
||||
return ResourceManager.GetString("ErrorGettingApkInfo", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Java is not installed or is installed incorrectly. Please install Java or set custom location in Settings.
|
||||
/// </summary>
|
||||
internal static string ErrorJavaDetect {
|
||||
get {
|
||||
@@ -420,6 +600,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Merging failed.
|
||||
/// </summary>
|
||||
internal static string ErrorMerging {
|
||||
get {
|
||||
return ResourceManager.GetString("ErrorMerging", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This directory is not an Android package.
|
||||
/// </summary>
|
||||
@@ -546,6 +735,24 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Extracting all APK files.
|
||||
/// </summary>
|
||||
internal static string ExtractingAllApkFiles {
|
||||
get {
|
||||
return ResourceManager.GetString("ExtractingAllApkFiles", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Extract original signature.
|
||||
/// </summary>
|
||||
internal static string ExtractOrigSignature {
|
||||
get {
|
||||
return ResourceManager.GetString("ExtractOrigSignature", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File.
|
||||
/// </summary>
|
||||
@@ -573,6 +780,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>
|
||||
@@ -619,7 +835,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 {
|
||||
@@ -627,6 +843,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Getting devices....
|
||||
/// </summary>
|
||||
internal static string GettingDevices {
|
||||
get {
|
||||
return ResourceManager.GetString("GettingDevices", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Help.
|
||||
/// </summary>
|
||||
@@ -636,6 +861,42 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Input directory: {0}.
|
||||
/// </summary>
|
||||
internal static string InputDirectory {
|
||||
get {
|
||||
return ResourceManager.GetString("InputDirectory", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Input file: {0}.
|
||||
/// </summary>
|
||||
internal static string InputFile {
|
||||
get {
|
||||
return ResourceManager.GetString("InputFile", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to APK Installation failed.
|
||||
/// </summary>
|
||||
internal static string InstallApkFailed {
|
||||
get {
|
||||
return ResourceManager.GetString("InstallApkFailed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to APK Installation successfully.
|
||||
/// </summary>
|
||||
internal static string InstallApkSuccessful {
|
||||
get {
|
||||
return ResourceManager.GetString("InstallApkSuccessful", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Install framework.
|
||||
/// </summary>
|
||||
@@ -645,6 +906,24 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Installing APK.
|
||||
/// </summary>
|
||||
internal static string InstallingApk {
|
||||
get {
|
||||
return ResourceManager.GetString("InstallingApk", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Installing APK "{0}".
|
||||
/// </summary>
|
||||
internal static string InstallingApkPath {
|
||||
get {
|
||||
return ResourceManager.GetString("InstallingApkPath", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Installing framework.
|
||||
/// </summary>
|
||||
@@ -672,6 +951,33 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Merge finished. Moving directory to "{0}".
|
||||
/// </summary>
|
||||
internal static string MergeFinishedMoveDir {
|
||||
get {
|
||||
return ResourceManager.GetString("MergeFinishedMoveDir", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Merging APK.
|
||||
/// </summary>
|
||||
internal static string MergingApk {
|
||||
get {
|
||||
return ResourceManager.GetString("MergingApk", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Merging APK using APKEditor.jar.
|
||||
/// </summary>
|
||||
internal static string MergingApkEditor {
|
||||
get {
|
||||
return ResourceManager.GetString("MergingApkEditor", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to META-INF folder does not exist. Skipped.
|
||||
/// </summary>
|
||||
@@ -681,6 +987,33 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Move temp folder "{0}" to output directory "{1}".
|
||||
/// </summary>
|
||||
internal static string MoveTempApkFileToOutput {
|
||||
get {
|
||||
return ResourceManager.GetString("MoveTempApkFileToOutput", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Move temp apk "{0}" to output directory "{1}".
|
||||
/// </summary>
|
||||
internal static string MoveTempApkToOutput {
|
||||
get {
|
||||
return ResourceManager.GetString("MoveTempApkToOutput", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Moving base directory to "{0}".
|
||||
/// </summary>
|
||||
internal static string MovingBasedirectory {
|
||||
get {
|
||||
return ResourceManager.GetString("MovingBasedirectory", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to For the changes to take effect you must restart the program. You want to do it now?.
|
||||
/// </summary>
|
||||
@@ -690,6 +1023,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No devices found. Make sure your device is connected to the computer with the adb debugging turned on. If you use an emulator, restart it and wait until it boot up.
|
||||
/// </summary>
|
||||
internal static string NoDevicesFound {
|
||||
get {
|
||||
return ResourceManager.GetString("NoDevicesFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This folder is not a decompiled APK.
|
||||
/// </summary>
|
||||
@@ -708,6 +1050,42 @@ 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>
|
||||
internal static string ParsingApkInfo {
|
||||
get {
|
||||
return ResourceManager.GetString("ParsingApkInfo", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Please wait....
|
||||
/// </summary>
|
||||
internal static string PleaseWait {
|
||||
get {
|
||||
return ResourceManager.GetString("PleaseWait", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Removed all ApkTool dummies.
|
||||
/// </summary>
|
||||
@@ -726,6 +1104,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Restart is required to apply changes. Do you want to restart the application?.
|
||||
/// </summary>
|
||||
internal static string RestartApplicationPrompt {
|
||||
get {
|
||||
return ResourceManager.GetString("RestartApplicationPrompt", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Settings.
|
||||
/// </summary>
|
||||
@@ -807,6 +1194,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Split APK is not selected.
|
||||
/// </summary>
|
||||
internal static string SplitApkNotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("SplitApkNotFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to System language.
|
||||
/// </summary>
|
||||
@@ -816,6 +1212,15 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Temp directory: "{0}".
|
||||
/// </summary>
|
||||
internal static string TempDirectory {
|
||||
get {
|
||||
return ResourceManager.GetString("TempDirectory", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Text file.
|
||||
/// </summary>
|
||||
@@ -825,6 +1230,24 @@ namespace APKToolGUI.Languages {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Time ended: {0}.
|
||||
/// </summary>
|
||||
internal static string TimeEnded {
|
||||
get {
|
||||
return ResourceManager.GetString("TimeEnded", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Time started: {0}.
|
||||
/// </summary>
|
||||
internal static string TimeStarted {
|
||||
get {
|
||||
return ResourceManager.GetString("TimeStarted", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to New version is available. Do you want to update?.
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,549 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
Das Hauptziel dieses Formats ist es, ein einfaches XML-Format zu ermöglichen
|
||||
das größtenteils für den Menschen lesbar ist. Die Erzeugung und das Parsen der
|
||||
verschiedenen Datentypen erfolgt durch die TypeConverter-Klassen
|
||||
die mit den Datentypen verbunden sind.
|
||||
|
||||
Beispiel:
|
||||
|
||||
… ado.net/XML headers & schema …
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, …</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, …</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="About" xml:space="preserve">
|
||||
<value>Über</value>
|
||||
</data>
|
||||
<data name="APKToolVersion" xml:space="preserve">
|
||||
<value>Apktool-Version</value>
|
||||
</data>
|
||||
<data name="CheckForUpdate" xml:space="preserve">
|
||||
<value>Auf Aktualisierung prüfen</value>
|
||||
</data>
|
||||
<data name="DebugMode" xml:space="preserve">
|
||||
<value>Debug-Modus</value>
|
||||
</data>
|
||||
<data name="Exit" xml:space="preserve">
|
||||
<value>Beenden</value>
|
||||
</data>
|
||||
<data name="File" xml:space="preserve">
|
||||
<value>Datei</value>
|
||||
</data>
|
||||
<data name="Help" xml:space="preserve">
|
||||
<value>Hilfe</value>
|
||||
</data>
|
||||
<data name="Settings" xml:space="preserve">
|
||||
<value>Einstellungen</value>
|
||||
</data>
|
||||
<data name="ErrorJavaDetect" xml:space="preserve">
|
||||
<value>Java ist nicht oder nicht korrekt installiert. Java installieren oder einen eigenen Speicherort in den Einstellungen festlegen.</value>
|
||||
</data>
|
||||
<data name="ErrorReadSettings" xml:space="preserve">
|
||||
<value>Einstellungen für das Fehlerlesen</value>
|
||||
</data>
|
||||
<data name="UpdateNewVersion" xml:space="preserve">
|
||||
<value>Eine neue Version ist verfügbar. Möchtest du aktualisieren?</value>
|
||||
</data>
|
||||
<data name="UpdateNoUpdates" xml:space="preserve">
|
||||
<value>Aktualisierung verfügbar</value>
|
||||
</data>
|
||||
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
|
||||
<value>Dekompilierungsordner nicht ausgewählt!</value>
|
||||
</data>
|
||||
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
|
||||
<value>Datei zum Dekompilieren nicht ausgewählt!</value>
|
||||
</data>
|
||||
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
|
||||
<value>Datei zum Signieren nicht ausgewählt!</value>
|
||||
</data>
|
||||
<data name="WarningFrameworkNotSelected" xml:space="preserve">
|
||||
<value>Framework nicht ausgewählt!</value>
|
||||
</data>
|
||||
<data name="ErrorSaveSettings" xml:space="preserve">
|
||||
<value>Fehler beim Einstellungen speichern!</value>
|
||||
</data>
|
||||
<data name="NeedRestart" xml:space="preserve">
|
||||
<value>Damit die Änderungen wirksam werden, musst du das Programm neu starten. Willst du es jetzt tun?</value>
|
||||
</data>
|
||||
<data name="FileNotFound" xml:space="preserve">
|
||||
<value>Datei wird nicht gefunden</value>
|
||||
</data>
|
||||
<data name="FolderNotExist" xml:space="preserve">
|
||||
<value>Der Ordner existiert nicht</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Fehler</value>
|
||||
</data>
|
||||
<data name="Build" xml:space="preserve">
|
||||
<value>Build</value>
|
||||
</data>
|
||||
<data name="Decode" xml:space="preserve">
|
||||
<value>Dekompilieren</value>
|
||||
</data>
|
||||
<data name="InstallFramework" xml:space="preserve">
|
||||
<value>Framework installieren</value>
|
||||
</data>
|
||||
<data name="Sign" xml:space="preserve">
|
||||
<value>Signieren</value>
|
||||
</data>
|
||||
<data name="SystemLanguage" xml:space="preserve">
|
||||
<value>Systemsprache</value>
|
||||
</data>
|
||||
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
|
||||
<value>Möchtest du das Kontextmenü wirklich installieren?</value>
|
||||
</data>
|
||||
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
|
||||
<value>Möchtest du das Kontextmenü wirklich entfernen?</value>
|
||||
</data>
|
||||
<data name="Done" xml:space="preserve">
|
||||
<value>Fertig</value>
|
||||
</data>
|
||||
<data name="CantDetectApktoolVersion" xml:space="preserve">
|
||||
<value>Apktool-Version wird nicht erkannt</value>
|
||||
</data>
|
||||
<data name="DecompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Dekompilieren erfolgreich abgeschlossen. Ausgabeverzeichnis "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorUpdateChecking" xml:space="preserve">
|
||||
<value>Fehlerhafte Aktualisierungsprüfung:</value>
|
||||
</data>
|
||||
<data name="SignSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Signieren erfolgreich abgeschlossen. Datei gespeichert unter "{0}"</value>
|
||||
</data>
|
||||
<data name="Aligning" xml:space="preserve">
|
||||
<value>Abgleichen</value>
|
||||
</data>
|
||||
<data name="ErrorCompiling" xml:space="preserve">
|
||||
<value>Kompilieren fehlgeschlagen</value>
|
||||
</data>
|
||||
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
|
||||
<value>Fehler bei der Eingabe des Framework-Tags</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
|
||||
<value>Ausgewählte Datei nicht vorhanden</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
|
||||
<value>Fehler bei Auswahl des Framework-Verzeichnisses</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
|
||||
<value>Fehler bei Auswahl der Framework-Datei. Datei existiert nicht.</value>
|
||||
</data>
|
||||
<data name="ErrorSigning" xml:space="preserve">
|
||||
<value>Signieren fehlgeschlagen</value>
|
||||
</data>
|
||||
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
|
||||
<value>Fehler - Framework-Installation wird nicht gestartet</value>
|
||||
</data>
|
||||
<data name="InstallingFramework" xml:space="preserve">
|
||||
<value>Framework installieren</value>
|
||||
</data>
|
||||
<data name="Signing" xml:space="preserve">
|
||||
<value>Signieren</value>
|
||||
</data>
|
||||
<data name="SignInputFileNotFound" xml:space="preserve">
|
||||
<value>Eingabedatei nicht gefunden</value>
|
||||
</data>
|
||||
<data name="SignPrivateKeyNotFound" xml:space="preserve">
|
||||
<value>Privater Schlüssel - nicht gefunden</value>
|
||||
</data>
|
||||
<data name="SignPublicKeyNotFound" xml:space="preserve">
|
||||
<value>Öffentlicher Schlüssel - nicht gefunden</value>
|
||||
</data>
|
||||
<data name="ZIPArchives" xml:space="preserve">
|
||||
<value>ZIP archivieren</value>
|
||||
</data>
|
||||
<data name="DecodeCouldNotCreate" xml:space="preserve">
|
||||
<value>Ausgewähltes Dekompilierungsverzeichnis konnte nicht erstellt werden, da es ungültige Zeichen enthält.</value>
|
||||
</data>
|
||||
<data name="DecodeDirNotSelected" xml:space="preserve">
|
||||
<value>Dekompilierungsverzeichnis nicht ausgewählt</value>
|
||||
</data>
|
||||
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
|
||||
<value>Ausgewähltes Framework-Verzeichnis nicht vorhanden</value>
|
||||
</data>
|
||||
<data name="Decoding" xml:space="preserve">
|
||||
<value>Dekompilieren</value>
|
||||
</data>
|
||||
<data name="ErrorDecompiling" xml:space="preserve">
|
||||
<value>Dekompilieren fehlgeschlagen</value>
|
||||
</data>
|
||||
<data name="ExecutableFile" xml:space="preserve">
|
||||
<value>Ausführbare Datei</value>
|
||||
</data>
|
||||
<data name="ChangedTargetSdkTo29" xml:space="preserve">
|
||||
<value>Ziel-SDK auf 29 geändert</value>
|
||||
</data>
|
||||
<data name="ErrorVersionParsing" xml:space="preserve">
|
||||
<value>Version parsen nicht möglich</value>
|
||||
</data>
|
||||
<data name="FixAndroidManifest" xml:space="preserve">
|
||||
<value>AndroidManifest.xml repariert</value>
|
||||
</data>
|
||||
<data name="RemoveApkToolDummies" xml:space="preserve">
|
||||
<value>Alle Apk-Tool-Dummys entfernt</value>
|
||||
</data>
|
||||
<data name="APKSelected" xml:space="preserve">
|
||||
<value>APK ausgewählt:</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFolderNotExist" xml:space="preserve">
|
||||
<value>Ausgewählter Ordner nicht vorhanden</value>
|
||||
</data>
|
||||
<data name="AndroidManifestNotExist" xml:space="preserve">
|
||||
<value>AndroidManifest.xml nicht vorhanden</value>
|
||||
</data>
|
||||
<data name="DecompiledAPKNotExist" xml:space="preserve">
|
||||
<value>Dekompiliertes APK-Verzeichnis existiert nicht</value>
|
||||
</data>
|
||||
<data name="MainActivityFound" xml:space="preserve">
|
||||
<value>Hauptaktivität gefunden in "{0}"</value>
|
||||
</data>
|
||||
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
|
||||
<value>MainActivity konnte nicht gefunden werden, manuell suchen.</value>
|
||||
</data>
|
||||
<data name="ClearingFramework" xml:space="preserve">
|
||||
<value>Framework bereinigen</value>
|
||||
</data>
|
||||
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Kompilieren erfolgreich abgeschlossen. Ausgabeverzeichnis "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorZipalign" xml:space="preserve">
|
||||
<value>Zipaligning fehlgeschlagen</value>
|
||||
</data>
|
||||
<data name="ZipalignFileSavedTo" xml:space="preserve">
|
||||
<value>Zipalign erfolgreich abgeschlossen. Datei gespeichert unter "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorClearingFw" xml:space="preserve">
|
||||
<value>Framework-Fehler bereinigen</value>
|
||||
</data>
|
||||
<data name="FrameworkCacheCleared" xml:space="preserve">
|
||||
<value>Framework Fehlerbereinigung</value>
|
||||
</data>
|
||||
<data name="AllDone" xml:space="preserve">
|
||||
<value>Alles fertig!</value>
|
||||
</data>
|
||||
<data name="FrameworkInstalled" xml:space="preserve">
|
||||
<value>Framework erfolgreich installiert</value>
|
||||
</data>
|
||||
<data name="FrameworkDirNotExist" xml:space="preserve">
|
||||
<value>Framework-Verzeichnis nicht vorhanden</value>
|
||||
</data>
|
||||
<data name="DecompilingDex" xml:space="preserve">
|
||||
<value>Dex dekompilieren</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedOutputFolderNotExist" xml:space="preserve">
|
||||
<value>Ausgewählter Ausgabeordner nicht vorhanden</value>
|
||||
</data>
|
||||
<data name="CompilingDex" xml:space="preserve">
|
||||
<value>Dex dekompilieren</value>
|
||||
</data>
|
||||
<data name="DragDropNotSupported" xml:space="preserve">
|
||||
<value>Wird als Administrator ausgeführt. Drag & Drop wird möglicherweise nicht unterstützt</value>
|
||||
</data>
|
||||
<data name="DragDropSupported" xml:space="preserve">
|
||||
<value>Drag & Drop wird unterstützt</value>
|
||||
</data>
|
||||
<data name="ErrorNotAnApk" xml:space="preserve">
|
||||
<value>Verzeichnis ist kein Android-Paket</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 kompilieren</value>
|
||||
</data>
|
||||
<data name="CompileDex" xml:space="preserve">
|
||||
<value>DEX kompilieren</value>
|
||||
</data>
|
||||
<data name="DecompileApk" xml:space="preserve">
|
||||
<value>APK dekompilieren</value>
|
||||
</data>
|
||||
<data name="DecompileDex" xml:space="preserve">
|
||||
<value>DEX dekompilieren</value>
|
||||
</data>
|
||||
<data name="GetApkInfo" xml:space="preserve">
|
||||
<value>APK-Info anzeigen</value>
|
||||
</data>
|
||||
<data name="NotDecompiledApk" xml:space="preserve">
|
||||
<value>Ordner ist keine dekompilierte APK</value>
|
||||
</data>
|
||||
<data name="NotDecompiledDex" xml:space="preserve">
|
||||
<value>Ordner ist kein dekompilierte DEX</value>
|
||||
</data>
|
||||
<data name="RequiredFilesMissing" xml:space="preserve">
|
||||
<value>Erforderliche Dateien fehlen</value>
|
||||
</data>
|
||||
<data name="SignApk" xml:space="preserve">
|
||||
<value>APK signieren</value>
|
||||
</data>
|
||||
<data name="TextFile" xml:space="preserve">
|
||||
<value>Textdatei</value>
|
||||
</data>
|
||||
<data name="ZipalignApk" xml:space="preserve">
|
||||
<value>Zipalign APK</value>
|
||||
</data>
|
||||
<data name="CreateUnsignedApk" xml:space="preserve">
|
||||
<value>Unsignierte APK erstellen</value>
|
||||
</data>
|
||||
<data name="MetainfNotExist" xml:space="preserve">
|
||||
<value>Ordner META-INF existiert nicht. Übersprungen</value>
|
||||
</data>
|
||||
<data name="ErrorGettingApkInfo" xml:space="preserve">
|
||||
<value>Fehler beim Abrufen von APK-Informationen</value>
|
||||
</data>
|
||||
<data name="InputDirectory" xml:space="preserve">
|
||||
<value>Eingabeverzeichnis: {0}</value>
|
||||
</data>
|
||||
<data name="InputFile" xml:space="preserve">
|
||||
<value>Eingabedatei: {0}</value>
|
||||
</data>
|
||||
<data name="DeleteFile" xml:space="preserve">
|
||||
<value>Datei löschen "{0}"</value>
|
||||
</data>
|
||||
<data name="CopyFileToTemp" xml:space="preserve">
|
||||
<value>Datei "{0}" in temporäres Verzeichnis "{1}" kopieren</value>
|
||||
</data>
|
||||
<data name="CopyFolderToTemp" xml:space="preserve">
|
||||
<value>Dekompilierten Apk-Ordner "{0}" in temporäre Verzeichnis "{1}" kopieren</value>
|
||||
</data>
|
||||
<data name="DecodeDesDirExists" xml:space="preserve">
|
||||
<value>Zielverzeichnis "{0}" existiert bereits. Aktivieren "Löschen des Zielverzeichnisses erzwingen", wenn du es überschreiben möchtest.</value>
|
||||
</data>
|
||||
<data name="MoveTempApkFileToOutput" xml:space="preserve">
|
||||
<value>Temporären Ordner "{0}" in das Ausgabeverzeichnis "{1}" verschieben</value>
|
||||
</data>
|
||||
<data name="MoveTempApkToOutput" xml:space="preserve">
|
||||
<value>Temporäre Apk "{0}" in das Ausgabeverzeichnis "{1}" verschieben</value>
|
||||
</data>
|
||||
<data name="ParsingApkInfo" xml:space="preserve">
|
||||
<value>APK-Informationen parsen …</value>
|
||||
</data>
|
||||
<data name="RestartApplicationPrompt" xml:space="preserve">
|
||||
<value>Ein Neustart ist erforderlich, um die Änderungen zu übernehmen. Möchtest du die Anwendung neu starten?</value>
|
||||
</data>
|
||||
<data name="DecompilingAllApkFiles" xml:space="preserve">
|
||||
<value>Alle APK-Dateien dekompilieren</value>
|
||||
</data>
|
||||
<data name="DetectedAsBase" xml:space="preserve">
|
||||
<value>{0} als Basis erkannt</value>
|
||||
</data>
|
||||
<data name="DetectedAsSplit" xml:space="preserve">
|
||||
<value>{0} als gesplittet erkannt</value>
|
||||
</data>
|
||||
<data name="ExtractingAllApkFiles" xml:space="preserve">
|
||||
<value>Alle APK-Dateien extrahieren</value>
|
||||
</data>
|
||||
<data name="MergeFinishedMoveDir" xml:space="preserve">
|
||||
<value>Zusammenführen abgeschlossen. Verzeichnis verschieben nach "{0}"</value>
|
||||
</data>
|
||||
<data name="MergingApk" xml:space="preserve">
|
||||
<value>APK zusammenführen</value>
|
||||
</data>
|
||||
<data name="MovingBasedirectory" xml:space="preserve">
|
||||
<value>Basisverzeichnis verschieben nach "{0}"</value>
|
||||
</data>
|
||||
<data name="DirNotExist" xml:space="preserve">
|
||||
<value>Verzeichnis "{0}" existiert nicht</value>
|
||||
</data>
|
||||
<data name="TempDirectory" xml:space="preserve">
|
||||
<value>Temp-Verzeichnis: "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorMerging" xml:space="preserve">
|
||||
<value>Zusammenführen fehlgeschlagen</value>
|
||||
</data>
|
||||
<data name="ExtractOrigSignature" xml:space="preserve">
|
||||
<value>Originale Signatur extrahieren</value>
|
||||
</data>
|
||||
<data name="MergingApkEditor" xml:space="preserve">
|
||||
<value>APK mit APKEditor.jar zusammenführen</value>
|
||||
</data>
|
||||
<data name="Aborted" xml:space="preserve">
|
||||
<value>Abgebrochen</value>
|
||||
</data>
|
||||
<data name="CancelProcess" xml:space="preserve">
|
||||
<value>Sicher, dass du den Vorgang abbrechen willst?</value>
|
||||
</data>
|
||||
<data name="GettingDevices" xml:space="preserve">
|
||||
<value>Geräte erkennen …</value>
|
||||
</data>
|
||||
<data name="PleaseWait" xml:space="preserve">
|
||||
<value>Bitte warten …</value>
|
||||
</data>
|
||||
<data name="ConfirmKillingAdbServer" xml:space="preserve">
|
||||
<value>Sicher, dass du den ADB-Server beenden willst? Möglicherweise musst du dein Gerät neu anschließen oder den Emulator neu starten.</value>
|
||||
</data>
|
||||
<data name="DeviceNotSelected" xml:space="preserve">
|
||||
<value>Kein Gerät ausgewählt</value>
|
||||
</data>
|
||||
<data name="DeviceSelected" xml:space="preserve">
|
||||
<value>Gerät ausgewählt "{0}"</value>
|
||||
</data>
|
||||
<data name="DevicesFound" xml:space="preserve">
|
||||
<value>{0} Gerät gefunden</value>
|
||||
</data>
|
||||
<data name="InstallApkFailed" xml:space="preserve">
|
||||
<value>APK Installation fehlgeschlagen</value>
|
||||
</data>
|
||||
<data name="InstallApkSuccessful" xml:space="preserve">
|
||||
<value>APK Installation erfolgreich</value>
|
||||
</data>
|
||||
<data name="InstallingApk" xml:space="preserve">
|
||||
<value>APK installieren</value>
|
||||
</data>
|
||||
<data name="InstallingApkPath" xml:space="preserve">
|
||||
<value>APK installieren "{0}"</value>
|
||||
</data>
|
||||
<data name="NoDevicesFound" xml:space="preserve">
|
||||
<value>Keine Geräte gefunden. Vergewissere dich, dass dein Gerät mit dem Computer verbunden ist und das ADB-Debugging aktiviert ist. Wenn du einen Emulator verwendest, starte ihn neu und warte, bis er hochgefahren ist</value>
|
||||
</data>
|
||||
<data name="TimeEnded" xml:space="preserve">
|
||||
<value>Beendet: {0}</value>
|
||||
</data>
|
||||
<data name="TimeStarted" xml:space="preserve">
|
||||
<value>Gestartet: {0}</value>
|
||||
</data>
|
||||
<data name="ClearFrameworkPrompt" xml:space="preserve">
|
||||
<value>Es ist erforderlich, den Framework-Cache nach einer Änderung der Apktool-Version zu löschen, um unerwartete Fehler zu vermeiden. Möchtest du ihn jetzt löschen?</value>
|
||||
</data>
|
||||
<data name="ClearTempFolder" xml:space="preserve">
|
||||
<value>Temp-Ordner löschen</value>
|
||||
</data>
|
||||
<data name="DeletingFolder" xml:space="preserve">
|
||||
<value>Ordner löschen: {0}</value>
|
||||
</data>
|
||||
<data name="DirectoryNotExist" xml:space="preserve">
|
||||
<value>Verzeichnis "{0}" existiert nicht</value>
|
||||
</data>
|
||||
<data name="OpenComFolder" xml:space="preserve">
|
||||
<value>Kompilier-Ausgabeordner öffnen</value>
|
||||
</data>
|
||||
<data name="OpenDecFolder" xml:space="preserve">
|
||||
<value>Dekompilier-Ausgabeordner öffnen</value>
|
||||
</data>
|
||||
<data name="FixApktoolYml" xml:space="preserve">
|
||||
<value>Apktool.yml repariert</value>
|
||||
</data>
|
||||
<data name="CopyFileTo" xml:space="preserve">
|
||||
<value>Datei "{0}" nach "{1}" kopieren</value>
|
||||
</data>
|
||||
<data name="SplitApkNotFound" xml:space="preserve">
|
||||
<value>Split-APK nicht ausgewählt</value>
|
||||
</data>
|
||||
<data name="CantDetectApkeditorVersion" xml:space="preserve">
|
||||
<value>APKEditor Version wird nicht erkannt</value>
|
||||
</data>
|
||||
<data name="SetLanguageRestartApplication" xml:space="preserve">
|
||||
<value>Sprache installiert. Programm neu starten?</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,519 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="About" xml:space="preserve">
|
||||
<value>Rólunk</value>
|
||||
</data>
|
||||
<data name="APKToolVersion" xml:space="preserve">
|
||||
<value>Apktool verzió</value>
|
||||
</data>
|
||||
<data name="CheckForUpdate" xml:space="preserve">
|
||||
<value>Frissítés keresése</value>
|
||||
</data>
|
||||
<data name="DebugMode" xml:space="preserve">
|
||||
<value>Hibakereső mód</value>
|
||||
</data>
|
||||
<data name="Exit" xml:space="preserve">
|
||||
<value>Kilépés</value>
|
||||
</data>
|
||||
<data name="File" xml:space="preserve">
|
||||
<value>Fájl</value>
|
||||
</data>
|
||||
<data name="Help" xml:space="preserve">
|
||||
<value>Súgó</value>
|
||||
</data>
|
||||
<data name="Settings" xml:space="preserve">
|
||||
<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>
|
||||
</data>
|
||||
<data name="ErrorReadSettings" xml:space="preserve">
|
||||
<value>Hiba a beállítások olvasásakor!</value>
|
||||
</data>
|
||||
<data name="UpdateNewVersion" xml:space="preserve">
|
||||
<value>Új verzió érhető el. Szeretne frissíteni?</value>
|
||||
</data>
|
||||
<data name="UpdateNoUpdates" xml:space="preserve">
|
||||
<value>Nincs frissítés.</value>
|
||||
</data>
|
||||
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
|
||||
<value>Dekódolási mappa nincs kiválasztva!</value>
|
||||
</data>
|
||||
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
|
||||
<value>A dekódolandó fájl nincs kiválasztva!</value>
|
||||
</data>
|
||||
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
|
||||
<value>Az aláírni szánt fájl nincs kiválasztva!</value>
|
||||
</data>
|
||||
<data name="WarningFrameworkNotSelected" xml:space="preserve">
|
||||
<value>A framework nincs kiválasztva!</value>
|
||||
</data>
|
||||
<data name="ErrorSaveSettings" xml:space="preserve">
|
||||
<value>Hiba a beállítások mentése során!</value>
|
||||
</data>
|
||||
<data name="NeedRestart" xml:space="preserve">
|
||||
<value>A módosítások érvényesítéséhez újra kell indítania a programot. Most akarja megtenni?</value>
|
||||
</data>
|
||||
<data name="FileNotFound" xml:space="preserve">
|
||||
<value>A fájl nem található</value>
|
||||
</data>
|
||||
<data name="FolderNotExist" xml:space="preserve">
|
||||
<value>A mappa nem létezik</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Hiba</value>
|
||||
</data>
|
||||
<data name="Build" xml:space="preserve">
|
||||
<value>Build</value>
|
||||
</data>
|
||||
<data name="Decode" xml:space="preserve">
|
||||
<value>Dekódolás</value>
|
||||
</data>
|
||||
<data name="InstallFramework" xml:space="preserve">
|
||||
<value>A keretrendszer telepítése</value>
|
||||
</data>
|
||||
<data name="Sign" xml:space="preserve">
|
||||
<value>Aláírás</value>
|
||||
</data>
|
||||
<data name="SystemLanguage" xml:space="preserve">
|
||||
<value>Rendszer nyelve</value>
|
||||
</data>
|
||||
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
|
||||
<value>Tényleg telepíteni szeretné a kontextus menüt?</value>
|
||||
</data>
|
||||
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
|
||||
<value>Tényleg el akarja távolítani a kontextus menüt?</value>
|
||||
</data>
|
||||
<data name="Done" xml:space="preserve">
|
||||
<value>Kész</value>
|
||||
</data>
|
||||
<data name="CantDetectApktoolVersion" xml:space="preserve">
|
||||
<value>Nem érzékeli az apktool verzióját.</value>
|
||||
</data>
|
||||
<data name="DecompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>A dekompilálás sikeresen befejeződött. Kimeneti könyvtár "{0}".</value>
|
||||
</data>
|
||||
<data name="ErrorUpdateChecking" xml:space="preserve">
|
||||
<value>Frissítés ell. hiba:</value>
|
||||
</data>
|
||||
<data name="SignSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Az aláírás sikeresen befejeződött. Fájl mentve: "{0}".</value>
|
||||
</data>
|
||||
<data name="Aligning" xml:space="preserve">
|
||||
<value>Igazítás</value>
|
||||
</data>
|
||||
<data name="ErrorCompiling" xml:space="preserve">
|
||||
<value>A kódolás sikertelen</value>
|
||||
</data>
|
||||
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
|
||||
<value>Hiba a framework címke bevitelében.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
|
||||
<value>A kiválasztott fájl nem létezik.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
|
||||
<value>Hiba a keretrendszer könyvtár kiválasztásában.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
|
||||
<value>Hiba a keretrendszer fájl kiválasztásában. A fájl nem létezik.</value>
|
||||
</data>
|
||||
<data name="ErrorSigning" xml:space="preserve">
|
||||
<value>Az aláírás sikertelen.</value>
|
||||
</data>
|
||||
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
|
||||
<value>Hiba. A keretrendszer telepítése nem indult el.</value>
|
||||
</data>
|
||||
<data name="InstallingFramework" xml:space="preserve">
|
||||
<value>A keretrendszer telepítése</value>
|
||||
</data>
|
||||
<data name="Signing" xml:space="preserve">
|
||||
<value>Aláírás</value>
|
||||
</data>
|
||||
<data name="SignInputFileNotFound" xml:space="preserve">
|
||||
<value>A bemeneti fájl nem található.</value>
|
||||
</data>
|
||||
<data name="SignPrivateKeyNotFound" xml:space="preserve">
|
||||
<value>Privát kulcs nem található.</value>
|
||||
</data>
|
||||
<data name="SignPublicKeyNotFound" xml:space="preserve">
|
||||
<value>Nyilvános kulcs nem található.</value>
|
||||
</data>
|
||||
<data name="ZIPArchives" xml:space="preserve">
|
||||
<value>ZIP archívumok</value>
|
||||
</data>
|
||||
<data name="DecodeCouldNotCreate" xml:space="preserve">
|
||||
<value>A kiválasztott dekompilációs könyvtárat nem lehetett létrehozni, mert érvénytelen karaktereket tartalmaz.</value>
|
||||
</data>
|
||||
<data name="DecodeDirNotSelected" xml:space="preserve">
|
||||
<value>A dekompilációs könyvtár nincs kiválasztva.</value>
|
||||
</data>
|
||||
<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>
|
||||
<data name="ExecutableFile" xml:space="preserve">
|
||||
<value>Végrehajtható fájl</value>
|
||||
</data>
|
||||
<data name="ChangedTargetSdkTo29" xml:space="preserve">
|
||||
<value>A cél SDK 29-re változott</value>
|
||||
</data>
|
||||
<data name="ErrorVersionParsing" xml:space="preserve">
|
||||
<value>Nem sikerült elemezni a verziót</value>
|
||||
</data>
|
||||
<data name="FixAndroidManifest" xml:space="preserve">
|
||||
<value>Javított AndroidManifest.xml</value>
|
||||
</data>
|
||||
<data name="RemoveApkToolDummies" xml:space="preserve">
|
||||
<value>Eltávolítottuk az összes ApkTool dummie-t</value>
|
||||
</data>
|
||||
<data name="APKSelected" xml:space="preserve">
|
||||
<value>APK kiválasztva:</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFolderNotExist" xml:space="preserve">
|
||||
<value>A kiválasztott mappa nem létezik.</value>
|
||||
</data>
|
||||
<data name="AndroidManifestNotExist" xml:space="preserve">
|
||||
<value>Az AndroidManifest.xml nem létezik</value>
|
||||
</data>
|
||||
<data name="DecompiledAPKNotExist" xml:space="preserve">
|
||||
<value>A dekompilált APK könyvtár nem létezik</value>
|
||||
</data>
|
||||
<data name="MainActivityFound" xml:space="preserve">
|
||||
<value>A MainActivity itt, "{0}" található</value>
|
||||
</data>
|
||||
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
|
||||
<value>Nem találta a MainActivity-t. Kérjük keresse meg manuálisan</value>
|
||||
</data>
|
||||
<data name="ClearingFramework" xml:space="preserve">
|
||||
<value>Keretrendszer tisztítás</value>
|
||||
</data>
|
||||
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Az összeállítás sikeresen befejeződött. Kimeneti könyvtár "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorZipalign" xml:space="preserve">
|
||||
<value>A Zipalign nem sikerült</value>
|
||||
</data>
|
||||
<data name="ZipalignFileSavedTo" xml:space="preserve">
|
||||
<value>A Zipalign sikeresen befejeződött. Fájl ide mentve "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorClearingFw" xml:space="preserve">
|
||||
<value>Keretrendszer törlési hiba</value>
|
||||
</data>
|
||||
<data name="FrameworkCacheCleared" xml:space="preserve">
|
||||
<value>A keretrendszer gyorsítótára törölve</value>
|
||||
</data>
|
||||
<data name="AllDone" xml:space="preserve">
|
||||
<value>Minden kész!</value>
|
||||
</data>
|
||||
<data name="FrameworkInstalled" xml:space="preserve">
|
||||
<value>A keretrendszer sikeresen települt</value>
|
||||
</data>
|
||||
<data name="FrameworkDirNotExist" xml:space="preserve">
|
||||
<value>A keretrendszer könyvtár nem létezik</value>
|
||||
</data>
|
||||
<data name="DecompilingDex" xml:space="preserve">
|
||||
<value>Dex dekódolása</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedOutputFolderNotExist" xml:space="preserve">
|
||||
<value>A kiválasztott kimeneti mappa nem létezik.</value>
|
||||
</data>
|
||||
<data name="CompilingDex" xml:space="preserve">
|
||||
<value>Dex összeállítása</value>
|
||||
</data>
|
||||
<data name="DragDropNotSupported" xml:space="preserve">
|
||||
<value>Rendszergazdaként fut. A Húzd & Dobd nem támogatott</value>
|
||||
</data>
|
||||
<data name="DragDropSupported" xml:space="preserve">
|
||||
<value>A Húzd & Dobd támogatott</value>
|
||||
</data>
|
||||
<data name="ErrorNotAnApk" xml:space="preserve">
|
||||
<value>Ez a könyvtár nem egy Android csomag</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 összeállítása</value>
|
||||
</data>
|
||||
<data name="CompileDex" xml:space="preserve">
|
||||
<value>DEX összeszerelése</value>
|
||||
</data>
|
||||
<data name="DecompileApk" xml:space="preserve">
|
||||
<value>APK dekompilálása</value>
|
||||
</data>
|
||||
<data name="DecompileDex" xml:space="preserve">
|
||||
<value>DEX szétszerelése</value>
|
||||
</data>
|
||||
<data name="GetApkInfo" xml:space="preserve">
|
||||
<value>APK infó beszerzése</value>
|
||||
</data>
|
||||
<data name="NotDecompiledApk" xml:space="preserve">
|
||||
<value>Ez a mappa nem egy dekompilált APK</value>
|
||||
</data>
|
||||
<data name="NotDecompiledDex" xml:space="preserve">
|
||||
<value>Ez a mappa nem dekompilált DEX</value>
|
||||
</data>
|
||||
<data name="RequiredFilesMissing" xml:space="preserve">
|
||||
<value>Szükséges fájlok hiányoznak</value>
|
||||
</data>
|
||||
<data name="SignApk" xml:space="preserve">
|
||||
<value>APK aláírása</value>
|
||||
</data>
|
||||
<data name="TextFile" xml:space="preserve">
|
||||
<value>Szöveg fájl</value>
|
||||
</data>
|
||||
<data name="ZipalignApk" xml:space="preserve">
|
||||
<value>APK Zipalign</value>
|
||||
</data>
|
||||
<data name="CreateUnsignedApk" xml:space="preserve">
|
||||
<value>Aláírás nélküli APK létrehozása</value>
|
||||
</data>
|
||||
<data name="MetainfNotExist" xml:space="preserve">
|
||||
<value>A META-INF mappa nem létezik. Kihagyva</value>
|
||||
</data>
|
||||
<data name="ErrorGettingApkInfo" xml:space="preserve">
|
||||
<value>Hiba történt az APK-infó megszerzésében</value>
|
||||
</data>
|
||||
<data name="InputDirectory" xml:space="preserve">
|
||||
<value>Bemeneti könyvtár: {0}</value>
|
||||
</data>
|
||||
<data name="InputFile" xml:space="preserve">
|
||||
<value>Bemeneti fájl: {0}</value>
|
||||
</data>
|
||||
<data name="DeleteFile" xml:space="preserve">
|
||||
<value>"{0}" fájl törlése</value>
|
||||
</data>
|
||||
<data name="CopyFileToTemp" xml:space="preserve">
|
||||
<value>"{0}" fájl másolása "{1}" ideiglenes könyvtárba.</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -0,0 +1,429 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="About" xml:space="preserve">
|
||||
<value>Sobre</value>
|
||||
</data>
|
||||
<data name="Aligning" xml:space="preserve">
|
||||
<value>Alinhar</value>
|
||||
</data>
|
||||
<data name="AllDone" xml:space="preserve">
|
||||
<value>Tudo concluído!</value>
|
||||
</data>
|
||||
<data name="AndroidManifestNotExist" xml:space="preserve">
|
||||
<value>AndroidManifest.xml não existe</value>
|
||||
</data>
|
||||
<data name="APKSelected" xml:space="preserve">
|
||||
<value>APK selecionado:</value>
|
||||
</data>
|
||||
<data name="APKToolVersion" xml:space="preserve">
|
||||
<value>Versão do apktool</value>
|
||||
</data>
|
||||
<data name="Baksmali" xml:space="preserve">
|
||||
<value>Baksmali</value>
|
||||
</data>
|
||||
<data name="Build" xml:space="preserve">
|
||||
<value>Compilar</value>
|
||||
</data>
|
||||
<data name="CantDetectApktoolVersion" xml:space="preserve">
|
||||
<value>Não foi possível detectar a versão do apktool.</value>
|
||||
</data>
|
||||
<data name="ChangedTargetSdkTo29" xml:space="preserve">
|
||||
<value>SDK de destino alterado para 29</value>
|
||||
</data>
|
||||
<data name="CheckForUpdate" xml:space="preserve">
|
||||
<value>Verificar por atualizações</value>
|
||||
</data>
|
||||
<data name="ClearingFramework" xml:space="preserve">
|
||||
<value>Limpando framework</value>
|
||||
</data>
|
||||
<data name="CompileApk" xml:space="preserve">
|
||||
<value>Compilar APK</value>
|
||||
</data>
|
||||
<data name="CompileDex" xml:space="preserve">
|
||||
<value>Montar DEX</value>
|
||||
</data>
|
||||
<data name="CompilingDex" xml:space="preserve">
|
||||
<value>Compilando DEX</value>
|
||||
</data>
|
||||
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Compilado com sucesso. Pasta de saída: "{0}"</value>
|
||||
</data>
|
||||
<data name="CopyFileToTemp" xml:space="preserve">
|
||||
<value>Copiar arquivo "{0}" para pasta temporária "{1}"</value>
|
||||
</data>
|
||||
<data name="CopyFolderToTemp" xml:space="preserve">
|
||||
<value>Copiar pasta "{0}" do APK descompilado para pasta temporária "{1}"</value>
|
||||
</data>
|
||||
<data name="CreateUnsignedApk" xml:space="preserve">
|
||||
<value>Criando APK não assinado</value>
|
||||
</data>
|
||||
<data name="DebugMode" xml:space="preserve">
|
||||
<value>Modo de depuração</value>
|
||||
</data>
|
||||
<data name="Decode" xml:space="preserve">
|
||||
<value>Decodificar</value>
|
||||
</data>
|
||||
<data name="DecodeCouldNotCreate" xml:space="preserve">
|
||||
<value>A pasta de descompilação selecionada não pôde ser criado porque contém caracteres inválidos.</value>
|
||||
</data>
|
||||
<data name="DecodeDesDirExists" xml:space="preserve">
|
||||
<value>A pasta de destino "{0}" já existe. Ative "Forçar excluir pasta de destino" se quiser substituí-la.</value>
|
||||
</data>
|
||||
<data name="DecodeDirNotSelected" xml:space="preserve">
|
||||
<value>Pasta de descompilação não selecionada.</value>
|
||||
</data>
|
||||
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
|
||||
<value>A pasta do framework selecionado não existe.</value>
|
||||
</data>
|
||||
<data name="Decoding" xml:space="preserve">
|
||||
<value>Decodificando</value>
|
||||
</data>
|
||||
<data name="DecompileApk" xml:space="preserve">
|
||||
<value>Descompilar APK</value>
|
||||
</data>
|
||||
<data name="DecompiledAPKNotExist" xml:space="preserve">
|
||||
<value>A pasta do APK descompilado não existe</value>
|
||||
</data>
|
||||
<data name="DecompileDex" xml:space="preserve">
|
||||
<value>Desmontar DEX</value>
|
||||
</data>
|
||||
<data name="DecompilingDex" xml:space="preserve">
|
||||
<value>Descompilando DEX</value>
|
||||
</data>
|
||||
<data name="DecompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Descompilado com sucesso. Pasta de saída "{0}".</value>
|
||||
</data>
|
||||
<data name="DeleteFile" xml:space="preserve">
|
||||
<value>Excluir arquivo "{0}"</value>
|
||||
</data>
|
||||
<data name="Done" xml:space="preserve">
|
||||
<value>Concluído</value>
|
||||
</data>
|
||||
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
|
||||
<value>Você realmente deseja instalar o menu de contexto?</value>
|
||||
</data>
|
||||
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
|
||||
<value>Você realmente deseja remover o menu de contexto?</value>
|
||||
</data>
|
||||
<data name="DragDropNotSupported" xml:space="preserve">
|
||||
<value>Você está executando como Administrador. Arrastar e soltar não é suportado</value>
|
||||
</data>
|
||||
<data name="DragDropSupported" xml:space="preserve">
|
||||
<value>Arrastar e soltar é suportado</value>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
<value>Erro</value>
|
||||
</data>
|
||||
<data name="ErrorClearingFw" xml:space="preserve">
|
||||
<value>Erro ao limpar o framework</value>
|
||||
</data>
|
||||
<data name="ErrorCompiling" xml:space="preserve">
|
||||
<value>Falha ao compilar</value>
|
||||
</data>
|
||||
<data name="ErrorDecompiling" xml:space="preserve">
|
||||
<value>Falha ao descompilar</value>
|
||||
</data>
|
||||
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
|
||||
<value>Erro ao entrar etiqueta do framework.</value>
|
||||
</data>
|
||||
<data name="ErrorGettingApkInfo" xml:space="preserve">
|
||||
<value>Ocorreu um erro ao obter as informações do APK</value>
|
||||
</data>
|
||||
<data name="ErrorJavaDetect" xml:space="preserve">
|
||||
<value>O Java não está instalado ou está instalado incorretamente. Instale o Java ou defina um local personalizado em Configurações</value>
|
||||
</data>
|
||||
<data name="ErrorNotAnApk" xml:space="preserve">
|
||||
<value>Esta pasta não é um pacote do Android</value>
|
||||
</data>
|
||||
<data name="ErrorReadSettings" xml:space="preserve">
|
||||
<value>Erro ao ler as configurações!</value>
|
||||
</data>
|
||||
<data name="ErrorSaveSettings" xml:space="preserve">
|
||||
<value>Erro ao salvar as configurações!</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
|
||||
<value>O arquivo selecionado não existe.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFolderNotExist" xml:space="preserve">
|
||||
<value>A pasta selecionada não existe.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedOutputFolderNotExist" xml:space="preserve">
|
||||
<value>A pasta de saída selecionada não existe.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
|
||||
<value>Erro ao selecionar a pasta do framework.</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
|
||||
<value>Erro ao selecionar arquivo do framework. O arquivo não existe.</value>
|
||||
</data>
|
||||
<data name="ErrorSigning" xml:space="preserve">
|
||||
<value>Falha ao assinar.</value>
|
||||
</data>
|
||||
<data name="ErrorUpdateChecking" xml:space="preserve">
|
||||
<value>Erro ao verificar por atualizações:</value>
|
||||
</data>
|
||||
<data name="ErrorVersionParsing" xml:space="preserve">
|
||||
<value>Falha ao analisar a versão</value>
|
||||
</data>
|
||||
<data name="ErrorZipalign" xml:space="preserve">
|
||||
<value>Falha ao alinhar ZIP</value>
|
||||
</data>
|
||||
<data name="ExecutableFile" xml:space="preserve">
|
||||
<value>Arquivo executável</value>
|
||||
</data>
|
||||
<data name="Exit" xml:space="preserve">
|
||||
<value>Sair</value>
|
||||
</data>
|
||||
<data name="File" xml:space="preserve">
|
||||
<value>Arquivo</value>
|
||||
</data>
|
||||
<data name="FileNotFound" xml:space="preserve">
|
||||
<value>Arquivo não encontrado</value>
|
||||
</data>
|
||||
<data name="FixAndroidManifest" xml:space="preserve">
|
||||
<value>AndroidManifest.xml corigido</value>
|
||||
</data>
|
||||
<data name="FolderNotExist" xml:space="preserve">
|
||||
<value>A pasta não existe</value>
|
||||
</data>
|
||||
<data name="FrameworkCacheCleared" xml:space="preserve">
|
||||
<value>Cache do framework limpo</value>
|
||||
</data>
|
||||
<data name="FrameworkDirNotExist" xml:space="preserve">
|
||||
<value>A pasta do framework não existe</value>
|
||||
</data>
|
||||
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
|
||||
<value>Erro: A instalação do framewoek não foi iniciada.</value>
|
||||
</data>
|
||||
<data name="FrameworkInstalled" xml:space="preserve">
|
||||
<value>Framework instalado com sucesso</value>
|
||||
</data>
|
||||
<data name="GetApkInfo" xml:space="preserve">
|
||||
<value>Obter informações do APK</value>
|
||||
</data>
|
||||
<data name="Help" xml:space="preserve">
|
||||
<value>Ajuda</value>
|
||||
</data>
|
||||
<data name="InputDirectory" xml:space="preserve">
|
||||
<value>Pasta de entrada: {0}</value>
|
||||
</data>
|
||||
<data name="InputFile" xml:space="preserve">
|
||||
<value>Arquivo de entrada: {0}</value>
|
||||
</data>
|
||||
<data name="InstallFramework" xml:space="preserve">
|
||||
<value>Instalar framework</value>
|
||||
</data>
|
||||
<data name="InstallingFramework" xml:space="preserve">
|
||||
<value>Instalando framework</value>
|
||||
</data>
|
||||
<data name="MainActivityFound" xml:space="preserve">
|
||||
<value>MainActivity encontrado em "{0}"</value>
|
||||
</data>
|
||||
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
|
||||
<value>Não foi possível localizar MainActivity. Por favor, encontre-o manualmente.</value>
|
||||
</data>
|
||||
<data name="MetainfNotExist" xml:space="preserve">
|
||||
<value>A pasta META-INF não existe. Ignorado</value>
|
||||
</data>
|
||||
<data name="MoveTempApkFileToOutput" xml:space="preserve">
|
||||
<value>Mova a pasta temporária "{0}" para a pasta de saída "{1}"</value>
|
||||
</data>
|
||||
<data name="MoveTempApkToOutput" xml:space="preserve">
|
||||
<value>Mover o APK temporário "{0}" para a pasta de saída "{1}"</value>
|
||||
</data>
|
||||
<data name="NeedRestart" xml:space="preserve">
|
||||
<value>Para que as alterações entrem em vigor, você deve reiniciar o programa. Você quer fazer isso agora?</value>
|
||||
</data>
|
||||
<data name="NotDecompiledApk" xml:space="preserve">
|
||||
<value>Esta pasta não é um APK descompilado</value>
|
||||
</data>
|
||||
<data name="NotDecompiledDex" xml:space="preserve">
|
||||
<value>Esta pasta não é um DEX descompilado</value>
|
||||
</data>
|
||||
<data name="RemoveApkToolDummies" xml:space="preserve">
|
||||
<value>Removidos todos os dummies do apktool</value>
|
||||
</data>
|
||||
<data name="RequiredFilesMissing" xml:space="preserve">
|
||||
<value>Arquivos necessários ausentes</value>
|
||||
</data>
|
||||
<data name="Settings" xml:space="preserve">
|
||||
<value>Configurações</value>
|
||||
</data>
|
||||
<data name="Sign" xml:space="preserve">
|
||||
<value>Assinar</value>
|
||||
</data>
|
||||
<data name="SignApk" xml:space="preserve">
|
||||
<value>Assinar APK</value>
|
||||
</data>
|
||||
<data name="Signing" xml:space="preserve">
|
||||
<value>Assinando</value>
|
||||
</data>
|
||||
<data name="SignInputFileNotFound" xml:space="preserve">
|
||||
<value>Arquivo de entrada não localizado.</value>
|
||||
</data>
|
||||
<data name="SignPrivateKeyNotFound" xml:space="preserve">
|
||||
<value>Chave privada não localizada.</value>
|
||||
</data>
|
||||
<data name="SignPublicKeyNotFound" xml:space="preserve">
|
||||
<value>Chave pública não localizada.</value>
|
||||
</data>
|
||||
<data name="SignSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>Assinatura concluída com sucesso. Arquivo salvo em "{0}".</value>
|
||||
</data>
|
||||
<data name="Smali" xml:space="preserve">
|
||||
<value>Smali</value>
|
||||
</data>
|
||||
<data name="SystemLanguage" xml:space="preserve">
|
||||
<value>Idioma do sistema</value>
|
||||
</data>
|
||||
<data name="TextFile" xml:space="preserve">
|
||||
<value>Arquivo de texto</value>
|
||||
</data>
|
||||
<data name="UpdateNewVersion" xml:space="preserve">
|
||||
<value>Nova versão disponível. Deseja atualizar?</value>
|
||||
</data>
|
||||
<data name="UpdateNoUpdates" xml:space="preserve">
|
||||
<value>Nenhuma atualização está disponível.</value>
|
||||
</data>
|
||||
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
|
||||
<value>Pasta de decodificação não selecionada!</value>
|
||||
</data>
|
||||
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
|
||||
<value>Arquivo para decodificação não selecionado!</value>
|
||||
</data>
|
||||
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
|
||||
<value>Arquivo para assinar não selecionado!</value>
|
||||
</data>
|
||||
<data name="WarningFrameworkNotSelected" xml:space="preserve">
|
||||
<value>Framework não selecionado!</value>
|
||||
</data>
|
||||
<data name="Zipalign" xml:space="preserve">
|
||||
<value>Alinhar ZIP</value>
|
||||
</data>
|
||||
<data name="ZipalignApk" xml:space="preserve">
|
||||
<value>Alinhar ZIP do APK</value>
|
||||
</data>
|
||||
<data name="ZipalignFileSavedTo" xml:space="preserve">
|
||||
<value>Alinhar ZIP concluído com sucesso. Arquivo salvo em "{0}"</value>
|
||||
</data>
|
||||
<data name="ZIPArchives" xml:space="preserve">
|
||||
<value>Arquivos ZIP</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -142,7 +142,7 @@
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="ErrorJavaDetect" xml:space="preserve">
|
||||
<value>Java is not installed or is installed incorrectly. The program will be closed.</value>
|
||||
<value>Java is not installed or is installed incorrectly. Please install Java or set custom location in Settings</value>
|
||||
</data>
|
||||
<data name="ErrorReadSettings" xml:space="preserve">
|
||||
<value>Error reading settings!</value>
|
||||
@@ -204,9 +204,6 @@
|
||||
<data name="Done" xml:space="preserve">
|
||||
<value>Done</value>
|
||||
</data>
|
||||
<data name="DoYouWantToSelectJavaLocation" xml:space="preserve">
|
||||
<value>Java is not found. Do you want to select custom location?</value>
|
||||
</data>
|
||||
<data name="CantDetectApktoolVersion" xml:space="preserve">
|
||||
<value>Can't detect apktool version.</value>
|
||||
</data>
|
||||
@@ -346,7 +343,7 @@
|
||||
<value>Compiling dex</value>
|
||||
</data>
|
||||
<data name="DragDropNotSupported" xml:space="preserve">
|
||||
<value>You are running as administrator. Drag & drop is not supported</value>
|
||||
<value>You are running as administrator. Drag & drop may not be supported</value>
|
||||
</data>
|
||||
<data name="DragDropSupported" xml:space="preserve">
|
||||
<value>Drag & drop is supported</value>
|
||||
@@ -376,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>
|
||||
@@ -402,4 +399,148 @@
|
||||
<data name="MetainfNotExist" xml:space="preserve">
|
||||
<value>META-INF folder does not exist. Skipped</value>
|
||||
</data>
|
||||
<data name="ErrorGettingApkInfo" xml:space="preserve">
|
||||
<value>There was an error getting APK infomation</value>
|
||||
</data>
|
||||
<data name="InputDirectory" xml:space="preserve">
|
||||
<value>Input directory: {0}</value>
|
||||
</data>
|
||||
<data name="InputFile" xml:space="preserve">
|
||||
<value>Input file: {0}</value>
|
||||
</data>
|
||||
<data name="DeleteFile" xml:space="preserve">
|
||||
<value>Delete file "{0}"</value>
|
||||
</data>
|
||||
<data name="CopyFileToTemp" xml:space="preserve">
|
||||
<value>Copy file "{0}" to temp directory "{1}"</value>
|
||||
</data>
|
||||
<data name="CopyFolderToTemp" xml:space="preserve">
|
||||
<value>Copy decompiled apk folder "{0}" to temp directory "{1}"</value>
|
||||
</data>
|
||||
<data name="DecodeDesDirExists" xml:space="preserve">
|
||||
<value>Destination directory "{0}" already exists. Enable "Force delete destination directory" if you want to overwrite it.</value>
|
||||
</data>
|
||||
<data name="MoveTempApkFileToOutput" xml:space="preserve">
|
||||
<value>Move temp folder "{0}" to output directory "{1}"</value>
|
||||
</data>
|
||||
<data name="MoveTempApkToOutput" xml:space="preserve">
|
||||
<value>Move temp apk "{0}" to output directory "{1}"</value>
|
||||
</data>
|
||||
<data name="ParsingApkInfo" xml:space="preserve">
|
||||
<value>Parsing APK Info...</value>
|
||||
</data>
|
||||
<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>
|
||||
</data>
|
||||
<data name="DetectedAsBase" xml:space="preserve">
|
||||
<value>{0} detected as base</value>
|
||||
</data>
|
||||
<data name="DetectedAsSplit" xml:space="preserve">
|
||||
<value>{0} detected as split</value>
|
||||
</data>
|
||||
<data name="ExtractingAllApkFiles" xml:space="preserve">
|
||||
<value>Extracting all APK files</value>
|
||||
</data>
|
||||
<data name="MergeFinishedMoveDir" xml:space="preserve">
|
||||
<value>Merge finished. Moving directory to "{0}"</value>
|
||||
</data>
|
||||
<data name="MergingApk" xml:space="preserve">
|
||||
<value>Merging APK</value>
|
||||
</data>
|
||||
<data name="MovingBasedirectory" xml:space="preserve">
|
||||
<value>Moving base directory to "{0}"</value>
|
||||
</data>
|
||||
<data name="DirNotExist" xml:space="preserve">
|
||||
<value>Directory "{0}" does not exist</value>
|
||||
</data>
|
||||
<data name="TempDirectory" xml:space="preserve">
|
||||
<value>Temp directory: "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorMerging" xml:space="preserve">
|
||||
<value>Merging failed</value>
|
||||
</data>
|
||||
<data name="ExtractOrigSignature" xml:space="preserve">
|
||||
<value>Extract original signature</value>
|
||||
</data>
|
||||
<data name="MergingApkEditor" xml:space="preserve">
|
||||
<value>Merging APK using APKEditor.jar</value>
|
||||
</data>
|
||||
<data name="Aborted" xml:space="preserve">
|
||||
<value>Aborted</value>
|
||||
</data>
|
||||
<data name="CancelProcess" xml:space="preserve">
|
||||
<value>Are you sure you want to cancel the process?</value>
|
||||
</data>
|
||||
<data name="GettingDevices" xml:space="preserve">
|
||||
<value>Getting devices...</value>
|
||||
</data>
|
||||
<data name="PleaseWait" xml:space="preserve">
|
||||
<value>Please wait...</value>
|
||||
</data>
|
||||
<data name="ConfirmKillingAdbServer" xml:space="preserve">
|
||||
<value>Are you sure you want to kill ADB server? You might need to reconnect your device or restart emulator</value>
|
||||
</data>
|
||||
<data name="DeviceNotSelected" xml:space="preserve">
|
||||
<value>Device is not selected</value>
|
||||
</data>
|
||||
<data name="DeviceSelected" xml:space="preserve">
|
||||
<value>Device selected "{0}"</value>
|
||||
</data>
|
||||
<data name="DevicesFound" xml:space="preserve">
|
||||
<value>{0} devices found</value>
|
||||
</data>
|
||||
<data name="InstallApkFailed" xml:space="preserve">
|
||||
<value>APK Installation failed</value>
|
||||
</data>
|
||||
<data name="InstallApkSuccessful" xml:space="preserve">
|
||||
<value>APK Installation successfully</value>
|
||||
</data>
|
||||
<data name="InstallingApk" xml:space="preserve">
|
||||
<value>Installing APK</value>
|
||||
</data>
|
||||
<data name="InstallingApkPath" xml:space="preserve">
|
||||
<value>Installing APK "{0}"</value>
|
||||
</data>
|
||||
<data name="NoDevicesFound" xml:space="preserve">
|
||||
<value>No devices found. Make sure your device is connected to the computer with the adb debugging turned on. If you use an emulator, restart it and wait until it boot up</value>
|
||||
</data>
|
||||
<data name="TimeEnded" xml:space="preserve">
|
||||
<value>Time ended: {0}</value>
|
||||
</data>
|
||||
<data name="TimeStarted" xml:space="preserve">
|
||||
<value>Time started: {0}</value>
|
||||
</data>
|
||||
<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>
|
||||
<data name="CopyFileTo" xml:space="preserve">
|
||||
<value>Copy file "{0}" to "{1}"</value>
|
||||
</data>
|
||||
<data name="SplitApkNotFound" xml:space="preserve">
|
||||
<value>Split APK is not selected</value>
|
||||
</data>
|
||||
<data name="CantDetectApkeditorVersion" xml:space="preserve">
|
||||
<value>Can't detect APKEditor version</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>
|
||||
@@ -0,0 +1,546 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="About" xml:space="preserve">
|
||||
<value>关于</value>
|
||||
</data>
|
||||
<data name="APKToolVersion" xml:space="preserve">
|
||||
<value>Apktool 版本</value>
|
||||
</data>
|
||||
<data name="CheckForUpdate" xml:space="preserve">
|
||||
<value>检查更新</value>
|
||||
</data>
|
||||
<data name="DebugMode" xml:space="preserve">
|
||||
<value>调试模式</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>
|
||||
</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>
|
||||
</data>
|
||||
<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>Framework 未选择!</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>构建</value>
|
||||
</data>
|
||||
<data name="Decode" xml:space="preserve">
|
||||
<value>反编译</value>
|
||||
</data>
|
||||
<data name="InstallFramework" xml:space="preserve">
|
||||
<value>安装 Framework</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>
|
||||
</data>
|
||||
<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>正在对齐</value>
|
||||
</data>
|
||||
<data name="ErrorCompiling" xml:space="preserve">
|
||||
<value>编译失败</value>
|
||||
</data>
|
||||
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
|
||||
<value>输入 Framework 标签错误。</value>
|
||||
</data>
|
||||
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
|
||||
<value>所选文件不存在。</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
|
||||
<value>选择 Framework 目录错误。</value>
|
||||
</data>
|
||||
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
|
||||
<value>选择 Framework 文件时出错。该文件不存在。</value>
|
||||
</data>
|
||||
<data name="ErrorSigning" xml:space="preserve">
|
||||
<value>签名失败。</value>
|
||||
</data>
|
||||
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
|
||||
<value>错误。Framework 安装没有开始。</value>
|
||||
</data>
|
||||
<data name="InstallingFramework" xml:space="preserve">
|
||||
<value>正在安装 Framework</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>所选的 Framework 目录不存在。</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>在"{0}"发现主要 Activity</value>
|
||||
</data>
|
||||
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
|
||||
<value>无法找到 MainActivity。请手动找到它</value>
|
||||
</data>
|
||||
<data name="ClearingFramework" xml:space="preserve">
|
||||
<value>正在清理 Framework</value>
|
||||
</data>
|
||||
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
|
||||
<value>编译成功完成。输出目录"{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorZipalign" xml:space="preserve">
|
||||
<value>Zip 对齐失败</value>
|
||||
</data>
|
||||
<data name="ZipalignFileSavedTo" xml:space="preserve">
|
||||
<value>Zip 对齐成功完成。文件保存到 "{0}"</value>
|
||||
</data>
|
||||
<data name="ErrorClearingFw" xml:space="preserve">
|
||||
<value>清除 Framework 错误</value>
|
||||
</data>
|
||||
<data name="FrameworkCacheCleared" xml:space="preserve">
|
||||
<value>Framework 缓存已清除</value>
|
||||
</data>
|
||||
<data name="AllDone" xml:space="preserve">
|
||||
<value>全部完成!</value>
|
||||
</data>
|
||||
<data name="FrameworkInstalled" xml:space="preserve">
|
||||
<value>Framework 已成功安装</value>
|
||||
</data>
|
||||
<data name="FrameworkDirNotExist" xml:space="preserve">
|
||||
<value>Framework 目录不存在</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>您正在以管理员身份运行。不支持拖放。</value>
|
||||
</data>
|
||||
<data name="DragDropSupported" xml:space="preserve">
|
||||
<value>支持拖放</value>
|
||||
</data>
|
||||
<data name="ErrorNotAnApk" xml:space="preserve">
|
||||
<value>此目录不是安卓软件包</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>Zip 对齐</value>
|
||||
</data>
|
||||
<data name="CompileApk" xml:space="preserve">
|
||||
<value>编译 APK</value>
|
||||
</data>
|
||||
<data name="CompileDex" xml:space="preserve">
|
||||
<value>编译 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>此文件夹不是已反编译的 APK</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>Zip 对齐 APK</value>
|
||||
</data>
|
||||
<data name="CreateUnsignedApk" xml:space="preserve">
|
||||
<value>创建未签名的 APK</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>复制反编译的 apk 文件夹 "{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>移动临时 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>
|
||||
<data name="ClearTempFolder" xml:space="preserve">
|
||||
<value>清除临时文件夹</value>
|
||||
</data>
|
||||
<data name="DeletingFolder" xml:space="preserve">
|
||||
<value>正在删除文件夹: {0}</value>
|
||||
</data>
|
||||
<data name="DirectoryNotExist" xml:space="preserve">
|
||||
<value>目录 "{0}" 不存在</value>
|
||||
</data>
|
||||
<data name="OpenComFolder" xml:space="preserve">
|
||||
<value>打开编译输出文件夹</value>
|
||||
</data>
|
||||
<data name="OpenDecFolder" xml:space="preserve">
|
||||
<value>打开反编译输出文件夹</value>
|
||||
</data>
|
||||
<data name="FixApktoolYml" xml:space="preserve">
|
||||
<value>Apktool.yml 已修复</value>
|
||||
</data>
|
||||
<data name="CopyFileTo" xml:space="preserve">
|
||||
<value>复制文件 "{0}" 到 "{1}"</value>
|
||||
</data>
|
||||
<data name="SplitApkNotFound" xml:space="preserve">
|
||||
<value>未选择拆分的 APK</value>
|
||||
</data>
|
||||
<data name="CantDetectApkeditorVersion" xml:space="preserve">
|
||||
<value>无法检测 APKEditor 版本</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,9 +1,14 @@
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Properties;
|
||||
using APKToolGUI.Utils;
|
||||
using Bluegrams.Application;
|
||||
using Dark.Net;
|
||||
using OSVersionExtension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -23,65 +28,136 @@ namespace APKToolGUI
|
||||
[STAThread]
|
||||
static void Main(String[] arg)
|
||||
{
|
||||
if (Environment.OSVersion.Version.Major == 6)
|
||||
try
|
||||
{
|
||||
SetProcessDPIAware();
|
||||
}
|
||||
//Debug.WriteLine(Application.ProductName);
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
if (arg.Length == 1)
|
||||
{
|
||||
switch (arg[0])
|
||||
if (Environment.OSVersion.Version.Major == 6)
|
||||
{
|
||||
case "ccm":
|
||||
ExplorerContextMenuMethod(ExplorerContextMenu.Action.Create);
|
||||
break;
|
||||
case "rcm":
|
||||
ExplorerContextMenuMethod(ExplorerContextMenu.Action.Remove);
|
||||
break;
|
||||
SetProcessDPIAware();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (arg.Length == 2)
|
||||
|
||||
PortableSettingsProvider.SettingsFileName = "config.xml";
|
||||
PortableSettingsProvider.ApplyProvider(Settings.Default);
|
||||
|
||||
if (arg.Length == 1)
|
||||
{
|
||||
switch (arg[0])
|
||||
{
|
||||
case "comapk":
|
||||
if (!File.Exists(Path.Combine(arg[1], "AndroidManifest.xml")))
|
||||
case "ccm":
|
||||
ExplorerContextMenuMethod(ExplorerContextMenu.Action.Create);
|
||||
break;
|
||||
case "rcm":
|
||||
ExplorerContextMenuMethod(ExplorerContextMenu.Action.Remove);
|
||||
break;
|
||||
case "opendecfolder":
|
||||
if (Settings.Default.Decode_UseOutputDir)
|
||||
{
|
||||
MessageBox.Show(Language.NotDecompiledApk, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
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;
|
||||
}
|
||||
}
|
||||
if (FilesCheck() == true)
|
||||
else
|
||||
{
|
||||
Directory.CreateDirectory(TEMP_DIR);
|
||||
PortableSettingsProvider.SettingsFileName = "config.xml";
|
||||
PortableSettingsProvider.ApplyProvider(Settings.Default);
|
||||
Application.Run(new FormMain());
|
||||
if (arg.Length == 2)
|
||||
{
|
||||
switch (arg[0])
|
||||
{
|
||||
case "comapk":
|
||||
if (!File.Exists(Path.Combine(arg[1], "AndroidManifest.xml")))
|
||||
{
|
||||
MessageBox.Show(Language.NotDecompiledApk, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (FilesCheck() == true)
|
||||
{
|
||||
TEMP_PATH = RandTempDirectory();
|
||||
TEMP_MAIN = TempDirectory();
|
||||
Directory.CreateDirectory(TEMP_PATH);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex);
|
||||
//MessageBox.Show(ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
if (settingsCulture.Equals("Auto"))
|
||||
try
|
||||
{
|
||||
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InstalledUICulture;
|
||||
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InstalledUICulture;
|
||||
if (settingsCulture.Equals("Auto"))
|
||||
{
|
||||
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InstalledUICulture;
|
||||
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InstalledUICulture;
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Globalization.CultureInfo _settingsCulture = System.Globalization.CultureInfo.GetCultureInfo(settingsCulture);
|
||||
System.Threading.Thread.CurrentThread.CurrentUICulture = _settingsCulture;
|
||||
System.Threading.Thread.CurrentThread.CurrentCulture = _settingsCulture;
|
||||
}
|
||||
}
|
||||
else
|
||||
catch
|
||||
{
|
||||
System.Globalization.CultureInfo _settingsCulture = System.Globalization.CultureInfo.GetCultureInfo(settingsCulture);
|
||||
System.Threading.Thread.CurrentThread.CurrentUICulture = _settingsCulture;
|
||||
System.Threading.Thread.CurrentThread.CurrentCulture = _settingsCulture;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +192,13 @@ namespace APKToolGUI
|
||||
AAPT_PATH,
|
||||
AAPT2_PATH,
|
||||
SIGNAPK_KEYPRIVATE,
|
||||
SIGNAPK_KEYPUBLIC};
|
||||
SIGNAPK_KEYPUBLIC,
|
||||
APKEDITOR_PATH,
|
||||
ADB_PATH,
|
||||
ADBWINAPI_PATH,
|
||||
ADBWINUSBAPI_PATH,
|
||||
LIBWINP_PATH,
|
||||
};
|
||||
for (int i = 0; i < fileList.Length; i++)
|
||||
if (!File.Exists(fileList[i]))
|
||||
missingFiles.Add(Path.GetFileName(fileList[i]));
|
||||
@@ -155,18 +237,42 @@ namespace APKToolGUI
|
||||
return path;
|
||||
}
|
||||
|
||||
public static string LOCAL_APPDATA_PATH = Environment.GetEnvironmentVariable("LocalAppData");
|
||||
public static string TEMP_DIR = Path.Combine(Path.GetTempPath(), "APKToolGUI");
|
||||
public static string APP_PATH = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
|
||||
public static string APKTOOL_PATH = APP_PATH + @"\Resources\apktool.jar";
|
||||
public static string APKSIGNER_PATH = APP_PATH + @"\Resources\apksigner.jar";
|
||||
public static string BAKSMALI_PATH = APP_PATH + @"\Resources\baksmali.jar";
|
||||
public static string SMALI_PATH = APP_PATH + @"\Resources\smali.jar";
|
||||
public static string SIGNAPK_KEYPRIVATE = APP_PATH + @"\Resources\testkey.pk8";
|
||||
public static string SIGNAPK_KEYPUBLIC = APP_PATH + @"\Resources\testkey.x509.pem";
|
||||
public static string ZIPALIGN_PATH = APP_PATH + @"\Resources\zipalign.exe";
|
||||
public static string AAPT_PATH = APP_PATH + @"\Resources\aapt.exe";
|
||||
public static string AAPT2_PATH = APP_PATH + @"\Resources\aapt2.exe";
|
||||
public static string FRAMEWORK_DIR = LOCAL_APPDATA_PATH + @"\apktool\framework";
|
||||
public static string TempDirectory()
|
||||
{
|
||||
//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);
|
||||
else
|
||||
return Path.Combine(LOCAL_APPDATA_PATH, ASSEMBLY_NAME, "Temp");
|
||||
}
|
||||
|
||||
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 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"); } }
|
||||
public static string APKTOOL_PATH { get { return Path.Combine(RES_PATH, "apktool.jar"); } }
|
||||
public static string APKSIGNER_PATH { get { return Path.Combine(RES_PATH, "apksigner.jar"); } }
|
||||
public static string BAKSMALI_PATH { get { return Path.Combine(RES_PATH, "baksmali.jar"); } }
|
||||
public static string SMALI_PATH { get { return Path.Combine(RES_PATH, "smali.jar"); } }
|
||||
public static string SIGNAPK_KEYPRIVATE { get { return Path.Combine(RES_PATH, "testkey.pk8"); } }
|
||||
public static string SIGNAPK_KEYPUBLIC { get { return Path.Combine(RES_PATH, "testkey.x509.pem"); } }
|
||||
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 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"); } }
|
||||
public static string ADBWINUSBAPI_PATH { get { return Path.Combine(RES_PATH, "AdbWinUsbApi.dll"); } }
|
||||
public static string LIBWINP_PATH { get { return Path.Combine(RES_PATH, "libwinpthread-1.dll"); } }
|
||||
public static string FRAMEWORK_DIR { get { return Path.Combine(LOCAL_APPDATA_PATH, "apktool", "framework"); } }
|
||||
public static string STANDALONE_FRAMEWORK_DIR { get { return Path.Combine(LOCAL_APPDATA_PATH, ASSEMBLY_NAME, "framework"); } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
|
||||
// Управление общими сведениями о сборке осуществляется с помощью
|
||||
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
|
||||
// связанные со сборкой.
|
||||
[assembly: AssemblyTitle("APKTool GUI")]
|
||||
[assembly: AssemblyTitle("APK Tool GUI")]
|
||||
[assembly: AssemblyDescription("GUI for apktool, signapk and zipalign utilities.")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("APKTool GUI")]
|
||||
[assembly: AssemblyCopyright("© INFINUM, 2012-2015 | AndnixSH, 2022")]
|
||||
[assembly: AssemblyProduct("APK Tool GUI")]
|
||||
[assembly: AssemblyCopyright("Original owner: INFINUM, 2012-2015 | Maintained by: AndnixSH, 2022-2024")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
|
||||
[assembly: Guid("12cc5907-c237-4d52-8c7e-08d622828cf4")]
|
||||
[assembly: Guid("49ccb60c-22a6-4a25-a4bf-9208712ad928")]
|
||||
|
||||
// Сведения о версии сборки состоят из следующих четырех значений:
|
||||
//
|
||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
|
||||
// используя "*", как показано ниже:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("3.0.1.0")]
|
||||
[assembly: AssemblyFileVersion("3.0.1.0")]
|
||||
[assembly: AssemblyVersion("3.3.1.3")]
|
||||
[assembly: AssemblyFileVersion("3.3.1.3")]
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace APKToolGUI.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@@ -80,36 +80,6 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap apkaio {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("apkaio", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap apkcombo {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("apkcombo", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap apkpure {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("apkpure", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
@@ -140,16 +110,6 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap playstore {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("playstore", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
<data name="done" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
EgAACxIB0t1+/AAAAtVJREFUeF7tmzFu3DAQRfcoPoKBXGCP4pMErtK6TuVD5AB7gQBbGqncJU0AV6k3
|
||||
EQAACxEBf2RfkQAAAtVJREFUeF7tmzFu3DAQRfcoPoKBXGCP4pMErtK6TuVD5AB7gQBbGqncJU0AV6k3
|
||||
/wdDQFgMxSFFDqlQH3jVcobzKYmSKO7p0KFDh1rq8/dPD+AJvIILuCVgG7ZlzIOk2ZdYOHgB70AzmQNz
|
||||
MNf4g4Eiz8BylEth7rN0N45Q1KMUpxXdAvb1KN33FQp5XhTmzbOU4S90zqN+XRTTC9bgezagQ17rH1LA
|
||||
CLAWn7kBHfH2pBUxAk9SZhuxg7sOR6TNICAxT3utwxGpezkgISe8ka75FKy13sSIZCPM9rlcpfxtQqKe
|
||||
@@ -392,73 +392,6 @@
|
||||
<data name="android_thin" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\android-thin.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="apkcombo" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5gIUECEzhhsWEgAAAIFJREFU
|
||||
OE+9jNENgCAMRPthHMYp3MRx3MUlWMJ91BLaXOCK+ONLXri0V6Rh3y71OJe5TCTnMi+jmJTWycu1w7Bj
|
||||
dQgsR7mLFSMp3SWh6ePAciR2HLasVHLGjoMDy6Afq9hxyNKO7HWhk3OGLR+bYxU7FCwzX2FH6BB1+dOx
|
||||
8t8HIjeYr/a0lujdLAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="apkpure" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAF8ElEQVRYR9VW729TVRi+g+rAKOPDCGYY
|
||||
xKGA648hkGBiQkwYw63d3JAhsHVsLaAJa7cRcAmiERmjvbcbgtG/wKgJQU38ABGHY/1xb9vRTfGDOn50
|
||||
HZEoakgU1LHe4/Oee9t1VcbG9sU3efPe3nPued7nec97ToX/ja0N7M+xBNoXmAJHF8ELNPcUmP3tBUWR
|
||||
dx9deON8jj51Zq1Y8fKFixVPoVn23jDJ0l9mWbxlksXbFI1K1x9rAgdYVXfZNppn7amZTXHGzKiIfEGA
|
||||
+UyKxMyKdAeumhURzyIrkrtGS/x2Vh8tDc3rYjOrgiUkaexD4mIk8CtPQBaTcJXcqHSqz/gPJrcoZaP2
|
||||
fiurla2baX5d2DYzKhgViS9kCokdkJ4Ya+wpAY09W++vV+2x0tFaJFDXZw3wD2fCzCGRs7cExUUA/DnN
|
||||
XkuAcfaBN1SwZ/YBq1obsybrYlZmj1RU03f2cMX0VADjVO0PmXi99doDHOxVsE+u9zcQewb2lABUKCcV
|
||||
evkC0zFLSNv5lqBnIQB/zGZvAvtVYF+jlKtgzwCugr2KBLgKdUpFFX2PeH8qADDF/iDaLZM9d8jP1n7R
|
||||
dLL+QulNqj1PACoAPKXCV3yh+zFT0MPZmwMd+QAbzmSPZCgyo7/jivByVZ69z3qKb76Y9Y6eABLRVQjb
|
||||
KmidKasAAP6BSfa2ZbPH71FKYPnp1w/QnNpQdQmBgbUOPk6FbpozJcNJp9Ve8czHxrtKYDrrDPZHr+Z7
|
||||
qhfyD2B1UdvnHBDAKRVSewGdYKU59nDlLD75XgYQvfZSKxhjs+l9ryUwSuVYdubNgzRn7cDeXIq1wYoS
|
||||
7IG0CtQRYyrYztKcKZklLD4CwEH94EkCNM0el8+VgvYt+TRv9cldXC2yHVFrSoX0XtATYnal4gWaYw/b
|
||||
JlbBorMHmJtOOQBTvdPsKYHCswdOCOfW5RsuvFooRJxLcqONhUK0NX9DcHMDgWmg5VwFOhewIdn2qK2H
|
||||
A0zGTL3SQwD7nrMdq71qUXxseeCwOqu38RaAbwsKPJxyx5+C7Px9Q6Q62dBfxrZrnZBOoCZagYPpHpcU
|
||||
6p3q+1e02oO9nGbPitH3+T0tTJB3MIAyQXGkPSdMcSdbJONGjJWnTkXejkiG2eRNvB1fVKrT7dg85Mtp
|
||||
iXeOT2plyJsLsItZ7BmxXxFoJ/YAd6hgryKJMVfwjt7LThUqMKigAjjF/py+/N3NFPJq7EOiY4w93XZj
|
||||
7Becbx3PnmLKM1R4TK5ToQJvQ2JfKW+qpLU3R7bOdg9Js5oTvpymq745UMAMBcyuK515NC6s6el8AKBf
|
||||
U5shZrJXVwSOJGf7nUmwTII94n+4gjEal53J0kj1SMNAGavpq7zrceyO+za6h3y7WuLH5vIX5pC3NpM9
|
||||
3X5IQAV7dcH5vcSe5NbY/8t1FfjzThUqJO1gXxXZxC+krQONhtZEVx4Ay1xD0kZXXHoez/XNcd9qDr5a
|
||||
9j4I0FgWeyoBezrQcdvQ67wM8EsAuoRIz1nuyHDnoEFxXF+nvPQJXzzDAHoEzL9EAn6Uo11/LQirZN9c
|
||||
AF/MSoBOQLa8+1Anzcnrb5sryLtzhb5sd8IdujtzH+7fM0c485yhfvB4Aeq8E2CNYO2EbwO4B/EbJHIa
|
||||
Y0W0LnUDRTqE0hsQ4JQEMwY9vy3+cM9SGl/62f6J+1g3d0L7F9U8LM4H2CASYIhJuOqKi6prSBxFAm/R
|
||||
nKZr2r3DrTggkQrfkQpIYITL333oHRozXn4v3b+TsW2XDhsouhKSA4CsKS7+3QRgxBF3QvK5hzsLadyd
|
||||
0M8BgGptqEguUoFKAPY3H//ItYzeF57aNyn22dZyXZoD5t8CmJIgJYL60HizyNpf75Uh3zwk8IPG/u3j
|
||||
9O7Z4Q8md41mGcA4KVfCtxvPBM4gPf/LjrJwhcZZWoWwrw3/iNgTH7c8Rb+f/LTtvtin7LVf3s8FeByg
|
||||
Mf3VxFYc7VpSdO7wPnouYcFpgQNUU2FIaoE30jP2wJT204xY608nDK5rWRfPRGZWjk2L+dRMEP4BTv9m
|
||||
88NQBeoAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="playstore" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5gIUESUj/gKpRQAABIRJREFU
|
||||
WEfF11tMm2UYB/CvE8IkBrItZiYaYnCDlTGgg7VMb0jc2pVyKCzohV4bD9HEyEHmCj0YDzFRpybELBFd
|
||||
NpfovXG94WKbG65xFHgprBzaFVqggx44ybry+Lzd97H3LW1hrJsX/4vS73v+P573Iy0CAMj+z3CA/LH5
|
||||
3AKH5fN9TqOp0vWNnH3vcYUDZF+Hzp02K8kZaYZdY22RPI/xjDL8wx72mnSHA+y4BheFKwBZfVaS7WqG
|
||||
nZ5myPGd8uf5zR++BT9mstemKxxA6IXfhb8AKCJz0EqyvC2QOd0CT822QM68wfFi+It69vp0hAfcQMA1
|
||||
BIiIjCEryfAjYK4VZPOtsCPYBrmhzkuFi1+Vsvc9SniADQF/YzmDkDmsRBZoBSH4IJmh9sieBXOXavHb
|
||||
vez92wkPuIkAGxZTxPUHCOGWlbAAKVnBU4Hnwpa2Jvgti53zMOEBdgT8g4UU0YuREJcxSRA0z4QMzrzl
|
||||
L5vYWVsND+hHQB+WSYi440iFiD0f4Y6ewqWvj7AzNwsPGERAPxbFI9hNOP9MiqDJCLVHdweN3Yql759n
|
||||
ZycLDyAIGMSSVIjYJlIjaN6cbboBrr0GgKqn2Y748IBhBBAsSIW4iqGIFJvQTzcMwAiOdmJc2RPgfeEN
|
||||
tofNRsAQDqeIATEPuQm9D8sJjh3GjGLGMW4c7825CjMvvcL2xTq5FxQwjINZxGabYBB6L5YP4MghjLSB
|
||||
GAAziZnOAPDvPgvQtP5niz9lAE4EjOBQB0ZCbOWZwOOon2q0Qx+OkwB0AxQwgZEAPswsxp9tSgwYQ8At
|
||||
HCghaDbbBCI+O/0TWXunzA52HBe/gXjAjAARn4APZyLAOAJGcaiEoMchIZJs4lNDN4kePQ5rR48BvF16
|
||||
/wg2PAMYBKwh4K5X6LLZhPVPVnyHAbgQMIaDKcKJiT8OaRN2DCIsHd0kUqmBe5VqiFaKiHcRQQF0AyJg
|
||||
zYW/tVu4HBoXVGxfrJN7QQETOJwiKCDRJkSE2dhNVpUaWFWqIaJS30fQTbx8HOA9RIhHcM8pTCyPCq+z
|
||||
PWx4gFsESIj44xA3YTL9TJYrTsC/RzDxCHETkQ8O9q46hHanU0j5QZUcwCKY4zCafiELh7WwVK6F5Qot
|
||||
rFRQwAm4q9LEEJjoivLVszMq1ZY+qjcC3FiUCIGb6MDysEIHC4erYZEiEEA3sYKbWKlQw6LyWE+grErB
|
||||
ztwsiQEusZxBGCznSKC0BkJlNNUxhLSJhXKt8065uoGdtdUkBkgIMafN58hcSS3Ml9TAOgI3EVRUB/wK
|
||||
zUc2oXzbX1h5gAcBt0WAiPjEcp7MFtfBnUN1MHcIEaU0ushMibbLW1D1LHv/dpIS0G4+T6aL6mG2mKYO
|
||||
/MW14CvRXXIXaQ6y9z1KeMAkAjxYjoiPzReIV94APrkeKGKqqJa45DU69vp0hAfcjl6k5W2mC2SysBGm
|
||||
5I3gOaCfGz9Q+36PUPUE/jFxRQytpl+Ju+AkuAtPRkb368/05+l2sdekOxxg33d/5PbLX7M48hs6b+bX
|
||||
7Gffe1zhAE8+IPsPdRQlTjbOQZ0AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -471,7 +404,4 @@
|
||||
<data name="warning" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\warning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="apkaio" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\apkaio.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -12,7 +12,7 @@ namespace APKToolGUI.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -27,6 +27,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_NoSrc {
|
||||
get {
|
||||
return ((bool)(this["Decode_NoSrc"]));
|
||||
@@ -40,6 +41,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_NoRes {
|
||||
get {
|
||||
return ((bool)(this["Decode_NoRes"]));
|
||||
@@ -53,6 +55,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_Force {
|
||||
get {
|
||||
return ((bool)(this["Decode_Force"]));
|
||||
@@ -66,6 +69,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_UseFramework {
|
||||
get {
|
||||
return ((bool)(this["Decode_UseFramework"]));
|
||||
@@ -79,6 +83,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_ForceAll {
|
||||
get {
|
||||
return ((bool)(this["Build_ForceAll"]));
|
||||
@@ -91,6 +96,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Decode_InputAppPath {
|
||||
get {
|
||||
return ((string)(this["Decode_InputAppPath"]));
|
||||
@@ -103,18 +109,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public string Decode_FrameDir {
|
||||
get {
|
||||
return ((string)(this["Decode_FrameDir"]));
|
||||
}
|
||||
set {
|
||||
this["Decode_FrameDir"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string BuildProjectDir {
|
||||
get {
|
||||
return ((string)(this["BuildProjectDir"]));
|
||||
@@ -127,6 +122,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string InstallFramework_InputFramePath {
|
||||
get {
|
||||
return ((string)(this["InstallFramework_InputFramePath"]));
|
||||
@@ -139,6 +135,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Sign_InputFile {
|
||||
get {
|
||||
return ((string)(this["Sign_InputFile"]));
|
||||
@@ -151,6 +148,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Sign_OutputDir {
|
||||
get {
|
||||
return ((string)(this["Sign_OutputDir"]));
|
||||
@@ -164,6 +162,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_UseAapt {
|
||||
get {
|
||||
return ((bool)(this["Build_UseAapt"]));
|
||||
@@ -176,6 +175,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Build_AaptPath {
|
||||
get {
|
||||
return ((string)(this["Build_AaptPath"]));
|
||||
@@ -189,6 +189,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Auto")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Culture {
|
||||
get {
|
||||
return ((string)(this["Culture"]));
|
||||
@@ -201,6 +202,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string JavaExe {
|
||||
get {
|
||||
return ((string)(this["JavaExe"]));
|
||||
@@ -213,6 +215,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public global::System.DateTime LastUpdateCheck {
|
||||
get {
|
||||
return ((global::System.DateTime)(this["LastUpdateCheck"]));
|
||||
@@ -226,6 +229,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool CheckForUpdateAtStartup {
|
||||
get {
|
||||
return ((bool)(this["CheckForUpdateAtStartup"]));
|
||||
@@ -238,7 +242,8 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool ClearLogBeforeAction {
|
||||
get {
|
||||
return ((bool)(this["ClearLogBeforeAction"]));
|
||||
@@ -252,6 +257,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_MatchOriginal {
|
||||
get {
|
||||
return ((bool)(this["Decode_MatchOriginal"]));
|
||||
@@ -265,6 +271,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_KeepBrokenRes {
|
||||
get {
|
||||
return ((bool)(this["Decode_KeepBrokenRes"]));
|
||||
@@ -278,6 +285,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_CopyOriginal {
|
||||
get {
|
||||
return ((bool)(this["Build_CopyOriginal"]));
|
||||
@@ -287,22 +295,11 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public string Build_FrameDir {
|
||||
get {
|
||||
return ((string)(this["Build_FrameDir"]));
|
||||
}
|
||||
set {
|
||||
this["Build_FrameDir"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_UseFramework {
|
||||
get {
|
||||
return ((bool)(this["Build_UseFramework"]));
|
||||
@@ -316,6 +313,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_UseOutputDir {
|
||||
get {
|
||||
return ((bool)(this["Decode_UseOutputDir"]));
|
||||
@@ -328,6 +326,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Decode_OutputDir {
|
||||
get {
|
||||
return ((string)(this["Decode_OutputDir"]));
|
||||
@@ -341,6 +340,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_UseOutputAppPath {
|
||||
get {
|
||||
return ((bool)(this["Build_UseOutputAppPath"]));
|
||||
@@ -354,6 +354,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Build_OutputAppPath {
|
||||
get {
|
||||
return ((string)(this["Build_OutputAppPath"]));
|
||||
@@ -367,6 +368,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Build_InputDir {
|
||||
get {
|
||||
return ((string)(this["Build_InputDir"]));
|
||||
@@ -380,12 +382,13 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool InstallFramework_UseFrameDir {
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Framework_UseFrameDir {
|
||||
get {
|
||||
return ((bool)(this["InstallFramework_UseFrameDir"]));
|
||||
return ((bool)(this["Framework_UseFrameDir"]));
|
||||
}
|
||||
set {
|
||||
this["InstallFramework_UseFrameDir"] = value;
|
||||
this["Framework_UseFrameDir"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,6 +396,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool InstallFramework_UseTag {
|
||||
get {
|
||||
return ((bool)(this["InstallFramework_UseTag"]));
|
||||
@@ -406,6 +410,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string InstallFramework_Tag {
|
||||
get {
|
||||
return ((string)(this["InstallFramework_Tag"]));
|
||||
@@ -419,12 +424,13 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string InstallFramework_FrameDir {
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Framework_FrameDir {
|
||||
get {
|
||||
return ((string)(this["InstallFramework_FrameDir"]));
|
||||
return ((string)(this["Framework_FrameDir"]));
|
||||
}
|
||||
set {
|
||||
this["InstallFramework_FrameDir"] = value;
|
||||
this["Framework_FrameDir"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -432,6 +438,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("4")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public decimal Zipalign_AlignmentInBytes {
|
||||
get {
|
||||
return ((decimal)(this["Zipalign_AlignmentInBytes"]));
|
||||
@@ -445,6 +452,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Zipalign_OverwriteOutputFile {
|
||||
get {
|
||||
return ((bool)(this["Zipalign_OverwriteOutputFile"]));
|
||||
@@ -458,6 +466,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Zipalign_CheckOnly {
|
||||
get {
|
||||
return ((bool)(this["Zipalign_CheckOnly"]));
|
||||
@@ -471,6 +480,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Zipalign_Verbose {
|
||||
get {
|
||||
return ((bool)(this["Zipalign_Verbose"]));
|
||||
@@ -484,6 +494,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Zipalign_OutputDir {
|
||||
get {
|
||||
return ((string)(this["Zipalign_OutputDir"]));
|
||||
@@ -497,6 +508,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Zipalign_InputFile {
|
||||
get {
|
||||
return ((string)(this["Zipalign_InputFile"]));
|
||||
@@ -510,6 +522,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Zipalign_Recompress {
|
||||
get {
|
||||
return ((bool)(this["Zipalign_Recompress"]));
|
||||
@@ -523,6 +536,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Sign_PublicKey {
|
||||
get {
|
||||
return ((string)(this["Sign_PublicKey"]));
|
||||
@@ -536,6 +550,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Sign_PrivateKey {
|
||||
get {
|
||||
return ((string)(this["Sign_PrivateKey"]));
|
||||
@@ -549,6 +564,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_OnlyMainClasses {
|
||||
get {
|
||||
return ((bool)(this["Decode_OnlyMainClasses"]));
|
||||
@@ -562,6 +578,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_FixError {
|
||||
get {
|
||||
return ((bool)(this["Decode_FixError"]));
|
||||
@@ -575,6 +592,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_NoCrunch {
|
||||
get {
|
||||
return ((bool)(this["Build_NoCrunch"]));
|
||||
@@ -588,6 +606,7 @@ namespace APKToolGUI.Properties {
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_NoDebugInfo {
|
||||
get {
|
||||
return ((bool)(this["Decode_NoDebugInfo"]));
|
||||
@@ -598,8 +617,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Framework_ClearBeforeDecode {
|
||||
get {
|
||||
return ((bool)(this["Framework_ClearBeforeDecode"]));
|
||||
@@ -610,8 +631,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_ZipalignAfterBuild {
|
||||
get {
|
||||
return ((bool)(this["Build_ZipalignAfterBuild"]));
|
||||
@@ -622,8 +645,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_SignAfterBuild {
|
||||
get {
|
||||
return ((bool)(this["Build_SignAfterBuild"]));
|
||||
@@ -634,8 +659,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Zipalign_UseOutputDir {
|
||||
get {
|
||||
return ((bool)(this["Zipalign_UseOutputDir"]));
|
||||
@@ -646,8 +673,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Zipalign_SignAfterZipAlign {
|
||||
get {
|
||||
return ((bool)(this["Zipalign_SignAfterZipAlign"]));
|
||||
@@ -658,8 +687,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("CERT")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Sign_Alias {
|
||||
get {
|
||||
return ((string)(this["Sign_Alias"]));
|
||||
@@ -670,8 +701,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Sign_SetAlias {
|
||||
get {
|
||||
return ((bool)(this["Sign_SetAlias"]));
|
||||
@@ -682,8 +715,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_CreateUnsignedApk {
|
||||
get {
|
||||
return ((bool)(this["Build_CreateUnsignedApk"]));
|
||||
@@ -694,8 +729,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Sign_UseKeystoreFile {
|
||||
get {
|
||||
return ((bool)(this["Sign_UseKeystoreFile"]));
|
||||
@@ -706,8 +743,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Sign_KeystoreFilePath {
|
||||
get {
|
||||
return ((string)(this["Sign_KeystoreFilePath"]));
|
||||
@@ -718,8 +757,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Sign_KeystorePassword {
|
||||
get {
|
||||
return ((string)(this["Sign_KeystorePassword"]));
|
||||
@@ -730,8 +771,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Sign_UseOutputDir {
|
||||
get {
|
||||
return ((bool)(this["Sign_UseOutputDir"]));
|
||||
@@ -742,8 +785,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public int Sign_Schemev1 {
|
||||
get {
|
||||
return ((int)(this["Sign_Schemev1"]));
|
||||
@@ -754,8 +799,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public int Sign_Schemev2 {
|
||||
get {
|
||||
return ((int)(this["Sign_Schemev2"]));
|
||||
@@ -766,8 +813,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public int Sign_Schemev3 {
|
||||
get {
|
||||
return ((int)(this["Sign_Schemev3"]));
|
||||
@@ -778,8 +827,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("2")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public int Sign_Schemev4 {
|
||||
get {
|
||||
return ((int)(this["Sign_Schemev4"]));
|
||||
@@ -790,8 +841,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("29")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public decimal Decode_ApiLevel {
|
||||
get {
|
||||
return ((decimal)(this["Decode_ApiLevel"]));
|
||||
@@ -802,8 +855,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("29")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public decimal Build_ApiLevel {
|
||||
get {
|
||||
return ((decimal)(this["Build_ApiLevel"]));
|
||||
@@ -814,8 +869,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_SetApiLevel {
|
||||
get {
|
||||
return ((bool)(this["Build_SetApiLevel"]));
|
||||
@@ -826,8 +883,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Decode_SetApiLevel {
|
||||
get {
|
||||
return ((bool)(this["Decode_SetApiLevel"]));
|
||||
@@ -838,8 +897,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Baksmali_InputDexFile {
|
||||
get {
|
||||
return ((string)(this["Baksmali_InputDexFile"]));
|
||||
@@ -850,8 +911,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Smali_OutputDexFile {
|
||||
get {
|
||||
return ((string)(this["Smali_OutputDexFile"]));
|
||||
@@ -862,8 +925,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Baksmali_OutputDir {
|
||||
get {
|
||||
return ((string)(this["Baksmali_OutputDir"]));
|
||||
@@ -874,8 +939,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Baksmali_UseOutputDir {
|
||||
get {
|
||||
return ((bool)(this["Baksmali_UseOutputDir"]));
|
||||
@@ -886,8 +953,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Smali_InputDir {
|
||||
get {
|
||||
return ((string)(this["Smali_InputDir"]));
|
||||
@@ -898,8 +967,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string Smali_OutputDir {
|
||||
get {
|
||||
return ((string)(this["Smali_OutputDir"]));
|
||||
@@ -910,8 +981,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Smali_UseOutputDir {
|
||||
get {
|
||||
return ((bool)(this["Smali_UseOutputDir"]));
|
||||
@@ -922,8 +995,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool IgnoreOutputDirContextMenu {
|
||||
get {
|
||||
return ((bool)(this["IgnoreOutputDirContextMenu"]));
|
||||
@@ -934,8 +1009,10 @@ namespace APKToolGUI.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool Build_UseAapt2 {
|
||||
get {
|
||||
return ((bool)(this["Build_UseAapt2"]));
|
||||
@@ -944,5 +1021,310 @@ namespace APKToolGUI.Properties {
|
||||
this["Build_UseAapt2"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool PlaySoundWhenDone {
|
||||
get {
|
||||
return ((bool)(this["PlaySoundWhenDone"]));
|
||||
}
|
||||
set {
|
||||
this["PlaySoundWhenDone"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["UseCustomTempDir"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["TempDir"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["UseCustomJavaExe"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["AutoDeleteIdsigFile"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["Utf8FilenameSupport"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["Sign_OverwriteInputFile"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["Adb_SetVendor"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["Adb_SelectedApkPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["Sign_InstallApkAfterSign"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["UseCustomApktool"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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"]));
|
||||
}
|
||||
set {
|
||||
this["ApktoolPath"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[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;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public string SplitApk_InputFile {
|
||||
get {
|
||||
return ((string)(this["SplitApk_InputFile"]));
|
||||
}
|
||||
set {
|
||||
this["SplitApk_InputFile"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Bluegrams.Application.PortableSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
[global::System.Configuration.SettingsManageabilityAttribute(global::System.Configuration.SettingsManageability.Roaming)]
|
||||
public bool UseApkeditor {
|
||||
get {
|
||||
return ((bool)(this["UseApkeditor"]));
|
||||
}
|
||||
set {
|
||||
this["UseApkeditor"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||
public int Adb_OverrideAbi {
|
||||
get {
|
||||
return ((int)(this["Adb_OverrideAbi"]));
|
||||
}
|
||||
set {
|
||||
this["Adb_OverrideAbi"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool Adb_SetOverrideAbi {
|
||||
get {
|
||||
return ((bool)(this["Adb_SetOverrideAbi"]));
|
||||
}
|
||||
set {
|
||||
this["Adb_SetOverrideAbi"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,227 +2,287 @@
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="APKToolGUI.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="Decode_NoSrc" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_NoSrc" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_NoRes" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_NoRes" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_Force" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_Force" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_UseFramework" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_UseFramework" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_ForceAll" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_ForceAll" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_InputAppPath" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="Decode_InputAppPath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Decode_FrameDir" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="BuildProjectDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="BuildProjectDir" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="InstallFramework_InputFramePath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InstallFramework_InputFramePath" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="Sign_InputFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Sign_InputFile" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="Sign_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Sign_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Build_UseAapt" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_UseAapt" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_AaptPath" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="Build_AaptPath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Culture" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Setting Name="Culture" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">Auto</Value>
|
||||
</Setting>
|
||||
<Setting Name="JavaExe" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="JavaExe" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="LastUpdateCheck" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.DateTime" Scope="User">
|
||||
<Setting Name="LastUpdateCheck" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.DateTime" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="CheckForUpdateAtStartup" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="CheckForUpdateAtStartup" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ClearLogBeforeAction" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="ClearLogBeforeAction" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_MatchOriginal" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_MatchOriginal" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_KeepBrokenRes" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_KeepBrokenRes" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_CopyOriginal" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_CopyOriginal" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_UseFramework" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_FrameDir" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Setting Name="Decode_UseOutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Build_UseFramework" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_UseOutputAppPath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_UseOutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_OutputAppPath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Build_InputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Framework_UseFrameDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Build_UseOutputAppPath" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="InstallFramework_UseTag" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_OutputAppPath" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Setting Name="InstallFramework_Tag" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Build_InputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Setting Name="Framework_FrameDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InstallFramework_UseFrameDir" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="InstallFramework_UseTag" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="InstallFramework_Tag" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="InstallFramework_FrameDir" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_AlignmentInBytes" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Decimal" Scope="User">
|
||||
<Setting Name="Zipalign_AlignmentInBytes" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Decimal" Scope="User">
|
||||
<Value Profile="(Default)">4</Value>
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_OverwriteOutputFile" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Zipalign_OverwriteOutputFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_CheckOnly" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Zipalign_CheckOnly" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_Verbose" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Zipalign_Verbose" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Setting Name="Zipalign_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_InputFile" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Setting Name="Zipalign_InputFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_Recompress" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Zipalign_Recompress" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_PublicKey" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Setting Name="Sign_PublicKey" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Sign_PrivateKey" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.String" Scope="User">
|
||||
<Setting Name="Sign_PrivateKey" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Decode_OnlyMainClasses" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_OnlyMainClasses" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_FixError" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_FixError" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_NoCrunch" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_NoCrunch" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_NoDebugInfo" Provider="Bluegrams.Application.PortableSettingsProvider" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_NoDebugInfo" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Framework_ClearBeforeDecode" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Framework_ClearBeforeDecode" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_ZipalignAfterBuild" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_ZipalignAfterBuild" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_SignAfterBuild" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_SignAfterBuild" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_UseOutputDir" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Zipalign_UseOutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Zipalign_SignAfterZipAlign" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
<Setting Name="Zipalign_SignAfterZipAlign" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_Alias" Type="System.String" Scope="User">
|
||||
<Setting Name="Sign_Alias" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">CERT</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_SetAlias" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Sign_SetAlias" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_CreateUnsignedApk" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_CreateUnsignedApk" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_UseKeystoreFile" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Sign_UseKeystoreFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_KeystoreFilePath" Type="System.String" Scope="User">
|
||||
<Setting Name="Sign_KeystoreFilePath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Sign_KeystorePassword" Type="System.String" Scope="User">
|
||||
<Setting Name="Sign_KeystorePassword" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Sign_UseOutputDir" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Sign_UseOutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_Schemev1" Type="System.Int32" Scope="User">
|
||||
<Setting Name="Sign_Schemev1" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_Schemev2" Type="System.Int32" Scope="User">
|
||||
<Setting Name="Sign_Schemev2" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_Schemev3" Type="System.Int32" Scope="User">
|
||||
<Setting Name="Sign_Schemev3" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_Schemev4" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">2</Value>
|
||||
<Setting Name="Sign_Schemev4" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_ApiLevel" Type="System.Decimal" Scope="User">
|
||||
<Setting Name="Decode_ApiLevel" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Decimal" Scope="User">
|
||||
<Value Profile="(Default)">29</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_ApiLevel" Type="System.Decimal" Scope="User">
|
||||
<Setting Name="Build_ApiLevel" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Decimal" Scope="User">
|
||||
<Value Profile="(Default)">29</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_SetApiLevel" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_SetApiLevel" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_SetApiLevel" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Decode_SetApiLevel" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Baksmali_InputDexFile" Type="System.String" Scope="User">
|
||||
<Setting Name="Baksmali_InputDexFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Smali_OutputDexFile" Type="System.String" Scope="User">
|
||||
<Setting Name="Smali_OutputDexFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Baksmali_OutputDir" Type="System.String" Scope="User">
|
||||
<Setting Name="Baksmali_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Baksmali_UseOutputDir" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Baksmali_UseOutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Smali_InputDir" Type="System.String" Scope="User">
|
||||
<Setting Name="Smali_InputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Smali_OutputDir" Type="System.String" Scope="User">
|
||||
<Setting Name="Smali_OutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Smali_UseOutputDir" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Smali_UseOutputDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="IgnoreOutputDirContextMenu" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="IgnoreOutputDirContextMenu" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_UseAapt2" Type="System.Boolean" Scope="User">
|
||||
<Setting Name="Build_UseAapt2" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="PlaySoundWhenDone" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UseCustomTempDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="TempDir" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="UseCustomJavaExe" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="AutoDeleteIdsigFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="Utf8FilenameSupport" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Sign_OverwriteInputFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Adb_SetVendor" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Adb_SelectedApkPath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Sign_InstallApkAfterSign" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UseCustomApktool" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ApktoolPath" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Theme" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="DebugMode" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Build_NetSecConf" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Decode_DontParseApkInfo" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UseCustomJVMArgs" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="CustomJVMArgs" Provider="Bluegrams.Application.PortableSettingsProvider" 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>
|
||||
<Setting Name="SplitApk_InputFile" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="UseApkeditor" Provider="Bluegrams.Application.PortableSettingsProvider" Roaming="true" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Adb_OverrideAbi" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">0</Value>
|
||||
</Setting>
|
||||
<Setting Name="Adb_SetOverrideAbi" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
@@ -1,38 +1,68 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- Параметры манифеста UAC
|
||||
При необходимости изменить уровень управления учетными записями Windows замените
|
||||
узел requestedExecutionLevel одним из следующих значений.
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Задание узла requestedExecutionLevel отключит виртуализацию файла и реестра.
|
||||
Если виртуализацию файла и реестра нужно использовать для обратной
|
||||
совместимости, удалите узел requestedExecutionLevel.
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
<applicationRequestMinimum>
|
||||
<defaultAssemblyRequest permissionSetReference="Custom" />
|
||||
<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
|
||||
</applicationRequestMinimum>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Список всех версий Windows, с которыми это приложение предназначено работать. Windows автоматически выберет наиболее совместимую среду.-->
|
||||
<!-- Если приложение предназначено для работы с Windows 7, раскомментируйте следующий узел supportedOS-->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
|
||||
</application>
|
||||
</compatibility>
|
||||
<!-- Включите темы для общих элементов управления и диалоговых окон Windows (Windows XP и более поздние версии) -->
|
||||
<!-- <dependency>
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config.
|
||||
|
||||
Makes the application long-path aware. See https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
@@ -43,5 +73,7 @@
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>-->
|
||||
</asmv1:assembly>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</assembly>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 355 B |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI.Utils
|
||||
{
|
||||
internal class BitmapUtils
|
||||
{
|
||||
public static Bitmap LoadBitmap(string path)
|
||||
{
|
||||
if (File.Exists(path))
|
||||
{
|
||||
// open file in read only mode
|
||||
using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
|
||||
// get a binary reader for the file stream
|
||||
using (BinaryReader reader = new BinaryReader(stream))
|
||||
{
|
||||
// copy the content of the file into a memory stream
|
||||
var memoryStream = new MemoryStream(reader.ReadBytes((int)stream.Length));
|
||||
// make a new Bitmap object the owner of the MemoryStream
|
||||
return new Bitmap(memoryStream);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Error Loading File.", "Error!", MessageBoxButtons.OK);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -15,161 +15,131 @@ namespace APKToolGUI.Utils
|
||||
public static void Delete(string path)
|
||||
{
|
||||
if (Directory.Exists(path))
|
||||
Directory.Delete(path, true);
|
||||
Directory.Delete("\\\\?\\" + path, true);
|
||||
}
|
||||
|
||||
public static void Copy(string sourceDirName, string destDirName, bool copySubDirs)
|
||||
public static void Copy(string source, string target)
|
||||
{
|
||||
if (Directory.Exists(sourceDirName))
|
||||
var sourcePath = source.TrimEnd('\\', ' ');
|
||||
var targetPath = target.TrimEnd('\\', ' ');
|
||||
var files = Directory.EnumerateFiles(sourcePath, "*", SearchOption.AllDirectories)
|
||||
.GroupBy(s => Path.GetDirectoryName(s));
|
||||
foreach (var folder in files)
|
||||
{
|
||||
// Get the subdirectories for the specified directory.
|
||||
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
|
||||
var targetFolder = folder.Key.Replace(sourcePath, targetPath);
|
||||
|
||||
if (!dir.Exists)
|
||||
//Debug.WriteLine("Create directory: " + folder);
|
||||
Directory.CreateDirectory(targetFolder);
|
||||
foreach (var file in folder)
|
||||
{
|
||||
throw new DirectoryNotFoundException(
|
||||
"Source directory does not exist or could not be found: "
|
||||
+ sourceDirName);
|
||||
}
|
||||
|
||||
DirectoryInfo[] dirs = dir.GetDirectories();
|
||||
// If the destination directory doesn't exist, create it.
|
||||
if (!Directory.Exists(destDirName))
|
||||
{
|
||||
Directory.CreateDirectory(destDirName);
|
||||
}
|
||||
|
||||
// Get the files in the directory and copy them to the new location.
|
||||
FileInfo[] files = dir.GetFiles();
|
||||
foreach (FileInfo file in files)
|
||||
{
|
||||
Debug.WriteLine(file);
|
||||
string temppath = Path.Combine(destDirName, file.Name);
|
||||
file.CopyTo(temppath, true);
|
||||
}
|
||||
|
||||
// If copying subdirectories, copy them and their contents to new location.
|
||||
if (copySubDirs)
|
||||
{
|
||||
foreach (DirectoryInfo subdir in dirs)
|
||||
{
|
||||
string temppath = Path.Combine(destDirName, subdir.Name);
|
||||
Copy(subdir.FullName, temppath, copySubDirs);
|
||||
}
|
||||
var targetFile = Path.Combine(targetFolder, Path.GetFileName(file));
|
||||
File.Copy("\\\\?\\" + file, "\\\\?\\" + targetFile, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void Move(string sourceDirName, string destDirName, bool copySubDirs)
|
||||
public static void Move(string source, string target)
|
||||
{
|
||||
try
|
||||
var sourcePath = source.TrimEnd('\\', ' ');
|
||||
var targetPath = target.TrimEnd('\\', ' ');
|
||||
var files = Directory.EnumerateFiles(sourcePath, "*", SearchOption.AllDirectories)
|
||||
.GroupBy(s => Path.GetDirectoryName(s));
|
||||
foreach (var folder in files)
|
||||
{
|
||||
// Get the subdirectories for the specified directory.
|
||||
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
|
||||
var targetFolder = folder.Key.Replace(sourcePath, targetPath);
|
||||
|
||||
if (!dir.Exists)
|
||||
//Debug.WriteLine("Create directory: " + folder);
|
||||
Directory.CreateDirectory(targetFolder);
|
||||
foreach (var file in folder)
|
||||
{
|
||||
return;
|
||||
//throw new DirectoryNotFoundException(
|
||||
// "Source directory does not exist or could not be found: "
|
||||
// + sourceDirName);
|
||||
}
|
||||
|
||||
DirectoryInfo[] dirs = dir.GetDirectories();
|
||||
// If the destination directory doesn't exist, create it.
|
||||
if (!Directory.Exists(destDirName))
|
||||
{
|
||||
Directory.CreateDirectory(destDirName);
|
||||
}
|
||||
|
||||
// Get the files in the directory and move them to the new location.
|
||||
FileInfo[] files = dir.GetFiles();
|
||||
foreach (FileInfo file in files)
|
||||
{
|
||||
//string s = Path.Combine(Path.GetTempPath(), "AutoToaster", "Debugggg.txt");
|
||||
// File.AppendAllText(s, Path.Combine(destDirName, file.Name) + "\n");
|
||||
//HaveError(Environment.NewLine + ex, MainResources.Some_Error_Found);
|
||||
string temppath = Path.Combine(destDirName, file.Name);
|
||||
file.MoveTo(temppath, true);
|
||||
}
|
||||
|
||||
// If copying subdirectories, copy them and their contents to new location.
|
||||
if (copySubDirs)
|
||||
{
|
||||
foreach (DirectoryInfo subdir in dirs)
|
||||
{
|
||||
string temppath = Path.Combine(destDirName, subdir.Name);
|
||||
Move(subdir.FullName, temppath, copySubDirs);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (PathTooLongException)
|
||||
{
|
||||
throw new PathTooLongException("Path too long. Skipped");
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReplaceinFiles(string folderPath, string old, string replace, string extenstion = "*")
|
||||
{
|
||||
if (Directory.Exists(folderPath))
|
||||
{
|
||||
string[] filePaths = Directory.GetFiles(folderPath, extenstion, SearchOption.AllDirectories);
|
||||
foreach (string filePath in filePaths)
|
||||
{
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
string file = File.ReadAllText(filePath);
|
||||
if (file.Contains(old))
|
||||
{
|
||||
file = file.Replace(old, replace);
|
||||
File.WriteAllText(filePath, file);
|
||||
}
|
||||
}
|
||||
var targetFile = Path.Combine(targetFolder, Path.GetFileName(file));
|
||||
if (File.Exists(targetFile))
|
||||
File.Delete(targetFile);
|
||||
File.Move(file, targetFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReplaceinFilesRegex(string folderPath,string pattern, string replace, string extenstion = "*"
|
||||
)
|
||||
{
|
||||
if (Directory.Exists(folderPath))
|
||||
{
|
||||
string[] filePaths = Directory.GetFiles(folderPath, extenstion, SearchOption.AllDirectories);
|
||||
foreach (string filePath in filePaths)
|
||||
{
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
string file = File.ReadAllText(filePath);
|
||||
if (Regex.IsMatch(file, pattern))
|
||||
{
|
||||
file = Regex.Replace(file, pattern, replace);
|
||||
File.WriteAllText(filePath, file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReplaceinFilesRegex( string folderPath,string[] pattern,string replace,
|
||||
public static void ReplaceinFiles(
|
||||
string folderPath,
|
||||
string old,
|
||||
string replace,
|
||||
string extenstion = "*"
|
||||
)
|
||||
{
|
||||
if (Directory.Exists(folderPath))
|
||||
{
|
||||
string[] filePaths = Directory.GetFiles(folderPath, extenstion, SearchOption.AllDirectories);
|
||||
foreach (string filePath in filePaths)
|
||||
DirectoryInfo DR = new DirectoryInfo(folderPath);
|
||||
var filePaths = DR.EnumerateFiles(extenstion, SearchOption.AllDirectories).AsParallel();
|
||||
foreach (FileInfo filePath in filePaths)
|
||||
{
|
||||
if (File.Exists(filePath))
|
||||
if (File.Exists(filePath.FullName))
|
||||
{
|
||||
string file = File.ReadAllText(filePath);
|
||||
string file = File.ReadAllText(filePath.FullName);
|
||||
if (file.Contains(old))
|
||||
{
|
||||
file = file.Replace(old, replace);
|
||||
File.WriteAllText(filePath.FullName, file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReplaceinFilesRegex(
|
||||
string folderPath,
|
||||
string pattern,
|
||||
string replace,
|
||||
string extenstion = "*"
|
||||
)
|
||||
{
|
||||
if (Directory.Exists(folderPath))
|
||||
{
|
||||
DirectoryInfo DR = new DirectoryInfo(folderPath);
|
||||
var filePaths = DR.EnumerateFiles(extenstion, SearchOption.AllDirectories).AsParallel();
|
||||
foreach (FileInfo filePath in filePaths)
|
||||
{
|
||||
if (File.Exists(filePath.FullName))
|
||||
{
|
||||
string file = File.ReadAllText(filePath.FullName);
|
||||
if (Regex.IsMatch(file, pattern))
|
||||
{
|
||||
file = Regex.Replace(file, pattern, replace);
|
||||
File.WriteAllText(filePath.FullName, file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void ReplaceinFilesRegex(
|
||||
string folderPath,
|
||||
string[] pattern,
|
||||
string replace,
|
||||
string extenstion = "*.*"
|
||||
)
|
||||
{
|
||||
if (Directory.Exists(folderPath))
|
||||
{
|
||||
DirectoryInfo DR = new DirectoryInfo(folderPath);
|
||||
var filePaths = DR.EnumerateFiles(extenstion, SearchOption.AllDirectories).AsParallel();
|
||||
foreach (FileInfo filePath in filePaths)
|
||||
{
|
||||
if (File.Exists(filePath.FullName))
|
||||
{
|
||||
bool match = false;
|
||||
string file = File.ReadAllText(filePath.FullName);
|
||||
foreach (string pat in pattern)
|
||||
{
|
||||
if (Regex.IsMatch(file, pat))
|
||||
{
|
||||
file = Regex.Replace(file, pat, replace);
|
||||
File.WriteAllText(filePath, file);
|
||||
match = true;
|
||||
}
|
||||
}
|
||||
if (match)
|
||||
File.WriteAllText(filePath.FullName, file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Markup;
|
||||
|
||||
namespace SaveToGameWpf.Logic.Utils
|
||||
{
|
||||
@@ -33,52 +34,27 @@ namespace SaveToGameWpf.Logic.Utils
|
||||
|
||||
return filter == null ? items : items.Where(filter).ToArray();
|
||||
}
|
||||
public static void CheckDragEnter(this DragEventArgs e, string extensions)
|
||||
{
|
||||
if (!e.Data.GetDataPresent(DataFormats.FileDrop)) return;
|
||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
foreach (var file in files)
|
||||
{
|
||||
var ext = Path.GetExtension(file);
|
||||
if (!String.IsNullOrEmpty(extensions) && ext.Equals(extensions))
|
||||
{
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
return;
|
||||
}
|
||||
else if (String.IsNullOrEmpty(extensions) && File.Exists(Path.Combine(file, "AndroidManifest.xml")))
|
||||
{
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
return;
|
||||
}
|
||||
}
|
||||
e.Effect = DragDropEffects.None;
|
||||
}
|
||||
|
||||
public static bool CheckDragOver(this DragEventArgs e, string extensions)
|
||||
{
|
||||
if (!e.Data.GetDataPresent(DataFormats.FileDrop)) return false;
|
||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
foreach (var file in files)
|
||||
{
|
||||
var ext = Path.GetExtension(file);
|
||||
if (!String.IsNullOrEmpty(extensions) && ext.Equals(extensions))
|
||||
{
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
return true;
|
||||
}
|
||||
else if (String.IsNullOrEmpty(extensions) && File.Exists(Path.Combine(file, "AndroidManifest.xml")))
|
||||
{
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool CheckManyDragOver(this DragEventArgs e, params string[] extensions)
|
||||
public static void CheckDragEnter(this DragEventArgs e, params string[] extensions)
|
||||
{
|
||||
string[] files = e.GetFilesDrop();
|
||||
if (extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
if (extensions == null && Directory.Exists(files[0]))
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
else if (extensions != null && extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
e.Effect = DragDropEffects.Copy;
|
||||
else
|
||||
e.Effect = DragDropEffects.None;
|
||||
}
|
||||
|
||||
public static bool CheckDragOver(this DragEventArgs e, params string[] extensions)
|
||||
{
|
||||
string[] files = e.GetFilesDrop();
|
||||
if (extensions == null && Directory.Exists(files[0]))
|
||||
{
|
||||
e.Effect = DragDropEffects.Move;
|
||||
return true;
|
||||
}
|
||||
else if (files.Length == 1 && extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
{
|
||||
e.Effect = DragDropEffects.Move;
|
||||
return true;
|
||||
@@ -88,46 +64,57 @@ namespace SaveToGameWpf.Logic.Utils
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool DropOneByEnd(this DragEventArgs e, string ext, Action<string> onSuccess)
|
||||
{
|
||||
string[] files = e.GetFilesDrop(ext);
|
||||
|
||||
if (files.Length == 1)
|
||||
public static bool CheckManyDragOver(this DragEventArgs e, params string[] extensions)
|
||||
{
|
||||
string[] files = e.GetFilesDrop();
|
||||
|
||||
if (extensions == null && Directory.Exists(files[0]))
|
||||
{
|
||||
e.Effect = DragDropEffects.Move;
|
||||
return true;
|
||||
}
|
||||
else if (extensions != null && extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
{
|
||||
e.Effect = DragDropEffects.Move;
|
||||
return true;
|
||||
}
|
||||
e.Effect = DragDropEffects.None;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool DropOneByEnd(this DragEventArgs e, Action<string> onSuccess, params string[] extensions)
|
||||
{
|
||||
string[] files = e.GetFilesDrop();
|
||||
if (extensions == null && Directory.Exists(files[0]))
|
||||
{
|
||||
onSuccess(files[0]);
|
||||
return true;
|
||||
}
|
||||
else if (extensions.Any(ext => files[0].EndsWith(ext, StringComparison.Ordinal)))
|
||||
{
|
||||
onSuccess(files[0]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string DropOneByEnd(this DragEventArgs e, string ext)
|
||||
public static bool DropManyByEnd(this DragEventArgs e, Action<string[]> onSuccess, params string[] extensions)
|
||||
{
|
||||
string[] files = e.GetFilesDrop(ext);
|
||||
foreach (string apk in extensions)
|
||||
{
|
||||
Debug.WriteLine(apk);
|
||||
string[] files = e.GetFilesDrop(apk);
|
||||
|
||||
if (files.Length == 1)
|
||||
return files[0];
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void DropManyByEnd(this DragEventArgs e, string ext, Action<string[]> onSuccess)
|
||||
{
|
||||
string[] files = e.GetFilesDrop(ext);
|
||||
|
||||
if (files.Length > 0)
|
||||
onSuccess(files);
|
||||
}
|
||||
|
||||
public static string[] DropManyByEnd(this DragEventArgs e, string ext)
|
||||
{
|
||||
string[] files = e.GetFilesDrop(ext);
|
||||
|
||||
if (files.Length > 0)
|
||||
return files;
|
||||
|
||||
return null;
|
||||
if (files.Length > 0)
|
||||
{
|
||||
onSuccess(files);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
using Microsoft.Win32;
|
||||
using APKToolGUI.Languages;
|
||||
using APKToolGUI.Utils;
|
||||
using Microsoft.Build.Framework.XamlTypes;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace APKToolGUI
|
||||
{
|
||||
@@ -23,25 +25,19 @@ namespace APKToolGUI
|
||||
try
|
||||
{
|
||||
#region Add context menu to registry
|
||||
RegistryKey apkToolGUIFolderShell = Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey("APKToolGUI", RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
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", "APKToolGUI");
|
||||
apkToolGUIFolderShell.SetValue("MUIVerb", Application.ProductName);
|
||||
apkToolGUIFolderShell.SetValue("SubCommands", "APKToolGUI.Build;APKToolGUI.Smali");
|
||||
apkToolGUIFolderShell.Close();
|
||||
|
||||
Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(".apk", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", executablePath, RegistryValueKind.ExpandString);
|
||||
RegistryKey shellAPK = Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.CreateSubKey).CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("APKToolGUI", RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
shellAPK.SetValue("Icon", "\"" + executablePath + "\"");
|
||||
shellAPK.SetValue("MUIVerb", "APKToolGUI");
|
||||
shellAPK.SetValue("SubCommands", "APKToolGUI.Decompile;APKToolGUI.Sign;APKToolGUI.Zipalign");
|
||||
shellAPK.Close();
|
||||
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");
|
||||
CreateFileAssociationsSubKey(executablePath, ".apkm", "APKToolGUI.Decompile");
|
||||
|
||||
Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(".dex", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", executablePath, RegistryValueKind.ExpandString);
|
||||
RegistryKey shellDEX = Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.dex", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.CreateSubKey).CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("APKToolGUI", RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
shellDEX.SetValue("Icon", "\"" + executablePath + "\"");
|
||||
shellDEX.SetValue("MUIVerb", "APKToolGUI");
|
||||
shellDEX.SetValue("SubCommands", "APKToolGUI.Baksmali");
|
||||
shellDEX.Close();
|
||||
CreateFileAssociationsSubKey(executablePath, ".dex", "APKToolGUI.Baksmali");
|
||||
#endregion
|
||||
|
||||
#region Add command to registry
|
||||
@@ -90,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();
|
||||
@@ -104,6 +100,18 @@ namespace APKToolGUI
|
||||
return new Status(true, "Done!");
|
||||
}
|
||||
|
||||
public static void CreateFileAssociationsSubKey(string executablePath, string fileExtension, string subCommands)
|
||||
{
|
||||
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(Application.ProductName, RegistryKeyPermissionCheck.ReadWriteSubTree);
|
||||
|
||||
shell.SetValue("Icon", "\"" + executablePath + "\"");
|
||||
shell.SetValue("MUIVerb", Application.ProductName);
|
||||
shell.SetValue("SubCommands", subCommands);
|
||||
shell.Close();
|
||||
}
|
||||
|
||||
public static Status Remove()
|
||||
{
|
||||
try
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace APKToolGUI.Utils
|
||||
{
|
||||
internal class FileUtils
|
||||
{
|
||||
public static void Move(string sourceFileName, string destFileName, bool overwrite = false)
|
||||
{
|
||||
if (File.Exists(destFileName) && overwrite)
|
||||
File.Delete(destFileName);
|
||||
File.Move(sourceFileName, destFileName);
|
||||
}
|
||||
|
||||
public static void Copy(string sourceFileName, string destFileName, bool overwrite = false)
|
||||
{
|
||||
if (File.Exists(sourceFileName))
|
||||
File.Copy(sourceFileName, destFileName, overwrite);
|
||||
}
|
||||
|
||||
public static void Delete(string sourceFileName)
|
||||
{
|
||||
if (File.Exists(sourceFileName))
|
||||
File.Delete(sourceFileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
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
|
||||
{
|
||||
/// <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.Infomation, 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,5 +32,16 @@ namespace APKToolGUI.Utils
|
||||
{
|
||||
return Path.Combine(Path.GetDirectoryName(path), Path.GetFileNameWithoutExtension(path));
|
||||
}
|
||||
|
||||
public static string GetRelativePath(string relativeTo, string path)
|
||||
{
|
||||
var uri = new Uri(relativeTo);
|
||||
var rel = Uri.UnescapeDataString(uri.MakeRelativeUri(new Uri(path)).ToString()).Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
|
||||
if (rel.Contains(Path.DirectorySeparatorChar.ToString()) == false)
|
||||
{
|
||||
rel = $".{Path.DirectorySeparatorChar}{rel}";
|
||||
}
|
||||
return rel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
using Microsoft.Build.Utilities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Management;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace APKToolGUI.Utils
|
||||
{
|
||||
internal class ProcessUtils
|
||||
{
|
||||
public static void KillAllProcessesSpawnedBy(UInt32 parentProcessId)
|
||||
{
|
||||
// NOTE: Process Ids are reused!
|
||||
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
|
||||
"SELECT * " +
|
||||
"FROM Win32_Process " +
|
||||
"WHERE ParentProcessId=" + parentProcessId);
|
||||
ManagementObjectCollection collection = searcher.Get();
|
||||
if (collection.Count > 0)
|
||||
{
|
||||
foreach (var item in collection)
|
||||
{
|
||||
UInt32 childProcessId = (UInt32)item["ProcessId"];
|
||||
if ((int)childProcessId != Process.GetCurrentProcess().Id)
|
||||
{
|
||||
Debug.WriteLine($"Kill child process {childProcessId}");
|
||||
KillAllProcessesSpawnedBy(childProcessId);
|
||||
|
||||
Process childProcess = Process.GetProcessById((int)childProcessId);
|
||||
childProcess.Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -69,5 +69,16 @@ namespace APKToolGUI.Utils
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool ContainsAny(this string haystack, params string[] needles)
|
||||
{
|
||||
foreach (string needle in needles)
|
||||
{
|
||||
if (haystack.Contains(needle))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Documents;
|
||||
|
||||
namespace APKToolGUI.Utils
|
||||
{
|
||||
@@ -112,6 +113,15 @@ namespace APKToolGUI.Utils
|
||||
}
|
||||
}
|
||||
|
||||
public static void ExtractAll(string path, string destination, bool flattenFoldersOnExtract = false)
|
||||
{
|
||||
using (ZipFile zip = ZipFile.Read(path))
|
||||
{
|
||||
zip.FlattenFoldersOnExtract = flattenFoldersOnExtract;
|
||||
zip.ExtractAll(destination, ExtractExistingFileAction.OverwriteSilently);
|
||||
}
|
||||
}
|
||||
|
||||
public static void AddDirectory(string path, string fileName, string directoryPathInArchive = "")
|
||||
{
|
||||
ZipFile zip = new ZipFile();
|
||||
@@ -154,5 +164,6 @@ namespace APKToolGUI.Utils
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
<setting name="Decode_InputAppPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="Decode_FrameDir" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="BuildProjectDir" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
@@ -59,7 +56,7 @@
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="ClearLogBeforeAction" serializeAs="String">
|
||||
<value>False</value>
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="Decode_MatchOriginal" serializeAs="String">
|
||||
<value>False</value>
|
||||
@@ -70,9 +67,6 @@
|
||||
<setting name="Build_CopyOriginal" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Build_FrameDir" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="Build_UseFramework" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
@@ -91,7 +85,7 @@
|
||||
<setting name="Build_InputDir" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InstallFramework_UseFrameDir" serializeAs="String">
|
||||
<setting name="Framework_UseFrameDir" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="InstallFramework_UseTag" serializeAs="String">
|
||||
@@ -100,7 +94,7 @@
|
||||
<setting name="InstallFramework_Tag" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="InstallFramework_FrameDir" serializeAs="String">
|
||||
<setting name="Framework_FrameDir" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="Zipalign_AlignmentInBytes" serializeAs="String">
|
||||
@@ -155,7 +149,7 @@
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Zipalign_SignAfterZipAlign" serializeAs="String">
|
||||
<value>False</value>
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="Sign_Alias" serializeAs="String">
|
||||
<value>CERT</value>
|
||||
@@ -188,7 +182,7 @@
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="Sign_Schemev4" serializeAs="String">
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="Decode_ApiLevel" serializeAs="String">
|
||||
<value>29</value>
|
||||
@@ -229,6 +223,72 @@
|
||||
<setting name="Build_UseAapt2" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="PlaySoundWhenDone" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UseCustomTempDir" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="TempDir" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="UseCustomJavaExe" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="AutoDeleteIdsigFile" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="Utf8FilenameSupport" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Sign_OverwriteInputFile" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Adb_SetVendor" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Adb_SelectedApkPath" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="Sign_InstallApkAfterSign" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UseCustomApktool" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<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>
|
||||
<setting name="SplitApk_InputFile" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="UseApkeditor" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="Adb_OverrideAbi" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
<setting name="Adb_SetOverrideAbi" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
</APKToolGUI.Properties.Settings>
|
||||
</userSettings>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup>
|
||||
@@ -238,6 +298,18 @@
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="WinCopies.WindowsAPICodePack.Win32Native" publicKeyToken="ac0f4cf54a027a4d" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.10.1.0" newVersion="2.10.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="WinCopies.Util" publicKeyToken="cb02bf7a62cec965" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-2.17.0.0" newVersion="2.17.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
|
||||
@@ -1,22 +1,26 @@
|
||||
<?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.0" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="Microsoft.NETCore.Platforms" version="6.0.2" 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.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="ResourceLoader" version="3.3.1" targetFramework="net48" />
|
||||
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
|
||||
<package id="System.Collections" version="4.3.0" targetFramework="net48" />
|
||||
<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="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Diagnostics.DiagnosticSource" version="8.0.0" 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" />
|
||||
@@ -28,7 +32,7 @@
|
||||
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.4" targetFramework="net48" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
|
||||
<package id="System.Net.Http" version="4.3.4" targetFramework="net48" />
|
||||
<package id="System.Net.Primitives" version="4.3.1" targetFramework="net48" />
|
||||
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net48" />
|
||||
@@ -37,7 +41,7 @@
|
||||
<package id="System.Reflection" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Resources.Extensions" version="6.0.0" targetFramework="net48" />
|
||||
<package id="System.Resources.Extensions" version="8.0.0" targetFramework="net48" />
|
||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
|
||||
<package id="System.Runtime" version="4.3.1" targetFramework="net48" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
|
||||
|
||||
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
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)
|
||||
|
||||
@@ -10,42 +10,73 @@ It is a tool for reverse engineering 3rd party, closed, binary Android apps. It
|
||||
# Download links
|
||||
https://github.com/AndnixSH/APKToolGUI/releases
|
||||
|
||||
https://app.box.com/s/y0cxdzxknb98v3c90e705ltzuehjiddn
|
||||
Any such report from your antivirus is a false positive and is due to how the application works. You must manually add APKToolGUI.exe to your antivirus's whitelist/exclusion list.
|
||||
|
||||
https://mega.nz/folder/aBxWnaSA#XMLOS9bPJgtTTd2vEjh2SQ
|
||||
If you don't believe this then try to compile the app by yourself or simply don't use it until you can confirm it is safe by working directly with your antiirus provider.
|
||||
|
||||
https://sbupload.com/folder/3324/APK_Tool_GUI
|
||||
# Requirements
|
||||
- Windows 7 and above
|
||||
- JDK/JRE 8 and above. Highly recommended to use 64-bit version of Java if your system is 64-bit
|
||||
- .NET Framework 4.8
|
||||
- Windows 7 32-bit/64-bit and above
|
||||
- [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
|
||||
- Compile APK
|
||||
- Decompile & compile APK using Apktool
|
||||
- Decompile APK/XAPK/APKS/ZIP/APKM & compile APK using APKEditor.jar. Automatically detect if APK was decompiled using Apktool or APKEditor
|
||||
- Merge XAPK/APKS/ZIP/APKM using APKEditor.jar
|
||||
- Sign APK
|
||||
- Zipalign APK
|
||||
- ADB
|
||||
- Framework
|
||||
- Drag and drop
|
||||
- APK info
|
||||
- Log
|
||||
- All features from [Apktool](https://ibotpeaches.github.io/Apktool/documentation/).
|
||||
- Additional features that can fix some Apktool errors, such as removing DUMMY_APKTOOL, clear framework before decompiling
|
||||
- Log output
|
||||
- All other features from [Apktool](https://ibotpeaches.github.io/Apktool/documentation/).
|
||||
- Fix some Apktool errors, such as removing DUMMY_APKTOOL, clear framework before decompiling
|
||||
- Multi language
|
||||
- Right-click context menu
|
||||
- Create unsigned APK for Core Patch
|
||||
- High DPI support
|
||||
- Long path support (Windows 10 and above)
|
||||
|
||||
# Languages
|
||||
- English
|
||||
- Brazilian Portuguese (Incomplete)
|
||||
- Hungary (Incomplete)
|
||||
- Russian (Incomplete)
|
||||
- Chinese Simplified (Incomplete)
|
||||
- German
|
||||
|
||||
### Translation
|
||||
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, 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.
|
||||
|
||||
<details>
|
||||
|
||||
<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
|
||||
|
||||
3rd party tools can't be translated.
|
||||
|
||||
Make pull request when you are done
|
||||
|
||||
# Issues
|
||||
Issues with Apktool, read the log, check if your modification and/or syntax is correct. If not, check this page https://github.com/iBotPeaches/Apktool/issues
|
||||
Issues with Apktool? Please do cursory search of the issue tracker of [Apktool](https://github.com/iBotPeaches/Apktool/issues?q=is%3Aissue) and [Baksmali](https://github.com/JesusFreke/smali/issues?q=is%3Aissue), see if your question may be answered
|
||||
|
||||
Otherwise, report issues here and I will point you to the right direction.
|
||||
For Framework/system apps related issues, check on [XDA Forum](https://forum.xda-developers.com/)
|
||||
|
||||
Framework/system apps related issues, check on [XDA Forum](https://forum.xda-developers.com/)
|
||||
**Some apps may been protected or obfuscated for content protection purposes or against cheaters. Bypassing of such is beyond the scope of this tool, so please DO NOT post an issue regarding to it. This tool does not support bypassing such protections, and never will be!**
|
||||
|
||||
**Sometimes apps may protect or obfuscate for content protection purposes and so on. Bypassing of such is beyond the scope of this tool, so please DO NOT post an issue regarding to it. This tool does not support bypassing such securities**
|
||||
Anything else, [create a new issue](https://github.com/AndnixSH/APKToolGUI/issues)
|
||||
|
||||
# FAQ
|
||||
##### Q: Can it be ported to other OS like Linux?
|
||||
A: Maybe, but it's not easy since Microsoft is dumb for not making it easy for .NET Core unlike Java's GUI which supports all supported platforms
|
||||
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
|
||||
@@ -54,28 +85,39 @@ A: Download [Apktool.jar](https://github.com/iBotPeaches/Apktool/releases) and r
|
||||
A: Download [Baksmali.jar/Smali.jar](https://bitbucket.org/JesusFreke/smali/downloads/) and replace it on Resources folder
|
||||
|
||||
##### Q: How to reset?
|
||||
A: Simply delete the config.xml file
|
||||
|
||||
##### Q: Why this tool is a virus?
|
||||
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
|
||||
A: Simply delete the config.xml file from the directory of the executeable
|
||||
|
||||
##### Q: Can you make an automatic APK injecting tool?
|
||||
A: No, that's not the point of this tool, and I don't have time for that. However, you can try making it by yourself, or have a look on [SaveToGame](https://github.com/And42/SaveToGame) which can give you ideas how to do it.
|
||||
A: No, I'm not interested.
|
||||
|
||||
##### 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)
|
||||
|
||||
##### 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#
|
||||
|
||||
Use Visual Studio 2019 and above. NET Framework 4.8 SDK is required
|
||||
|
||||
### Translation
|
||||
Currently there is two languages, english and russian. Russian is not complete because I don't speak russian, it was originally written by INF1NUM. If you like to translate russian or other language, feel free to do it and pull request
|
||||
|
||||
- Create new resx file under Languages folder. It is used for cs files
|
||||
|
||||
- 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
|
||||
|
||||
# Credits
|
||||
- AndnixSH
|
||||
- iBotPeaches ([Apktool](https://ibotpeaches.github.io/Apktool/))
|
||||
- INF1NUM (Original author of [APKToolGUI](https://github.com/INF1NUM/APKToolGUI))
|
||||
- iBotPeaches ([Apktool CLI](https://ibotpeaches.github.io/Apktool/))
|
||||
- REAndroid ([APKEditor](https://github.com/REAndroid/APKEditor))
|
||||
|
||||
# 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.
|
||||
|
||||
# License
|
||||
The original repo does not have a license but I have permission from the author to use ane distribute this project as "open source"... I don't know what license to use so I'll just add license as unlicensed
|
||||
|
||||