From 082b861ac92d032cd123f01ae1e3bf6894ba9f31 Mon Sep 17 00:00:00 2001 From: admin_d Date: Sun, 26 Jul 2026 16:31:30 +0500 Subject: [PATCH] Install plugin without developer tools --- README.md | 7 +++-- install.ps1 | 88 +++++++++++++++++------------------------------------ 2 files changed, 32 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 46d2229..61de58c 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,10 @@ Codex. irm "https://dev.ast.ltr.kz/Logos/codex-plugins/raw/branch/main/install.ps1" | iex ``` -Сценарий при необходимости установит Git, Node.js LTS и Codex CLI, затем -подключит marketplace и установит `tax-code-research`. Повторный запуск -безопасен: он обновит marketplace и не будет повторно устанавливать плагин. +Сценарий использует только встроенные средства Windows: скачивает ZIP, +распаковывает marketplace в `%LOCALAPPDATA%\Logos\codex-plugins` и открывает +карточку `tax-code-research` в ChatGPT Desktop. Нажмите **Установить**. +Git, Node.js и отдельный Codex CLI не требуются. После установки перезапустите ChatGPT Desktop или откройте новый рабочий чат. MCP плагина доступен только внутри корпоративной сети. diff --git a/install.ps1 b/install.ps1 index 8f9647d..3eb47d6 100644 --- a/install.ps1 +++ b/install.ps1 @@ -1,70 +1,38 @@ $ErrorActionPreference = "Stop" -function Install-WingetPackageIfMissing { - param( - [string]$Command, - [string]$PackageId - ) +$archiveUrl = "https://dev.ast.ltr.kz/Logos/codex-plugins/archive/main.zip" +$installRoot = Join-Path $env:LOCALAPPDATA "Logos\codex-plugins" +$tempRoot = Join-Path ([IO.Path]::GetTempPath()) ("logos-codex-plugins-" + [guid]::NewGuid()) +$zipPath = Join-Path $tempRoot "marketplace.zip" +$extractRoot = Join-Path $tempRoot "extract" - if (Get-Command $Command -ErrorAction SilentlyContinue) { - return +New-Item -ItemType Directory -Path $tempRoot, $extractRoot -Force | Out-Null + +try { + Invoke-WebRequest -UseBasicParsing -Uri $archiveUrl -OutFile $zipPath + Expand-Archive -Path $zipPath -DestinationPath $extractRoot -Force + + $sourceRoot = Join-Path $extractRoot "codex-plugins" + $sourceMarketplace = Join-Path $sourceRoot ".agents\plugins\marketplace.json" + if (-not (Test-Path $sourceMarketplace)) { + throw "В загруженном архиве не найден marketplace.json." } - if (-not (Get-Command winget.exe -ErrorAction SilentlyContinue)) { - throw "winget не найден. Обновите Windows App Installer и повторите установку." + New-Item -ItemType Directory -Path (Split-Path $installRoot -Parent) -Force | Out-Null + if (Test-Path $installRoot) { + Remove-Item -Path $installRoot -Recurse -Force } - - winget install --id $PackageId -e --accept-package-agreements --accept-source-agreements - if ($LASTEXITCODE -ne 0) { - throw "Не удалось установить пакет $PackageId." + Move-Item -Path $sourceRoot -Destination $installRoot +} +finally { + if (Test-Path $tempRoot) { + Remove-Item -Path $tempRoot -Recurse -Force } } -Install-WingetPackageIfMissing "git.exe" "Git.Git" -Install-WingetPackageIfMissing "npm.cmd" "OpenJS.NodeJS.LTS" +$marketplacePath = Join-Path $installRoot ".agents\plugins\marketplace.json" +$encodedPath = [uri]::EscapeDataString($marketplacePath) +$pluginUrl = "codex://plugins/tax-code-research?marketplacePath=$encodedPath" -$env:Path = "$env:ProgramFiles\Git\cmd;$env:ProgramFiles\nodejs;$env:APPDATA\npm;$env:Path" -$npm = Get-Command npm.cmd -ErrorAction SilentlyContinue -if (-not $npm) { - throw "Node.js установлен, но npm не найден. Перезапустите PowerShell и повторите команду." -} - -$codex = Get-Command codex.cmd -ErrorAction SilentlyContinue -if (-not $codex) { - & $npm.Source install --global "@openai/codex" - if ($LASTEXITCODE -ne 0) { - throw "Не удалось установить Codex CLI." - } - - $npmPrefix = (& $npm.Source config get prefix).Trim() - $env:Path = "$npmPrefix;$env:Path" - $codex = Get-Command codex.cmd -ErrorAction SilentlyContinue -} - -if (-not $codex) { - throw "Codex CLI установлен, но команда codex не найдена. Перезапустите PowerShell и повторите установку." -} - -$marketplaceName = "logos-company-plugins" -$marketplaceUrl = "https://dev.ast.ltr.kz/Logos/codex-plugins.git" -$pluginId = "tax-code-research@$marketplaceName" - -$marketplaces = (& $codex.Source plugin marketplace list --json | ConvertFrom-Json).marketplaces -if ($marketplaces.name -contains $marketplaceName) { - & $codex.Source plugin marketplace upgrade $marketplaceName -} else { - & $codex.Source plugin marketplace add $marketplaceUrl --ref main -} -if ($LASTEXITCODE -ne 0) { - throw "Не удалось подключить marketplace $marketplaceName." -} - -$installed = (& $codex.Source plugin list --json | ConvertFrom-Json).installed -if ($installed.pluginId -notcontains $pluginId) { - & $codex.Source plugin add $pluginId - if ($LASTEXITCODE -ne 0) { - throw "Не удалось установить плагин $pluginId." - } -} - -Write-Host "Готово. Перезапустите ChatGPT Desktop или откройте новый рабочий чат." -ForegroundColor Green +Start-Process $pluginUrl +Write-Host "Карточка плагина открыта. Нажмите «Установить», затем откройте новый рабочий чат." -ForegroundColor Green