Tensionix ENDERU
GitHub28 RepositoriesDaily Tech3 Abonnentenaudion.devdas ProduktregalRSSVeröffentlichungen
← Alle NotizenProjects

VS Code — установка как надо

Переносимый набор: скачать свежую сборку, поставить её со всеми опциями мастера и сразу настроить — без вопросов о доверии к папкам, со своими расширениями. Работает и с обычной установкой, и с портативным экземпляром.

КомандаЧто делает
Download-Installer.cmdскачать установщик для всей машины
Download-Installer.cmd -Kind userустановщик в профиль пользователя
Download-Portable.cmdскачать архив для портативной работы
Download-Installer.cmd -Checkтолько узнать свежую версию
Install-VSCode.cmdпоставить, настроить, ядро, Claude и Codex
Install-VSCode-Claude.cmdто же, но из агентов только Claude
Install-VSCode-AllAI.cmdто же, но все четыре агента
Install-VSCode-NoAI.cmdто же, но без агентов вовсе
Install-VSCode.cmd -Checkпоказать, что уже стоит и что включено
Install-VSCode.cmd -SettingsOnlyтолько настройки и расширения
Setup-Portable.cmdпортативный: ядро, Claude и Codex (≈3,1 ГБ)
Setup-Portable-Claude.cmdпортативный: ядро и Claude (≈2,3 ГБ)
Setup-Portable-AllAI.cmdпортативный: ядро и все четыре агента (≈3,5 ГБ)
Setup-Portable-NoAI.cmdпортативный: только ядро (≈2,0 ГБ)
Update-Portable.cmdобновить портативный до свежей версии
Start-Portable-VSCode.cmdзапустить портативный (создаётся развёртыванием)

Обновление. Установленный VS Code обновляется сам — встроенным механизмом Microsoft, отдельная команда ему не нужна. Портативный сам себя не обновляет (это решение разработчиков: обновление заменило бы папку целиком вместе с data\), поэтому его обновляет Update-Portable.cmd — качает свежий архив, меняет программу и не трогает data\ с настройками и расширениями.

Четыре варианта у каждого вида — из-за веса агентов: Codex занимает 826 МБ, Claude Code — 283 МБ, Gemini — 237 МБ. У каждого внутри свой рантайм с движком, оттого и размер. Исключение — Grok: 11 МБ, потому что это только панель, а движок живёт снаружи, в отдельно поставленном CLI.

Чем это отличается от обычной установки

Мастер VS Code — это Inno Setup, и его галочки в тихом режиме перечисляются в /MERGETASKS. Скрипт включает все, кроме запуска редактора после установки:

ЗадачаЧто даёт
addcontextmenufiles«Открыть с помощью Code» для файлов
addcontextmenufoldersто же для папок
associatewithfilesCode становится редактором для своих типов
addtopathcode работает в консоли
desktopiconярлык (отключается ключом -NoDesktopIcon)
!runcodeне запускать редактор сразу

Главное: никаких вопросов о доверии

В settings.json выключено доверие целиком:

"security.workspace.trust.enabled": false

Именно этого ключа не хватало в прежней версии настроек. Без него редактор продолжает спрашивать про каждую папку, сколько ни правь banner, startupPrompt и untrustedFiles — они лишь смягчают вопрос, а не убирают.

Настройки кладутся с бэкапом прежних: рядом появляется settings.json.<дата>.bak.

Самообновление

Установленный VS Code обновляется сам — в настройках включены update.mode: default и фоновые обновления, расширения тоже обновляются сами.

Портативный сам себя не обновляет, и это решение разработчиков: обновление заменило бы папку целиком вместе с data, где лежат настройки и расширения. Поэтому обновляет его Update-Portable.cmd: качает свежий архив, меняет программу и не трогает data. Расширения внутри при этом обновляются сами.

Портативный режим

Портативность включается одной папкой: если рядом с Code.exe есть каталог data, редактор держит в нём всё своё и ничего не пишет в профиль пользователя. Поэтому настройки кладутся в data\user-data\User\settings.json, а расширения уходят в data\extensions. Папку можно унести целиком.

Для запуска Setup-Portable кладёт в корень Start-Portable-VSCode.cmd — двойной клик поднимает редактор, не надо нырять в VSCode\ за Code.exe. Путь внутри относительный (%~dp0), поэтому ярлык переезжает вместе с папкой; а если развернуть в другое место ключом -TargetDir, в ярлык ляжет полный путь.

Что портативность не уносит

Портативный режим изолирует редактор: настройки, расширения и состояние окон живут в data. Но он не может изолировать то, что расширение хранит снаружи, в профиле пользователя, — и это заметно сразу.

Claude Code в портативном экземпляре оказывается уже авторизован, хотя вход делался в установленном. Причина: токен лежит не в VS Code, а в %USERPROFILE%\.claude\.credentials.json — общем профиле Claude Code, одном для CLI и для расширения. Портативный редактор просто читает его оттуда.

Так же ведут себя и другие: учётки Git идут в диспетчер учётных данных Windows, контекст Docker — в ~/.docker, вход в Grok Build — в %USERPROFILE%\.grok. Всё это берётся из системы, а не из папки редактора.

Обратная сторона того же правила: на чужой машине ничего этого не будет — data токенов не несёт. Унесли флешку — авторизация осталась дома. С точки зрения безопасности это и правильно.

Расширения

Списков три, и читаются они одинаково — строку можно просто перенести из одного в другой:

ФайлКто ставит
extensions.txtвсе деплоеры (21 расширение)
extensions-ai.txtобычный, -Claude и -AllAI; разбирается по разделам
extensions-optional.txtтолько по ключу -WithOptional

Четыре агента и кто из них чего стоит

Разделов в extensions-ai.txt четыре, и деплоеры разбирают их по заголовкам: обычный берёт Claude и Codex, -Claude — одного, -AllAI — всех, -NoAI — никого. Внутри каждый — отдельная история.

Claude Code и Codex работают по подписке и ничего вокруг себя не требуют. Это канон, они и стоят в обычном деплоере.

Gemini Code Assist в комплекте есть, но с оговоркой, которую лучше знать заранее: с 18 июня 2026 расширение не обслуживает личные тарифы — ни «Code Assist for individuals», ни Google AI Pro, ни Ultra. Личные аккаунты Google увёл в Antigravity, свою отдельную IDE со своим CLI; плагина для чужого VS Code у них больше нет. Расширение живёт и обновляется, но отвечает только по лицензии Code Assist Standard или Enterprise, то есть через организацию и проект в Google Cloud. Рейтинг 1,9 при пяти миллионах установок — ровно про это. На личном аккаунте оно поставится и промолчит.

Grok своего расширения от xAI не имеет вовсе. В комплекте — community- обёртка Paweł Huryn: панель, которая говорит с Grok Build CLI по JSON-RPC через grok agent stdio. Значит нужен сам CLI:

irm https://x.ai/cli/install.ps1 | iex
grok login

Деплоер CLI не ставит намеренно — это выполнение скрипта из сети, такому место в осознанной команде, а не внутри установщика. Зато он проверяет, есть ли grok в PATH или в %USERPROFILE%\.grok\bin, и если нет — говорит прямо, что панель останется пустой.

Вход в Grok Build по подписке

Вход по подписке — это способ по умолчанию, отдельно ничего включать не надо. Достаточно запустить CLI:

grok

Первый запуск сам откроет браузер и проведёт через xAI OAuth на auth.x.ai. Годится подписка SuperGrok или X Premium+; ключ из консоли xAI для этого не нужен. Повторно, чтобы сменить аккаунт или починить сломавшийся вход:

grok login

Флаг --oauth у этой команды есть, но он и так подразумевается. Выйти — grok logout, он же чистит сохранённые данные.

Где хранится вход. В %USERPROFILE%\.grok\auth.json. Токены обновляются сами в фоне; если сервер не сообщил срок, данные живут 30 дней. Файл общий для всего, что пользуется CLI, — поэтому панель Grok в VS Code отдельного входа не просит, и в портативном экземпляре она тоже окажется авторизованной. И по той же причине на чужой машине её не будет: data редактора токенов не несёт.

Переносить auth.json руками не надо. Технически это работает: CLI следит за файлом и подхватывает подменённые данные на лету, без перезапуска. Но это ключ от аккаунта в открытом виде — копия на флешке равна копии пароля без второго фактора. К тому же данные протухают через 30 дней, а ротация токенов на стороне xAI при работе с двух мест приводит к повторному входу: перенос рискует не добавить доступ на новой машине, а отобрать его на старой. Для второй машины есть способ ниже — он занимает полминуты.

Без браузера — на сервере по SSH, в контейнере, на удалённой машине:

grok login --device-auth

Команда печатает ссылку и код: открываете ссылку на любом устройстве, вводите код, CLI дожидается подтверждения сам.

Ключ API — не то же самое, и он не подмена подписки. Порядок такой: сначала ключ, прописанный под конкретную модель в config.toml, затем активная сессия из auth.json, и только потом XAI_API_KEY. То есть завести ключ «про запас» безвредно — пока жива сессия, расход идёт по подписке. Обратное тоже верно: чтобы работа пошла через ключ и биллинг консоли, сессию надо сначала закрыть — grok logout. В PowerShell ключ задаётся так:

$env:XAI_API_KEY = "xai-..."

Расход. Вызовы, включая поиск по X, идут не из отдельных кредитов, а из общего недельного пула подписки — того же, из которого работает чат на grok.com. Поэтому частый поиск по ленте не бесплатен: платится не деньгами, а неделей. Сколько стоит один запрос, xAI не публикует; остаток смотрят командой /usage внутри TUI (там же /login и /logout) и в Settings → Usage на grok.com.

Полное описание — в документации самого xAI, она приезжает вместе с CLI: %USERPROFILE%\.grok\docs\user-guide\02-authentication.md. Там же то, что нам не нужно, но бывает нужно на работе: вход через корпоративный IdP по OIDC (Okta, Azure AD, Auth0) и передача аутентификации внешнему скрипту.

Одна строка на идентификатор, строки с # пропускаются. Ставятся с ключом --force: он снимает вопрос о доверии к издателю, отвечать на который в тихой установке всё равно некому.

Наглядный список — в Extensions.html: кнопка «Поставить» открывает расширение прямо в редакторе через протокол vscode:extension/…, вторая кладёт команду в буфер. Страница собирается из тех же файлов командой Build-ExtensionsPage.cmd и потому не может с ними разойтись.

Todo Tree и ripgrep

Расширение ищет пометки через ripgrep и при первом запуске жалуется: «Failed to find vscode-ripgrep… set todo-tree.ripgrep». Совет неверный: на самом деле ключ называется todo-tree.ripgrep.ripgrep — расширение читает секцию todo-tree.ripgrep и берёт из неё свойство ripgrep.

Внутри VS Code свой rg.exe есть, но путь к нему содержит хэш сборки и меняется с каждым обновлением, поэтому прописывать его нельзя. Скрипты ставят ripgrep отдельно (winget install BurntSushi.ripgrep.MSVC) и подставляют путь при установке — в файле он не хранится готовым, иначе набор не перенести на другую машину.

Издателей Microsoft и GitHub редактор доверяет сам; остальные при первой установке спросили бы подтверждение.

Откуда берутся сборки

У Microsoft есть постоянные адреса, всегда ведущие на текущий выпуск, поэтому версия нигде не прописана руками. Её и контрольную сумму сообщает сервис обновлений (update.code.visualstudio.com/api/update/<платформа>/stable/latest), и файл проверяется по sha256. Если сервис недоступен, остаётся прямая ссылка — имя файла придёт из переадресации, только без проверки суммы.

Скачанное ложится в подпапку Download\; установщик и портативная сборка ищут его там (а по-старому рядом со скриптом — тоже найдут). Прежняя сборка того же вида удаляется: берётся самая свежая, а три версии только занимают место.

Bearbeitet 28.08.2026