Удаление сторонних приложений, развернутых дополнительным установщиком в Visual Studio 2015
В этой статье объясняется, как удалить сторонние приложения, установленные с помощью дополнительного установщика для Microsoft Visual Studio 2015.
Оригинальная версия продукта: Visual Studio 2015
Оригинальный номер базы знаний: 3016536
Что такое дополнительный установщик
Visual Studio 2015 имеет дополнительный установщик, который позволяет устанавливать сторонние приложения, поддерживающие разработку кроссплатформенных и мобильных приложений. При удалении Visual Studio 2015 сторонние приложения могут оставаться установленными. Эти сторонние приложения могут содержать или не могут содержать записи в элементе «Установка и удаление программ» в панель управления.
В следующих разделах содержатся дополнительные сведения о сторонних приложениях, которые дополнительный установщик позволяет развернуть на компьютере, и инструкции по их удалению.
Удаление пакета SDK для Android, Apple iTunes, Git, Google Chrome, Joyent Node.js и Пакета средств разработки Oracle Java (JDK)
У этих приложений есть записи в разделе Установка и удаление программ на панели управления, и их можно удалить оттуда.
Удаление Android Native Development Kit (NDK)
Пакет Android NDK не имеет записи в разделе Установка и удаление программ на панели управления. Он установлен локально в этой папке: %ProgramFiles%\Microsoft Visual Studio 14.0\Apps
Пакет Android NDK может быть удален путем удаления папки android-ndk-r10 с жесткого диска.
Удаление Apache Ant
У Ant нет записи в элементе Программы и компоненты в панель управления. Чтобы удалить это приложение, выполните следующие действия.
- Найдите папку установки Ant на жестком диске, введя set ant в командной строке, чтобы увидеть переменную среды Ant. Переменные указывают на папку.
- Найдите и удалите папку.
Удаление Websocket4Net
Websocket4Net устанавливается только как библиотека динамической компоновки (DLL) операционной системы Windows 7. Чтобы удалить это приложение, выполните следующие действия.
- Найдите папку установки Visual Studio 14.0. По умолчанию установка выполняется в следующую папку: %ProgramFiles%\Microsoft Visual Studio 14.0 .
- В корневой папке Visual Studio найдите вложенную папку Common7\IDE\CommonExtensions\Microsoft\WebClient\Diagnostics\ToolWindows и удалите WebSocket4Net.dll.
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Обратная связь
Были ли сведения на этой странице полезными?
Плагины
Установленные плагины находятся в меню File | Settings. | Plugins. Кнопка Browse repositories. позволяет найти плагин в репозитории. Кнопка Install plugin from disk. позволяет установить плагин с диска, если вы его скачали самостоятельно.
Rainbow Brackets
«Радужные скобки» позволяют пометить каждую пару скобок своим индивидуальным цветом. Это помогает визуально видеть, где находится область кода.
Nyan Progress Bar
Заменяет все индикаторы прогресса в студии на няшного котика. Если вы серьёзный программист, то просто обязаны установить плагин Nyan Progress Bar. Совместимо с другими средами разработки на основе IntelliJ IDEA: PhpStorm, WebStorm, PyCharm, RubyMine, AppCode, CLion, Gogland, DataGrip, Rider, MPS.
Появляется везде. Например, при загрузке проекта.
Во время работы при синхронизации чего-либо.

RoboPOJOGenerator
Удобный генератор готовых Java и Kotlin POJO классов из JSON: GSON, FastJSON, AutoValue (GSON), Logan Square, Jackson.
ADB Idea
Плагин для Android Studio/Intellij IDEA для быстрых операций над приложением:
- Uninstall App — удалить приложение из устройства
- Kill App — убить приложение (удалить из памяти)
- Start App — запустить приложение
- Restart App — перезапустить приложение
- Clear App Data — очистить данные
- Clear App Data and Restart — очистить данные и перезапустить
После установки эти команды можно найти через Tools | Android | ADB IDEA.
Также можно вызвать окно поиска действий через комбинацию клавиш Ctrl+Shift+A и с помощью символов ADB быстро найти конкретную команду.
Плагин удобен для проверки работоспособности приложения в разных состояниях. Например, вы ранее создали базу данных и решили посмотреть, как поведёт себя приложение при пустой базе. С помощью плагина вы быстро можете очистить данные и посмотреть на результат.
ADB WIFI
Плагин для проверки приложения на устройстве через Wi-Fi. Полезно, если ваш кот перегрыз USB-провод и вы не можете подлючить телефон к компьютеру для отладки.
Установка/Удаление модуля
Рассмотрим общие действия с модулями: как произвести установку модуля и как его удалить.
- Установка модуля
- Как удалить/отключить модуль
Установка модуля
Модули находятся в разделе «Модули» (рис.1).
Для установки модуля перейдите в раздел «Магазин модулей» и в строке поиска введите название модуля, чтобы найти его быстрее.

Рисунок 1.
Далее нажмите «Установить» (рис.2).

Рисунок 2.
Модуль отобразится в разделе «Установленные модули». Поставьте галочку активности и перейдите в настройки модуля (рис.3).

Рисунок 3.
Настройки у каждого модуля свои. Информацию о модулях и инструкции по ним можете посмотреть в разделе «Модули и интеграции» на нашем официальном сайте.
Как удалить/отключить модуль
Если решили удалить модуль, перейдите в раздел «Модули» наведите на блок с модулем курсор мыши, после этого появится красный крестик. Нажмите на него, тогда модуль удалится (рис.4).
Внимание!
При деактивации модуля, он все еще установлен в магазине и, если Ваш магазин в облаке, списания за него продолжатся.
Чтобы полностью отключить модуль, необходимо удалить его из магазина.

Рисунок 4.
Готово. Мы рассмотрели, как установить и удалить любой модуль.
Другие статьи по теме
- Вопросы авторского права на дизайн
- Хочу открыть интернет-магазин. Что можно продавать в интернете?
- Затраты на создание интернет-магазина
- Как и что лучше продавать в интернет магазине?
- Как открыть интернет-магазин с нуля и какой?
ADB Uninstall плагин для Android Studio (IntelliJ IDEA)

Так случилось, что я проиграл один спор и мне пришлось побриться налысо. Т.к. больше ничего не сдерживало поток свежих идей к моей голове, а на улицу показаться было стыдно, то я задался целью написать общественно-полезный плагин к одной из лучших сред разработки. Функционал прост, как паренный початок маиса, но очень нужный (ума не приложу, почему это еще не встроено по-умолчанию). Итак, сегодня я постараюсь поделиться опытом разработки плагина, который позволит вам элегантно удалять приложения над которыми вы работаете с подключенных андроид устройств.
Для тех, кто просто хочет начать пользоваться, вот как это выглядит (вызывается по AltGraph+U):

Качать отсюда (ver. 1.0.1): github.com/Ghedeon/ADB-Uninstall/releases
Установка: Settings → Plugins → Install plugin from disk…
Важно: Плагин сырой, поэтому очень надеюсь, что установившие отпишутся о проблемах. Буду исправлять по мере возможноcти. Отзывы, замечания, предложения по расширению функционала — все приветствуется!
Приведу несколько повседневных сценариев андроид-разработчиков (особенно при работе в команде):
Use-Case 1:
Команда работает на одним приложением. Вы только что обменялись с кем-то девайсами и терпеливо ждете пока закончится установка. Что в итоге? Правильно, Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]. Логично, потому что на девайсе осталось приложение от коллеги, debug keys, которыми подписаны приложения у всех разные, соответсвенно update не проходит. Чертыхаясь, вы лезете в командную строку, набираете «adb uninstall » и почти физически ощущаете, как по байтам сносится программа.
Use-Case 2:
Все тоже самое, только после «adb uninstall» ничего не происходит, потому что у вас в системе не одно, а два устройства и adb не знает с какого удалять. Обняв мозгом всю глупость ситуации, в расстроенных чувствах вы набираете «adb devices» , получаете список устройств, потом «adb -s uninstall » и мир сдается перед вами.
Use-Case 3:
У вас несколько подключенных устройств и удалить нужно со всех. Ну, тут уже самый ленивый пойдет писать скрипт, который хоть как-то автоматизирует всю эту кухню.
Use-Case 4:
Никаких проблем нет, но вам просто лень писать «adb uninstall
Решения:
- Использовать один debug key всеми членами команды, тогда, с точки зрения системы, все будет выглядеть как-будто вы работаете за один компьютером.
- Самописный скрипт и, желательно, достаточно умный, чтобы не спрашивать вас об имени пакета.
Сам скрипт
#!/bin/bash package=`grep -o 'package=".*"' AndroidManifest.xml | grep -o \".* | sed 's/"//g'` #adb uninstall $package adb devices | tail -n +2 | awk '' | xargs -I <> adb -s <> uninstall $package
Разработка
О плагинах для IDEA на хабре уже писалось, чего только стоит монументальный перевод в семи частях от Lucyfer, поэтому общую структуру и настройку IDE я опущу. Для того чтобы добавить собственный пункт в меню и/или тулбар наследуемся от AnAction и переопределяем метод actionPerformed(). Первым делом узнаем абсолютный путь до Android SDK:
ProjectRootManager.getInstance(event.getProject()).getProjectSdk().getHomePath();
если к этому добавить /platfrom-tools , то у нас будет путь к рабочей папке, откуда можно будет запустить adb.
Примечание
Изначально я решил идти иным путем: понадеяться на то, что у пользователя правильно настроены все пути до Android SDK в переменных окружения и просто передать их в свой процесс. Тогда нам не нужен абсолютный путь, интерпретатор будет знать о командах, которые мы хотим запустить. Однако, под Linux и Mac OS переменные окружения, как известно, можно запихнуть в тысячу и одно сравнительно приличное место, что мешало мне c определенностью сказать, что у меня будет в System.getenv() . В общем, при тех или иных настройках системы этот метод заваливался и я решил отступить. Позже, покопавшись в исходниках андроидовского плагина для IDEA, я обнаружил, что они, как и я, используют абсолютные пути.
Получаем список подключенных устройств:
Process pr = Runtime.getRuntime().exec(toolPath + File.separator + "adb devices");
Я использовал проженный Runtime.exec() из Java, но, в то же время, для подобных дел IDEA предлагает более кошерный GeneralCommandLine . По правде, этот переход у меня до сих пор в TODO и я буду очень признателен, если кто-то поделится опытом.
Теперь нужно определить имя пакета, который будем удалять. Тут могут быть варианты. Андроид проект может содержать несколько исполняемых модулей с разными именами пакетов. Еще могут быть Library Projects, но о них речь не идет. Первое что пришло в голову — брать имя пакета из AndroidManifest.xml активного в данный момент модуля. Но это оказалось не очень удобно, работать вы можете не в том модуле, который хотите удалить, поэтому приходилось предварительно выделять мышкой нужный модуль. В итоге я остановился на куда более логичном решении — извлекать имя пакета из манифеста того модуля, который указан в текущей конфигурации запуска. Поясню. Как известно, чтобы установить приложение, нужна как минимум одна конфигурация запуска (Run Configuration). При создании этой самой Run Configuration, во вкладке General, вы указываете Module. Из манифеста указанного модуля и будем брать имя пакета. Если же конфигураций несколько — будем брать ту, что активна в данный момент.
Получаем активную конфигурацию:
RunManager runManager = RunManager.getInstance(event.getProject()); ModuleBasedConfiguration selectedConfiguration = (ModuleBasedConfiguration) runManager.getSelectedConfiguration().getConfiguration();
Следующим шагом будет нахождение точного пути до папки с AndroidManifest.xml. В случае с проектами со старой структурой это будет просто корень модуля. Для gradle-based проектов же, это как правило currentModulePath/src/main, что необходимо учитывать. Сам корень модуля получаем следующим образом:
Module module = selectedConfiguration.getConfigurationModule().getModule(); currentModuleFilePath = module.getModuleFilePath(); String currentModulePath = currentModuleFilePath.substring(0, currentModuleFilePath.lastIndexOf(File.separator));
Распарсить найденный AndroidManifest.xml тем же StAX парсером, на предмет атрибута package, уже тривиальная задача.
Фактически, полученных данных (deviceId и package) достаточно для того, чтобы непосредственно приступить к выполнению adb uninstall. Но перед этим мы сделаем еще одну, по большей части косметическую, вещь. Различать устройства по deviceId не очень удобно, поэтому попробуем предоставить пользователю больше human-readable («удобочитаемой человеком»?) информации. Для этой цели, выполним для каждого устройства следующую команду:
adb -s shell cat /system/build.prop;
Результатом которой будет длинный список (фактически это ассоциативный массив) различных характеристик устройства. Выбираем только нужные нам, а именно:
ro.product.manufacturer ro.product.model ro.build.version.release ro.build.version.sdk
В итоге, вместо абстрактного заклинания R32CC02G02Z пользователь увидит гордое: «Samsung Nexus 10 Android 4.3 (API 18)».
Дело за малым, показываем пользователю модальное окно со всем этим добром, получаем список выбранных устройств и, в порядке живой очереди, запускаем вожделенный adb uninstall:
Process pr = Runtime.getRuntime().exec(toolPath + File.separator + "adb -s " + device.getSerialNumber() + " uninstall " + packageName);
Дополнение:
- Для логов и различных сообщений, адресованных пользователю, используется Notifications.Bus.notify() . В зависимости от пользовательских настроек, сообщение появится в одном или сразу нескольких местах пользовательского интерфейса: Event Log, Balloon, Sticky Balloon, Tool window balloon. Либо не появится вообще.
- Для взаимодействия с пользователем, чтобы ваши надстройки смотрелись органично, лучше все-таки использовать не голый Swing, a компоненты, которые предлагает IntelliJ IDEA. В частности, я использовал Dialog Wrapper из этого набора.
- Важным нереализованным пунктом для меня остается сбор статистики, хотя бы по сбоям в работе плагина. На данный момент складывается какая-то курьезная ситуация, когда в ответ на крэш плагина IDEA предлагает отправить баг-репорт в Гугл. Буду благодарен за наводку, если кому-то известны интсрументы вроде Crashlytics, но только для Swing приложений.
- android development
- android studio
- intellij idea
- plugin
