Init
@@ -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]
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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=">>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>&ОК</value>
|
||||
</data>
|
||||
<data name=">>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=">>labelVersion.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>FormAboutBox</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>textBoxDescription.Name" xml:space="preserve">
|
||||
<value>textBoxDescription</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>linkLabel1.Name" xml:space="preserve">
|
||||
<value>linkLabel1</value>
|
||||
</data>
|
||||
<data name=">>labelVersion.Name" xml:space="preserve">
|
||||
<value>labelVersion</value>
|
||||
</data>
|
||||
<data name=">>labelProductName.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel</value>
|
||||
</data>
|
||||
<data name=">>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=">>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><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="logoPictureBox" Row="0" RowSpan="6" Column="0" ColumnSpan="1" /><Control Name="labelProductName" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelVersion" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelCopyright" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="okButton" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textBoxDescription" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="linkLabel1" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Percent,46,0039,Percent,53,9961" /><Rows Styles="Percent,10,Percent,10,Percent,10,Percent,10,Percent,50,Percent,10" /></TableLayoutSettings></value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>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=">>tableLayoutPanel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>tableLayoutPanel.Name" xml:space="preserve">
|
||||
<value>tableLayoutPanel</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>okButton.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>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=">>linkLabel1.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>$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=">>textBoxDescription.Parent" xml:space="preserve">
|
||||
<value>tableLayoutPanel</value>
|
||||
</data>
|
||||
<data name=">>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=">>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>
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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=">>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=">>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=">>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=">>groupBoxContextMenu.Name" xml:space="preserve">
|
||||
<value>groupBoxContextMenu</value>
|
||||
</data>
|
||||
<data name=">>tabPage1.Parent" xml:space="preserve">
|
||||
<value>tabControl1</value>
|
||||
</data>
|
||||
<data name="buttonRemoveContextMenu.Text" xml:space="preserve">
|
||||
<value>Uninstall</value>
|
||||
</data>
|
||||
<data name=">>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=">>tabPage1.Name" xml:space="preserve">
|
||||
<value>tabPage1</value>
|
||||
</data>
|
||||
<data name=">>tabPage1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="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=">>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=">>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=">>labelCustomJavaLocation.Parent" xml:space="preserve">
|
||||
<value>groupBoxJava</value>
|
||||
</data>
|
||||
<data name=">>buttonAddContextMenu.Name" xml:space="preserve">
|
||||
<value>buttonAddContextMenu</value>
|
||||
</data>
|
||||
<data name=">>checkBoxCheckUpdateStartup.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>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=">>checkBoxCheckUpdateStartup.Name" xml:space="preserve">
|
||||
<value>checkBoxCheckUpdateStartup</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.Name" xml:space="preserve">
|
||||
<value>textBoxCustomJavaLocation</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>labelAdminRights.Name" xml:space="preserve">
|
||||
<value>labelAdminRights</value>
|
||||
</data>
|
||||
<data name=">>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=">>buttonRemoveContextMenu.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name=">>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=">>checkBox1.Name" xml:space="preserve">
|
||||
<value>checkBox1</value>
|
||||
</data>
|
||||
<data name=">>tabControl1.Name" xml:space="preserve">
|
||||
<value>tabControl1</value>
|
||||
</data>
|
||||
<data name="textBoxCustomJavaLocation.WordWrap" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>buttonОК.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>checkBox1.Parent" xml:space="preserve">
|
||||
<value>groupBox1</value>
|
||||
</data>
|
||||
<data name=">>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=">>checkBox1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>$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=">>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=">>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=">>groupBoxJava.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>textBoxCustomJavaLocation.Parent" xml:space="preserve">
|
||||
<value>groupBoxJava</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>comboBox1.Parent" xml:space="preserve">
|
||||
<value>groupBoxLanguage</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>buttonCancel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>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=">>tabControl1.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>labelAdminRights.Parent" xml:space="preserve">
|
||||
<value>groupBoxContextMenu</value>
|
||||
</data>
|
||||
<data name=">>labelCustomJavaLocation.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>23, 20</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>groupBoxLanguage.Parent" xml:space="preserve">
|
||||
<value>tabPage1</value>
|
||||
</data>
|
||||
<data name="labelCustomJavaLocation.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>comboBox1.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>$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=">>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=">>buttonRemoveContextMenu.Name" xml:space="preserve">
|
||||
<value>buttonRemoveContextMenu</value>
|
||||
</data>
|
||||
<data name="buttonCustomJavaLocation.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>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=">>textBoxCustomJavaLocation.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="checkBox1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name=">>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=">>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=">>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=">>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>
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
@@ -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")]
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
After Width: | Height: | Size: 793 B |
|
After Width: | Height: | Size: 380 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 874 B |
|
After Width: | Height: | Size: 744 B |
|
After Width: | Height: | Size: 585 B |
@@ -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);
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 293 KiB |
@@ -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,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>
|
||||
@@ -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,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>
|
||||
@@ -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-----
|
||||
@@ -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>
|
||||
@@ -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,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-----
|
||||
@@ -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
|
||||