This commit is contained in:
INFINUM
2015-11-13 10:33:01 +03:00
parent cafedffa0e
commit 6db01d4fc6
129 changed files with 14619 additions and 0 deletions
+188
View File
@@ -0,0 +1,188 @@
[size=4][b][color=blue]APKToolGUI[/size][/b][/color]
[size=3][b]версия: 2.3.3.0[/b][/size]
[i]Последнее обновление программы в шапке: [b]22.10.2014[/b][/i]
[attachment="4387556:1.png"]
[spoiler=Скриншоты][attachment="4387557:2.png"][attachment="4387558:3.png"][attachment="4387559:4.png"]
[attachment="4387560:5.png"][attachment="4387561:6.png"][attachment="4387562:7.png"][/spoiler]
[b]Краткое описание:[/b]
Программа для более комфортного использования утилит для работы с APK-файлами.
[b]Описание:[/b]
[list]
[*]Декомпиляция APK;
[*]Компиляция APK;
[*]Подпись APK;
[*]zipalign.
[/list]
[spoiler=Для версий ниже 2.0.0.0]У кого выдаёт ошибки при компиляции попробуйте закинуть в папку tools в каталоге программы этот [attachment="2956962:aapt.exe"] или этот [attachment="2956963:aapt.exe"] файл (с заменой). Это файлы из комплекта программ jBART и CloudBuildr. Не знаю где они это взяли или как сделали, но с ними компиляция должна выполняться, хоть и с предупреждениями.[/spoiler]
[b]Системные требования:[/b]
[url="http://www.java.com/ru/download/manual.jsp#win"]Java[/url]
[url="http://www.microsoft.com/ru-ru/download/details.aspx?id=24872"]Microsoft .NET Framework 4.0[/url]
[b]Русский интерфейс:[/b] Да
[b]Разработчик:[/b] INFINUM
[spoiler=Список изменений] [b]2.3.3.0[/b]
[list][*]Не помню, скорее всего ничего существенного. К тому же версия 2.3.2.0 "пропала".[/list]
[b]2.3.2.0[/b]
[list][*]Добавлена опциональная возможность очищать журнал событий перед выполнение действия
[*]Добавлена возможность очищать журнал событий из контекстного меню журнала.
[*]В диалоги выбора файла для декомпиляции и подписи добавлена возможность выбора файлов любого типа[/list]
[b]2.3.1.2[/b]
[list][*]Исправлено определение типа файла при подписи из главного окна программы[/list]
[b]2.3.1.1[/b]
[list][*]Исправлен прогрессбар в окне из контекстного меню.[/list]
[b]2.3.1.0[/b]
[list][*]Теперь настройки программы хранятся в каталоге программы.[/list]
[b]2.3.0.1[/b]
[list][*]Исправлено появление окна при установке/удалении контекстного меню.
[*]Исправлена ошибка установки/удаления контекстного меню на Windows XP.[/list]
[b]2.3.0.0[/b]
[list][*]Новый лог, более читабельный.
[*]Статусбар.
[*]Проверка обновлений при запуске (но не чаще, чем раз в сутки). Отключается в настройках.
[*]Добавлена возможность при неудачном поиске явы указать пользовательское расположение.
[*]Немного ускорил запуск программы.
[*]Рефакторинг и оптимизации.[/list]
[b]2.2.1.0[/b]
[list][*]Исправлена ошибка при закрытии программы в случае неудачного поиска расположения явы.
[*]Исправлена ошибка в результате которой повторный запуск выполняющейся задачи приводил к падению программы.
[*]Добавлеа возможность подписывать zip-архивы.
[*]Обновлен zipalign.exe.
[*]Мелкие оптимизации и рефакторинг.[/list]
[b]2.2.0.0[/b]
[list][*]Рефакторинг всего и вся.
[*]Оптимизировано использование памяти.
[*]Добавлена многоуровневая система поиска расположения Java Runtime (подробнее в FAQ).
[*]Добавлена возможность использования портативной Java Runtime (подробнее в FAQ).
[*]Блокировка формы на период выполнения операций apktool для исключения повторного запуска выполняемого процесса.
[*]Прочие мелки оптимизации.[/list]
[b]2.1.3.2[/b]
[list][*]Исправлено добавление в контекстное меня таких объектов как "Корзина", "Мой компьютер" и т.д.
[*]apktool обновлён до версии 2.0.0 BETA 9[/list]
[b]2.1.3.1[/b]
[list][*]Исправлено подвисание программы при проверке обновления
[*]Исправлена подпись файла из главного окна программы[/list]
[b]2.1.3.0[/b]
[list]
[*]Группировка пунктов контекстного меню (Пока только для Windows Vista и новее. Внимание! Сначала удалите старое меню версией 2.1.2.1)
[*]Перевод для элементов контекстного меню
[*]Исправлен выбор языка интерфейса программы
[*]Добавлена украинская локализация (спасибо LinXP)
[*]Прочие мелкие изменения
[/list]
[b]2.1.2.1[/b]
[list]
[*]Исправление ошибок.
[/list]
[b]2.1.2.0[/b]
[list]
[*]Теперь откомпилированный файл приложения сохраняется рядом с папкой проекта с приставкой даты компиляции в названии.
[/list]
[b]2.1.1.0:[/b]
[list]
[*]Исправил установку фреймворков;
[*]Добавил настройки шрифта логов;
[*]Убрал автоообновление, нет нормального хостинга.
[/list]
[b]2.1.0.0:[/b]
[list]
[*]Добавлена возможность работать с apktool из контекстного меню проводника (требуются права Администратора);
[*]Начиная с этой версии используется .NET Framework версии 4.0.
[/list]
[b]2.0.0.0:[/b]
[list]
[*]Программа адаптирована для apktool.jar версии 2.0 (не совместима с более низкими версиями);
[*]aapt.exe больше не идёт в коплекте с программой, т.к. зашит в apktool.jar;
[*]Добавлена возможность использования aapt.exe не из комплекта apktool.jar;
[*]Добавлена возможность выбора расположения framework'ов (хз как это работает, читайте мануалы по apktool);
[*]Мелкие изменения и оптимизации.
[/list]
[b]1.3.3.0:[/b]
[list]
[*]Русская и Английская локализация;
[*]Доработан механизм автообновления;
[*]Мелкие изменения в интерфейсе.
[/list]
[b]1.3.2.0:[/b]
[list]
[*]Добавил фильтр для декомпиляции *.jar-файлов.
[/list]
[b]1.3.1.0:[/b]
[list]
[*]Добавил проверку обновлений и автоматическое обновление (Справка -> Проверить обновление).
[/list]
[b]1.3.0.0:[/b]
[list]
[*]Добавил [url="http://developer.android.com/tools/help/zipalign.html"]zipalign[/url]. Обработанный файл сохраняется рядом с исходным с приставкой _zipaligned. Пока так. Поскольку пакетная обработка выполняется в нескольких потоках, в логе будет каша. Главное, чтобы не было ошибок.
[/list]
[/spoiler]
[color=blue][b]Скачать:[/b][/color] [attachment="5257492:APKToolGUI_2.3.3.0.zip"] [b]версия: 2.3.3.0[/b]
[b]Java(TM) SE Runtime Environment 7 update 60[/b]
[color=blue][b]Скачать:[/b][/color] [attachment="4717690:jre7u60.zip"]
[url="http://4pda.ru/forum/index.php?s=&showtopic=452034&view=findpost&p=35250413"]Инсталлятор[/url]
[spoiler= Прошлые версии ]
[attachment="4717621:APKToolGUI_2.3.2.0.zip"]
[attachment="4515205:APKToolGUI_2.3.1.2.zip"]
[attachment="4485106:APKToolGUI_2.3.1.1.zip"]
[attachment="4476662:APKToolGUI_2.3.1.0.zip"]
[attachment="4389243:APKToolG...v2.3.0.1.zip"]
[attachment="4387575:APKToolG...v2.3.0.0.zip"]
[attachment="4353548:APKToolG...v2.2.1.0.zip"]
[attachment="4330218:APKToolG...v2.2.0.0.zip"]
[attachment="4232754:APKToolGUI_2.1.3.2.zip"]
[attachment="3992446:APKToolGUI_2.1.3.1.zip"]
[attachment="3757734:APKToolGUI_2.1.3.0.zip"]
[attachment="3736877:APKToolGUI_2.1.2.1.zip"]
[attachment="3729566:APKToolGUI_2.1.2.0.zip"]
[attachment="3727071:APKToolGUI_2.1.1.0.zip"]
[attachment="3726068:APKToolGUI_2.1.0.0.zip"]
[attachment="3688451:APKToolGUI_2.0.0.0.zip"]
[attachment="3389648:APKToolG...v1.3.3.0.zip"]
[attachment="3121747:APKToolG...v1.3.2.0.zip"]
[attachment="2957599:APKToolG...v1.3.1.0.zip"]
[attachment="2956918:APKToolG...v1.3.0.0.zip"]
[attachment="2831430:APKToolG...v1.2.0.1.zip"]
[attachment="2819181:release_APKToolGUI v1.2.0.0.zip"][/spoiler]
[spoiler=[size=3]FAQ[/size]]
[b]Q:[/b] Как происходит поиск расположения Java Runtime?
[b]A:[/b] При запуске программы выполняется поиск в следующей последовательности:
[list=1][*]Поиск в каталоге программы tools\Java. В этом случае программу можно использовать как портативную.
[*]Проверка доступности явы, заданной в настройках программы
[*]Проверка работоспособности системной переменной "java"
[*]Поиск в папке Programm Files\Java[/list]
Если все уровни пройдут безуспешно, программа выдаст сообщение и закроется.
[b]Q:[/b] Я установил яву, но программа её не видит. Что делать?
[b]А1:[/b] Укажите расположение java.exe в настройках программы.
[b]A2:[/b] Распакуйте [url="http://4pda.ru/forum/dl/post/4717690/jre7u60.zip"]этот архив[/url] в каталог программы по пути tools\Java.
[b]A3:[/b] Добавьте яву в системные переменные. [url="http://www.java.com/ru/download/help/path.xml"]Как это сделать[/url].
[b]Q:[/b] Программа выдаёт ошибку при распаковке.
[b]А:[/b] Здесь обсуждается работа оболочки для apktool.jar, которая никоим образом не влияет на работу самого apktool.jar. С подобного рода проблемами вы можете обратиться [url="http://4pda.ru/forum/index.php?showtopic=163632"]сюда[/url].
[/spoiler]
[spoiler=ToDo][list][*]Компиляция/декомпиляция dex-файлов
[*][s][url="http://4pda.ru/forum/index.php?s=&showtopic=452034&view=findpost&p=32036380"]APKToolGUI (Пост #32036380)[/url][/s]
[*][s][url="http://4pda.ru/forum/index.php?s=&showtopic=452034&view=findpost&p=32066803"]APKToolGUI (Пост #32066803)[/url][/s]
[*]Экспорт журнала событий в файл/буфер обмена
[*]Отвязать операции выполняемые из контекстного меню проводника от основных настроек программы[/list][/spoiler]
[spoiler=Благодарности][b][url="http://4pda.ru/forum/index.php?showuser=1731493"]Breathe of fate[/url][/b] за помощь с переводом на русский.
[b][url="http://4pda.ru/forum/index.php?showuser=80860"]LinXP[/url][/b] за украинскую локализацию.[/spoiler]
[b][size=3][color=red][center]Eсли у Вас проблемы со сборкой/декомпиляцией приложений - моя программа здесь не при чём!
Пишите [url="http://4pda.ru/forum/index.php?showtopic=163632"]в тему APKTool[/url]![/center][/color][/size][/b]
+38
View File
@@ -0,0 +1,38 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "APKToolGUI", "APKToolGUI\APKToolGUI.csproj", "{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Any CPU.ActiveCfg = Debug|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Any CPU.Build.0 = Debug|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|Mixed Platforms.Build.0 = Debug|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|x64.ActiveCfg = Debug|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|x86.ActiveCfg = Debug|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Debug|x86.Build.0 = Debug|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Any CPU.ActiveCfg = Release|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Any CPU.Build.0 = Release|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Mixed Platforms.ActiveCfg = Release|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|Mixed Platforms.Build.0 = Release|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|x64.ActiveCfg = Release|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|x86.ActiveCfg = Release|x86
{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
BIN
View File
Binary file not shown.
+231
View File
@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{AA2C8BC1-ED99-463A-9363-F6A87FB2CF38}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>APKToolGUI</RootNamespace>
<AssemblyName>APKToolGUI</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
<IsWebBootstrapper>false</IsWebBootstrapper>
<AssemblyInfoFilePath>Properties\AssemblyInfo.cs</AssemblyInfoFilePath>
<UpdateAssemblyVersion>True</UpdateAssemblyVersion>
<UpdateAssemblyFileVersion>True</UpdateAssemblyFileVersion>
<UpdateAssemblyInfoVersion>False</UpdateAssemblyInfoVersion>
<AssemblyVersionSettings>None.None.None.Increment</AssemblyVersionSettings>
<AssemblyFileVersionSettings>None.None.None.Increment</AssemblyFileVersionSettings>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.0</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>false</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>true</UseVSHostingProcess>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<UseVSHostingProcess>false</UseVSHostingProcess>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>android.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup />
<PropertyGroup />
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Apktool.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Signapk.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Zipalign.cs" />
<Compile Include="ExplorerContextMenu.cs" />
<Compile Include="FormAboutBox.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormAboutBox.Designer.cs">
<DependentUpon>FormAboutBox.cs</DependentUpon>
</Compile>
<Compile Include="FormBuild.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormBuild.Designer.cs">
<DependentUpon>FormBuild.cs</DependentUpon>
</Compile>
<Compile Include="FormDecode.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormDecode.Designer.cs">
<DependentUpon>FormDecode.cs</DependentUpon>
</Compile>
<Compile Include="FormMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormMain.Designer.cs">
<DependentUpon>FormMain.cs</DependentUpon>
</Compile>
<Compile Include="FormSettings.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormSettings.Designer.cs">
<DependentUpon>FormSettings.cs</DependentUpon>
</Compile>
<Compile Include="Java\JarProcess.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Java\JavaUtils.cs" />
<Compile Include="PortableSettingsProvider.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Language.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Language.resx</DependentUpon>
</Compile>
<Compile Include="UpdateChecker.cs" />
<EmbeddedResource Include="FormAboutBox.resx">
<DependentUpon>FormAboutBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormAboutBox.ru.resx">
<DependentUpon>FormAboutBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormBuild.resx">
<DependentUpon>FormBuild.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormDecode.resx">
<DependentUpon>FormDecode.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormMain.ru.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormSettings.resx">
<DependentUpon>FormSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormSettings.ru.resx">
<DependentUpon>FormSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Language.ru.resx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="Language.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Language.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="app.config" />
<None Include="Properties\app.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="android.ico" />
<None Include="Resources\waiting.png" />
<None Include="Resources\android-thin.ico" />
<None Include="Resources\Info1.png" />
<None Include="Resources\Done.png" />
<None Include="Resources\GUI.png" />
<None Include="Resources\exclamation-red-frame-icon.png" />
<None Include="Resources\warning.png" />
<None Include="Resources\android.png" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0,Profile=Client">
<Visible>False</Visible>
<ProductName>Клиентский профиль Microsoft .NET Framework 4 %28x86 и x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>Клиентский профиль .NET Framework 3.5 с пакетом обновления 1 %28SP1%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Установщик Windows 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.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">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
+25
View File
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>ru-RU</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<StartArguments>
</StartArguments>
<StartWorkingDirectory>
</StartWorkingDirectory>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<StartArguments>d "app.apk"</StartArguments>
</PropertyGroup>
</Project>
+554
View File
@@ -0,0 +1,554 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text.RegularExpressions;
using Java;
namespace APKToolGUI
{
public class Apktool : JarProcess
{
enum ApktoolActionType
{
Decompile,
Build,
InstallFramework,
Null
}
static class DecompileKeys
{
public const string NoSource = " -s";
public const string NoResource = " -r";
public const string Force = " -f";
public const string FrameworkPath = " -p";
public const string KeepBrokenResource = " -k";
public const string MatchOriginal = " -m";
public const string OutputDir = " -o";
}
static class BuildKeys
{
public const string ForceAll = " -f";
public const string CopyOriginal = " -c";
public const string Aapt = " -a";
public const string FrameworkPath = " -p";
public const string OutputAppPath = " -o";
}
static class InstallFrameworkKeys
{
public const string FrameDir = " -p";
public const string Tag = " -t";
}
ApktoolActionType lastActionType = ApktoolActionType.Null;
string lastFilePath;
string lastProjectDir;
ApktoolDataReceivedEventHandler onApktoolOutputDataRecieved;
ApktoolDataReceivedEventHandler onApktoolErrorDataRecieved;
ApktoolEventCompletedEventHandler onBuildCompleted;
ApktoolEventCompletedEventHandler onDecompilingCompleted;
ApktoolEventCompletedEventHandler onInstallFrameworkCompleted;
public event ApktoolDataReceivedEventHandler ApktoolOutputDataRecieved
{
add
{
onApktoolOutputDataRecieved += value;
}
remove
{
onApktoolOutputDataRecieved -= value;
}
}
public event ApktoolDataReceivedEventHandler ApktoolErrorDataRecieved
{
add
{
onApktoolErrorDataRecieved += value;
}
remove
{
onApktoolErrorDataRecieved -= value;
}
}
public event ApktoolEventCompletedEventHandler BuildCompleted
{
add
{
onBuildCompleted += value;
}
remove
{
onBuildCompleted -= value;
}
}
public event ApktoolEventCompletedEventHandler DecompilingCompleted
{
add
{
onDecompilingCompleted += value;
}
remove
{
onDecompilingCompleted -= value;
}
}
public event ApktoolEventCompletedEventHandler InstallFrameworkCompleted
{
add
{
onInstallFrameworkCompleted += value;
}
remove
{
onInstallFrameworkCompleted -= value;
}
}
public Apktool(string javaPath, string jarPath) : base(javaPath, jarPath)
{
this.Exited += Apktool_Exited;
this.OutputDataReceived += Apktool_OutputDataReceived;
this.ErrorDataReceived += Apktool_ErrorDataReceived;
}
private void Apktool_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
if (onApktoolErrorDataRecieved != null && e.Data != null)
onApktoolErrorDataRecieved(this, new ApktoolDataReceivedEventArgs(e.Data));
}
private void Apktool_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (onApktoolOutputDataRecieved != null && e.Data != null)
onApktoolOutputDataRecieved(this, new ApktoolDataReceivedEventArgs(e.Data));
}
private void Apktool_Exited(object sender, EventArgs e)
{
this.CancelOutputRead();
this.CancelErrorRead();
switch (lastActionType)
{
case ApktoolActionType.Build:
if (onBuildCompleted != null)
onBuildCompleted(this, new ApktoolEventCompletedEventArgs(this.ExitCode, lastFilePath, lastProjectDir));
lastActionType = ApktoolActionType.Null;
break;
case ApktoolActionType.Decompile:
if (onDecompilingCompleted != null)
onDecompilingCompleted(this, new ApktoolEventCompletedEventArgs(this.ExitCode, lastFilePath, lastProjectDir));
lastActionType = ApktoolActionType.Null;
break;
case ApktoolActionType.InstallFramework:
if (onInstallFrameworkCompleted != null)
onInstallFrameworkCompleted(this, new ApktoolEventCompletedEventArgs(this.ExitCode, lastFilePath, lastProjectDir));
lastActionType = ApktoolActionType.Null;
break;
case ApktoolActionType.Null:
break;
default:
break;
}
}
public bool Decompile(DecompileOptions options)
{
lastActionType = ApktoolActionType.Decompile;
lastFilePath = options.AppPath;
lastProjectDir = options.OutputDirectory;
string keyNoSrc = null, keyNoRes = null, keyForce = null, keyFramePath = null, keyKeepBrokenRes = null, keyMatchOriginal = null, keyOutputDir = null;
if (options.NoSource)
keyNoSrc = DecompileKeys.NoSource;
if (options.NoResource)
keyNoRes = DecompileKeys.NoResource;
if (options.Force)
keyForce = DecompileKeys.Force;
if (options.KeepBrokenResource)
keyKeepBrokenRes = DecompileKeys.KeepBrokenResource;
if (options.MatchOriginal)
keyMatchOriginal = DecompileKeys.MatchOriginal;
if (!String.IsNullOrWhiteSpace(options.FrameworkPath))
keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, options.FrameworkPath);
if (!String.IsNullOrWhiteSpace(options.OutputDirectory))
keyOutputDir = String.Format("{0} \"{1}\"", DecompileKeys.OutputDir, options.OutputDirectory);
//string args = String.Format("d{0}{1}{2}{3}{4}{5} -o \"{6}\" \"{7}\"", keyNoSrc, keyNoRes, keyForce, keyKeepBrokenRes, keyMatchOriginal, keyFramePath, options.ProjectDirectory, options.AppPath);
string args = String.Format("d{0}{1}{2}{3}{4}{5}{6} \"{7}\"", keyNoSrc, keyNoRes, keyForce, keyKeepBrokenRes, keyMatchOriginal, keyFramePath, keyOutputDir, options.AppPath);
bool started = this.Start(args);
this.BeginOutputReadLine();
this.BeginErrorReadLine();
return started;
}
public bool Build(BuildOptions options)
{
lastActionType = ApktoolActionType.Build;
lastFilePath = options.AppPath;
lastProjectDir = options.ProjectDirectory;
string keyForceAll = null, keyAapt = null, keyCopyOriginal = null, keyFramePath = null, keyOutputAppPath = null;
if (options.ForceAll)
keyForceAll = BuildKeys.ForceAll;
if (options.CopyOriginal)
keyCopyOriginal = BuildKeys.CopyOriginal;
if (!String.IsNullOrEmpty(options.AaptPath))
keyAapt = String.Format("{0} \"{1}\"", BuildKeys.Aapt, options.AaptPath);
if (!String.IsNullOrEmpty(options.FrameworkPath))
keyFramePath = String.Format("{0} \"{1}\"", BuildKeys.FrameworkPath, options.FrameworkPath);
if (!String.IsNullOrWhiteSpace(options.AppPath))
keyOutputAppPath = String.Format("{0} \"{1}\"", BuildKeys.OutputAppPath, options.AppPath);
string args = String.Format("b{0}{1}{2}{3}{4} \"{5}\"", keyForceAll, keyAapt, keyCopyOriginal, keyFramePath, keyOutputAppPath, options.ProjectDirectory);
bool started = this.Start(args);
this.BeginOutputReadLine();
this.BeginErrorReadLine();
return started;
}
public bool InstallFramework(InstallFrameworkOptions options)
{
lastActionType = ApktoolActionType.InstallFramework;
lastFilePath = options.InputFramePath;
lastProjectDir = null;
string keyFrameDir = null, keyTag = null;
if (!String.IsNullOrWhiteSpace(options.FrameDir))
keyFrameDir = String.Format("{0} \"{1}\"", InstallFrameworkKeys.FrameDir, options.FrameDir);
if (!String.IsNullOrWhiteSpace(options.Tag))
keyTag = String.Format("{0} \"{1}\"", InstallFrameworkKeys.Tag, options.Tag);
string args = String.Format("if{0}{1} \"{2}\"", keyFrameDir, keyTag, options.InputFramePath);
bool started = this.Start(args);
this.BeginOutputReadLine();
this.BeginErrorReadLine();
return started;
}
public string GetVersion()
{
using (JarProcess apktoolJar = new JarProcess(this.JavaPath, this.JarPath))
{
apktoolJar.EnableRaisingEvents = false;
apktoolJar.Start("-version");
string version = apktoolJar.StandardOutput.ReadToEnd();
apktoolJar.WaitForExit(3000);
return version;
}
}
private static ApktoolEventType GetEventType(string message)
{
MatchCollection mCol = Regex.Matches(message, @"^(\w+):\s(.+)$");
if (mCol.Count > 0)
{
switch (mCol[0].Groups[1].Value)
{
case "W":
return ApktoolEventType.Warning;
case "Warning":
return ApktoolEventType.Warning;
case "I":
return ApktoolEventType.Information;
case "Error":
return ApktoolEventType.Error;
case "E":
return ApktoolEventType.Error;
default:
return ApktoolEventType.Unknown;
}
}
else
return ApktoolEventType.Unknown;
}
}
public delegate void ApktoolEventCompletedEventHandler(Object sender, ApktoolEventCompletedEventArgs e);
public class ApktoolEventCompletedEventArgs : EventArgs
{
private int _exitCode;
private string _filePath;
private string _projectDir;
public ApktoolEventCompletedEventArgs(int exitCode, string filePath, string projectDir)
{
_exitCode = exitCode;
_filePath = filePath;
_projectDir = projectDir;
}
public int ExitCode
{
get
{
return _exitCode;
}
}
public string FilePath
{
get
{
return _filePath;
}
}
public string ProjectDir
{
get
{
return _projectDir;
}
}
}
public delegate void ApktoolDataReceivedEventHandler(Object sender, ApktoolDataReceivedEventArgs e);
public class ApktoolDataReceivedEventArgs : EventArgs
{
string data;
string message;
ApktoolEventType eventType;
public ApktoolDataReceivedEventArgs(string data)
{
this.data = data;
SetData();
}
public String Message{
get{
return message;}}
public ApktoolEventType EventType{
get{
return eventType;}}
private void SetData()
{
MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
if (mCol.Count > 0)
{
switch (mCol[0].Groups[1].Value)
{
case "W":
eventType = ApktoolEventType.Warning;
message = mCol[0].Groups[2].Value;
break;
case "Warning":
eventType = ApktoolEventType.Warning;
message = mCol[0].Groups[2].Value;
break;
case "I":
eventType = ApktoolEventType.Information;
message = mCol[0].Groups[2].Value;
break;
case "Error":
eventType = ApktoolEventType.Error;
message = mCol[0].Groups[2].Value;
break;
case "E":
eventType = ApktoolEventType.Error;
message = mCol[0].Groups[2].Value;
break;
default:
eventType = ApktoolEventType.Unknown;
message = data;
break;
}
}
else
{
eventType = ApktoolEventType.Unknown;
message = data;
}
}
}
public enum ApktoolEventType
{
Information,
Warning,
Error,
Unknown
}
public class BuildOptions
{
public BuildOptions(string projectDir)
{
this.ProjectDirectory = projectDir;
}
//public BuildOptions(string projectDir, string apkPath)
//{
// this.ProjectDirectory = projectDir;
// this.AppPath = apkPath;
//}
public string ProjectDirectory { get; set; }
/// <summary>
/// The name of apk that gets written.
/// </summary>
public string AppPath { get; set; }
/// <summary>
/// Loads aapt from specified location.
/// </summary>
public string AaptPath { get; set; }
/// <summary>
/// Skip changes detection and build all files.
/// </summary>
public bool ForceAll { get; set; }
/// <summary>
/// Copies original AndroidManifest.xml and META-INF.
/// </summary>
public bool CopyOriginal { get; set; }
/// <summary>
/// Uses framework files located in dir.
/// </summary>
public string FrameworkPath { get; set; }
}
public class DecompileOptions
{
public DecompileOptions(string apkPath)
{
this.AppPath = apkPath;
this.OutputDirectory = String.Format("{0}\\{1}", System.IO.Path.GetDirectoryName(apkPath), System.IO.Path.GetFileNameWithoutExtension(apkPath));
}
/// <summary>
/// The name of folder that gets written.
/// </summary>
public string OutputDirectory { get; set; }
public string AppPath { get; set; }
/// <summary>
/// Do not decode sources.
/// </summary>
public bool NoSource { get; set; }
/// <summary>
/// Do not decode resources.
/// </summary>
public bool NoResource { get; set; }
/// <summary>
/// Force delete destination directory.
/// </summary>
public bool Force { get; set; }
/// <summary>
/// Uses framework files located in dir.
/// </summary>
public string FrameworkPath { get; set; }
/// <summary>
/// Use if there was an error and some resourceswere dropped, e.g."Invalid config flags detected. Dropping resources",
/// but you want to decode them anyway, even with errors. You will have to fix them manually before building.
/// </summary>
public bool KeepBrokenResource { get; set; }
/// <summary>
/// Keeps files to closest to original as possible. Prevents rebuild.
/// </summary>
public bool MatchOriginal { get; set; }
}
public class InstallFrameworkOptions
{
public InstallFrameworkOptions(string framePath)
{
this.InputFramePath = framePath;
}
public string InputFramePath { get; set; }
/// <summary>
/// Stores framework files into directory
/// </summary>
public string FrameDir { get; set; }
/// <summary>
/// Frameworks tag
/// </summary>
public string Tag { get; set; }
}
//public class ApktoolMessage
//{
// public ApktoolEventType EventType { get; private set; }
// public string Message { get; private set; }
// private string data;
// public ApktoolMessage(string data)
// {
// this.data = data;
// SetData();
// }
// private void SetData()
// {
// MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
// if (mCol.Count > 0)
// {
// switch (mCol[0].Groups[1].Value)
// {
// case "W":
// this.EventType = ApktoolEventType.Warning;
// this.Message = mCol[0].Groups[2].Value;
// break;
// case "Warning":
// this.EventType = ApktoolEventType.Warning;
// this.Message = mCol[0].Groups[2].Value;
// break;
// case "I":
// this.EventType = ApktoolEventType.Information;
// this.Message = mCol[0].Groups[2].Value;
// break;
// case "Error":
// this.EventType = ApktoolEventType.Error;
// this.Message = mCol[0].Groups[2].Value;
// break;
// case "E":
// this.EventType = ApktoolEventType.Error;
// this.Message = mCol[0].Groups[2].Value;
// break;
// default:
// this.EventType = ApktoolEventType.Unknown;
// this.Message = data;
// break;
// }
// }
// else
// {
// this.EventType = ApktoolEventType.Unknown;
// this.Message = data;
// }
// }
// public static ApktoolEventType GetEventType(string data)
// {
// MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
// if (mCol.Count > 0)
// {
// switch (mCol[0].Groups[1].Value)
// {
// case "W":
// return ApktoolEventType.Warning;
// case "Warning":
// return ApktoolEventType.Warning;
// case "I":
// return ApktoolEventType.Information;
// case "Error":
// return ApktoolEventType.Error;
// case "E":
// return ApktoolEventType.Error;
// default:
// return ApktoolEventType.Unknown;
// }
// }
// else
// return ApktoolEventType.Unknown;
// }
// public static string GetMessage(string data)
// {
// MatchCollection mCol = Regex.Matches(data, @"^(\w+):\s(.+)$");
// if (mCol.Count > 0)
// return mCol[0].Groups[2].Value;
// else
// return data;
// }
//}
}
+228
View File
@@ -0,0 +1,228 @@
using System;
using Microsoft.Win32;
namespace APKToolGUI
{
public class ExplorerContextMenu
{
public static Status Create()
{
string executablePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
if (IsAdmin())
{
if (Environment.OSVersion.Version >= new Version("6.0.0.0")) // Vista и новее
{
return CreateVistaAndLater(executablePath);
}
else if (Environment.OSVersion.Version < new Version("6.0.0.0") && Environment.OSVersion.Version >= new Version("5.1.0.0"))
{
return CreateXP(executablePath);
}
else
return new Status(false, "Unsupported OS");
}
else
return new Status(false, "Administrator rights are required");
}
public static Status Remove()
{
if (Environment.OSVersion.Version >= new Version("6.0.0.0")) // Vista и новее
{
return RemoveVistaAndLater();
}
else
{
if (Environment.OSVersion.Version < new Version("6.0.0.0") && Environment.OSVersion.Version >= new Version("5.1.0.0"))
{
return RemoveXP();
}
else
return new Status(false, "Unsupported OS");
}
}
public static bool IsAdmin()
{
System.Security.Principal.WindowsIdentity id = System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal p = new System.Security.Principal.WindowsPrincipal(id);
return p.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
}
private static Status CreateVistaAndLater(string executablePath)
{
try
{
#region Add context menu to registry
RegistryKey apkToolGUIFolderShell = Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey("APKToolGUI", RegistryKeyPermissionCheck.ReadWriteSubTree);
apkToolGUIFolderShell.SetValue("Icon", executablePath);
apkToolGUIFolderShell.SetValue("MUIVerb", "APKToolGUI");
apkToolGUIFolderShell.SetValue("SubCommands", "APKToolGUI.Build");
apkToolGUIFolderShell.Close();
Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(".apk", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", executablePath, RegistryValueKind.ExpandString);
RegistryKey shellAPK = Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.CreateSubKey).CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("APKToolGUI", RegistryKeyPermissionCheck.ReadWriteSubTree);
shellAPK.SetValue("Icon", "\"" + executablePath + "\"");
shellAPK.SetValue("MUIVerb", "APKToolGUI");
shellAPK.SetValue("SubCommands", "APKToolGUI.Decompile;APKToolGUI.InstallFramework;APKToolGUI.Sign");
shellAPK.Close();
#endregion
#region Add command to registry
RegistryKey shell;
if (Environment.Is64BitOperatingSystem)
shell = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
else
shell = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
RegistryKey decompile = shell.CreateSubKey("APKToolGUI.Decompile", RegistryKeyPermissionCheck.ReadWriteSubTree);
decompile.SetValue("", Language.Decode, RegistryValueKind.String);
decompile.SetValue("Icon", executablePath, RegistryValueKind.String);
decompile.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"d\" \"%1\"");
decompile.Close();
RegistryKey installFramework = shell.CreateSubKey("APKToolGUI.InstallFramework", RegistryKeyPermissionCheck.ReadWriteSubTree);
installFramework.SetValue("", Language.InstallFramework, RegistryValueKind.String);
installFramework.SetValue("Icon", executablePath, RegistryValueKind.String);
installFramework.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"if\" \"%1\"");
installFramework.Close();
RegistryKey sign = shell.CreateSubKey("APKToolGUI.Sign", RegistryKeyPermissionCheck.ReadWriteSubTree);
sign.SetValue("", Language.Sign, RegistryValueKind.String);
sign.SetValue("Icon", executablePath, RegistryValueKind.String);
sign.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"sign\" \"%1\"");
sign.Close();
RegistryKey build = shell.CreateSubKey("APKToolGUI.Build", RegistryKeyPermissionCheck.ReadWriteSubTree);
build.SetValue("", Language.Build, RegistryValueKind.String);
build.SetValue("Icon", executablePath, RegistryValueKind.String);
build.CreateSubKey("command").SetValue("", "\"" + executablePath + "\" \"b\" \"%1\"", RegistryValueKind.String);
build.Close();
shell.Close();
#endregion
}
catch (Exception exc)
{
return new Status(false, exc.Message);
}
return new Status(true, "Done!");
}
private static Status CreateXP(string executablePath)
{
try
{
RegistryKey folderShell = Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey("APKToolGUI.Build", RegistryKeyPermissionCheck.ReadWriteSubTree);
folderShell.SetValue("Icon", executablePath);
folderShell.SetValue("MUIVerb", Language.Build);
folderShell.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"b\" \"%1\"", RegistryValueKind.String);
folderShell.Close();
RegistryKey apk = Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(".apk", RegistryKeyPermissionCheck.ReadWriteSubTree);
apk.CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", executablePath, RegistryValueKind.ExpandString);
RegistryKey shell = apk.CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree);
RegistryKey decode = shell.CreateSubKey("APKToolGUI.Decode", RegistryKeyPermissionCheck.ReadWriteSubTree);
RegistryKey installFramework = shell.CreateSubKey("APKToolGUI.InstallFramework", RegistryKeyPermissionCheck.ReadWriteSubTree);
RegistryKey sign = shell.CreateSubKey("APKToolGUI.Sign", RegistryKeyPermissionCheck.ReadWriteSubTree);
decode.SetValue("Icon", executablePath);
decode.SetValue("MUIVerb", Language.Decode);
decode.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"d\" \"%1\"");
decode.Close();
installFramework.SetValue("Icon", executablePath);
installFramework.SetValue("MUIVerb", Language.InstallFramework);
installFramework.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"if\" \"%1\"");
installFramework.Close();
sign.SetValue("Icon", executablePath);
sign.SetValue("MUIVerb", Language.Sign);
sign.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + executablePath + "\" \"sign\" \"%1\"");
sign.Close();
shell.Close();
apk.Close();
}
catch (Exception exc)
{
return new Status(false, exc.Message);
}
return new Status(true, "Done!");
}
private static Status RemoveVistaAndLater()
{
try
{
Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI", false);
Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("DefaultIcon", false);
Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKey("APKToolGUI", false);
RegistryKey shell;
if (Environment.Is64BitOperatingSystem)
shell = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
else
shell = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
shell.DeleteSubKeyTree("APKToolGUI.Decompile", false);
shell.DeleteSubKeyTree("APKToolGUI.InstallFramework", false);
shell.DeleteSubKeyTree("APKToolGUI.Sign", false);
shell.DeleteSubKeyTree("APKToolGUI.Build", false);
shell.Close();
}
catch (Exception exc)
{
return new Status(false, exc.Message);
}
return new Status(true, "Done!");
}
private static Status RemoveXP()
{
try
{
Registry.ClassesRoot.OpenSubKey(@"Directory\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.Build", false);
Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("DefaultIcon", false);
Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.Decode", false);
Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.InstallFramework", false);
Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).DeleteSubKeyTree("APKToolGUI.Sign", false);
}
catch (Exception exc)
{
return new Status(false, exc.Message);
}
return new Status(true, "Done!");
}
public class Status
{
public Status(bool result, string message)
{
Result = result;
Message = message;
}
public bool Result { get; set; }
public String Message { get; set; }
}
public enum Action
{
Create,
Remove
}
}
}
+128
View File
@@ -0,0 +1,128 @@
namespace APKToolGUI
{
partial class FormAboutBox
{
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAboutBox));
this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.logoPictureBox = new System.Windows.Forms.PictureBox();
this.labelProductName = new System.Windows.Forms.Label();
this.labelVersion = new System.Windows.Forms.Label();
this.labelCopyright = new System.Windows.Forms.Label();
this.okButton = new System.Windows.Forms.Button();
this.textBoxDescription = new System.Windows.Forms.TextBox();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.tableLayoutPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
this.SuspendLayout();
//
// tableLayoutPanel
//
resources.ApplyResources(this.tableLayoutPanel, "tableLayoutPanel");
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
this.tableLayoutPanel.Controls.Add(this.linkLabel1, 1, 3);
this.tableLayoutPanel.Name = "tableLayoutPanel";
//
// logoPictureBox
//
resources.ApplyResources(this.logoPictureBox, "logoPictureBox");
this.logoPictureBox.Image = global::APKToolGUI.Properties.Resources.android;
this.logoPictureBox.Name = "logoPictureBox";
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
this.logoPictureBox.TabStop = false;
//
// labelProductName
//
resources.ApplyResources(this.labelProductName, "labelProductName");
this.labelProductName.Name = "labelProductName";
//
// labelVersion
//
resources.ApplyResources(this.labelVersion, "labelVersion");
this.labelVersion.Name = "labelVersion";
//
// labelCopyright
//
resources.ApplyResources(this.labelCopyright, "labelCopyright");
this.labelCopyright.Name = "labelCopyright";
//
// okButton
//
resources.ApplyResources(this.okButton, "okButton");
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.okButton.Name = "okButton";
//
// textBoxDescription
//
resources.ApplyResources(this.textBoxDescription, "textBoxDescription");
this.textBoxDescription.Name = "textBoxDescription";
this.textBoxDescription.ReadOnly = true;
this.textBoxDescription.TabStop = false;
//
// linkLabel1
//
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// FormAboutBox
//
this.AcceptButton = this.okButton;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tableLayoutPanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormAboutBox";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.tableLayoutPanel.ResumeLayout(false);
this.tableLayoutPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
private System.Windows.Forms.PictureBox logoPictureBox;
private System.Windows.Forms.Label labelProductName;
private System.Windows.Forms.Label labelVersion;
private System.Windows.Forms.Label labelCopyright;
private System.Windows.Forms.TextBox textBoxDescription;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.LinkLabel linkLabel1;
}
}
+109
View File
@@ -0,0 +1,109 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
namespace APKToolGUI
{
partial class FormAboutBox : Form
{
public FormAboutBox()
{
InitializeComponent();
this.Text = String.Format("{0} {1}", this.Text, AssemblyTitle);
this.labelProductName.Text = AssemblyProduct;
this.labelVersion.Text = String.Format("{0} {1}", labelVersion.Text, AssemblyVersion);
this.labelCopyright.Text = String.Format("{0} {1}", this.labelCopyright.Text, AssemblyCopyright);// AssemblyCopyright;
//this.labelCompanyName.Text = AssemblyCompany;
this.textBoxDescription.Text = AssemblyDescription;
}
#region Методы доступа к атрибутам сборки
public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if (attributes.Length > 0)
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if (titleAttribute.Title != "")
{
return titleAttribute.Title;
}
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
public string AssemblyDescription
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
}
}
public string AssemblyProduct
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyProductAttribute)attributes[0]).Product;
}
}
public string AssemblyCopyright
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
}
}
public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
#endregion
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("http://4pda.ru/forum/index.php?showtopic=452034");
}
}
}
+405
View File
@@ -0,0 +1,405 @@
<?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="&gt;&gt;labelCopyright.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tableLayoutPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>490, 265</value>
</data>
<data name="okButton.Text" xml:space="preserve">
<value>&amp;ОК</value>
</data>
<data name="&gt;&gt;labelVersion.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="textBoxDescription.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;labelVersion.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormAboutBox</value>
</data>
<data name="&gt;&gt;labelVersion.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="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="labelCopyright.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 26</value>
</data>
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 26</value>
</data>
<data name="textBoxDescription.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 3, 3, 3</value>
</data>
<data name="logoPictureBox.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
<value>Center</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelCopyright.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="&gt;&gt;labelProductName.Name" xml:space="preserve">
<value>labelProductName</value>
</data>
<data name="labelProductName.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 0, 3, 0</value>
</data>
<data name="tableLayoutPanel.RowCount" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelProductName.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 26</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="labelVersion.Text" xml:space="preserve">
<value>Version</value>
</data>
<data name="&gt;&gt;textBoxDescription.Name" xml:space="preserve">
<value>textBoxDescription</value>
</data>
<data name="&gt;&gt;logoPictureBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelCopyright.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="logoPictureBox.Size" type="System.Drawing.Size, System.Drawing">
<value>219, 259</value>
</data>
<data name="logoPictureBox.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="&gt;&gt;logoPictureBox.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="okButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="textBoxDescription.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
<value>Both</value>
</data>
<data name="&gt;&gt;linkLabel1.Name" xml:space="preserve">
<value>linkLabel1</value>
</data>
<data name="&gt;&gt;labelVersion.Name" xml:space="preserve">
<value>labelVersion</value>
</data>
<data name="&gt;&gt;labelProductName.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="&gt;&gt;labelProductName.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="labelVersion.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="tableLayoutPanel.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="textBoxDescription.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 126</value>
</data>
<data name="labelProductName.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="okButton.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="&gt;&gt;okButton.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="tableLayoutPanel.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="logoPictureBox" Row="0" RowSpan="6" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelProductName" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelVersion" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelCopyright" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="okButton" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="textBoxDescription" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="linkLabel1" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,46,0039,Percent,53,9961" /&gt;&lt;Rows Styles="Percent,10,Percent,10,Percent,10,Percent,10,Percent,50,Percent,10" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;labelCopyright.Name" xml:space="preserve">
<value>labelCopyright</value>
</data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>412, 239</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.Name" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="&gt;&gt;okButton.Name" xml:space="preserve">
<value>okButton</value>
</data>
<data name="logoPictureBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="linkLabel1.TabIndex" type="System.Int32, mscorlib">
<value>25</value>
</data>
<data name="textBoxDescription.Text" xml:space="preserve">
<value>Description</value>
</data>
<data name="labelProductName.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>231, 78</value>
</data>
<data name="tableLayoutPanel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="labelVersion.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 0, 3, 0</value>
</data>
<data name="&gt;&gt;labelCopyright.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="labelVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 26</value>
</data>
<data name="labelProductName.Text" xml:space="preserve">
<value>Product Name</value>
</data>
<data name="textBoxDescription.Location" type="System.Drawing.Point, System.Drawing">
<value>231, 107</value>
</data>
<data name="labelProductName.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="textBoxDescription.TabIndex" type="System.Int32, mscorlib">
<value>23</value>
</data>
<data name="&gt;&gt;okButton.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="&gt;&gt;okButton.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="labelCopyright.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;tableLayoutPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="labelProductName.Location" type="System.Drawing.Point, System.Drawing">
<value>231, 0</value>
</data>
<data name="labelVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>231, 26</value>
</data>
<data name="&gt;&gt;textBoxDescription.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="tableLayoutPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="&gt;&gt;labelProductName.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="linkLabel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 0, 3, 0</value>
</data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;logoPictureBox.Name" xml:space="preserve">
<value>logoPictureBox</value>
</data>
<data name="labelCopyright.Location" type="System.Drawing.Point, System.Drawing">
<value>231, 52</value>
</data>
<data name="logoPictureBox.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="tableLayoutPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 9</value>
</data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="labelVersion.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="logoPictureBox.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>9, 9, 9, 9</value>
</data>
<data name="labelCopyright.Text" xml:space="preserve">
<value>Copyright</value>
</data>
<data name="linkLabel1.Text" xml:space="preserve">
<value>Page</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>About</value>
</data>
<data name="&gt;&gt;logoPictureBox.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="labelVersion.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>508, 283</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="linkLabel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelCopyright.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>6, 0, 3, 0</value>
</data>
<data name="&gt;&gt;textBoxDescription.Parent" xml:space="preserve">
<value>tableLayoutPanel</value>
</data>
<data name="&gt;&gt;textBoxDescription.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="okButton.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="textBoxDescription.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;labelCopyright.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
+138
View File
@@ -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="linkLabel1.Text" xml:space="preserve">
<value>Сайт</value>
</data>
<data name="textBoxDescription.Text" xml:space="preserve">
<value>Описание</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>О программе</value>
</data>
</root>
+381
View File
@@ -0,0 +1,381 @@
namespace APKToolGUI
{
partial class FormBuild
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelStateImage = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelStateText = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.groupBoxOptions = new System.Windows.Forms.GroupBox();
this.textBoxFrameworkPath = new System.Windows.Forms.TextBox();
this.buttonBrowseFrameworkPath = new System.Windows.Forms.Button();
this.checkBoxUseFramework = new System.Windows.Forms.CheckBox();
this.checkBoxCopyOriginal = new System.Windows.Forms.CheckBox();
this.textBoxAaptPath = new System.Windows.Forms.TextBox();
this.buttonBrowseAaptPath = new System.Windows.Forms.Button();
this.checkBoxCustomAapt = new System.Windows.Forms.CheckBox();
this.checkBoxForceAll = new System.Windows.Forms.CheckBox();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.ColumnImage = new System.Windows.Forms.DataGridViewImageColumn();
this.ColumnTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.buttonStart = new System.Windows.Forms.Button();
this.openFileDialogBrowseAapt = new System.Windows.Forms.OpenFileDialog();
this.saveFileDialogApk = new System.Windows.Forms.SaveFileDialog();
this.folderBrowserDialogFrameworks = new System.Windows.Forms.FolderBrowserDialog();
this.textBoxOutputApkPath = new System.Windows.Forms.TextBox();
this.buttonBrowseOutputApk = new System.Windows.Forms.Button();
this.statusStrip1.SuspendLayout();
this.groupBoxOptions.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabelStateImage,
this.toolStripStatusLabelStateText,
this.toolStripProgressBar1});
this.statusStrip1.Location = new System.Drawing.Point(0, 360);
this.statusStrip1.Margin = new System.Windows.Forms.Padding(0, 9, 0, 0);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(570, 22);
this.statusStrip1.TabIndex = 19;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabelStateImage
//
this.toolStripStatusLabelStateImage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripStatusLabelStateImage.Name = "toolStripStatusLabelStateImage";
this.toolStripStatusLabelStateImage.Size = new System.Drawing.Size(0, 17);
this.toolStripStatusLabelStateImage.Text = "toolStripStatusLabel1";
//
// toolStripStatusLabelStateText
//
this.toolStripStatusLabelStateText.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.toolStripStatusLabelStateText.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.toolStripStatusLabelStateText.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
this.toolStripStatusLabelStateText.Name = "toolStripStatusLabelStateText";
this.toolStripStatusLabelStateText.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
this.toolStripStatusLabelStateText.Size = new System.Drawing.Size(453, 17);
this.toolStripStatusLabelStateText.Spring = true;
this.toolStripStatusLabelStateText.Text = "Done";
this.toolStripStatusLabelStateText.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.toolStripProgressBar1.AutoSize = false;
this.toolStripProgressBar1.MarqueeAnimationSpeed = 50;
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// groupBoxOptions
//
this.groupBoxOptions.Controls.Add(this.textBoxFrameworkPath);
this.groupBoxOptions.Controls.Add(this.buttonBrowseFrameworkPath);
this.groupBoxOptions.Controls.Add(this.checkBoxUseFramework);
this.groupBoxOptions.Controls.Add(this.checkBoxCopyOriginal);
this.groupBoxOptions.Controls.Add(this.textBoxAaptPath);
this.groupBoxOptions.Controls.Add(this.buttonBrowseAaptPath);
this.groupBoxOptions.Controls.Add(this.checkBoxCustomAapt);
this.groupBoxOptions.Controls.Add(this.checkBoxForceAll);
this.groupBoxOptions.Location = new System.Drawing.Point(12, 200);
this.groupBoxOptions.Name = "groupBoxOptions";
this.groupBoxOptions.Size = new System.Drawing.Size(546, 118);
this.groupBoxOptions.TabIndex = 28;
this.groupBoxOptions.TabStop = false;
this.groupBoxOptions.Text = "Options";
//
// textBoxFrameworkPath
//
this.textBoxFrameworkPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "BUILD_FrameworkPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxFrameworkPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_UseFramework;
this.textBoxFrameworkPath.Location = new System.Drawing.Point(230, 90);
this.textBoxFrameworkPath.Name = "textBoxFrameworkPath";
this.textBoxFrameworkPath.Size = new System.Drawing.Size(280, 22);
this.textBoxFrameworkPath.TabIndex = 17;
this.textBoxFrameworkPath.Text = global::APKToolGUI.Properties.Settings.Default.BUILD_FrameworkPath;
//
// buttonBrowseFrameworkPath
//
this.buttonBrowseFrameworkPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonBrowseFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.buttonBrowseFrameworkPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_UseFramework;
this.buttonBrowseFrameworkPath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonBrowseFrameworkPath.Location = new System.Drawing.Point(512, 89);
this.buttonBrowseFrameworkPath.Name = "buttonBrowseFrameworkPath";
this.buttonBrowseFrameworkPath.Size = new System.Drawing.Size(28, 24);
this.buttonBrowseFrameworkPath.TabIndex = 18;
this.buttonBrowseFrameworkPath.Text = "...";
this.buttonBrowseFrameworkPath.UseVisualStyleBackColor = true;
this.buttonBrowseFrameworkPath.Click += new System.EventHandler(this.buttonBrowseFrameworkPath_Click);
//
// checkBoxUseFramework
//
this.checkBoxUseFramework.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_UseFramework;
this.checkBoxUseFramework.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxUseFramework.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxUseFramework.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxUseFramework.Location = new System.Drawing.Point(6, 91);
this.checkBoxUseFramework.Name = "checkBoxUseFramework";
this.checkBoxUseFramework.Size = new System.Drawing.Size(218, 18);
this.checkBoxUseFramework.TabIndex = 16;
this.checkBoxUseFramework.Text = "Uses framework files located in";
this.checkBoxUseFramework.UseVisualStyleBackColor = true;
//
// checkBoxCopyOriginal
//
this.checkBoxCopyOriginal.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.checkBoxCopyOriginal.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_CopyOriginal;
this.checkBoxCopyOriginal.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_CopyOriginal", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxCopyOriginal.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxCopyOriginal.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxCopyOriginal.Location = new System.Drawing.Point(6, 43);
this.checkBoxCopyOriginal.Name = "checkBoxCopyOriginal";
this.checkBoxCopyOriginal.Size = new System.Drawing.Size(534, 18);
this.checkBoxCopyOriginal.TabIndex = 15;
this.checkBoxCopyOriginal.Text = "Copies original AndroidManifest.xml and META-INF folder into built apk.";
this.checkBoxCopyOriginal.UseVisualStyleBackColor = true;
//
// textBoxAaptPath
//
this.textBoxAaptPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxAaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_CustomAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxAaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "BUILD_AaptPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxAaptPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_CustomAapt;
this.textBoxAaptPath.Location = new System.Drawing.Point(230, 66);
this.textBoxAaptPath.Name = "textBoxAaptPath";
this.textBoxAaptPath.Size = new System.Drawing.Size(280, 22);
this.textBoxAaptPath.TabIndex = 13;
this.textBoxAaptPath.Text = global::APKToolGUI.Properties.Settings.Default.BUILD_AaptPath;
//
// buttonBrowseAaptPath
//
this.buttonBrowseAaptPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonBrowseAaptPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "BUILD_CustomAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.buttonBrowseAaptPath.Enabled = global::APKToolGUI.Properties.Settings.Default.BUILD_CustomAapt;
this.buttonBrowseAaptPath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonBrowseAaptPath.Location = new System.Drawing.Point(512, 65);
this.buttonBrowseAaptPath.Name = "buttonBrowseAaptPath";
this.buttonBrowseAaptPath.Size = new System.Drawing.Size(28, 24);
this.buttonBrowseAaptPath.TabIndex = 14;
this.buttonBrowseAaptPath.Text = "...";
this.buttonBrowseAaptPath.UseVisualStyleBackColor = true;
this.buttonBrowseAaptPath.Click += new System.EventHandler(this.buttonBsowseAaptPath_Click);
//
// checkBoxCustomAapt
//
this.checkBoxCustomAapt.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_CustomAapt;
this.checkBoxCustomAapt.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_CustomAapt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxCustomAapt.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxCustomAapt.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxCustomAapt.Location = new System.Drawing.Point(6, 67);
this.checkBoxCustomAapt.Name = "checkBoxCustomAapt";
this.checkBoxCustomAapt.Size = new System.Drawing.Size(218, 18);
this.checkBoxCustomAapt.TabIndex = 12;
this.checkBoxCustomAapt.Text = "Uses aapt.exe located in";
this.checkBoxCustomAapt.UseVisualStyleBackColor = true;
//
// checkBoxForceAll
//
this.checkBoxForceAll.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.checkBoxForceAll.Checked = global::APKToolGUI.Properties.Settings.Default.BUILD_ForceAll;
this.checkBoxForceAll.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "BUILD_ForceAll", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxForceAll.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxForceAll.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxForceAll.Location = new System.Drawing.Point(6, 19);
this.checkBoxForceAll.Name = "checkBoxForceAll";
this.checkBoxForceAll.Size = new System.Drawing.Size(534, 18);
this.checkBoxForceAll.TabIndex = 0;
this.checkBoxForceAll.Text = "Skip changes detection and build all files";
this.checkBoxForceAll.UseVisualStyleBackColor = true;
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.AllowUserToResizeRows = false;
this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Window;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.dataGridView1.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
this.dataGridView1.ColumnHeadersHeight = 24;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ColumnImage,
this.ColumnTime,
this.ColumnMessage});
this.dataGridView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.RowTemplate.Height = 19;
this.dataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.ShowEditingIcon = false;
this.dataGridView1.Size = new System.Drawing.Size(546, 182);
this.dataGridView1.TabIndex = 26;
//
// ColumnImage
//
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.NullValue = null;
this.ColumnImage.DefaultCellStyle = dataGridViewCellStyle2;
this.ColumnImage.Frozen = true;
this.ColumnImage.HeaderText = "";
this.ColumnImage.Name = "ColumnImage";
this.ColumnImage.ReadOnly = true;
this.ColumnImage.Resizable = System.Windows.Forms.DataGridViewTriState.False;
this.ColumnImage.Width = 20;
//
// ColumnTime
//
this.ColumnTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
this.ColumnTime.Frozen = true;
this.ColumnTime.HeaderText = "Time";
this.ColumnTime.Name = "ColumnTime";
this.ColumnTime.ReadOnly = true;
this.ColumnTime.Width = 55;
//
// ColumnMessage
//
this.ColumnMessage.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.ColumnMessage.HeaderText = "Message";
this.ColumnMessage.Name = "ColumnMessage";
this.ColumnMessage.ReadOnly = true;
//
// buttonStart
//
this.buttonStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonStart.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.buttonStart.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonStart.Location = new System.Drawing.Point(438, 325);
this.buttonStart.Name = "buttonStart";
this.buttonStart.Size = new System.Drawing.Size(120, 24);
this.buttonStart.TabIndex = 27;
this.buttonStart.Text = "Build";
this.buttonStart.UseVisualStyleBackColor = true;
this.buttonStart.Click += new System.EventHandler(this.buttonStart_Click);
//
// openFileDialogBrowseAapt
//
this.openFileDialogBrowseAapt.Filter = "*.exe|*.exe";
//
// saveFileDialogApk
//
this.saveFileDialogApk.DefaultExt = "apk";
this.saveFileDialogApk.Filter = "Android App|*.apk";
//
// folderBrowserDialogFrameworks
//
this.folderBrowserDialogFrameworks.ShowNewFolderButton = false;
//
// textBoxOutputApkPath
//
this.textBoxOutputApkPath.Location = new System.Drawing.Point(12, 326);
this.textBoxOutputApkPath.Name = "textBoxOutputApkPath";
this.textBoxOutputApkPath.Size = new System.Drawing.Size(390, 22);
this.textBoxOutputApkPath.TabIndex = 29;
//
// buttonBrowseOutputApk
//
this.buttonBrowseOutputApk.Location = new System.Drawing.Point(404, 325);
this.buttonBrowseOutputApk.Name = "buttonBrowseOutputApk";
this.buttonBrowseOutputApk.Size = new System.Drawing.Size(28, 24);
this.buttonBrowseOutputApk.TabIndex = 30;
this.buttonBrowseOutputApk.Text = "...";
this.buttonBrowseOutputApk.UseVisualStyleBackColor = true;
this.buttonBrowseOutputApk.Click += new System.EventHandler(this.buttonBrowseOutputApk_Click);
//
// FormBuild
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(570, 382);
this.Controls.Add(this.buttonBrowseOutputApk);
this.Controls.Add(this.textBoxOutputApkPath);
this.Controls.Add(this.groupBoxOptions);
this.Controls.Add(this.dataGridView1);
this.Controls.Add(this.buttonStart);
this.Controls.Add(this.statusStrip1);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.Name = "FormBuild";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "FormBuild";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormBuild_FormClosed);
this.Load += new System.EventHandler(this.FormBuild_Load);
this.Shown += new System.EventHandler(this.FormBuild_Shown);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.groupBoxOptions.ResumeLayout(false);
this.groupBoxOptions.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateImage;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateText;
private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
private System.Windows.Forms.GroupBox groupBoxOptions;
private System.Windows.Forms.TextBox textBoxAaptPath;
private System.Windows.Forms.Button buttonBrowseAaptPath;
private System.Windows.Forms.CheckBox checkBoxCustomAapt;
private System.Windows.Forms.CheckBox checkBoxForceAll;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.DataGridViewImageColumn ColumnImage;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnTime;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage;
private System.Windows.Forms.Button buttonStart;
private System.Windows.Forms.OpenFileDialog openFileDialogBrowseAapt;
private System.Windows.Forms.SaveFileDialog saveFileDialogApk;
private System.Windows.Forms.CheckBox checkBoxCopyOriginal;
private System.Windows.Forms.TextBox textBoxFrameworkPath;
private System.Windows.Forms.Button buttonBrowseFrameworkPath;
private System.Windows.Forms.CheckBox checkBoxUseFramework;
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogFrameworks;
private System.Windows.Forms.TextBox textBoxOutputApkPath;
private System.Windows.Forms.Button buttonBrowseOutputApk;
}
}
+226
View File
@@ -0,0 +1,226 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace APKToolGUI
{
public partial class FormBuild : Form
{
public FormBuild(string[] args)
{
Program.SetLanguage();
InitializeComponent();
this.Icon = Properties.Resources.android_thin;
this.Text = Application.ProductName;
projectDir = args[1];
}
private string projectDir;
private Apktool apktool;
private Apktool apktoolSync;
bool StartButtonEnabled
{
set
{
if (buttonStart.InvokeRequired)
buttonStart.BeginInvoke(new Action(() =>
{
buttonStart.Enabled = value;
}));
else
buttonStart.Enabled = value;
}
}
ProgressBarStyle progressBarStyle
{
set
{
if (toolStripProgressBar1.GetCurrentParent().InvokeRequired)
{
toolStripProgressBar1.GetCurrentParent().BeginInvoke(new Action(() =>
{
toolStripProgressBar1.Style = value;
}));
}
else
toolStripProgressBar1.Style = value;
}
}
private void ToLog(string time, string message, Image statusImage, Color backColor)
{
if (dataGridView1.InvokeRequired)
dataGridView1.BeginInvoke(new Action(() =>
{
int i = dataGridView1.Rows.Add(statusImage, time, message);
dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}));
else
{
int i = dataGridView1.Rows.Add(statusImage, time, message);
dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}
}
private void ToLog(ApktoolEventType eventType, String message)
{
switch (eventType)
{
case ApktoolEventType.Information:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.Window));
//ToStatus(result.Message, Properties.Resources.info);
break;
case ApktoolEventType.Error:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
//ToStatus(result.Message, Properties.Resources.error);
break;
case ApktoolEventType.Warning:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.warning, Color.FromKnownColor(KnownColor.LightYellow));
//ToStatus(result.Message, Properties.Resources.warning);
break;
default:
break;
}
}
#region Form event handlers
private void FormBuild_Load(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(Properties.Settings.Default.JavaExe))
{
MessageBox.Show("Java location is not specified in the settings. Please, configure program first.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
if (!System.IO.File.Exists(Program.APKTOOL_PATH))
{
MessageBox.Show(String.Format("apktool не найден в каталоге назначения '{0}'.", Program.APKTOOL_PATH), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
apktoolSync = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
apktool = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
apktool.ApktoolOutputDataRecieved += apktool_ApktoolOutputDataRecieved;
apktool.ApktoolErrorDataRecieved += apktool_ApktoolErrorDataRecieved;
apktool.BuildCompleted += apktool_BuildCompleted;
}
private void FormBuild_Shown(object sender, EventArgs e)
{
this.Update();
textBoxOutputApkPath.Text = String.Format("{0}\\{1}_{2}.apk", System.IO.Path.GetDirectoryName(projectDir), projectDir.Replace(System.IO.Path.GetDirectoryName(projectDir) + "\\", String.Empty), DateTime.Now.ToString("yyyyMMdd_HH-mm-ss"), System.IO.Path.GetExtension(projectDir));
Version javaVersion = apktool.GetJavaVersion();
if (javaVersion != null)
{
ToLog(ApktoolEventType.Information, String.Format("Java version \"{0} Update {1}\"", javaVersion.Minor, javaVersion.Revision));
string apktoolVersion = apktool.GetVersion();
if (!String.IsNullOrWhiteSpace(apktoolVersion))
ToLog(ApktoolEventType.Information, String.Format("Apktool version \"{0}\"", apktoolVersion));
else
ToLog(ApktoolEventType.Error, "Can't detect apktool version.");
}
else
MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void FormBuild_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.Save();
}
#endregion
#region apktool event handlers
void apktool_ApktoolOutputDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
{
ToLog(e.EventType, e.Message);
}
void apktool_ApktoolErrorDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
{
ToLog(e.EventType, e.Message);
}
void apktool_BuildCompleted(object sender, ApktoolEventCompletedEventArgs e)
{
if (e.ExitCode == 0)
ToLog(ApktoolEventType.Information, "Сборка успешно завршена.");
else
ToLog(ApktoolEventType.Warning, String.Format("Внимание! При сборке приложения произошла ошибка. Код выхода: '{0}'.", e.ExitCode));
StartButtonEnabled = true;
progressBarStyle = ProgressBarStyle.Continuous;
}
#endregion
private void buttonBsowseAaptPath_Click(object sender, EventArgs e)
{
if (openFileDialogBrowseAapt.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBoxAaptPath.Text = openFileDialogBrowseAapt.FileName;
}
private void buttonBrowseFrameworkPath_Click(object sender, EventArgs e)
{
if (folderBrowserDialogFrameworks.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBoxFrameworkPath.Text = folderBrowserDialogFrameworks.SelectedPath;
}
private void buttonStart_Click(object sender, EventArgs e)
{
BuildOptions options = new BuildOptions(projectDir);
options.ForceAll = checkBoxForceAll.Checked;
options.CopyOriginal = checkBoxCopyOriginal.Checked;
if (checkBoxCustomAapt.Checked)
{
if (System.IO.File.Exists(textBoxAaptPath.Text))
options.AaptPath = textBoxAaptPath.Text;
else
{
MessageBox.Show("Указанного файла aapt не существует.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
if (checkBoxUseFramework.Checked)
options.FrameworkPath = textBoxFrameworkPath.Text;
options.AppPath = textBoxOutputApkPath.Text;
bool started = false;
#if !DEBUG
try
{
#endif
started = apktool.Build(options);
#if !DEBUG
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endif
if (started)
{
progressBarStyle = ProgressBarStyle.Marquee;
StartButtonEnabled = false;
}
}
private void buttonBrowseOutputApk_Click(object sender, EventArgs e)
{
saveFileDialogApk.InitialDirectory = System.IO.Path.GetDirectoryName(projectDir);
string foldername = projectDir.Replace(System.IO.Path.GetDirectoryName(projectDir) + "\\", String.Empty);
saveFileDialogApk.FileName = String.Format("{0}_{1}", foldername, DateTime.Now.ToString("yyyyMMdd_HH-mm-ss"));
if (saveFileDialogApk.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBoxOutputApkPath.Text = saveFileDialogApk.FileName;
}
}
}
+153
View File
@@ -0,0 +1,153 @@
<?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>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>3, 3</value>
</metadata>
<metadata name="ColumnImage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnImage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="openFileDialogBrowseAapt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>119, 3</value>
</metadata>
<metadata name="saveFileDialogApk.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>317, 3</value>
</metadata>
<metadata name="folderBrowserDialogFrameworks.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>468, 3</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>29</value>
</metadata>
</root>
+383
View File
@@ -0,0 +1,383 @@
namespace APKToolGUI
{
partial class FormDecode
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormDecode));
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelStateImage = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelStateText = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.ColumnImage = new System.Windows.Forms.DataGridViewImageColumn();
this.ColumnTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.buttonStart = new System.Windows.Forms.Button();
this.groupBoxOptions = new System.Windows.Forms.GroupBox();
this.checkBoxMatchOriginal = new System.Windows.Forms.CheckBox();
this.checkBoxKeepBrokenResource = new System.Windows.Forms.CheckBox();
this.textBoxFrameworkPath = new System.Windows.Forms.TextBox();
this.buttonFramePath = new System.Windows.Forms.Button();
this.checkBoxFrameworkPath = new System.Windows.Forms.CheckBox();
this.checkBoxForce = new System.Windows.Forms.CheckBox();
this.checkBoxNoRes = new System.Windows.Forms.CheckBox();
this.checkBoxNoSrc = new System.Windows.Forms.CheckBox();
this.folderBrowserDialogFrameworks = new System.Windows.Forms.FolderBrowserDialog();
this.folderBrowserDialogProjectDir = new System.Windows.Forms.FolderBrowserDialog();
this.textBoxOutputProjectDir = new System.Windows.Forms.TextBox();
this.buttonBrowseOutputProjectDir = new System.Windows.Forms.Button();
this.statusStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.groupBoxOptions.SuspendLayout();
this.SuspendLayout();
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabelStateImage,
this.toolStripStatusLabelStateText,
this.toolStripProgressBar1});
this.statusStrip1.Location = new System.Drawing.Point(0, 408);
this.statusStrip1.Margin = new System.Windows.Forms.Padding(0, 9, 0, 0);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(570, 22);
this.statusStrip1.TabIndex = 22;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabelStateImage
//
this.toolStripStatusLabelStateImage.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripStatusLabelStateImage.Name = "toolStripStatusLabelStateImage";
this.toolStripStatusLabelStateImage.Size = new System.Drawing.Size(0, 17);
this.toolStripStatusLabelStateImage.Text = "toolStripStatusLabel1";
//
// toolStripStatusLabelStateText
//
this.toolStripStatusLabelStateText.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.toolStripStatusLabelStateText.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.toolStripStatusLabelStateText.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
this.toolStripStatusLabelStateText.Name = "toolStripStatusLabelStateText";
this.toolStripStatusLabelStateText.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
this.toolStripStatusLabelStateText.Size = new System.Drawing.Size(453, 17);
this.toolStripStatusLabelStateText.Spring = true;
this.toolStripStatusLabelStateText.Text = "Done";
this.toolStripStatusLabelStateText.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.toolStripProgressBar1.AutoSize = false;
this.toolStripProgressBar1.MarqueeAnimationSpeed = 50;
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16);
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.AllowUserToResizeRows = false;
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Window;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.dataGridView1.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
this.dataGridView1.ColumnHeadersHeight = 24;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ColumnImage,
this.ColumnTime,
this.ColumnMessage});
this.dataGridView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.RowTemplate.Height = 19;
this.dataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.ShowEditingIcon = false;
this.dataGridView1.Size = new System.Drawing.Size(546, 182);
this.dataGridView1.TabIndex = 25;
//
// ColumnImage
//
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.NullValue = ((object)(resources.GetObject("dataGridViewCellStyle1.NullValue")));
this.ColumnImage.DefaultCellStyle = dataGridViewCellStyle1;
this.ColumnImage.Frozen = true;
this.ColumnImage.HeaderText = "";
this.ColumnImage.Name = "ColumnImage";
this.ColumnImage.ReadOnly = true;
this.ColumnImage.Resizable = System.Windows.Forms.DataGridViewTriState.False;
this.ColumnImage.Width = 20;
//
// ColumnTime
//
this.ColumnTime.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
this.ColumnTime.Frozen = true;
this.ColumnTime.HeaderText = "Time";
this.ColumnTime.Name = "ColumnTime";
this.ColumnTime.ReadOnly = true;
this.ColumnTime.Width = 55;
//
// ColumnMessage
//
this.ColumnMessage.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.ColumnMessage.HeaderText = "Message";
this.ColumnMessage.Name = "ColumnMessage";
this.ColumnMessage.ReadOnly = true;
//
// buttonStart
//
this.buttonStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonStart.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.buttonStart.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonStart.Location = new System.Drawing.Point(438, 371);
this.buttonStart.Margin = new System.Windows.Forms.Padding(3, 3, 3, 12);
this.buttonStart.Name = "buttonStart";
this.buttonStart.Size = new System.Drawing.Size(120, 24);
this.buttonStart.TabIndex = 27;
this.buttonStart.Text = "Decompile";
this.buttonStart.UseVisualStyleBackColor = true;
this.buttonStart.Click += new System.EventHandler(this.buttonStart_Click);
//
// groupBoxOptions
//
this.groupBoxOptions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxOptions.Controls.Add(this.checkBoxMatchOriginal);
this.groupBoxOptions.Controls.Add(this.checkBoxKeepBrokenResource);
this.groupBoxOptions.Controls.Add(this.textBoxFrameworkPath);
this.groupBoxOptions.Controls.Add(this.buttonFramePath);
this.groupBoxOptions.Controls.Add(this.checkBoxFrameworkPath);
this.groupBoxOptions.Controls.Add(this.checkBoxForce);
this.groupBoxOptions.Controls.Add(this.checkBoxNoRes);
this.groupBoxOptions.Controls.Add(this.checkBoxNoSrc);
this.groupBoxOptions.Location = new System.Drawing.Point(12, 200);
this.groupBoxOptions.Name = "groupBoxOptions";
this.groupBoxOptions.Size = new System.Drawing.Size(546, 166);
this.groupBoxOptions.TabIndex = 26;
this.groupBoxOptions.TabStop = false;
this.groupBoxOptions.Text = "Options";
//
// checkBoxMatchOriginal
//
this.checkBoxMatchOriginal.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.checkBoxMatchOriginal.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_MatchOriginal;
this.checkBoxMatchOriginal.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_MatchOriginal", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxMatchOriginal.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxMatchOriginal.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxMatchOriginal.Location = new System.Drawing.Point(6, 115);
this.checkBoxMatchOriginal.Name = "checkBoxMatchOriginal";
this.checkBoxMatchOriginal.Size = new System.Drawing.Size(534, 18);
this.checkBoxMatchOriginal.TabIndex = 13;
this.checkBoxMatchOriginal.Text = "Keeps files to closest to original as possible. Prevents rebuild.";
this.checkBoxMatchOriginal.UseVisualStyleBackColor = true;
//
// checkBoxKeepBrokenResource
//
this.checkBoxKeepBrokenResource.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.checkBoxKeepBrokenResource.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_KeepBrokenResource;
this.checkBoxKeepBrokenResource.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_KeepBrokenResource", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxKeepBrokenResource.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxKeepBrokenResource.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxKeepBrokenResource.Location = new System.Drawing.Point(6, 91);
this.checkBoxKeepBrokenResource.Name = "checkBoxKeepBrokenResource";
this.checkBoxKeepBrokenResource.Size = new System.Drawing.Size(534, 18);
this.checkBoxKeepBrokenResource.TabIndex = 12;
this.checkBoxKeepBrokenResource.Text = "Keep broken resource";
this.checkBoxKeepBrokenResource.UseVisualStyleBackColor = true;
//
// textBoxFrameworkPath
//
this.textBoxFrameworkPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxFrameworkPath.Enabled = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_UseFramework;
this.textBoxFrameworkPath.Location = new System.Drawing.Point(230, 138);
this.textBoxFrameworkPath.Name = "textBoxFrameworkPath";
this.textBoxFrameworkPath.Size = new System.Drawing.Size(280, 22);
this.textBoxFrameworkPath.TabIndex = 10;
//
// buttonFramePath
//
this.buttonFramePath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonFramePath.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.buttonFramePath.Enabled = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_UseFramework;
this.buttonFramePath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.buttonFramePath.Location = new System.Drawing.Point(512, 137);
this.buttonFramePath.Name = "buttonFramePath";
this.buttonFramePath.Size = new System.Drawing.Size(28, 24);
this.buttonFramePath.TabIndex = 11;
this.buttonFramePath.Text = "...";
this.buttonFramePath.UseVisualStyleBackColor = true;
this.buttonFramePath.Click += new System.EventHandler(this.buttonFramePath_Click);
//
// checkBoxFrameworkPath
//
this.checkBoxFrameworkPath.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_UseFramework;
this.checkBoxFrameworkPath.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_UseFramework", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxFrameworkPath.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxFrameworkPath.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxFrameworkPath.Location = new System.Drawing.Point(6, 139);
this.checkBoxFrameworkPath.Name = "checkBoxFrameworkPath";
this.checkBoxFrameworkPath.Size = new System.Drawing.Size(218, 18);
this.checkBoxFrameworkPath.TabIndex = 9;
this.checkBoxFrameworkPath.Text = "Uses framework files located in";
this.checkBoxFrameworkPath.UseVisualStyleBackColor = true;
//
// checkBoxForce
//
this.checkBoxForce.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.checkBoxForce.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_Force;
this.checkBoxForce.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_Force", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxForce.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxForce.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxForce.Location = new System.Drawing.Point(6, 67);
this.checkBoxForce.Name = "checkBoxForce";
this.checkBoxForce.Size = new System.Drawing.Size(534, 18);
this.checkBoxForce.TabIndex = 8;
this.checkBoxForce.Text = "Force delete destination directory";
this.checkBoxForce.UseVisualStyleBackColor = true;
//
// checkBoxNoRes
//
this.checkBoxNoRes.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.checkBoxNoRes.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_NoRes;
this.checkBoxNoRes.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_NoRes", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxNoRes.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxNoRes.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxNoRes.Location = new System.Drawing.Point(6, 43);
this.checkBoxNoRes.Name = "checkBoxNoRes";
this.checkBoxNoRes.Size = new System.Drawing.Size(534, 18);
this.checkBoxNoRes.TabIndex = 7;
this.checkBoxNoRes.Text = "Do not decode resources";
this.checkBoxNoRes.UseVisualStyleBackColor = true;
//
// checkBoxNoSrc
//
this.checkBoxNoSrc.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.checkBoxNoSrc.Checked = global::APKToolGUI.Properties.Settings.Default.DECOMPILE_NoSrc;
this.checkBoxNoSrc.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "DECOMPILE_NoSrc", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxNoSrc.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkBoxNoSrc.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.checkBoxNoSrc.Location = new System.Drawing.Point(6, 19);
this.checkBoxNoSrc.Name = "checkBoxNoSrc";
this.checkBoxNoSrc.Size = new System.Drawing.Size(534, 18);
this.checkBoxNoSrc.TabIndex = 6;
this.checkBoxNoSrc.Text = "Do not decode sources";
this.checkBoxNoSrc.UseVisualStyleBackColor = true;
//
// folderBrowserDialogFrameworks
//
this.folderBrowserDialogFrameworks.ShowNewFolderButton = false;
//
// textBoxOutputProjectDir
//
this.textBoxOutputProjectDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxOutputProjectDir.Location = new System.Drawing.Point(12, 372);
this.textBoxOutputProjectDir.Name = "textBoxOutputProjectDir";
this.textBoxOutputProjectDir.Size = new System.Drawing.Size(390, 22);
this.textBoxOutputProjectDir.TabIndex = 28;
//
// buttonBrowseOutputProjectDir
//
this.buttonBrowseOutputProjectDir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonBrowseOutputProjectDir.Location = new System.Drawing.Point(404, 371);
this.buttonBrowseOutputProjectDir.Name = "buttonBrowseOutputProjectDir";
this.buttonBrowseOutputProjectDir.Size = new System.Drawing.Size(28, 24);
this.buttonBrowseOutputProjectDir.TabIndex = 29;
this.buttonBrowseOutputProjectDir.Text = "...";
this.buttonBrowseOutputProjectDir.UseVisualStyleBackColor = true;
this.buttonBrowseOutputProjectDir.Click += new System.EventHandler(this.buttonBrowseOutputProjectDir_Click);
//
// FormDecode
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(570, 430);
this.Controls.Add(this.buttonBrowseOutputProjectDir);
this.Controls.Add(this.textBoxOutputProjectDir);
this.Controls.Add(this.dataGridView1);
this.Controls.Add(this.buttonStart);
this.Controls.Add(this.groupBoxOptions);
this.Controls.Add(this.statusStrip1);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.Name = "FormDecode";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "FormDecode";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormDecompile_FormClosed);
this.Load += new System.EventHandler(this.FormDecompile_Load);
this.Shown += new System.EventHandler(this.FormDecompile_Shown);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.groupBoxOptions.ResumeLayout(false);
this.groupBoxOptions.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateImage;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateText;
private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.DataGridViewImageColumn ColumnImage;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnTime;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage;
private System.Windows.Forms.Button buttonStart;
private System.Windows.Forms.GroupBox groupBoxOptions;
private System.Windows.Forms.TextBox textBoxFrameworkPath;
private System.Windows.Forms.Button buttonFramePath;
private System.Windows.Forms.CheckBox checkBoxFrameworkPath;
private System.Windows.Forms.CheckBox checkBoxForce;
private System.Windows.Forms.CheckBox checkBoxNoRes;
private System.Windows.Forms.CheckBox checkBoxNoSrc;
private System.Windows.Forms.CheckBox checkBoxMatchOriginal;
private System.Windows.Forms.CheckBox checkBoxKeepBrokenResource;
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogFrameworks;
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialogProjectDir;
private System.Windows.Forms.TextBox textBoxOutputProjectDir;
private System.Windows.Forms.Button buttonBrowseOutputProjectDir;
}
}
+226
View File
@@ -0,0 +1,226 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace APKToolGUI
{
public partial class FormDecode : Form
{
public FormDecode(string[] args)
{
Program.SetLanguage();
InitializeComponent();
this.Icon = Properties.Resources.android_thin;
this.Text = Application.ProductName;
textBoxOutputProjectDir.Multiline = true;
textBoxOutputProjectDir.MinimumSize = new Size(textBoxOutputProjectDir.Size.Width, textBoxOutputProjectDir.Size.Height);
textBoxOutputProjectDir.Size = new Size(textBoxOutputProjectDir.Size.Width, textBoxOutputProjectDir.Size.Height);
textBoxOutputProjectDir.Multiline = false;
this.apkPath = args[1];
}
private string apkPath;
private Apktool apktool;
private Apktool apktoolSync;
bool StartButtonEnabled
{
set
{
if (buttonStart.InvokeRequired)
buttonStart.BeginInvoke(new Action(() =>
{
buttonStart.Enabled = value;
}));
else
buttonStart.Enabled = value;
}
}
ProgressBarStyle progressBarStyle
{
set
{
if (toolStripProgressBar1.GetCurrentParent().InvokeRequired)
{
toolStripProgressBar1.GetCurrentParent().BeginInvoke(new Action(() =>
{
toolStripProgressBar1.Style = value;
}));
}
else
toolStripProgressBar1.Style = value;
}
}
private void ToLog(string time, string message, Image statusImage, Color backColor)
{
if (dataGridView1.InvokeRequired)
dataGridView1.BeginInvoke(new Action(() =>
{
int i = dataGridView1.Rows.Add(statusImage, time, message);
dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}));
else
{
int i = dataGridView1.Rows.Add(statusImage, time, message);
dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}
}
private void ToLog(ApktoolEventType eventType, String message)
{
switch (eventType)
{
case ApktoolEventType.Information:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.Window));
//ToStatus(result.Message, Properties.Resources.info);
break;
case ApktoolEventType.Error:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
//ToStatus(result.Message, Properties.Resources.error);
break;
case ApktoolEventType.Warning:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.warning, Color.FromKnownColor(KnownColor.LightYellow));
//ToStatus(result.Message, Properties.Resources.warning);
break;
default:
break;
}
}
#region Form event handlers
private void FormDecompile_Load(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(Properties.Settings.Default.JavaExe))
{
MessageBox.Show("Java location is not specified in the settings. Please, configure program first.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
if (!System.IO.File.Exists(Program.APKTOOL_PATH))
{
MessageBox.Show(String.Format("Apktool not fount in '{0}'.", Program.APKTOOL_PATH), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
//apktoolSync = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
apktool = new Apktool(Properties.Settings.Default.JavaExe, Program.APKTOOL_PATH);
apktool.ApktoolOutputDataRecieved += apktool_ApktoolOutputDataRecieved;
apktool.ApktoolErrorDataRecieved += apktool_ApktoolErrorDataRecieved;
apktool.DecompilingCompleted += apktool_DecompilingCompleted;
}
private void FormDecompile_Shown(object sender, EventArgs e)
{
this.Update();
textBoxOutputProjectDir.Text = System.IO.Path.GetDirectoryName(apkPath) + "\\" + System.IO.Path.GetFileNameWithoutExtension(apkPath);
Version javaVersion = apktool.GetJavaVersion();
if (javaVersion != null)
{
ToLog(ApktoolEventType.Information, String.Format("Java version \"{0} Update {1}\"", javaVersion.Minor, javaVersion.Revision));
string apktoolVersion = apktool.GetVersion();
if (!String.IsNullOrWhiteSpace(apktoolVersion))
ToLog(ApktoolEventType.Information, String.Format("Apktool version \"{0}\"", apktoolVersion));
else
ToLog(ApktoolEventType.Error, "Can't detect apktool version.");
}
else
MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void FormDecompile_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.Save();
}
#endregion
#region apktool event handlers
void apktool_ApktoolOutputDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
{
ToLog(e.EventType, e.Message);
}
void apktool_ApktoolErrorDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
{
ToLog(e.EventType, e.Message);
}
void apktool_DecompilingCompleted(object sender, ApktoolEventCompletedEventArgs e)
{
if (e.ExitCode == 0)
ToLog(ApktoolEventType.Information, "Декомпиляция успешно завршена.");
else
ToLog(ApktoolEventType.Warning, String.Format("Внимание! При декомпиляции приложения произошла ошибка. Код выхода: '{0}'.", e.ExitCode));
StartButtonEnabled = true;
progressBarStyle = ProgressBarStyle.Continuous;
}
#endregion
private void buttonFramePath_Click(object sender, EventArgs e)
{
if (folderBrowserDialogFrameworks.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBoxFrameworkPath.Text = folderBrowserDialogFrameworks.SelectedPath;
}
private void buttonStart_Click(object sender, EventArgs e)
{
DecompileOptions options = new DecompileOptions(apkPath);
options.NoResource = checkBoxNoRes.Checked;
options.NoSource = checkBoxNoSrc.Checked;
options.Force = checkBoxForce.Checked;
options.KeepBrokenResource = checkBoxKeepBrokenResource.Checked;
options.MatchOriginal = checkBoxMatchOriginal.Checked;
if (checkBoxFrameworkPath.Checked)
{
if (System.IO.Directory.Exists(textBoxFrameworkPath.Text))
options.FrameworkPath = textBoxFrameworkPath.Text;
else
{
MessageBox.Show("Указанной директорию расположения фреймворков не существует.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
options.OutputDirectory = textBoxOutputProjectDir.Text;
bool started = false;
#if !DEBUG
try
{
#endif
started = apktool.Decompile(options);
#if !DEBUG
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endif
if (started)
{
progressBarStyle = ProgressBarStyle.Marquee;
StartButtonEnabled = false;
}
}
private void buttonBrowseOutputProjectDir_Click(object sender, EventArgs e)
{
folderBrowserDialogProjectDir.SelectedPath = System.IO.Path.GetDirectoryName(apkPath);
if (folderBrowserDialogProjectDir.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBoxOutputProjectDir.Text = folderBrowserDialogProjectDir.SelectedPath;
}
}
}
+159
View File
@@ -0,0 +1,159 @@
<?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>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>5, 7</value>
</metadata>
<metadata name="ColumnImage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="dataGridViewCellStyle1.NullValue" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
Qk32AgAAAAAAADYAAAAoAAAADgAAABAAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEgoTGw8bGw8bGw8bGw8bGw8bGw8bG
w8bGw8bGw8bGw8bGw8bGw8YAAAAAAISChP///////////////////////////////////////////8bD
xgAAAAAAhIKE////////////////////////////////////////////xsPGAAAAAACEgoT/////////
///////////////////////////////////Gw8YAAAAAAISChP//////////////////////////////
/////////////8bDxgAAAAAAhIKE////////////AAD/AAD/////////AAD/AAD/////////xsPGAAAA
AACEgoT///////////////8AAP8AAP8AAP8AAP/////////////Gw8YAAAAAAISChP//////////////
/////wAA/wAA/////////////////8bDxgAAAAAAhIKE////////////////AAD/AAD/AAD/AAD/////
////////xsPGAAAAAACEgoT///////////8AAP8AAP////////8AAP8AAP/////////Gw8YAAAAAAISC
hP///////////////////////////////////////////8bDxgAAAAAAhIKE////////////////////
////////////////////////xsPGAAAAAACEgoT/////////////////////////////////////////
///Gw8YAAAAAAISChP///////////////////////////////////////////8bDxgAAAAAAhIKEhIKE
hIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEhIKEAAA=
</value>
</data>
<metadata name="ColumnTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="folderBrowserDialogFrameworks.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>108, 11</value>
</metadata>
<metadata name="folderBrowserDialogProjectDir.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>336, 11</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>29</value>
</metadata>
</root>
+1217
View File
File diff suppressed because it is too large Load Diff
+936
View File
@@ -0,0 +1,936 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Java;
namespace APKToolGUI
{
public partial class FormMain : Form
{
public FormMain()
{
Program.SetLanguage();
InitializeComponent();
this.Icon = Properties.Resources.android_thin;
this.Text += " - v" + ProductVersion;
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
CheckAlignSwitch = !Properties.Settings.Default.MAIN_Zipalign_CheckOnly;
}
//private void FormMain_Shown(object sender, EventArgs e)
//{
// this.Update();
// if (!JavaSearch.TrySearchJava(ref javaExe))
// {
// if (MessageBox.Show(Language.DoYouWantToSelectJavaLocation, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
// {
// OpenFileDialog openJavaExe = new OpenFileDialog()
// {
// Multiselect = false,
// Filter = "java.exe|java.exe"
// };
// if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
// {
// Properties.Settings.Default.JavaExe = openJavaExe.FileName;
// Properties.Settings.Default.Save();
// Application.Restart();
// }
// else
// Application.Exit();
// }
// else
// Application.Exit();
// }
// ToLog(ApktoolEventType.Information, "Java location: " + javaExe);
// InitializeUpdateChecker();
// InitializeAPKTool();
// InitializeSignApk();
// InitializeZipalign();
// String javaVersion = apktoolSync.GetJavaVersionSync();
// if (javaVersion != null)
// {
// ToLog(ApktoolEventType.Information, "Java version: " + javaVersion);
// string apktoolVersion = apktoolSync.GetVersionSync();
// if (apktoolVersion != null)
// ToLog(ApktoolEventType.Information, "APKTool version: " + apktoolVersion);
// }
// else
// {
// MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
// }
// TimeSpan updateInterval = DateTime.Now - Properties.Settings.Default.LastUpdateCheck;
// if (updateInterval.Days > 0 && Properties.Settings.Default.CheckForUpdateAtStartup)
// updateCheker.CheckAsync(true);
// ToStatus(Language.Done, Properties.Resources.done);
//}
private void GetJavaPath()
{
if (!File.Exists(Properties.Settings.Default.JavaExe))
{
javaExe = JavaUtils.SearchPath();
if (!File.Exists(javaExe))
{
if (MessageBox.Show(Language.DoYouWantToSelectJavaLocation, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
using (OpenFileDialog openJavaExe = new OpenFileDialog())
{
openJavaExe.Filter = "java.exe|java.exe";
if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
javaExe = Program.GetPortablePath(openJavaExe.FileName);
Properties.Settings.Default.JavaExe = javaExe;
Properties.Settings.Default.Save();
}
else
Environment.Exit(0);
}
}
else
Environment.Exit(0);
}
else
{
Properties.Settings.Default.JavaExe = javaExe;
Properties.Settings.Default.Save();
}
}
ToLog(ApktoolEventType.Information, String.Format("Java path \"{0}\"", javaExe/*"Java path: " + javaExe*/));
}
private void FormMain_Shown(object sender, EventArgs e)
{
this.Update();
GetJavaPath();
InitializeUpdateChecker();
InitializeAPKTool();
InitializeSignApk();
InitializeZipalign();
Version javaVer = apktool.GetJavaVersion();
if (javaVer != null)
{
ToLog(ApktoolEventType.Information, String.Format("Java version \"{0} Update {1}\"", javaVer.Minor, javaVer.Revision));
string apktoolVersion = apktool.GetVersion();
if (!String.IsNullOrWhiteSpace(apktoolVersion))
ToLog(ApktoolEventType.Information, String.Format("Apktool version \"{0}\"", apktoolVersion));
else
ToLog(ApktoolEventType.Error, "Can't detect apktool version.");
}
else
MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
TimeSpan updateInterval = DateTime.Now - Properties.Settings.Default.LastUpdateCheck;
if (updateInterval.Days > 0 && Properties.Settings.Default.CheckForUpdateAtStartup)
updateCheker.CheckAsync(true);
ToStatus(Language.Done, Properties.Resources.done);
}
private void Application_ApplicationExit(object sender, EventArgs e)
{
Properties.Settings.Default.Save();
}
private string javaExe = Properties.Settings.Default.JavaExe;
Apktool apktool;
Signapk signapk;
Zipalign zipalign;
UpdateChecker updateCheker;
#region UpdateChecker
private void InitializeUpdateChecker()
{
updateCheker = new UpdateChecker("http://infinum.orgfree.com/_Update/APKToolGUI/version.txt", Version.Parse(Application.ProductVersion));
updateCheker.Completed += new RunWorkerCompletedEventHandler(updateCheker_Completed);
}
private void updateCheker_Completed(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Result is UpdateChecker.Result)
{
UpdateChecker.Result result = (UpdateChecker.Result)e.Result;
switch (result.State)
{
case UpdateChecker.State.NeedUpdate:
if (MessageBox.Show(Language.UpdateNewVersion, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
Process.Start("http://4pda.ru/forum/index.php?showtopic=452034");
break;
case UpdateChecker.State.NoUpdate:
if (!result.Silently)
MessageBox.Show(Language.UpdateNoUpdates, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case UpdateChecker.State.Error:
if (!result.Silently)
MessageBox.Show("Error update checking:" + Environment.NewLine + result.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
Properties.Settings.Default.LastUpdateCheck = DateTime.Now;
}
}
#endregion
#region Log&Status
private void ToStatus(string message, Image statusImage)
{
BeginInvoke(new MethodInvoker(delegate
{
toolStripStatusLabelStateText.Text = message;
toolStripStatusLabelStateImage.Image = statusImage;
}));
}
private void ToLog(string time, string message, Image statusImage, Color backColor)
{
if (dataGridView1.InvokeRequired)
dataGridView1.BeginInvoke(new Action(() =>
{
int i = dataGridView1.Rows.Add(statusImage, time, message);
dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}));
else
{
int i = dataGridView1.Rows.Add(statusImage, time, message);
dataGridView1.Rows[i].DefaultCellStyle.BackColor = backColor;
dataGridView1.FirstDisplayedScrollingRowIndex = i;
}
}
private void ToLog(ApktoolEventType eventType, String message)
{
switch (eventType)
{
case ApktoolEventType.Information:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.Window));
//ToStatus(result.Message, Properties.Resources.info);
break;
case ApktoolEventType.Error:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
//ToStatus(result.Message, Properties.Resources.error);
break;
case ApktoolEventType.Warning:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.warning, Color.FromKnownColor(KnownColor.LightYellow));
//ToStatus(result.Message, Properties.Resources.warning);
break;
case ApktoolEventType.Unknown:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.error, Color.FromKnownColor(KnownColor.LightPink));
//ToStatus(result.Message, Properties.Resources.warning);
break;
default:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Properties.Resources.info, Color.FromKnownColor(KnownColor.LightBlue));
break;
}
}
private void Done()
{
if (statusStrip1.InvokeRequired)
statusStrip1.BeginInvoke(new Action(delegate { toolStripProgressBar1.Style = ProgressBarStyle.Continuous; }));
ActionButtonsEnabled = true;
ToStatus(Language.Done, Properties.Resources.done);
}
private void ClearLog()
{
if (Properties.Settings.Default.ClearLogBeforeAction)
dataGridView1.Rows.Clear();
}
#endregion
#region signapk
private void InitializeSignApk()
{
signapk = new Signapk(javaExe, Program.SIGNAPK_PATH);
signapk.Exited += signapk_SignapkExited;
}
void signapk_SignapkExited(object sender, SignapkExitedEventArgs e)
{
if (e.ExitCode == 0)
{
ToLog(ApktoolEventType.Information, String.Format("Signing successfully completed. File saved to \"{0}\".", e.OutFilePath));
}
Done();
}
private bool Singning()
{
return signapk.Sign(textBox_SIGN_PublicKey.Text, textBox_SIGN_PrivateKey.Text, textBox_SIGN_InputFile.Text, textBox_SIGN_OutputFile.Text);
}
#endregion
#region apktool
private void InitializeAPKTool()
{
apktool = new Apktool(javaExe, Program.APKTOOL_PATH);
apktool.ApktoolOutputDataRecieved += apktool_ApktoolOutputDataRecieved;
apktool.ApktoolErrorDataRecieved += apktool_ApktoolErrorDataRecieved;
apktool.DecompilingCompleted += apktool_DecompilingCompleted;
apktool.BuildCompleted += apktool_BuildCompleted;
apktool.InstallFrameworkCompleted += apktool_InstallFrameworkCompleted;
}
void apktool_InstallFrameworkCompleted(object sender, ApktoolEventCompletedEventArgs e)
{
Done();
}
void apktool_BuildCompleted(object sender, ApktoolEventCompletedEventArgs e)
{
Done();
}
void apktool_DecompilingCompleted(object sender, ApktoolEventCompletedEventArgs e)
{
if (e.ExitCode == 0)
{
ToLog(ApktoolEventType.Information, String.Format("Decompiling successfully completed. Output directory \"{0}\".", e.ProjectDir));
}
Done();
}
void apktool_ApktoolErrorDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
{
if (e.EventType == ApktoolEventType.Unknown)
ToLog(ApktoolEventType.Error, e.Message);
else
ToLog(e.EventType, e.Message);
}
void apktool_ApktoolOutputDataRecieved(object sender, ApktoolDataReceivedEventArgs e)
{
ToLog(e.EventType, e.Message);
}
private bool InstallFramework()
{
InstallFrameworkOptions options = new InstallFrameworkOptions(textBox_IF_InputFramePath.Text);
if (checkBox_IF_FramePath.Checked)
options.FrameDir = textBox_IF_FrameDir.Text;
if (checkBox_IF_Tag.Checked)
options.Tag = textBox_IF_Tag.Text;
return apktool.InstallFramework(options);
}
private bool Decompiling()
{
//string projectDir = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text) + "\\" + System.IO.Path.GetFileNameWithoutExtension(textBox_DECODE_InputAppPath.Text);
DecompileOptions options = new DecompileOptions(textBox_DECODE_InputAppPath.Text);
options.NoSource = checkBox_DECODE_NoSrc.Checked;
options.NoResource = checkBox_DECODE_NoRes.Checked;
options.Force = checkBox_DECODE_Force.Checked;
options.KeepBrokenResource = checkBox_DECODE_KeepBrokenRes.Checked;
options.MatchOriginal = checkBox_DECODE_MatchOriginal.Checked;
if (checkBox_DECODE_UseFramework.Checked)
options.FrameworkPath = textBox_DECODE_FrameDir.Text;
if (checkBox_DECODE_OutputDirectory.Checked)
options.OutputDirectory = textBox_DECODE_OutputDirectory.Text;
return apktool.Decompile(options);
}
private bool Build()
{
//String outputAPK = textBox_BUILD_InputProjectDir.Text + DateTime.Now.ToString("_yyyyMMdd_HH-mm-ss") + ".apk";
BuildOptions options = new BuildOptions(textBox_BUILD_InputProjectDir.Text);
options.ForceAll = checkBox_BUILD_ForceAll.Checked;
options.CopyOriginal = checkBox_BUILD_CopyOriginal.Checked;
if (checkBox_BUILD_UseAapt.Checked)
options.AaptPath = textBox_BUILD_AaptPath.Text;
if (checkBox_BUILD_UseFramework.Checked)
options.FrameworkPath = textBox_BUILD_FrameDir.Text;
if (checkBox_BUILD_OutputAppPath.Checked)
options.AppPath = textBox_BUILD_OutputAppPath.Text;
return apktool.Build(options);
}
#endregion
#region zipalign
private void InitializeZipalign()
{
zipalign = new Zipalign(Program.ZIPALIGN_PATH);
zipalign.OutputDataReceived += zipalign_OutputDataReceived;
zipalign.ErrorDataReceived += zipalign_ErrorDataReceived;
zipalign.Exited += zipalign_Exited;
}
void zipalign_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (!String.IsNullOrWhiteSpace(e.Data))
ToLog(ApktoolEventType.Information, e.Data);
}
void zipalign_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
if (!String.IsNullOrWhiteSpace(e.Data))
ToLog(ApktoolEventType.Error, e.Data);
}
void zipalign_Exited(object sender, EventArgs e)
{
Zipalign za = (Zipalign)sender;
if (za.ExitCode == 0)
ToLog(ApktoolEventType.Information, "File saved to " + za.Options.OutputFile);
else
ToLog(ApktoolEventType.Warning, "Exit code: " + za.ExitCode);
Done();
//ActionButtonsEnabled = true;
}
private bool Align()
{
ZipalignOptions options = new ZipalignOptions(textBox_ZIPALIGN_InputFile.Text, Convert.ToInt32(numericUpDown_ZIPALIGN_AlignmentBytes.Value));
options.CheckOnly = checkBox_ZIPALIGN_CheckAlignment.Checked;
options.OverwriteOutputFile = checkBox_ZIPALIGN_OverwriteOutputFile.Checked;
options.Recompress = checkBox_ZIPALIGN_Recompress.Checked;
options.VerboseOut = checkBox_ZIPALIGN_VerboseOutput.Checked;
options.OutputFile = textBox_ZIPALIGN_OutputFile.Text;
return zipalign.Align(options);
}
//void zipalign_ZipalignExited(object sender, ZipalignExitedEventArgs e)
//{
// ToLog_Done();
//}
//private void ZipAlign(string inputFilePath)
//{
// string outputFile = Path.GetDirectoryName(inputFilePath) + @"\" + Path.GetFileNameWithoutExtension(inputFilePath) + "_zipaligned.apk";
// zipalign.Align(inputFilePath, outputFile, 4, true, false, false);
//}
#endregion
private bool ActionButtonsEnabled
{
set
{
if (button_BUILD_Build.InvokeRequired)
button_BUILD_Build.BeginInvoke(new Action(delegate
{
button_BUILD_Build.Enabled = value;
}));
else
button_BUILD_Build.Enabled = value;
if (button_DECODE_Decode.InvokeRequired)
button_DECODE_Decode.BeginInvoke(new Action(delegate
{
button_DECODE_Decode.Enabled = value;
}));
else
button_DECODE_Decode.Enabled = value;
if (button_IF_InstallFramework.InvokeRequired)
button_IF_InstallFramework.BeginInvoke(new Action(delegate
{
button_IF_InstallFramework.Enabled = value;
}));
else
button_IF_InstallFramework.Enabled = value;
if (button_ZIPALIGN_Align.InvokeRequired)
button_ZIPALIGN_Align.BeginInvoke(new Action(delegate
{
button_ZIPALIGN_Align.Enabled = value;
}));
else
button_ZIPALIGN_Align.Enabled = value;
}
}
private void ShowMessage(string message, MessageBoxIcon status)
{
MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, status);
}
private bool IsValidPath(string path)
{
try
{
Path.GetFileName(path);
}
catch (ArgumentException)
{
return false;
}
return true;
//if (path.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) != -1)
// return false;
//else
// return true;
}
#region Main menu event handlers
private void menuItemSettings_Click(object sender, EventArgs e)
{
FormSettings frm = new FormSettings();
frm.ShowDialog();
}
private void menuItemExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void menuItemCheckUpdate_Click(object sender, EventArgs e)
{
updateCheker.CheckAsync();
}
private void menuItemAbout_Click(object sender, EventArgs e)
{
FormAboutBox frm = new FormAboutBox();
frm.ShowDialog();
}
#endregion
#region Control event handlers
private void clearLogToolStripMenuItem_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
}
#region DECODE
private void button_DECODE_BrowseFrameDir_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (!String.IsNullOrWhiteSpace(textBox_DECODE_FrameDir.Text))
fbd.SelectedPath = textBox_DECODE_FrameDir.Text;
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_DECODE_FrameDir.Text = fbd.SelectedPath;
}
}
private void button_DECODE_BrowseOutputDirectory_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (!String.IsNullOrWhiteSpace(textBox_DECODE_OutputDirectory.Text))
fbd.SelectedPath = textBox_DECODE_OutputDirectory.Text;
else
if (!String.IsNullOrWhiteSpace(textBox_DECODE_InputAppPath.Text))
fbd.SelectedPath = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text);
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_DECODE_OutputDirectory.Text = fbd.SelectedPath;
}
}
private void button_DECODE_BrowseInputAppPath_Click(object sender, EventArgs e)
{
if (openFileDialogApk.ShowDialog() == DialogResult.OK)
{
textBox_DECODE_InputAppPath.Text = openFileDialogApk.FileName;
//textBox_BUILD_InputProjectDir.Text = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text) + @"\" + Path.GetFileNameWithoutExtension(textBox_DECODE_InputAppPath.Text);
if (checkBox_DECODE_OutputDirectory.Checked)
textBox_DECODE_OutputDirectory.Text = Path.GetDirectoryName(textBox_DECODE_InputAppPath.Text) + "\\" + System.IO.Path.GetFileNameWithoutExtension(textBox_DECODE_InputAppPath.Text);
}
else
return;
}
private void button_DECODE_Decode_Click(object sender, EventArgs e)
{
if (File.Exists(textBox_DECODE_InputAppPath.Text))
{
if (checkBox_DECODE_UseFramework.Checked && !Directory.Exists(textBox_DECODE_FrameDir.Text))
{
ShowMessage("Выбранный каталог фреймворков не существует.", MessageBoxIcon.Warning);
return;
}
if (checkBox_DECODE_OutputDirectory.Checked)
{
if (String.IsNullOrWhiteSpace(textBox_DECODE_OutputDirectory.Text))
{
ShowMessage("Не выбран каталог декомпиляции.", MessageBoxIcon.Warning);
return;
}
else
if (!IsValidPath(textBox_DECODE_OutputDirectory.Text))
{
ShowMessage("Выбранный каталог декомпиляции не может быть создан, т.к. содержит недопустимые символы.", MessageBoxIcon.Warning);
return;
}
}
bool started = Decompiling();
if (started)
{
toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
ClearLog();
ToLog(ApktoolEventType.Information, "Decoding " + Path.GetFileName(textBox_DECODE_InputAppPath.Text));
ToStatus(String.Format("Decoding \"{0}\"...", Path.GetFileName(textBox_DECODE_InputAppPath.Text)), Properties.Resources.waiting);
ActionButtonsEnabled = false;
}
else
ToLog(ApktoolEventType.Error, "Error. Decoding is not started.");
}
else
MessageBox.Show(Language.WarningFileForDecodingNotSelected, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endregion
#region BUILD
private void button_BUILD_BrowseAaptPath_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "Executable file|*.exe";
if (!String.IsNullOrWhiteSpace(textBox_BUILD_AaptPath.Text))
{
ofd.InitialDirectory = Path.GetDirectoryName(textBox_BUILD_AaptPath.Text);
ofd.FileName = Path.GetFileName(textBox_BUILD_AaptPath.Text);
}
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_BUILD_AaptPath.Text = ofd.FileName;
}
}
private void button_BUILD_BrowseFrameDir_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (!String.IsNullOrWhiteSpace(textBox_BUILD_FrameDir.Text))
fbd.SelectedPath = textBox_BUILD_FrameDir.Text;
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_BUILD_FrameDir.Text = fbd.SelectedPath;
}
}
private void button_BUILD_BrowseOutputAppPath_Click(object sender, EventArgs e)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
if (!String.IsNullOrWhiteSpace(textBox_BUILD_OutputAppPath.Text))
{
sfd.InitialDirectory = Path.GetDirectoryName(textBox_BUILD_OutputAppPath.Text);
sfd.FileName = Path.GetFileNameWithoutExtension(textBox_BUILD_OutputAppPath.Text);
sfd.DefaultExt = Path.GetExtension(textBox_BUILD_OutputAppPath.Text);
}
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_BUILD_OutputAppPath.Text = sfd.FileName;
}
}
private void button_BUILD_BrowseInputProjectDir_Click(object sender, EventArgs e)
{
if (Directory.Exists(textBox_BUILD_InputProjectDir.Text))
folderBrowserDialogBuild.SelectedPath = textBox_BUILD_InputProjectDir.Text;
if (folderBrowserDialogBuild.ShowDialog() == DialogResult.OK)
{
textBox_BUILD_InputProjectDir.Text = folderBrowserDialogBuild.SelectedPath;
if (checkBox_BUILD_OutputAppPath.Checked)
textBox_BUILD_OutputAppPath.Text = textBox_BUILD_InputProjectDir.Text + DateTime.Now.ToString("_yyyyMMdd_HH-mm-ss") + ".apk";
//String outputAPK = textBox_BUILD_InputProjectDir.Text + DateTime.Now.ToString("_yyyyMMdd_HH-mm-ss") + ".apk";
}
}
private void button_BUILD_Build_Click(object sender, EventArgs e)
{
if (Directory.Exists(textBox_BUILD_InputProjectDir.Text))
{
bool started = Build();
if (started)
{
toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
ActionButtonsEnabled = false;
ClearLog();
ToLog(ApktoolEventType.Information, "Build " + Path.GetFileName(textBox_BUILD_InputProjectDir.Text));
ToStatus(String.Format("Build \"{0}\"...", textBox_BUILD_InputProjectDir.Text.Replace(Path.GetDirectoryName(textBox_BUILD_InputProjectDir.Text) + @"\", String.Empty)), Properties.Resources.waiting);
}
else
ToLog(ApktoolEventType.Error, "Error. Build is not started.");
}
else
MessageBox.Show(Language.WarningDecodingFolderNotSelected, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
#endregion
#region INSTALL FRAMEWORK
private void button_IF_BrowseFrameDir_Click(object sender, EventArgs e)
{
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
if (Directory.Exists(textBox_IF_FrameDir.Text))
fbd.SelectedPath = textBox_IF_FrameDir.Text;
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_IF_FrameDir.Text = fbd.SelectedPath;
}
}
private void button_IF_BrowseInputFramePath_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
if (File.Exists(textBox_IF_InputFramePath.Text))
{
ofd.InitialDirectory = Path.GetDirectoryName(textBox_IF_InputFramePath.Text);
ofd.FileName = Path.GetFileNameWithoutExtension(textBox_IF_InputFramePath.Text);
}
ofd.Filter = "apk|*.apk|jar|*.jar";
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_IF_InputFramePath.Text = ofd.FileName;
}
}
private void button_IF_InstallFramework_Click(object sender, EventArgs e)
{
if (checkBox_IF_FramePath.Checked)
{
if (String.IsNullOrWhiteSpace(textBox_IF_FrameDir.Text) || !Directory.Exists(textBox_IF_FrameDir.Text))
{
ShowMessage("Ошибка выбора директории фреймворка.", MessageBoxIcon.Warning);
return;
}
}
if (checkBox_IF_Tag.Checked && String.IsNullOrWhiteSpace(textBox_IF_Tag.Text))
{
ShowMessage("Ошибка ввода тега фреймворка.", MessageBoxIcon.Warning);
return;
}
if (!File.Exists(textBox_IF_InputFramePath.Text))
{
ShowMessage("Ошибка выбора файла фреймворка. Файл не существует.", MessageBoxIcon.Warning);
return;
}
bool started = InstallFramework();
if (started)
{
toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
ActionButtonsEnabled = false;
ClearLog();
ToLog(ApktoolEventType.Information, "Installing framework " + Path.GetFileName(textBox_IF_InputFramePath.Text));
ToStatus(String.Format("Installing framework \"{0}\"...", Path.GetFileName(textBox_IF_InputFramePath.Text)), Properties.Resources.waiting);
}
else
ToLog(ApktoolEventType.Error, "Error. Framework installation is not started.");
}
#endregion
#region SIGN
private void button_SIGN_BrowsePublicKey_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "*.pem|*.pem";
if (File.Exists(textBox_SIGN_PublicKey.Text))
{
ofd.InitialDirectory = Path.GetDirectoryName(textBox_SIGN_PublicKey.Text);
ofd.FileName = Path.GetFileNameWithoutExtension(textBox_SIGN_PublicKey.Text);
}
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_SIGN_PublicKey.Text = Program.GetPortablePath(ofd.FileName);
}
}
private void button_SIGN_BrowsePrivateKey_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "*.pk8|*.pk8";
if (File.Exists(textBox_SIGN_PrivateKey.Text))
{
ofd.InitialDirectory = Path.GetDirectoryName(textBox_SIGN_PrivateKey.Text);
ofd.FileName = Path.GetFileNameWithoutExtension(textBox_SIGN_PrivateKey.Text);
}
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_SIGN_PrivateKey.Text = Program.GetPortablePath(ofd.FileName);
}
}
private void button_SIGN_BrowseOutputFile_Click(object sender, EventArgs e)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.Filter = "(*.apk)|*.apk|(*.jar)|*.jar|(*.zip)|*.zip";
if (File.Exists(textBox_SIGN_InputFile.Text))
{
sfd.Filter = String.Format("(*{0})|*{0}", Path.GetExtension(textBox_SIGN_InputFile.Text));
sfd.InitialDirectory = Path.GetDirectoryName(textBox_SIGN_InputFile.Text);
sfd.FileName = String.Format("{0}_signed{1}", Path.GetFileNameWithoutExtension(textBox_SIGN_InputFile.Text), Path.GetExtension(textBox_SIGN_InputFile.Text));
}
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textBox_SIGN_OutputFile.Text = sfd.FileName;
}
}
}
private void button_SIGN_BrowseInputFile_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "(*.apk;*.jar;*.zip)|*.apk;*.jar;*.zip";
if (ofd.ShowDialog() == DialogResult.OK)
{
textBox_SIGN_InputFile.Text = ofd.FileName;
textBox_SIGN_OutputFile.Text =
String.Format("{0}{1}{2}_signed{3}",
Path.GetDirectoryName(textBox_SIGN_InputFile.Text),
Path.DirectorySeparatorChar,
Path.GetFileNameWithoutExtension(textBox_SIGN_InputFile.Text),
Path.GetExtension(textBox_SIGN_InputFile.Text));
}
}
}
private void button_SIGN_Sign_Click(object sender, EventArgs e)
{
if (!File.Exists(textBox_SIGN_PublicKey.Text))
{
ShowMessage("Public key not found.", MessageBoxIcon.Warning);
return;
}
if (!File.Exists(textBox_SIGN_PrivateKey.Text))
{
ShowMessage("Private key not found.", MessageBoxIcon.Warning);
return;
}
if (!File.Exists(textBox_SIGN_InputFile.Text))
{
ShowMessage("Input file not found.", MessageBoxIcon.Warning);
return;
}
bool started = Singning();
if (started)
{
toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
ActionButtonsEnabled = false;
ClearLog();
ToLog(ApktoolEventType.Information, "Signing " + Path.GetFileName(textBox_SIGN_InputFile.Text));
ToStatus(String.Format("Signing \"{0}\"...", Path.GetFileName(textBox_SIGN_InputFile.Text)), Properties.Resources.waiting);
}
else
ToLog(ApktoolEventType.Error, "Error. Signing is not started.");
}
#endregion
#region ZIPALIGN
private bool CheckAlignSwitch
{
set
{
checkBox_ZIPALIGN_Recompress.Enabled = value;
checkBox_ZIPALIGN_OverwriteOutputFile.Enabled = value;
tableLayoutPanel_ZIPALIGN_OutputFile.Enabled = value;
}
}
private void checkBox_ZIPALIGN_CheckAlignment_CheckedChanged(object sender, EventArgs e)
{
CheckAlignSwitch = !checkBox_ZIPALIGN_CheckAlignment.Checked;
}
private void button_ZIPALIGN_BrowseOutputFile_Click(object sender, EventArgs e)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
if (File.Exists(textBox_ZIPALIGN_InputFile.Text))
{
sfd.InitialDirectory = Path.GetDirectoryName(textBox_ZIPALIGN_InputFile.Text);
sfd.Filter = String.Format("{0}|*.{0}", Path.GetExtension(textBox_ZIPALIGN_InputFile.Text).Replace(".", String.Empty));
sfd.FileName = String.Format("{0}_zipaligned", Path.GetFileNameWithoutExtension(textBox_ZIPALIGN_InputFile.Text));
}
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBox_ZIPALIGN_OutputFile.Text = sfd.FileName;
}
}
private void button_ZIPALIGN_BrowseInputFile_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "ZIP archives(*.apk;*.zip;*.jar)|*.apk;*.zip;*.jar";
if (File.Exists(textBox_ZIPALIGN_InputFile.Text))
{
ofd.InitialDirectory = Path.GetDirectoryName(textBox_ZIPALIGN_InputFile.Text);
ofd.FileName = Path.GetFileName(textBox_ZIPALIGN_InputFile.Text);
}
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textBox_ZIPALIGN_InputFile.Text = ofd.FileName;
if (!checkBox_ZIPALIGN_CheckAlignment.Checked)
textBox_ZIPALIGN_OutputFile.Text = String.Format("{0}\\{1}_zipaligned{2}",
Path.GetDirectoryName(ofd.FileName),
Path.GetFileNameWithoutExtension(ofd.FileName),
Path.GetExtension(ofd.FileName));
}
}
}
private void button_ZIPALIGN_Align_Click(object sender, EventArgs e)
{
if (!File.Exists(textBox_ZIPALIGN_InputFile.Text))
{
ShowMessage("Ошибка. Выбранный файл не существует.", MessageBoxIcon.Warning);
return;
}
bool started = Align();
if (started)
{
toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
ActionButtonsEnabled = false;
ClearLog();
ToLog(ApktoolEventType.Information, "Aligning " + Path.GetFileName(textBox_ZIPALIGN_InputFile.Text));
ToStatus(String.Format("Aligning \"{0}\"...", Path.GetFileName(textBox_ZIPALIGN_InputFile.Text)), Properties.Resources.waiting);
}
else
ToLog(ApktoolEventType.Error, "Error. Aligning is not started.");
}
#endregion
#endregion
}
}
File diff suppressed because it is too large Load Diff
+278
View File
@@ -0,0 +1,278 @@
<?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="checkBox_DECODE_UseFramework.Text" xml:space="preserve">
<value>Использовать файлы фремворка из:</value>
</data>
<data name="checkBox_DECODE_Force.Text" xml:space="preserve">
<value>Перезаписывать файлы в каталоге назначения</value>
</data>
<data name="checkBox_DECODE_NoRes.Text" xml:space="preserve">
<value>Не декомпилировать ресурсы</value>
</data>
<data name="checkBox_DECODE_NoSrc.Text" xml:space="preserve">
<value>Не декомпилировать исходный код</value>
</data>
<data name="checkBox_BUILD_UseAapt.Text" xml:space="preserve">
<value>Использовать aapt.exe из</value>
</data>
<data name="checkBox_BUILD_ForceAll.Text" xml:space="preserve">
<value>Пропустить определение изменений и построить все файлы</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="radioButtonFileZipalign.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 18</value>
</data>
<data name="ColumnTime.HeaderText" xml:space="preserve">
<value>Время</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ColumnTime.Width" type="System.Int32, mscorlib">
<value>65</value>
</data>
<data name="ColumnMessage.HeaderText" xml:space="preserve">
<value>Сообщение</value>
</data>
<data name="clearLogToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
</data>
<data name="clearLogToolStripMenuItem.Text" xml:space="preserve">
<value>Очистить журнал</value>
</data>
<data name="contextMenuStripLog.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 26</value>
</data>
<data name="menuItemSettings.Text" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="menuItemExit.Text" xml:space="preserve">
<value>Выход</value>
</data>
<data name="menuItemFile.Text" xml:space="preserve">
<value>Файл</value>
</data>
<data name="menuItemCheckUpdate.Text" xml:space="preserve">
<value>Проверить обновление</value>
</data>
<data name="menuItemAbout.Text" xml:space="preserve">
<value>О программе</value>
</data>
<data name="menuItemHelp.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="tabPageZipAlign.Text" xml:space="preserve">
<value>Выравнивание</value>
</data>
<data name="tabPageSign.Text" xml:space="preserve">
<value>Подпись</value>
</data>
<data name="toolStripStatusLabelStateText.Text" xml:space="preserve">
<value>Загрузка...</value>
</data>
<data name="openFileDialogSignApk.Title" xml:space="preserve">
<value>Выберите файл для подписи</value>
</data>
<data name="checkBox_BUILD_CopyOriginal.Text" xml:space="preserve">
<value>Копировать оригинальный AndroidManifest.xml и папку META-INF в построенный apk</value>
</data>
<data name="checkBox_BUILD_UseFramework.Text" xml:space="preserve">
<value>Использовать файлы фремворка из:</value>
</data>
<data name="checkBox_DECODE_KeepBrokenRes.Text" xml:space="preserve">
<value>Сохранить испорченные ресурсы</value>
</data>
<data name="tabPageBuild.Text" xml:space="preserve">
<value>Сборка</value>
</data>
<data name="tabPageDecode.Text" xml:space="preserve">
<value>Декомпиляция</value>
</data>
<data name="checkBox_DECODE_OutputDirectory.Text" xml:space="preserve">
<value>Декомпилировать в каталог:</value>
</data>
<data name="checkBox_BUILD_OutputAppPath.Text" xml:space="preserve">
<value>Сохранить файл как:</value>
</data>
<data name="tabPageInstallFramework.Text" xml:space="preserve">
<value>Установка фреймворков</value>
</data>
<data name="groupBox_BUILD_Options.Text" xml:space="preserve">
<value>Опции</value>
</data>
<data name="groupBox_DECODE_Options.Text" xml:space="preserve">
<value>Опции</value>
</data>
<data name="groupBox_IF_Options.Text" xml:space="preserve">
<value>Опции</value>
</data>
<data name="button_IF_InstallFramework.Text" xml:space="preserve">
<value>Установить</value>
</data>
<data name="button_ZIPALIGN_Align.Text" xml:space="preserve">
<value>Выровнять</value>
</data>
<data name="label_ZIPALIGN_OutputFile.Text" xml:space="preserve">
<value>Сохранить файл как:</value>
</data>
<data name="groupBox_ZIPALIGN_Options.Text" xml:space="preserve">
<value>Опции</value>
</data>
<data name="checkBox_ZIPALIGN_OverwriteOutputFile.Text" xml:space="preserve">
<value>Перезаписать выходной файл, если он существует</value>
</data>
<data name="button_SIGN_Sign.Text" xml:space="preserve">
<value>Подписать</value>
</data>
<data name="checkBox_IF_FramePath.Text" xml:space="preserve">
<value>Устанавливать фреймворк в каталог:</value>
</data>
<data name="checkBox_ZIPALIGN_Recompress.Text" xml:space="preserve">
<value>Перепаковать с использованием алгоритма Zopfli</value>
</data>
<data name="checkBox_ZIPALIGN_VerboseOutput.Text" xml:space="preserve">
<value>Подробный вывод</value>
</data>
<data name="label_ZIPALIGN_AlignmentBytes.Text" xml:space="preserve">
<value>Выравнивание (в байтах), например, '4' для 32-битного выравнивания</value>
</data>
<data name="checkBox_DECODE_MatchOriginal.Text" xml:space="preserve">
<value>Сохранять файлы близко к оригиналу, насколько это возможно. Предотвращает ребилд.</value>
</data>
<data name="checkBox_ZIPALIGN_CheckAlignment.Text" xml:space="preserve">
<value>Только проверить выравнивание (не модифицирует файл)</value>
</data>
<data name="groupBox_SIGN_Options.Text" xml:space="preserve">
<value>Опции</value>
</data>
<data name="label_SIGN_OutputFile.Text" xml:space="preserve">
<value>Сохранить файл как:</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>
</root>
+229
View File
@@ -0,0 +1,229 @@
namespace APKToolGUI
{
partial class FormSettings
{
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormSettings));
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.checkBoxCheckUpdateStartup = new System.Windows.Forms.CheckBox();
this.groupBoxJava = new System.Windows.Forms.GroupBox();
this.labelCustomJavaLocation = new System.Windows.Forms.Label();
this.textBoxCustomJavaLocation = new System.Windows.Forms.TextBox();
this.buttonCustomJavaLocation = new System.Windows.Forms.Button();
this.groupBoxLanguage = new System.Windows.Forms.GroupBox();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.groupBoxContextMenu = new System.Windows.Forms.GroupBox();
this.labelAdminRights = new System.Windows.Forms.Label();
this.buttonAddContextMenu = new System.Windows.Forms.Button();
this.buttonRemoveContextMenu = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonОК = new System.Windows.Forms.Button();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.groupBoxJava.SuspendLayout();
this.groupBoxLanguage.SuspendLayout();
this.groupBoxContextMenu.SuspendLayout();
this.SuspendLayout();
//
// tabControl1
//
resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
//
// tabPage1
//
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.Controls.Add(this.groupBox1);
this.tabPage1.Controls.Add(this.groupBoxJava);
this.tabPage1.Controls.Add(this.groupBoxLanguage);
this.tabPage1.Controls.Add(this.groupBoxContextMenu);
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.checkBox1);
this.groupBox1.Controls.Add(this.checkBoxCheckUpdateStartup);
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// checkBox1
//
resources.ApplyResources(this.checkBox1, "checkBox1");
this.checkBox1.Checked = global::APKToolGUI.Properties.Settings.Default.ClearLogBeforeAction;
this.checkBox1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "ClearLogBeforeAction", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBox1.Name = "checkBox1";
this.checkBox1.UseVisualStyleBackColor = true;
//
// checkBoxCheckUpdateStartup
//
resources.ApplyResources(this.checkBoxCheckUpdateStartup, "checkBoxCheckUpdateStartup");
this.checkBoxCheckUpdateStartup.Checked = global::APKToolGUI.Properties.Settings.Default.CheckForUpdateAtStartup;
this.checkBoxCheckUpdateStartup.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxCheckUpdateStartup.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::APKToolGUI.Properties.Settings.Default, "CheckForUpdateAtStartup", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxCheckUpdateStartup.Name = "checkBoxCheckUpdateStartup";
this.checkBoxCheckUpdateStartup.UseVisualStyleBackColor = true;
//
// groupBoxJava
//
resources.ApplyResources(this.groupBoxJava, "groupBoxJava");
this.groupBoxJava.Controls.Add(this.labelCustomJavaLocation);
this.groupBoxJava.Controls.Add(this.textBoxCustomJavaLocation);
this.groupBoxJava.Controls.Add(this.buttonCustomJavaLocation);
this.groupBoxJava.Name = "groupBoxJava";
this.groupBoxJava.TabStop = false;
//
// labelCustomJavaLocation
//
resources.ApplyResources(this.labelCustomJavaLocation, "labelCustomJavaLocation");
this.labelCustomJavaLocation.Name = "labelCustomJavaLocation";
//
// textBoxCustomJavaLocation
//
resources.ApplyResources(this.textBoxCustomJavaLocation, "textBoxCustomJavaLocation");
this.textBoxCustomJavaLocation.BackColor = System.Drawing.SystemColors.Window;
this.textBoxCustomJavaLocation.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::APKToolGUI.Properties.Settings.Default, "JavaExe", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxCustomJavaLocation.Name = "textBoxCustomJavaLocation";
this.textBoxCustomJavaLocation.Text = global::APKToolGUI.Properties.Settings.Default.JavaExe;
//
// buttonCustomJavaLocation
//
resources.ApplyResources(this.buttonCustomJavaLocation, "buttonCustomJavaLocation");
this.buttonCustomJavaLocation.Name = "buttonCustomJavaLocation";
this.buttonCustomJavaLocation.UseVisualStyleBackColor = true;
this.buttonCustomJavaLocation.Click += new System.EventHandler(this.buttonCustomJavaLocation_Click);
//
// groupBoxLanguage
//
resources.ApplyResources(this.groupBoxLanguage, "groupBoxLanguage");
this.groupBoxLanguage.Controls.Add(this.comboBox1);
this.groupBoxLanguage.Name = "groupBoxLanguage";
this.groupBoxLanguage.TabStop = false;
//
// comboBox1
//
resources.ApplyResources(this.comboBox1, "comboBox1");
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Name = "comboBox1";
//
// groupBoxContextMenu
//
resources.ApplyResources(this.groupBoxContextMenu, "groupBoxContextMenu");
this.groupBoxContextMenu.Controls.Add(this.labelAdminRights);
this.groupBoxContextMenu.Controls.Add(this.buttonAddContextMenu);
this.groupBoxContextMenu.Controls.Add(this.buttonRemoveContextMenu);
this.groupBoxContextMenu.Name = "groupBoxContextMenu";
this.groupBoxContextMenu.TabStop = false;
//
// labelAdminRights
//
resources.ApplyResources(this.labelAdminRights, "labelAdminRights");
this.labelAdminRights.Name = "labelAdminRights";
//
// buttonAddContextMenu
//
resources.ApplyResources(this.buttonAddContextMenu, "buttonAddContextMenu");
this.buttonAddContextMenu.Name = "buttonAddContextMenu";
this.buttonAddContextMenu.UseVisualStyleBackColor = true;
this.buttonAddContextMenu.Click += new System.EventHandler(this.buttonAddContextMenu_Click);
//
// buttonRemoveContextMenu
//
resources.ApplyResources(this.buttonRemoveContextMenu, "buttonRemoveContextMenu");
this.buttonRemoveContextMenu.Name = "buttonRemoveContextMenu";
this.buttonRemoveContextMenu.UseVisualStyleBackColor = true;
this.buttonRemoveContextMenu.Click += new System.EventHandler(this.buttonRemoveContextMenu_Click);
//
// buttonCancel
//
resources.ApplyResources(this.buttonCancel, "buttonCancel");
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseVisualStyleBackColor = true;
//
// buttonОК
//
resources.ApplyResources(this.buttonОК, "buttonОК");
this.buttonОК.Name = "buttonОК";
this.buttonОК.UseVisualStyleBackColor = true;
this.buttonОК.Click += new System.EventHandler(this.buttonОК_Click);
//
// FormSettings
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonОК);
this.Controls.Add(this.tabControl1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormSettings";
this.Load += new System.EventHandler(this.FormSettings_Load);
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBoxJava.ResumeLayout(false);
this.groupBoxJava.PerformLayout();
this.groupBoxLanguage.ResumeLayout(false);
this.groupBoxContextMenu.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.GroupBox groupBoxJava;
private System.Windows.Forms.GroupBox groupBoxLanguage;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.GroupBox groupBoxContextMenu;
private System.Windows.Forms.Label labelAdminRights;
private System.Windows.Forms.Button buttonAddContextMenu;
private System.Windows.Forms.Button buttonRemoveContextMenu;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.Button buttonОК;
private System.Windows.Forms.TextBox textBoxCustomJavaLocation;
private System.Windows.Forms.Button buttonCustomJavaLocation;
private System.Windows.Forms.Label labelCustomJavaLocation;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.CheckBox checkBoxCheckUpdateStartup;
private System.Windows.Forms.CheckBox checkBox1;
}
}
+160
View File
@@ -0,0 +1,160 @@
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace APKToolGUI
{
public partial class FormSettings : Form
{
public FormSettings()
{
InitializeComponent();
if (!ExplorerContextMenu.IsAdmin())
{
SetButtonShield(buttonAddContextMenu, true);
SetButtonShield(buttonRemoveContextMenu, true);
}
}
#region GUI
private void FormSettings_Load(object sender, EventArgs e)
{
LoadSettings();
}
private void buttonОК_Click(object sender, EventArgs e)
{
SaveSettings();
this.Close();
}
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr SendMessage(HandleRef hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
private static void SetButtonShield(Button btn, bool showShield)
{
// BCM_SETSHIELD = 0x0000160C
SendMessage(new HandleRef(btn, btn.Handle), 0x160C, IntPtr.Zero, showShield ? new IntPtr(1) : IntPtr.Zero);
}
private void buttonAddContextMenu_Click(object sender, EventArgs e)
{
if(MessageBox.Show(Language.DoYouRealyWantToInstallCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
RunAsAdmin(Application.ExecutablePath, "ccm");
}
private void buttonRemoveContextMenu_Click(object sender, EventArgs e)
{
if (MessageBox.Show(Language.DoYouRealyWantToRemoveCM, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
RunAsAdmin(Application.ExecutablePath, "rcm");
}
#endregion
private void LoadSettings()
{
//textBox1.Font = Properties.Settings.Default.FontLogMainWindow;
//textBox2.Font = Properties.Settings.Default.FontLogContextMenuWindow;
//textBox1.Text = textBox1.Font.Name + ", " + textBox1.Font.Size;
//textBox2.Text = textBox2.Font.Name + ", " + textBox2.Font.Size;
String sysLang = Language.SystemLanguage;
comboBox1.Items.Add(sysLang);
comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("ru"));
comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("en"));
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("uk"));
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("ru-RU"));
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
//comboBox1.Items.Add(System.Globalization.CultureInfo.GetCultureInfo("uk-UA"));
comboBox1.DisplayMember = "NativeName"; // <= System.Globalization.CultureInfo.GetCultureInfo("ru-RU").NativeName
comboBox1.ValueMember = "Name"; // <= System.Globalization.CultureInfo.GetCultureInfo("ru-RU").Name
// Если в настройках есть язык, выбираем его в списке.
String _culture = Properties.Settings.Default.Culture;
if (_culture.Equals("Auto"))
comboBox1.SelectedItem = sysLang;
else
{
var qwe = System.Globalization.CultureInfo.GetCultureInfo(_culture);
comboBox1.SelectedItem = qwe;
}
}
private void SaveSettings()
{
//Properties.Settings.Default.FontLogMainWindow = textBox1.Font;
//Properties.Settings.Default.FontLogContextMenuWindow = textBox2.Font;
if (Language.SystemLanguage.Equals(comboBox1.SelectedItem.ToString()))
Properties.Settings.Default.Culture = "Auto";
else
Properties.Settings.Default.Culture = comboBox1.SelectedItem.ToString();
Properties.Settings.Default.Save();
}
public static void RunAsAdmin(string aFileName, string anArguments)
{
System.Diagnostics.ProcessStartInfo processInfo = new System.Diagnostics.ProcessStartInfo();
processInfo.FileName = aFileName;
processInfo.Arguments = anArguments;
processInfo.UseShellExecute = true;
processInfo.Verb = "runas"; // здесь вся соль
try
{
System.Diagnostics.Process.Start(processInfo);
}
catch (Exception e)
{
MessageBox.Show(e.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//private void button1_Click(object sender, EventArgs e)
//{
// FontDialog fontDialog1 = new FontDialog();
// fontDialog1.Font = textBox1.Font;
// if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
// {
// textBox1.Text = fontDialog1.Font.Name + ", " + fontDialog1.Font.Size;
// textBox1.Font = fontDialog1.Font;
// }
//}
//private void button2_Click(object sender, EventArgs e)
//{
// FontDialog fontDialog1 = new FontDialog();
// fontDialog1.Font = textBox2.Font;
// if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
// {
// textBox2.Text = fontDialog1.Font.Name + ", " + fontDialog1.Font.Size;
// textBox2.Font = fontDialog1.Font;
// }
//}
private void buttonCustomJavaLocation_Click(object sender, EventArgs e)
{
using(OpenFileDialog openJavaExe = new OpenFileDialog())
{
openJavaExe.Filter = "java.exe|java.exe";
if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
textBoxCustomJavaLocation.Text = Program.GetPortablePath(openJavaExe.FileName);
}
//OpenFileDialog openJavaExe = new OpenFileDialog()
//{
// Multiselect = false,
// Filter = "java.exe|java.exe"
//};
//if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
//{
// textBoxCustomJavaLocation.Text = openJavaExe.FileName;
//}
}
}
}
+651
View File
@@ -0,0 +1,651 @@
<?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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonCustomJavaLocation.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>System</value>
</data>
<data name="labelAdminRights.Text" xml:space="preserve">
<value>Administrator rights required</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tabControl1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;buttonRemoveContextMenu.Parent" xml:space="preserve">
<value>groupBoxContextMenu</value>
</data>
<data name="groupBoxLanguage.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;buttonAddContextMenu.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.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="checkBoxCheckUpdateStartup.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelAdminRights.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="buttonCancel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="tabControl1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="checkBoxCheckUpdateStartup.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;groupBoxContextMenu.Name" xml:space="preserve">
<value>groupBoxContextMenu</value>
</data>
<data name="&gt;&gt;tabPage1.Parent" xml:space="preserve">
<value>tabControl1</value>
</data>
<data name="buttonRemoveContextMenu.Text" xml:space="preserve">
<value>Uninstall</value>
</data>
<data name="&gt;&gt;comboBox1.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="buttonAddContextMenu.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="labelAdminRights.Size" type="System.Drawing.Size, System.Drawing">
<value>247, 23</value>
</data>
<data name="labelAdminRights.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;tabPage1.Name" xml:space="preserve">
<value>tabPage1</value>
</data>
<data name="&gt;&gt;tabPage1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;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="buttonCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Settings</value>
</data>
<data name="checkBox1.Text" xml:space="preserve">
<value>Clear log before action</value>
</data>
<data name="buttonRemoveContextMenu.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;buttonCustomJavaLocation.Name" xml:space="preserve">
<value>buttonCustomJavaLocation</value>
</data>
<data name="buttonAddContextMenu.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 23</value>
</data>
<data name="checkBoxCheckUpdateStartup.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 17</value>
</data>
<data name="groupBoxJava.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;comboBox1.Name" xml:space="preserve">
<value>comboBox1</value>
</data>
<data name="tabPage1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="buttonCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="comboBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>129, 19</value>
</data>
<data name="&gt;&gt;labelCustomJavaLocation.Parent" xml:space="preserve">
<value>groupBoxJava</value>
</data>
<data name="&gt;&gt;buttonAddContextMenu.Name" xml:space="preserve">
<value>buttonAddContextMenu</value>
</data>
<data name="&gt;&gt;checkBoxCheckUpdateStartup.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="textBoxCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;checkBoxCheckUpdateStartup.Name" xml:space="preserve">
<value>checkBoxCheckUpdateStartup</value>
</data>
<data name="&gt;&gt;textBoxCustomJavaLocation.Name" xml:space="preserve">
<value>textBoxCustomJavaLocation</value>
</data>
<data name="&gt;&gt;groupBoxJava.Name" xml:space="preserve">
<value>groupBoxJava</value>
</data>
<data name="labelCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>183, 23</value>
</data>
<data name="groupBoxContextMenu.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="tabPage1.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="&gt;&gt;buttonAddContextMenu.Parent" xml:space="preserve">
<value>groupBoxContextMenu</value>
</data>
<data name="buttonAddContextMenu.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="&gt;&gt;labelAdminRights.Name" xml:space="preserve">
<value>labelAdminRights</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBoxJava.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="buttonОК.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>System</value>
</data>
<data name="groupBoxContextMenu.Text" xml:space="preserve">
<value>Context menu</value>
</data>
<data name="&gt;&gt;buttonRemoveContextMenu.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="&gt;&gt;groupBoxLanguage.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="&gt;&gt;checkBox1.Name" xml:space="preserve">
<value>checkBox1</value>
</data>
<data name="&gt;&gt;tabControl1.Name" xml:space="preserve">
<value>tabControl1</value>
</data>
<data name="textBoxCustomJavaLocation.WordWrap" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;buttonОК.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>454, 265</value>
</data>
<data name="&gt;&gt;groupBoxContextMenu.Parent" xml:space="preserve">
<value>tabPage1</value>
</data>
<data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="textBoxCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;checkBox1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;tabControl1.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="buttonОК.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="&gt;&gt;checkBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;checkBox1.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="checkBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>132, 17</value>
</data>
<data name="tabPage1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="&gt;&gt;groupBoxContextMenu.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="buttonCustomJavaLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>FormSettings</value>
</data>
<data name="buttonCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="comboBox1.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>System</value>
</data>
<data name="&gt;&gt;buttonОК.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="comboBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;labelAdminRights.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="checkBox1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="buttonОК.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;groupBoxJava.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;textBoxCustomJavaLocation.Parent" xml:space="preserve">
<value>groupBoxJava</value>
</data>
<data name="&gt;&gt;groupBoxContextMenu.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="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>tabPage1</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="buttonCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
<value>405, 17</value>
</data>
<data name="buttonRemoveContextMenu.Location" type="System.Drawing.Point, System.Drawing">
<value>345, 21</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>385, 278</value>
</data>
<data name="&gt;&gt;buttonОК.Name" xml:space="preserve">
<value>buttonОК</value>
</data>
<data name="checkBoxCheckUpdateStartup.Text" xml:space="preserve">
<value>Check for updates at startup</value>
</data>
<data name="&gt;&gt;comboBox1.Parent" xml:space="preserve">
<value>groupBoxLanguage</value>
</data>
<data name="&gt;&gt;tabControl1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="buttonCancel.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>System</value>
</data>
<data name="buttonAddContextMenu.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="comboBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="buttonAddContextMenu.Location" type="System.Drawing.Point, System.Drawing">
<value>256, 21</value>
</data>
<data name="&gt;&gt;buttonОК.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="labelAdminRights.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 168</value>
</data>
<data name="&gt;&gt;groupBoxLanguage.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="groupBoxJava.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 115</value>
</data>
<data name="labelAdminRights.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 21</value>
</data>
<data name="groupBoxLanguage.Text" xml:space="preserve">
<value>Language</value>
</data>
<data name="&gt;&gt;buttonCancel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelAdminRights.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="tabControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 6</value>
</data>
<data name="&gt;&gt;tabControl1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;labelAdminRights.Parent" xml:space="preserve">
<value>groupBoxContextMenu</value>
</data>
<data name="&gt;&gt;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="buttonCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 20</value>
</data>
<data name="&gt;&gt;checkBoxCheckUpdateStartup.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonAddContextMenu.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>System</value>
</data>
<data name="buttonОК.Location" type="System.Drawing.Point, System.Drawing">
<value>304, 278</value>
</data>
<data name="checkBoxCheckUpdateStartup.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 19</value>
</data>
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>446, 239</value>
</data>
<data name="&gt;&gt;buttonCustomJavaLocation.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="buttonAddContextMenu.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="comboBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>299, 21</value>
</data>
<data name="&gt;&gt;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="groupBoxContextMenu.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;groupBoxLanguage.Parent" xml:space="preserve">
<value>tabPage1</value>
</data>
<data name="labelCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;comboBox1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;buttonCancel.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="&gt;&gt;buttonCustomJavaLocation.Parent" xml:space="preserve">
<value>groupBoxJava</value>
</data>
<data name="buttonRemoveContextMenu.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>System</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="buttonAddContextMenu.Text" xml:space="preserve">
<value>Install</value>
</data>
<data name="checkBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 42</value>
</data>
<data name="&gt;&gt;tabPage1.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="checkBoxCheckUpdateStartup.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value>General</value>
</data>
<data name="buttonRemoveContextMenu.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="labelCustomJavaLocation.Text" xml:space="preserve">
<value>Custom Java location</value>
</data>
<data name="groupBoxContextMenu.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 59</value>
</data>
<data name="groupBoxJava.Text" xml:space="preserve">
<value>Java</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="&gt;&gt;buttonRemoveContextMenu.Name" xml:space="preserve">
<value>buttonRemoveContextMenu</value>
</data>
<data name="buttonCustomJavaLocation.Text" xml:space="preserve">
<value>...</value>
</data>
<data name="&gt;&gt;checkBoxCheckUpdateStartup.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="groupBoxLanguage.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="groupBoxLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 6</value>
</data>
<data name="labelCustomJavaLocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;groupBoxJava.Parent" xml:space="preserve">
<value>tabPage1</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>466, 308</value>
</data>
<data name="&gt;&gt;buttonAddContextMenu.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonRemoveContextMenu.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="&gt;&gt;buttonRemoveContextMenu.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="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 65</value>
</data>
<data name="textBoxCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>209, 20</value>
</data>
<data name="buttonОК.Text" xml:space="preserve">
<value>ОК</value>
</data>
<data name="buttonОК.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonRemoveContextMenu.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 23</value>
</data>
<data name="&gt;&gt;textBoxCustomJavaLocation.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="checkBox1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;labelCustomJavaLocation.Name" xml:space="preserve">
<value>labelCustomJavaLocation</value>
</data>
<data name="labelCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 17</value>
</data>
<data name="&gt;&gt;groupBoxLanguage.Name" xml:space="preserve">
<value>groupBoxLanguage</value>
</data>
<data name="checkBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;labelCustomJavaLocation.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBoxJava.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 47</value>
</data>
<data name="buttonОК.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="groupBoxContextMenu.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 50</value>
</data>
<data name="labelAdminRights.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Other</value>
</data>
<data name="groupBoxLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 47</value>
</data>
<data name="labelCustomJavaLocation.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleRight</value>
</data>
<data name="textBoxCustomJavaLocation.Location" type="System.Drawing.Point, System.Drawing">
<value>195, 18</value>
</data>
<data name="&gt;&gt;buttonCustomJavaLocation.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>ru</value>
</metadata>
</root>
+166
View File
@@ -0,0 +1,166 @@
<?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="checkBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>288, 17</value>
</data>
<data name="checkBox1.Text" xml:space="preserve">
<value>Очищать журнал событий перед каждой операцией</value>
</data>
<data name="checkBoxCheckUpdateStartup.Size" type="System.Drawing.Size, System.Drawing">
<value>276, 17</value>
</data>
<data name="checkBoxCheckUpdateStartup.Text" xml:space="preserve">
<value>Проверять обновление при запуске (раз в сутки)</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Прочее</value>
</data>
<data name="labelCustomJavaLocation.Text" xml:space="preserve">
<value>Пользовательское расположение</value>
</data>
<data name="buttonCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 22</value>
</data>
<data name="groupBoxLanguage.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="$this.Text" xml:space="preserve">
<value>Настройки</value>
</data>
</root>
+56
View File
@@ -0,0 +1,56 @@
using System;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace Java
{
public class JarProcess : Process
{
public JarProcess(string javaPath, string jarPath)
{
this.JavaPath = javaPath;
this.JarPath = jarPath;
Initialize();
}
private void Initialize()
{
this.EnableRaisingEvents = true;
this.StartInfo.FileName = JavaPath; //задаем имя запускного файла
this.StartInfo.UseShellExecute = false; //отключаем использование оболочки, чтобы можно было читать данные вывода
this.StartInfo.RedirectStandardOutput = true; // разрешаем перенаправление данных вывода
this.StartInfo.RedirectStandardError = true; // разрешаем перенаправление данных вывода
this.StartInfo.CreateNoWindow = true; //запрещаем создавать окно для запускаемой программы
}
public string JavaPath { get; set; }
public string JarPath { get; set; }
public new bool Start(string args)
{
this.EnableRaisingEvents = true;
this.StartInfo.Arguments = String.Format("-jar \"{0}\" {1}", JarPath, args);
return base.Start();
}
public Version GetJavaVersion()
{
using (Process javaProcess = new Process())
{
javaProcess.StartInfo.FileName = this.JavaPath;
javaProcess.StartInfo.Arguments = "-version";
javaProcess.StartInfo.CreateNoWindow = true;
javaProcess.StartInfo.UseShellExecute = false;
javaProcess.StartInfo.RedirectStandardError = true;
bool started = javaProcess.Start();
string output = javaProcess.StandardError.ReadToEnd();
javaProcess.WaitForExit(3000);
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(output, @"^java version ""(\d+)\.(\d+)\.(\d+)_(\d+)"".$", System.Text.RegularExpressions.RegexOptions.Multiline);
if (match.Groups.Count == 5)
return new Version(Convert.ToInt32(match.Groups[1].Value), Convert.ToInt32(match.Groups[2].Value), Convert.ToInt32(match.Groups[3].Value), Convert.ToInt32(match.Groups[4].Value));
else
return null;
}
}
}
}
+49
View File
@@ -0,0 +1,49 @@
using System;
using System.Diagnostics;
namespace Java
{
public class JavaUtils
{
private static string GetJavaInstallationPath()
{
string environmentPath = Environment.GetEnvironmentVariable("JAVA_HOME");
if (!string.IsNullOrEmpty(environmentPath))
{
return environmentPath;
}
string javaKey = "SOFTWARE\\JavaSoft\\Java Runtime Environment\\";
if (Environment.Is64BitOperatingSystem)
javaKey = "SOFTWARE\\Wow6432Node\\JavaSoft\\Java Runtime Environment\\";
using (Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(javaKey))
{
if (rk != null)
{
string currentVersion = rk.GetValue("CurrentVersion").ToString();
using (Microsoft.Win32.RegistryKey key = rk.OpenSubKey(currentVersion))
return key.GetValue("JavaHome").ToString();
}
else
return null;
}
}
public static string SearchPath()
{
string installPath = GetJavaInstallationPath();
if (!String.IsNullOrWhiteSpace(installPath))
{
string filePath = System.IO.Path.Combine(installPath, "bin\\Java.exe");
if (System.IO.File.Exists(filePath))
return filePath;
else
return null;
}
else
return null;
}
}
}
+333
View File
@@ -0,0 +1,333 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.34209
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace APKToolGUI {
using System;
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Language {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Language() {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("APKToolGUI.Language", typeof(Language).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Ищет локализованную строку, похожую на About.
/// </summary>
internal static string About {
get {
return ResourceManager.GetString("About", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Apktool version.
/// </summary>
internal static string APKToolVersion {
get {
return ResourceManager.GetString("APKToolVersion", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Build.
/// </summary>
internal static string Build {
get {
return ResourceManager.GetString("Build", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Check for update.
/// </summary>
internal static string CheckForUpdate {
get {
return ResourceManager.GetString("CheckForUpdate", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Debug mode.
/// </summary>
internal static string DebugMode {
get {
return ResourceManager.GetString("DebugMode", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Decode.
/// </summary>
internal static string Decode {
get {
return ResourceManager.GetString("Decode", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Done.
/// </summary>
internal static string Done {
get {
return ResourceManager.GetString("Done", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Do you realy want to install context menu?.
/// </summary>
internal static string DoYouRealyWantToInstallCM {
get {
return ResourceManager.GetString("DoYouRealyWantToInstallCM", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Do you realy want to remove context menu?.
/// </summary>
internal static string DoYouRealyWantToRemoveCM {
get {
return ResourceManager.GetString("DoYouRealyWantToRemoveCM", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Java is not found. Do you want to select custom location?.
/// </summary>
internal static string DoYouWantToSelectJavaLocation {
get {
return ResourceManager.GetString("DoYouWantToSelectJavaLocation", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Error.
/// </summary>
internal static string Error {
get {
return ResourceManager.GetString("Error", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Java is not installed or is installed incorrectly. The program will be closed..
/// </summary>
internal static string ErrorJavaDetect {
get {
return ResourceManager.GetString("ErrorJavaDetect", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Error reading settings!.
/// </summary>
internal static string ErrorReadSettings {
get {
return ResourceManager.GetString("ErrorReadSettings", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Error saving settings!.
/// </summary>
internal static string ErrorSaveSettings {
get {
return ResourceManager.GetString("ErrorSaveSettings", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Exit.
/// </summary>
internal static string Exit {
get {
return ResourceManager.GetString("Exit", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на File.
/// </summary>
internal static string File {
get {
return ResourceManager.GetString("File", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на File not found.
/// </summary>
internal static string FileNotFound {
get {
return ResourceManager.GetString("FileNotFound", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Folder is not exist.
/// </summary>
internal static string FolderNotExist {
get {
return ResourceManager.GetString("FolderNotExist", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Help.
/// </summary>
internal static string Help {
get {
return ResourceManager.GetString("Help", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Install framework.
/// </summary>
internal static string InstallFramework {
get {
return ResourceManager.GetString("InstallFramework", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на For the changes to take effect you must restart the program. You want to do it now?.
/// </summary>
internal static string NeedRestart {
get {
return ResourceManager.GetString("NeedRestart", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Settings.
/// </summary>
internal static string Settings {
get {
return ResourceManager.GetString("Settings", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Sign.
/// </summary>
internal static string Sign {
get {
return ResourceManager.GetString("Sign", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на System language.
/// </summary>
internal static string SystemLanguage {
get {
return ResourceManager.GetString("SystemLanguage", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на New version is available. Do you want to update?.
/// </summary>
internal static string UpdateNewVersion {
get {
return ResourceManager.GetString("UpdateNewVersion", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на No update is available..
/// </summary>
internal static string UpdateNoUpdates {
get {
return ResourceManager.GetString("UpdateNoUpdates", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Decoding folder not selected!.
/// </summary>
internal static string WarningDecodingFolderNotSelected {
get {
return ResourceManager.GetString("WarningDecodingFolderNotSelected", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на File for decoding not selected!.
/// </summary>
internal static string WarningFileForDecodingNotSelected {
get {
return ResourceManager.GetString("WarningFileForDecodingNotSelected", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на File for signing not selected!.
/// </summary>
internal static string WarningFileForSigningNotSelected {
get {
return ResourceManager.GetString("WarningFileForSigningNotSelected", resourceCulture);
}
}
/// <summary>
/// Ищет локализованную строку, похожую на Framework not selected!.
/// </summary>
internal static string WarningFrameworkNotSelected {
get {
return ResourceManager.GetString("WarningFrameworkNotSelected", resourceCulture);
}
}
}
}
+210
View File
@@ -0,0 +1,210 @@
<?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>About</value>
</data>
<data name="APKToolVersion" xml:space="preserve">
<value>Apktool version</value>
</data>
<data name="CheckForUpdate" xml:space="preserve">
<value>Check for update</value>
</data>
<data name="DebugMode" xml:space="preserve">
<value>Debug mode</value>
</data>
<data name="Exit" xml:space="preserve">
<value>Exit</value>
</data>
<data name="File" xml:space="preserve">
<value>File</value>
</data>
<data name="Help" xml:space="preserve">
<value>Help</value>
</data>
<data name="Settings" xml:space="preserve">
<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>
</data>
<data name="ErrorReadSettings" xml:space="preserve">
<value>Error reading settings!</value>
</data>
<data name="UpdateNewVersion" xml:space="preserve">
<value>New version is available. Do you want to update?</value>
</data>
<data name="UpdateNoUpdates" xml:space="preserve">
<value>No update is available.</value>
</data>
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
<value>Decoding folder not selected!</value>
</data>
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
<value>File for decoding not selected!</value>
</data>
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
<value>File for signing not selected!</value>
</data>
<data name="WarningFrameworkNotSelected" xml:space="preserve">
<value>Framework not selected!</value>
</data>
<data name="ErrorSaveSettings" xml:space="preserve">
<value>Error saving settings!</value>
</data>
<data name="NeedRestart" xml:space="preserve">
<value>For the changes to take effect you must restart the program. You want to do it now?</value>
</data>
<data name="FileNotFound" xml:space="preserve">
<value>File not found</value>
</data>
<data name="FolderNotExist" xml:space="preserve">
<value>Folder is not exist</value>
</data>
<data name="Error" xml:space="preserve">
<value>Error</value>
</data>
<data name="Build" xml:space="preserve">
<value>Build</value>
</data>
<data name="Decode" xml:space="preserve">
<value>Decode</value>
</data>
<data name="InstallFramework" xml:space="preserve">
<value>Install framework</value>
</data>
<data name="Sign" xml:space="preserve">
<value>Sign</value>
</data>
<data name="SystemLanguage" xml:space="preserve">
<value>System language</value>
</data>
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
<value>Do you realy want to install context menu?</value>
</data>
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
<value>Do you realy want to remove context menu?</value>
</data>
<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>
</root>
View File
+147
View File
@@ -0,0 +1,147 @@
<?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="SystemLanguage" xml:space="preserve">
<value>Язык системы</value>
</data>
<data name="UpdateNewVersion" xml:space="preserve">
<value>Доступна новая версия. Выполнить обновление?</value>
</data>
<data name="Done" xml:space="preserve">
<value>Готово</value>
</data>
<data name="ErrorJavaDetect" xml:space="preserve">
<value>Java не установлена или установлена не корректно. Программа будет закрыта.</value>
</data>
<data name="UpdateNoUpdates" xml:space="preserve">
<value>Нет доступных обновлений.</value>
</data>
<data name="DoYouWantToSelectJavaLocation" xml:space="preserve">
<value>Java не найдена. Хотите указать расположение вручную?</value>
</data>
<data name="WarningFrameworkNotSelected" xml:space="preserve">
<value>Фреймворк не выбран!</value>
</data>
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
<value>Вы действительно хотите установить контекстное меню?</value>
</data>
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
<value>Вы действительно хотите удалить контекстное меню?</value>
</data>
</root>
+331
View File
@@ -0,0 +1,331 @@
/*************************************************************
* PortableSettingsProvider.cs
* Portable Settings Provider for C# applications
*
* 2010- Michael Nathan
* http://www.Geek-Republic.com
*
* Licensed under Creative Commons CC BY-SA
* http://creativecommons.org/licenses/by-sa/3.0/legalcode
*
*
*
*
*************************************************************/
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Linq;
using System.Text;
using Microsoft.Win32;
using System.Xml;
using System.Xml.Serialization;
public class PortableSettingsProvider : SettingsProvider
{
// Define some static strings later used in our XML creation
// XML Root node
const string XMLROOT = "configuration";
// Configuration declaration node
const string CONFIGNODE = "configSections";
// Configuration section group declaration node
const string GROUPNODE = "sectionGroup";
// User section node
const string USERNODE = "userSettings";
// Application Specific Node
string APPNODE = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Properties.Settings";
private System.Xml.XmlDocument xmlDoc = null;
// Override the Initialize method
public override void Initialize(string name, NameValueCollection config)
{
base.Initialize(this.ApplicationName, config);
}
// Override the ApplicationName property, returning the solution name. No need to set anything, we just need to
// retrieve information, though the set method still needs to be defined.
public override string ApplicationName
{
get
{
return (System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
}
set
{
return;
}
}
// Simply returns the name of the settings file, which is the solution name plus ".config"
public virtual string GetSettingsFilename()
{
return ApplicationName + ".config";
}
// Gets current executable path in order to determine where to read and write the config file
public virtual string GetAppPath()
{
return new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName;
}
// Retrieve settings from the configuration file
public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext sContext, SettingsPropertyCollection settingsColl)
{
// Create a collection of values to return
SettingsPropertyValueCollection retValues = new SettingsPropertyValueCollection();
// Create a temporary SettingsPropertyValue to reuse
SettingsPropertyValue setVal;
// Loop through the list of settings that the application has requested and add them
// to our collection of return values.
foreach (SettingsProperty sProp in settingsColl)
{
setVal = new SettingsPropertyValue(sProp);
setVal.IsDirty = false;
setVal.SerializedValue = GetSetting(sProp);
retValues.Add(setVal);
}
return retValues;
}
// Save any of the applications settings that have changed (flagged as "dirty")
public override void SetPropertyValues(SettingsContext sContext, SettingsPropertyValueCollection settingsColl)
{
// Set the values in XML
foreach (SettingsPropertyValue spVal in settingsColl)
{
SetSetting(spVal);
}
// Write the XML file to disk
try
{
XMLConfig.Save(System.IO.Path.Combine(GetAppPath(), GetSettingsFilename()));
}
catch (Exception ex)
{
// Create an informational message for the user if we cannot save the settings.
// Enable whichever applies to your application type.
// Uncomment the following line to enable a MessageBox for forms-based apps
System.Windows.Forms.MessageBox.Show(ex.Message, "Error writting configuration file to disk", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
// Uncomment the following line to enable a console message for console-based apps
//Console.WriteLine("Error writing configuration file to disk: " + ex.Message);
}
}
private XmlDocument XMLConfig
{
get
{
// Check if we already have accessed the XML config file. If the xmlDoc object is empty, we have not.
if (xmlDoc == null)
{
xmlDoc = new XmlDocument();
// If we have not loaded the config, try reading the file from disk.
try
{
xmlDoc.Load(System.IO.Path.Combine(GetAppPath(), GetSettingsFilename()));
}
// If the file does not exist on disk, catch the exception then create the XML template for the file.
catch (Exception)
{
// XML Declaration
// <?xml version="1.0" encoding="utf-8"?>
XmlDeclaration dec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDoc.AppendChild(dec);
// Create root node and append to the document
// <configuration>
XmlElement rootNode = xmlDoc.CreateElement(XMLROOT);
xmlDoc.AppendChild(rootNode);
// Create Configuration Sections node and add as the first node under the root
// <configSections>
XmlElement configNode = xmlDoc.CreateElement(CONFIGNODE);
xmlDoc.DocumentElement.PrependChild(configNode);
// Create the user settings section group declaration and append to the config node above
// <sectionGroup name="userSettings"...>
XmlElement groupNode = xmlDoc.CreateElement(GROUPNODE);
groupNode.SetAttribute("name", USERNODE);
groupNode.SetAttribute("type", "System.Configuration.UserSettingsGroup");
configNode.AppendChild(groupNode);
// Create the Application section declaration and append to the groupNode above
// <section name="AppName.Properties.Settings"...>
XmlElement newSection = xmlDoc.CreateElement("section");
newSection.SetAttribute("name", APPNODE);
newSection.SetAttribute("type", "System.Configuration.ClientSettingsSection");
groupNode.AppendChild(newSection);
// Create the userSettings node and append to the root node
// <userSettings>
XmlElement userNode = xmlDoc.CreateElement(USERNODE);
xmlDoc.DocumentElement.AppendChild(userNode);
// Create the Application settings node and append to the userNode above
// <AppName.Properties.Settings>
XmlElement appNode = xmlDoc.CreateElement(APPNODE);
userNode.AppendChild(appNode);
}
}
return xmlDoc;
}
}
// Retrieve values from the configuration file, or if the setting does not exist in the file,
// retrieve the value from the application's default configuration
private object GetSetting(SettingsProperty setProp)
{
object retVal;
try
{
// Search for the specific settings node we are looking for in the configuration file.
// If it exists, return the InnerText or InnerXML of its first child node, depending on the setting type.
// If the setting is serialized as a string, return the text stored in the config
if (setProp.SerializeAs.ToString() == "String")
{
return XMLConfig.SelectSingleNode("//setting[@name='" + setProp.Name + "']").FirstChild.InnerText;
}
// If the setting is stored as XML, deserialize it and return the proper object. This only supports
// StringCollections at the moment - I will likely add other types as I use them in applications.
else
{
string settingType = setProp.PropertyType.ToString();
string xmlData = XMLConfig.SelectSingleNode("//setting[@name='" + setProp.Name + "']").FirstChild.InnerXml;
XmlSerializer xs = new XmlSerializer(typeof(string[]));
string[] data = (string[])xs.Deserialize(new XmlTextReader(xmlData, XmlNodeType.Element, null));
switch (settingType)
{
case "System.Collections.Specialized.StringCollection":
StringCollection sc = new StringCollection();
sc.AddRange(data);
return sc;
default:
return "";
}
}
}
catch (Exception)
{
// Check to see if a default value is defined by the application.
// If so, return that value, using the same rules for settings stored as Strings and XML as above
if ((setProp.DefaultValue != null))
{
if (setProp.SerializeAs.ToString() == "String")
{
retVal = setProp.DefaultValue.ToString();
}
else
{
string settingType = setProp.PropertyType.ToString();
string xmlData = setProp.DefaultValue.ToString();
XmlSerializer xs = new XmlSerializer(typeof(string[]));
string[] data = (string[])xs.Deserialize(new XmlTextReader(xmlData, XmlNodeType.Element, null));
switch (settingType)
{
case "System.Collections.Specialized.StringCollection":
StringCollection sc = new StringCollection();
sc.AddRange(data);
return sc;
default: return "";
}
}
}
else
{
retVal = "";
}
}
return retVal;
}
private void SetSetting(SettingsPropertyValue setProp)
{
// Define the XML path under which we want to write our settings if they do not already exist
XmlNode SettingNode = null;
try
{
// Search for the specific settings node we want to update.
// If it exists, return its first child node, (the <value>data here</value> node)
SettingNode = XMLConfig.SelectSingleNode("//setting[@name='" + setProp.Name + "']").FirstChild;
}
catch (Exception)
{
SettingNode = null;
}
// If we have a pointer to an actual XML node, update the value stored there
if ((SettingNode != null))
{
if (setProp.Property.SerializeAs.ToString() == "String")
{
SettingNode.InnerText = setProp.SerializedValue.ToString();
}
else
{
// Write the object to the config serialized as Xml - we must remove the Xml declaration when writing
// the value, otherwise .Net's configuration system complains about the additional declaration.
SettingNode.InnerXml = setProp.SerializedValue.ToString().Replace(@"<?xml version=""1.0"" encoding=""utf-16""?>", "");
}
}
else
{
// If the value did not already exist in this settings file, create a new entry for this setting
// Search for the application settings node (<Appname.Properties.Settings>) and store it.
XmlNode tmpNode = XMLConfig.SelectSingleNode("//" + APPNODE);
// Create a new settings node and assign its name as well as how it will be serialized
XmlElement newSetting = xmlDoc.CreateElement("setting");
newSetting.SetAttribute("name", setProp.Name);
if (setProp.Property.SerializeAs.ToString() == "String")
{
newSetting.SetAttribute("serializeAs", "String");
}
else
{
newSetting.SetAttribute("serializeAs", "Xml");
}
// Append this node to the application settings node (<Appname.Properties.Settings>)
tmpNode.AppendChild(newSetting);
// Create an element under our named settings node, and assign it the value we are trying to save
XmlElement valueElement = xmlDoc.CreateElement("value");
if (setProp.Property.SerializeAs.ToString() == "String")
{
valueElement.InnerText = setProp.SerializedValue.ToString();
}
else
{
// Write the object to the config serialized as Xml - we must remove the Xml declaration when writing
// the value, otherwise .Net's configuration system complains about the additional declaration
valueElement.InnerXml = setProp.SerializedValue.ToString().Replace(@"<?xml version=""1.0"" encoding=""utf-16""?>", "");
}
//Append this new element under the setting node we created above
newSetting.AppendChild(valueElement);
}
}
}
+139
View File
@@ -0,0 +1,139 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace APKToolGUI
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main(String[] arg)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (arg.Length > 0)
{
switch (arg[0])
{
case "ccm":
ExplorerContextMenuMethod(ExplorerContextMenu.Action.Create);
break;
case "rcm":
ExplorerContextMenuMethod(ExplorerContextMenu.Action.Remove);
break;
case "b":
Application.Run(new FormBuild(arg));
break;
case "d":
Application.Run(new FormDecode(arg));
break;
default:
break;
}
}
else
if (FilesCheck() == true)
Application.Run(new FormMain());
}
public static void SetLanguage()
{
String settingsCulture = Properties.Settings.Default.Culture;
if (settingsCulture.Equals("Auto"))
{
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InstalledUICulture;
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InstalledUICulture;
}
else
{
System.Globalization.CultureInfo _settingsCulture = System.Globalization.CultureInfo.GetCultureInfo(settingsCulture);
System.Threading.Thread.CurrentThread.CurrentUICulture = _settingsCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = _settingsCulture;
}
}
private static bool FilesCheck()
{
// проверка файлов
List<String> missigFiles = MissingFilesCheck();
if (missigFiles.Count > 0)
{
String files = Environment.NewLine;
foreach (String file in missigFiles)
{
files += file + Environment.NewLine;
}
MessageBox.Show("Отсутствуют необходимые файлы:" + files, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
//Application.Exit();
return false;
}
else
return true;
}
private static List<String> MissingFilesCheck()
{
List<String> missingFiles = new List<string>();
String[] fileList = new String[]{
APKTOOL_PATH,
ZIPALIGN_PATH,
SIGNAPK_PATH,
SIGNAPK_KEYPRIVATE,
SIGNAPK_KEYPUBLIC};
for (int i = 0; i < fileList.Length; i++)
if (!System.IO.File.Exists(fileList[i]))
missingFiles.Add(System.IO.Path.GetFileName(fileList[i]));
return missingFiles;
}
private static void ExplorerContextMenuMethod(ExplorerContextMenu.Action action)
{
ExplorerContextMenu.Status status = null;
switch (action)
{
case ExplorerContextMenu.Action.Create:
status = ExplorerContextMenu.Create();
break;
case ExplorerContextMenu.Action.Remove:
status = ExplorerContextMenu.Remove();
break;
default:
return;
}
if (status.Result)
MessageBox.Show(status.Message, Application.ProductName);
else
MessageBox.Show(status.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
public static string GetPortablePath(string path)
{
string startupPath = Application.StartupPath + System.IO.Path.DirectorySeparatorChar;
if (path.Contains(startupPath))
return path.Replace(startupPath, String.Empty);
else
return path;
}
private static readonly string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
public static string APKTOOL_PATH { get { return appPath + @"\bin\apktool.jar"; } }
public static string SIGNAPK_PATH { get { return appPath + @"\bin\signapk.jar"; } }
public static string SIGNAPK_KEYPRIVATE { get { return appPath + @"\bin\testkey.pk8"; } }
public static string SIGNAPK_KEYPUBLIC { get { return appPath + @"\bin\testkey.x509.pem"; } }
public static string ZIPALIGN_PATH { get { return appPath + @"\bin\zipalign.exe"; } }
//public static readonly string APKTOOL_PATH = appPath + @"\bin\apktool.jar";
//public static readonly string SIGNAPK_PATH = appPath + @"\bin\signapk.jar";
//public static readonly string SIGNAPK_KEYPRIVATE = appPath + @"\bin\testkey.pk8";
//public static readonly string SIGNAPK_KEYPUBLIC = appPath + @"\bin\testkey.x509.pem";
//public static readonly string ZIPALIGN_PATH = appPath + @"\bin\zipalign.exe";
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Управление общими сведениями о сборке осуществляется с помощью
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// связанные со сборкой.
[assembly: AssemblyTitle("APKTool GUI")]
[assembly: AssemblyDescription("Графический интерфейс для утилит akptool, signapk и zipalign.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("APKTool GUI")]
[assembly: AssemblyCopyright("© INFINUM, 2012-2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
[assembly: ComVisible(false)]
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("12cc5907-c237-4d52-8c7e-08d622828cf4")]
// Сведения о версии сборки состоят из следующих четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер построения
// Редакция
//
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
// используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.4.0.441")]
[assembly: AssemblyFileVersion("2.4.0.441")]
+133
View File
@@ -0,0 +1,133 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.34209
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace APKToolGUI.Properties {
using System;
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("APKToolGUI.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap android {
get {
object obj = ResourceManager.GetObject("android", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок).
/// </summary>
internal static System.Drawing.Icon android_thin {
get {
object obj = ResourceManager.GetObject("android_thin", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap done {
get {
object obj = ResourceManager.GetObject("done", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap error {
get {
object obj = ResourceManager.GetObject("error", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap info {
get {
object obj = ResourceManager.GetObject("info", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap waiting {
get {
object obj = ResourceManager.GetObject("waiting", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap warning {
get {
object obj = ResourceManager.GetObject("warning", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
+142
View File
@@ -0,0 +1,142 @@
<?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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Info1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="done" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Done.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\exclamation-red-frame-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="android" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\android.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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="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="waiting" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\waiting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
+702
View File
@@ -0,0 +1,702 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.34209
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace APKToolGUI.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Decode_NoSrc {
get {
return ((bool)(this["MAIN_Decode_NoSrc"]));
}
set {
this["MAIN_Decode_NoSrc"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Decode_NoRes {
get {
return ((bool)(this["MAIN_Decode_NoRes"]));
}
set {
this["MAIN_Decode_NoRes"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Decode_Force {
get {
return ((bool)(this["MAIN_Decode_Force"]));
}
set {
this["MAIN_Decode_Force"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Decode_UseFramework {
get {
return ((bool)(this["MAIN_Decode_UseFramework"]));
}
set {
this["MAIN_Decode_UseFramework"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Build_ForceAll {
get {
return ((bool)(this["MAIN_Build_ForceAll"]));
}
set {
this["MAIN_Build_ForceAll"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_Decode_InputAppPath {
get {
return ((string)(this["MAIN_Decode_InputAppPath"]));
}
set {
this["MAIN_Decode_InputAppPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_Decode_FrameDir {
get {
return ((string)(this["MAIN_Decode_FrameDir"]));
}
set {
this["MAIN_Decode_FrameDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_BuildProjectDir {
get {
return ((string)(this["MAIN_BuildProjectDir"]));
}
set {
this["MAIN_BuildProjectDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_InstallFramework_InputFramePath {
get {
return ((string)(this["MAIN_InstallFramework_InputFramePath"]));
}
set {
this["MAIN_InstallFramework_InputFramePath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_SIGN_InputFile {
get {
return ((string)(this["MAIN_SIGN_InputFile"]));
}
set {
this["MAIN_SIGN_InputFile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_SIGN_OutputFile {
get {
return ((string)(this["MAIN_SIGN_OutputFile"]));
}
set {
this["MAIN_SIGN_OutputFile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Build_UseAapt {
get {
return ((bool)(this["MAIN_Build_UseAapt"]));
}
set {
this["MAIN_Build_UseAapt"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_Build_AaptPath {
get {
return ((string)(this["MAIN_Build_AaptPath"]));
}
set {
this["MAIN_Build_AaptPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Auto")]
public string Culture {
get {
return ((string)(this["Culture"]));
}
set {
this["Culture"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string JavaExe {
get {
return ((string)(this["JavaExe"]));
}
set {
this["JavaExe"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.DateTime LastUpdateCheck {
get {
return ((global::System.DateTime)(this["LastUpdateCheck"]));
}
set {
this["LastUpdateCheck"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool CheckForUpdateAtStartup {
get {
return ((bool)(this["CheckForUpdateAtStartup"]));
}
set {
this["CheckForUpdateAtStartup"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ClearLogBeforeAction {
get {
return ((bool)(this["ClearLogBeforeAction"]));
}
set {
this["ClearLogBeforeAction"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool BUILD_ForceAll {
get {
return ((bool)(this["BUILD_ForceAll"]));
}
set {
this["BUILD_ForceAll"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool BUILD_CustomAapt {
get {
return ((bool)(this["BUILD_CustomAapt"]));
}
set {
this["BUILD_CustomAapt"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string BUILD_AaptPath {
get {
return ((string)(this["BUILD_AaptPath"]));
}
set {
this["BUILD_AaptPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DECOMPILE_NoRes {
get {
return ((bool)(this["DECOMPILE_NoRes"]));
}
set {
this["DECOMPILE_NoRes"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DECOMPILE_NoSrc {
get {
return ((bool)(this["DECOMPILE_NoSrc"]));
}
set {
this["DECOMPILE_NoSrc"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DECOMPILE_Force {
get {
return ((bool)(this["DECOMPILE_Force"]));
}
set {
this["DECOMPILE_Force"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DECOMPILE_UseFramework {
get {
return ((bool)(this["DECOMPILE_UseFramework"]));
}
set {
this["DECOMPILE_UseFramework"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool BUILD_CopyOriginal {
get {
return ((bool)(this["BUILD_CopyOriginal"]));
}
set {
this["BUILD_CopyOriginal"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool BUILD_UseFramework {
get {
return ((bool)(this["BUILD_UseFramework"]));
}
set {
this["BUILD_UseFramework"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string BUILD_FrameworkPath {
get {
return ((string)(this["BUILD_FrameworkPath"]));
}
set {
this["BUILD_FrameworkPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DECOMPILE_KeepBrokenResource {
get {
return ((bool)(this["DECOMPILE_KeepBrokenResource"]));
}
set {
this["DECOMPILE_KeepBrokenResource"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DECOMPILE_MatchOriginal {
get {
return ((bool)(this["DECOMPILE_MatchOriginal"]));
}
set {
this["DECOMPILE_MatchOriginal"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Decode_MatchOriginal {
get {
return ((bool)(this["MAIN_Decode_MatchOriginal"]));
}
set {
this["MAIN_Decode_MatchOriginal"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Decode_KeepBrokenRes {
get {
return ((bool)(this["MAIN_Decode_KeepBrokenRes"]));
}
set {
this["MAIN_Decode_KeepBrokenRes"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Build_CopyOriginal {
get {
return ((bool)(this["MAIN_Build_CopyOriginal"]));
}
set {
this["MAIN_Build_CopyOriginal"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_Build_FrameDir {
get {
return ((string)(this["MAIN_Build_FrameDir"]));
}
set {
this["MAIN_Build_FrameDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Build_UseFramework {
get {
return ((bool)(this["MAIN_Build_UseFramework"]));
}
set {
this["MAIN_Build_UseFramework"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Decode_UseOutputDir {
get {
return ((bool)(this["MAIN_Decode_UseOutputDir"]));
}
set {
this["MAIN_Decode_UseOutputDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public string MAIN_Decode_OutputDir {
get {
return ((string)(this["MAIN_Decode_OutputDir"]));
}
set {
this["MAIN_Decode_OutputDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Build_UseOutputAppPath {
get {
return ((bool)(this["MAIN_Build_UseOutputAppPath"]));
}
set {
this["MAIN_Build_UseOutputAppPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string MAIN_Build_OutputAppPath {
get {
return ((string)(this["MAIN_Build_OutputAppPath"]));
}
set {
this["MAIN_Build_OutputAppPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string MAIN_Build_InputDir {
get {
return ((string)(this["MAIN_Build_InputDir"]));
}
set {
this["MAIN_Build_InputDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_InstallFramework_UseFrameDir {
get {
return ((bool)(this["MAIN_InstallFramework_UseFrameDir"]));
}
set {
this["MAIN_InstallFramework_UseFrameDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_InstallFramework_UseTag {
get {
return ((bool)(this["MAIN_InstallFramework_UseTag"]));
}
set {
this["MAIN_InstallFramework_UseTag"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string MAIN_InstallFramework_Tag {
get {
return ((string)(this["MAIN_InstallFramework_Tag"]));
}
set {
this["MAIN_InstallFramework_Tag"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string MAIN_InstallFramework_FrameDir {
get {
return ((string)(this["MAIN_InstallFramework_FrameDir"]));
}
set {
this["MAIN_InstallFramework_FrameDir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("4")]
public decimal MAIN_Zipalign_AlignmentInBytes {
get {
return ((decimal)(this["MAIN_Zipalign_AlignmentInBytes"]));
}
set {
this["MAIN_Zipalign_AlignmentInBytes"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Zipalign_OverwriteOutputFile {
get {
return ((bool)(this["MAIN_Zipalign_OverwriteOutputFile"]));
}
set {
this["MAIN_Zipalign_OverwriteOutputFile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Zipalign_CheckOnly {
get {
return ((bool)(this["MAIN_Zipalign_CheckOnly"]));
}
set {
this["MAIN_Zipalign_CheckOnly"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Zipalign_Verbose {
get {
return ((bool)(this["MAIN_Zipalign_Verbose"]));
}
set {
this["MAIN_Zipalign_Verbose"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string MAIN_Zipalign_OutputFile {
get {
return ((string)(this["MAIN_Zipalign_OutputFile"]));
}
set {
this["MAIN_Zipalign_OutputFile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string MAIN_Zipalign_InputFile {
get {
return ((string)(this["MAIN_Zipalign_InputFile"]));
}
set {
this["MAIN_Zipalign_InputFile"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool MAIN_Zipalign_Recompress {
get {
return ((bool)(this["MAIN_Zipalign_Recompress"]));
}
set {
this["MAIN_Zipalign_Recompress"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("bin\\testkey.x509.pem")]
public string MAIN_SIGN_PublicKey {
get {
return ((string)(this["MAIN_SIGN_PublicKey"]));
}
set {
this["MAIN_SIGN_PublicKey"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Configuration.SettingsProviderAttribute(typeof(PortableSettingsProvider))]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("bin\\testkey.pk8")]
public string MAIN_SIGN_PrivateKey {
get {
return ((string)(this["MAIN_SIGN_PrivateKey"]));
}
set {
this["MAIN_SIGN_PrivateKey"] = value;
}
}
}
}
+165
View File
@@ -0,0 +1,165 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="APKToolGUI.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="MAIN_Decode_NoSrc" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_NoRes" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_Force" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_UseFramework" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Build_ForceAll" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_InputAppPath" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Decode_FrameDir" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_BuildProjectDir" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_InstallFramework_InputFramePath" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_SIGN_InputFile" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_SIGN_OutputFile" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Build_UseAapt" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Build_AaptPath" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="Culture" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)">Auto</Value>
</Setting>
<Setting Name="JavaExe" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="LastUpdateCheck" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.DateTime" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="CheckForUpdateAtStartup" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ClearLogBeforeAction" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="BUILD_ForceAll" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="BUILD_CustomAapt" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="BUILD_AaptPath" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="DECOMPILE_NoRes" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DECOMPILE_NoSrc" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DECOMPILE_Force" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DECOMPILE_UseFramework" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="BUILD_CopyOriginal" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="BUILD_UseFramework" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="BUILD_FrameworkPath" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="DECOMPILE_KeepBrokenResource" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DECOMPILE_MatchOriginal" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_MatchOriginal" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_KeepBrokenRes" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Build_CopyOriginal" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Build_FrameDir" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Build_UseFramework" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_UseOutputDir" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Decode_OutputDir" Provider="PortableSettingsProvider" GenerateDefaultValueInCode="false" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Build_UseOutputAppPath" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Build_OutputAppPath" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Build_InputDir" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_InstallFramework_UseFrameDir" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_InstallFramework_UseTag" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_InstallFramework_Tag" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_InstallFramework_FrameDir" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Zipalign_AlignmentInBytes" Provider="PortableSettingsProvider" Type="System.Decimal" Scope="User">
<Value Profile="(Default)">4</Value>
</Setting>
<Setting Name="MAIN_Zipalign_OverwriteOutputFile" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Zipalign_CheckOnly" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Zipalign_Verbose" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_Zipalign_OutputFile" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Zipalign_InputFile" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="MAIN_Zipalign_Recompress" Provider="PortableSettingsProvider" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="MAIN_SIGN_PublicKey" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)">bin\testkey.x509.pem</Value>
</Setting>
<Setting Name="MAIN_SIGN_PrivateKey" Provider="PortableSettingsProvider" Type="System.String" Scope="User">
<Value Profile="(Default)">bin\testkey.pk8</Value>
</Setting>
</Settings>
</SettingsFile>
+47
View File
@@ -0,0 +1,47 @@
<?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 одним из следующих значений.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Задание узла requestedExecutionLevel отключит виртуализацию файла и реестра.
Если виртуализацию файла и реестра нужно использовать для обратной
совместимости, удалите узел requestedExecutionLevel.
-->
<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>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>-->
</asmv1:assembly>
Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

+55
View File
@@ -0,0 +1,55 @@
using System;
using Java;
using System.Diagnostics;
namespace APKToolGUI
{
public class Signapk : JarProcess
{
public new event SignapkExitedEventHandler Exited;
public string PublicKeyPath { get; set; }
public string PrivateKeyPath { get; set; }
private string lastSourceApk;
private string lastOutApk;
public Signapk(string javaPath, string jarPath)
: base(javaPath, jarPath)
{
base.Exited += Signapk_Exited;
}
void Signapk_Exited(object sender, EventArgs e)
{
if (this.Exited != null)
this.Exited(this, new SignapkExitedEventArgs(base.ExitCode, lastSourceApk, lastOutApk));
}
public bool Sign(string sourceApk, string outApk)
{
return Sign(PublicKeyPath, PrivateKeyPath, sourceApk, outApk);
}
public bool Sign(string publicKeyPath, string privateKeyPath, string sourceApk, string outApk)
{
lastSourceApk = sourceApk;
lastOutApk = outApk;
string args = String.Format("\"{0}\" \"{1}\" \"{2}\" \"{3}\"", publicKeyPath, privateKeyPath, sourceApk, outApk);
return base.Start(args);
}
}
public class SignapkExitedEventArgs : EventArgs
{
public SignapkExitedEventArgs(int exitCode, string sourceFilePath, string outFilePath)
{
this.ExitCode = exitCode;
this.SourceFilePath = sourceFilePath;
this.OutFilePath = outFilePath;
}
public int ExitCode { get; private set; }
public string SourceFilePath { get; private set; }
public string OutFilePath { get; private set; }
}
public delegate void SignapkExitedEventHandler(object sender, SignapkExitedEventArgs e);
}
+105
View File
@@ -0,0 +1,105 @@
using System;
using System.ComponentModel;
using System.Net;
namespace APKToolGUI
{
class UpdateChecker
{
public UpdateChecker(string url, Version currentVersion)
{
currentVer = currentVersion;
Url = url;
backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
}
private BackgroundWorker backgroundWorker;
private Version currentVer;
public string Url { get; set; }
public event RunWorkerCompletedEventHandler Completed;
//public event EventHandler Error;
private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Completed(this, e);
}
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
Version latestVersion = null;
try
{
latestVersion = GetVersion();
}
catch (Exception exc)
{
e.Result = new Result(State.Error, exc.Message, (bool)e.Argument);
}
if (latestVersion != null)
{
if (CompareVersion(latestVersion))
{
e.Result = new Result(State.NeedUpdate, latestVersion.ToString(), (bool)e.Argument);
}
else
e.Result = new Result(State.NoUpdate, null, (bool)e.Argument);
}
else
e.Result = new Result(State.Error, "Error version parsing", (bool)e.Argument);
}
private bool CompareVersion(Version latestVersion)
{
if (latestVersion > currentVer)
return true;
else
return false;
}
public void CheckAsync(bool silently = false)
{
if (!backgroundWorker.IsBusy)
backgroundWorker.RunWorkerAsync(silently);
}
private Version GetVersion()
{
string versionString;
using (WebClient webClient = new WebClient())
{
versionString = webClient.DownloadString(Url);
}
Version version = new Version();
if (Version.TryParse(versionString, out version))
{
return version;
}
else
return null;
}
public enum State
{
NoUpdate,
NeedUpdate,
Error
}
public class Result
{
public Result(State state, string message, bool silently)
{
this.State = state;
this.Message = message;
this.Silently = silently;
}
public State State { get; private set; }
public string Message { get; private set; }
public bool Silently { get; private set; }
}
}
}
+99
View File
@@ -0,0 +1,99 @@
using System;
using System.Diagnostics;
namespace APKToolGUI
{
public class Zipalign
{
string _zipalignPath;
Process processZipalign;
static class Keys
{
public const string CheckOnly = " -c";
public const string OverwriteOutputFile = " -f";
public const string VerboseOut = " -v";
public const string Recompress = " -z";
}
public ZipalignOptions Options { get; set; }
public event DataReceivedEventHandler OutputDataReceived
{
add { processZipalign.OutputDataReceived += value; }
remove { processZipalign.OutputDataReceived -= value; }
}
public event DataReceivedEventHandler ErrorDataReceived
{
add { processZipalign.ErrorDataReceived += value; }
remove { processZipalign.ErrorDataReceived -= value; }
}
public event EventHandler Exited;
public int ExitCode { get { return processZipalign.ExitCode; } }
public Zipalign(string zipalignFileName)
{
_zipalignPath = zipalignFileName;
processZipalign = new Process();
processZipalign.EnableRaisingEvents = true;
processZipalign.StartInfo.FileName = zipalignFileName;
processZipalign.StartInfo.UseShellExecute = false; //отключаем использование оболочки, чтобы можно было читать данные вывода
processZipalign.StartInfo.RedirectStandardOutput = true; // разрешаем перенаправление данных вывода
processZipalign.StartInfo.RedirectStandardError = true; // разрешаем перенаправление данных вывода
processZipalign.StartInfo.CreateNoWindow = true; //запрещаем создавать окно для запускаемой программы
processZipalign.Exited += processZipalign_Exited;
}
void processZipalign_Exited(object sender, EventArgs e)
{
processZipalign.CancelOutputRead();
processZipalign.CancelErrorRead();
if (this.Exited != null)
Exited(this, new EventArgs());
}
public bool Align(ZipalignOptions options)
{
this.Options = options;
string keyCheckOnly = null, keyVerbose = null, keyRecompress = null, keyOverwriteOutputFile = null, keyOutputFile = null;
if (options.VerboseOut)
keyVerbose = Keys.VerboseOut;
if (options.CheckOnly)
{
keyCheckOnly = Keys.CheckOnly;
}
else
{
if(options.Recompress)
keyRecompress = Keys.Recompress;
if (options.OverwriteOutputFile)
keyOverwriteOutputFile = Keys.OverwriteOutputFile;
keyOutputFile = String.Format(" \"{0}\"", options.OutputFile);
}
string args = String.Format("{0}{1}{2}{3} {4} \"{5}\"{6}", keyCheckOnly, keyOverwriteOutputFile, keyVerbose, keyRecompress, options.AlignmentInBytes, options.InputFile, keyOutputFile);
processZipalign.StartInfo.Arguments = args;
bool started = processZipalign.Start();
processZipalign.BeginOutputReadLine();
processZipalign.BeginErrorReadLine();
return started;
}
}
public class ZipalignOptions
{
public ZipalignOptions(string inputFile, int alignmentInBytes)
{
this.InputFile = inputFile;
this.AlignmentInBytes = alignmentInBytes;
}
public string InputFile { get; set; }
public string OutputFile { get; set; }
public int AlignmentInBytes { get; set; }
public bool CheckOnly { get; set; }
public bool OverwriteOutputFile { get; set; }
public bool Recompress { get; set; }
public bool VerboseOut { get; set; }
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

+171
View File
@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="APKToolGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<userSettings>
<APKToolGUI.Properties.Settings>
<setting name="MAIN_Decode_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_InputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Decode_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_BuildProjectDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_InputFramePath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="Culture" serializeAs="String">
<value>Auto</value>
</setting>
<setting name="JavaExe" serializeAs="String">
<value/>
</setting>
<setting name="LastUpdateCheck" serializeAs="String">
<value/>
</setting>
<setting name="CheckForUpdateAtStartup" serializeAs="String">
<value>True</value>
</setting>
<setting name="ClearLogBeforeAction" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CustomAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_FrameworkPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_KeepBrokenResource" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_KeepBrokenRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseOutputDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_OutputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseOutputAppPath" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_OutputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_InputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_UseFrameDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_UseTag" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_Tag" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_AlignmentInBytes" serializeAs="String">
<value>4</value>
</setting>
<setting name="MAIN_Zipalign_OverwriteOutputFile" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_CheckOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_Verbose" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_Recompress" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_SIGN_PublicKey" serializeAs="String">
<value>bin\testkey.x509.pem</value>
</setting>
<setting name="MAIN_SIGN_PrivateKey" serializeAs="String">
<value>bin\testkey.pk8</value>
</setting>
</APKToolGUI.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>
+189
View File
@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup">
<section name="APKToolGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection" />
</sectionGroup>
</configSections>
<userSettings>
<APKToolGUI.Properties.Settings>
<setting name="MAIN_Build_ForceAll" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Decode_FrameDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_InstallFramework_Tag" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Build_AaptPath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Decode_MatchOriginal" serializeAs="String">
<value>True</value>
</setting>
<setting name="BUILD_CustomAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="JavaExe" serializeAs="String">
<value>C:\Program Files (x86)\Java\jre1.8.0_65\bin\Java.exe</value>
</setting>
<setting name="MAIN_Decode_KeepBrokenRes" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Decode_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_Force" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Decode_InputAppPath" serializeAs="String">
<value>D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake.apk</value>
</setting>
<setting name="MAIN_InstallFramework_UseTag" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_SIGN_SignedFilePath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Decode_OutputDir" serializeAs="String">
<value>D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake</value>
</setting>
<setting name="LastUpdateCheck" serializeAs="String">
<value>11/13/2015 09:46:11</value>
</setting>
<setting name="MAIN_Zipalign_Recompress" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_SIGN_FilePath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Decode_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CopyOriginal" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Decode_UseOutputDir" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_InstallFramework_UseFrameDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_InputFramePath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Build_CopyOriginal" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Build_OutputAppPath" serializeAs="String">
<value>D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake_20150730_10-42-15.apk</value>
</setting>
<setting name="MAIN_Zipalign_AlignmentInBytes" serializeAs="String">
<value>4</value>
</setting>
<setting name="MAIN_Zipalign_OutputFile" serializeAs="String">
<value>C:\Temp\antifake_signed.apk</value>
</setting>
<setting name="Culture" serializeAs="String">
<value>Auto</value>
</setting>
<setting name="MAIN_InstallFramework_FrameDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_BuildProjectDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="BUILD_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_InputFile" serializeAs="String">
<value>
</value>
</setting>
<setting name="CheckForUpdateAtStartup" serializeAs="String">
<value>True</value>
</setting>
<setting name="DECOMPILE_KeepBrokenResource" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Zipalign_OverwriteOutputFile" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_AaptPath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Zipalign_Verbose" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_CheckOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_InputDir" serializeAs="String">
<value>D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\antifake</value>
</setting>
<setting name="ClearLogBeforeAction" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Build_FrameDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Build_UseAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_NoRes" serializeAs="String">
<value>True</value>
</setting>
<setting name="BUILD_FrameworkPath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Build_UseOutputAppPath" serializeAs="String">
<value>True</value>
</setting>
<setting name="DECOMPILE_NoSrc" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_Build_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_MatchOriginal" serializeAs="String">
<value>True</value>
</setting>
<setting name="MAIN_SIGN_PublicKey" serializeAs="String">
<value>bin\testkey.x509.pem</value>
</setting>
<setting name="MAIN_SIGN_InputFile" serializeAs="String">
<value>D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\antifake.apk</value>
</setting>
<setting name="MAIN_SIGN_OutputFile" serializeAs="String">
<value>D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\antifake_signed.apk</value>
</setting>
<setting name="MAIN_SIGN_PrivateKey" serializeAs="String">
<value>bin\testkey.pk8</value>
</setting>
</APKToolGUI.Properties.Settings>
</userSettings>
</configuration>
Binary file not shown.
+171
View File
@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="APKToolGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<userSettings>
<APKToolGUI.Properties.Settings>
<setting name="MAIN_Decode_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_InputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Decode_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_BuildProjectDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_InputFramePath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="Culture" serializeAs="String">
<value>Auto</value>
</setting>
<setting name="JavaExe" serializeAs="String">
<value/>
</setting>
<setting name="LastUpdateCheck" serializeAs="String">
<value/>
</setting>
<setting name="CheckForUpdateAtStartup" serializeAs="String">
<value>True</value>
</setting>
<setting name="ClearLogBeforeAction" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CustomAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_FrameworkPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_KeepBrokenResource" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_KeepBrokenRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseOutputDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_OutputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseOutputAppPath" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_OutputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_InputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_UseFrameDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_UseTag" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_Tag" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_AlignmentInBytes" serializeAs="String">
<value>4</value>
</setting>
<setting name="MAIN_Zipalign_OverwriteOutputFile" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_CheckOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_Verbose" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_Recompress" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_SIGN_PublicKey" serializeAs="String">
<value>bin\testkey.x509.pem</value>
</setting>
<setting name="MAIN_SIGN_PrivateKey" serializeAs="String">
<value>bin\testkey.pk8</value>
</setting>
</APKToolGUI.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="APKToolGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<userSettings>
<APKToolGUI.Properties.Settings>
<setting name="MAIN_Decode_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_InputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Decode_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_BuildProjectDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_InputFramePath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="Culture" serializeAs="String">
<value>Auto</value>
</setting>
<setting name="JavaExe" serializeAs="String">
<value/>
</setting>
<setting name="LastUpdateCheck" serializeAs="String">
<value/>
</setting>
<setting name="CheckForUpdateAtStartup" serializeAs="String">
<value>True</value>
</setting>
<setting name="ClearLogBeforeAction" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CustomAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_FrameworkPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_KeepBrokenResource" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_KeepBrokenRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseOutputDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_OutputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseOutputAppPath" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_OutputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_InputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_UseFrameDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_UseTag" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_Tag" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_AlignmentInBytes" serializeAs="String">
<value>4</value>
</setting>
<setting name="MAIN_Zipalign_OverwriteOutputFile" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_CheckOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_Verbose" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_Recompress" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_SIGN_PublicKey" serializeAs="String">
<value>bin\testkey.x509.pem</value>
</setting>
<setting name="MAIN_SIGN_PrivateKey" serializeAs="String">
<value>bin\testkey.pk8</value>
</setting>
</APKToolGUI.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<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">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+27
View File
@@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEqDCCA5CgAwIBAgIJAJNurL4H8gHfMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g
VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE
AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe
Fw0wODAyMjkwMTMzNDZaFw0zNTA3MTcwMTMzNDZaMIGUMQswCQYDVQQGEwJVUzET
MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G
A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p
ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI
hvcNAQEBBQADggENADCCAQgCggEBANaTGQTexgskse3HYuDZ2CU+Ps1s6x3i/waM
qOi8qM1r03hupwqnbOYOuw+ZNVn/2T53qUPn6D1LZLjk/qLT5lbx4meoG7+yMLV4
wgRDvkxyGLhG9SEVhvA4oU6Jwr44f46+z4/Kw9oe4zDJ6pPQp8PcSvNQIg1QCAcy
4ICXF+5qBTNZ5qaU7Cyz8oSgpGbIepTYOzEJOmc3Li9kEsBubULxWBjf/gOBzAzU
RNps3cO4JFgZSAGzJWQTT7/emMkod0jb9WdqVA2BVMi7yge54kdVMxHEa5r3b97s
zI5p58ii0I54JiCUP5lyfTwE/nKZHZnfm644oLIXf6MdW2r+6R8CAQOjgfwwgfkw
HQYDVR0OBBYEFEhZAFY9JyxGrhGGBaR0GawJyowRMIHJBgNVHSMEgcEwgb6AFEhZ
AFY9JyxGrhGGBaR0GawJyowRoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE
CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH
QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG
CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJAJNurL4H8gHfMAwGA1Ud
EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHqvlozrUMRBBVEY0NqrrwFbinZa
J6cVosK0TyIUFf/azgMJWr+kLfcHCHJsIGnlw27drgQAvilFLAhLwn62oX6snb4Y
LCBOsVMR9FXYJLZW2+TcIkCRLXWG/oiVHQGo/rWuWkJgU134NDEFJCJGjDbiLCpe
+ZTWHdcwauTJ9pUbo8EvHRkU3cYfGmLaLfgn9gP+pWA7LFQNvXwBnDa6sppCccEX
31I828XzgXpJ4O+mDL1/dBd+ek8ZPUP0IgdyZm5MTYPhvVqGCHzzTy3sIeJFymwr
sBbmg2OAUNLEMO6nwmocSdN2ClirfxqCzJOLSDE4QyS9BAH6EhY6UFcOaE0=
-----END CERTIFICATE-----
Binary file not shown.
Binary file not shown.
+186
View File
@@ -0,0 +1,186 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup">
<section name="APKToolGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection" />
</sectionGroup>
</configSections>
<userSettings>
<APKToolGUI.Properties.Settings>
<setting name="MAIN_Build_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_FrameDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_InstallFramework_Tag" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Build_AaptPath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Decode_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CustomAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="JavaExe" serializeAs="String">
<value>C:\Program Files (x86)\Java\jre1.8.0_51\bin\Java.exe</value>
</setting>
<setting name="Culture" serializeAs="String">
<value>Auto</value>
</setting>
<setting name="MAIN_Decode_KeepBrokenRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_InputAppPath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_SIGN_PublicKey" serializeAs="String">
<value>bin\testkey.x509.pem</value>
</setting>
<setting name="MAIN_InstallFramework_UseTag" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_OutputDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="LastUpdateCheck" serializeAs="String">
<value>07/29/2015 20:35:23</value>
</setting>
<setting name="MAIN_Zipalign_Recompress" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_FrameDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Decode_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_BuildProjectDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Decode_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseOutputDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_UseFrameDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_InputFramePath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Build_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_OutputAppPath" serializeAs="String">
<value>C:\Users\Администратор\Downloads\APKToolUI_2.4\signapk_20150510_14-52-45.jar</value>
</setting>
<setting name="MAIN_Zipalign_AlignmentInBytes" serializeAs="String">
<value>4</value>
</setting>
<setting name="MAIN_SIGN_InputFile" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Zipalign_OutputFile" serializeAs="String">
<value>
</value>
</setting>
<setting name="DECOMPILE_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_FrameDir" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_SIGN_OutputFile" serializeAs="String">
<value>
</value>
</setting>
<setting name="BUILD_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_InputFile" serializeAs="String">
<value>
</value>
</setting>
<setting name="CheckForUpdateAtStartup" serializeAs="String">
<value>True</value>
</setting>
<setting name="DECOMPILE_KeepBrokenResource" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_OverwriteOutputFile" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_AaptPath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Zipalign_Verbose" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_CheckOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_InputDir" serializeAs="String">
<value>C:\Users\Администратор\Downloads\APKToolUI_2.4\signapk</value>
</setting>
<setting name="ClearLogBeforeAction" serializeAs="String">
<value>True</value>
</setting>
<setting name="DECOMPILE_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_SIGN_PrivateKey" serializeAs="String">
<value>bin\testkey.pk8</value>
</setting>
<setting name="MAIN_Build_UseAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_FrameworkPath" serializeAs="String">
<value>
</value>
</setting>
<setting name="MAIN_Build_UseOutputAppPath" serializeAs="String">
<value>True</value>
</setting>
<setting name="DECOMPILE_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
</APKToolGUI.Properties.Settings>
</userSettings>
</configuration>
Binary file not shown.
@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="APKToolGUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<userSettings>
<APKToolGUI.Properties.Settings>
<setting name="MAIN_Decode_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_InputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Decode_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_BuildProjectDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_InputFramePath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_SIGN_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="Culture" serializeAs="String">
<value>Auto</value>
</setting>
<setting name="JavaExe" serializeAs="String">
<value/>
</setting>
<setting name="LastUpdateCheck" serializeAs="String">
<value/>
</setting>
<setting name="CheckForUpdateAtStartup" serializeAs="String">
<value>True</value>
</setting>
<setting name="ClearLogBeforeAction" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_ForceAll" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CustomAapt" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_AaptPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_NoRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_NoSrc" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_Force" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="BUILD_FrameworkPath" serializeAs="String">
<value/>
</setting>
<setting name="DECOMPILE_KeepBrokenResource" serializeAs="String">
<value>False</value>
</setting>
<setting name="DECOMPILE_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_MatchOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_KeepBrokenRes" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_CopyOriginal" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseFramework" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_UseOutputDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Decode_OutputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_UseOutputAppPath" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Build_OutputAppPath" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Build_InputDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_UseFrameDir" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_UseTag" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_InstallFramework_Tag" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_InstallFramework_FrameDir" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_AlignmentInBytes" serializeAs="String">
<value>4</value>
</setting>
<setting name="MAIN_Zipalign_OverwriteOutputFile" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_CheckOnly" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_Verbose" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_Zipalign_OutputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_InputFile" serializeAs="String">
<value/>
</setting>
<setting name="MAIN_Zipalign_Recompress" serializeAs="String">
<value>False</value>
</setting>
<setting name="MAIN_SIGN_PublicKey" serializeAs="String">
<value>bin\testkey.x509.pem</value>
</setting>
<setting name="MAIN_SIGN_PrivateKey" serializeAs="String">
<value>bin\testkey.pk8</value>
</setting>
</APKToolGUI.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEqDCCA5CgAwIBAgIJAJNurL4H8gHfMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g
VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE
AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe
Fw0wODAyMjkwMTMzNDZaFw0zNTA3MTcwMTMzNDZaMIGUMQswCQYDVQQGEwJVUzET
MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G
A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p
ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI
hvcNAQEBBQADggENADCCAQgCggEBANaTGQTexgskse3HYuDZ2CU+Ps1s6x3i/waM
qOi8qM1r03hupwqnbOYOuw+ZNVn/2T53qUPn6D1LZLjk/qLT5lbx4meoG7+yMLV4
wgRDvkxyGLhG9SEVhvA4oU6Jwr44f46+z4/Kw9oe4zDJ6pPQp8PcSvNQIg1QCAcy
4ICXF+5qBTNZ5qaU7Cyz8oSgpGbIepTYOzEJOmc3Li9kEsBubULxWBjf/gOBzAzU
RNps3cO4JFgZSAGzJWQTT7/emMkod0jb9WdqVA2BVMi7yge54kdVMxHEa5r3b97s
zI5p58ii0I54JiCUP5lyfTwE/nKZHZnfm644oLIXf6MdW2r+6R8CAQOjgfwwgfkw
HQYDVR0OBBYEFEhZAFY9JyxGrhGGBaR0GawJyowRMIHJBgNVHSMEgcEwgb6AFEhZ
AFY9JyxGrhGGBaR0GawJyowRoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE
CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH
QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG
CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJAJNurL4H8gHfMAwGA1Ud
EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHqvlozrUMRBBVEY0NqrrwFbinZa
J6cVosK0TyIUFf/azgMJWr+kLfcHCHJsIGnlw27drgQAvilFLAhLwn62oX6snb4Y
LCBOsVMR9FXYJLZW2+TcIkCRLXWG/oiVHQGo/rWuWkJgU134NDEFJCJGjDbiLCpe
+ZTWHdcwauTJ9pUbo8EvHRkU3cYfGmLaLfgn9gP+pWA7LFQNvXwBnDa6sppCccEX
31I828XzgXpJ4O+mDL1/dBd+ek8ZPUP0IgdyZm5MTYPhvVqGCHzzTy3sIeJFymwr
sBbmg2OAUNLEMO6nwmocSdN2ClirfxqCzJOLSDE4QyS9BAH6EhY6UFcOaE0=
-----END CERTIFICATE-----
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,198 @@
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.pdb
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe.config
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.pdb
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.pdb
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
D:\Dropbox\C#\APKToolUI_2.4 NewsFormMarkup\APKToolGUI\bin\Debug\APKToolGUI.exe.config
C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
C:\Temp\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
C:\Temp\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
C:\Users\Администратор\Downloads\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
D:\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe.config
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.pdb
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
D:\Documents\Visual Studio 2013\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe.config
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.exe
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\APKToolGUI.pdb
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
D:\Dropbox\C#\APKToolUI_2.4_.Net4.5\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\APKToolGUI.exe.config
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\APKToolGUI.exe
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\APKToolGUI.pdb
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
D:\Documents\Visual Studio 2013\Projects\APKToolUI_2.4_.Net4.0\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe.config
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.exe
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.pdb
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csprojResolveAssemblyReference.cache
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormBuild.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormDecode.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Properties.Resources.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormAboutBox.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormMain.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.FormSettings.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.Language.ru.resources
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\APKToolGUI.csproj.GenerateResource.Cache
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.exe
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\APKToolGUI.pdb
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\bin\Debug\ru\APKToolGUI.resources.dll
C:\Users\Администратор\Dropbox\C#\APKToolUI_2.4\APKToolGUI\obj\x86\Debug\ru\APKToolGUI.resources.dll
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More