windows 安装
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"更新
codex update删除
# ============================================================
# Codex 卸载脚本(保留配置与登录数据)
# 适用:通过 irm https://chatgpt.com/codex/install.ps1 | iex 安装
# 默认以当前用户身份运行即可,无需管理员
# ============================================================
$ErrorActionPreference = "Continue"
Write-Host "==> 停止 Codex 相关进程"
Get-Process *codex* -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
Start-Sleep -Milliseconds 300
# ---------- 解析安装路径(支持自定义环境变量) ----------
$codexHome = if ([string]::IsNullOrWhiteSpace($env:CODEX_HOME)) {
Join-Path $env:USERPROFILE ".codex"
} else {
$env:CODEX_HOME
}
$standaloneRoot = Join-Path $codexHome "packages\standalone"
$daemonRoot = Join-Path $codexHome "packages\app-server-daemon"
$defaultVisibleBinDir = Join-Path $env:LOCALAPPDATA "Programs\OpenAI\Codex\bin"
$visibleBinDir = if ([string]::IsNullOrWhiteSpace($env:CODEX_INSTALL_DIR)) {
$defaultVisibleBinDir
} else {
$env:CODEX_INSTALL_DIR
}
# ---------- 1. 从用户 PATH 中移除安装目录 ----------
Write-Host "==> 从用户 PATH 中移除 $visibleBinDir"
$needle = $visibleBinDir.TrimEnd("\")
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
if (-not [string]::IsNullOrWhiteSpace($userPath)) {
$segments = $userPath.Split(";", [System.StringSplitOptions]::RemoveEmptyEntries) |
Where-Object { $_.TrimEnd("\") -ine $needle }
$newUserPath = ($segments -join ";")
if ($newUserPath -cne $userPath) {
[Environment]::SetEnvironmentVariable("Path", $newUserPath, "User")
Write-Host " PATH 已更新"
} else {
Write-Host " PATH 中未找到该项,跳过"
}
} else {
Write-Host " 用户 PATH 为空,跳过"
}
# 当前会话也同步移除,方便后续验证
$env:Path = (($env:Path.Split(";", [System.StringSplitOptions]::RemoveEmptyEntries) |
Where-Object { $_.TrimEnd("\") -ine $needle }) -join ";")
# ---------- 2. 删除可见 bin 的 Junction ----------
Write-Host "==> 删除 Junction: $visibleBinDir"
if (Test-Path -LiteralPath $visibleBinDir) {
$item = Get-Item -LiteralPath $visibleBinDir -Force
if (($item.Attributes -band [IO.FileAttributes]::ReparsePoint) -and $item.LinkType -eq "Junction") {
# 用 cmd rmdir 删除联接本身,不会跟随到目标
cmd /c rmdir "$visibleBinDir" 2>$null | Out-Null
}
if (Test-Path -LiteralPath $visibleBinDir) {
Remove-Item -LiteralPath $visibleBinDir -Recurse -Force -ErrorAction SilentlyContinue
}
} else {
Write-Host " 不存在,跳过"
}
# 删除 OpenAI\Codex 上层目录(若已空)
$openAiCodexParent = Split-Path -Parent $visibleBinDir # ...\Codex
$openAiParent = Split-Path -Parent $openAiCodexParent # ...\OpenAI
foreach ($p in @($openAiCodexParent, $openAiParent)) {
if ($p -and (Test-Path -LiteralPath $p)) {
$children = Get-ChildItem -LiteralPath $p -Force -ErrorAction SilentlyContinue
if (-not $children) {
Remove-Item -LiteralPath $p -Force -ErrorAction SilentlyContinue
Write-Host " 删除空目录: $p"
}
}
}
# ---------- 3. 删除程序本体(保留 .codex 其余内容) ----------
Write-Host "==> 删除 standalone 程序目录: $standaloneRoot"
if (Test-Path -LiteralPath $standaloneRoot) {
Remove-Item -LiteralPath $standaloneRoot -Recurse -Force -ErrorAction SilentlyContinue
} else {
Write-Host " 不存在,跳过"
}
Write-Host "==> 删除 daemon-only 程序目录: $daemonRoot"
if (Test-Path -LiteralPath $daemonRoot) {
Remove-Item -LiteralPath $daemonRoot -Recurse -Force -ErrorAction SilentlyContinue
} else {
Write-Host " 不存在,跳过"
}
# 若 packages 目录已空,则删除 packages 本身
$packagesDir = Join-Path $codexHome "packages"
if (Test-Path -LiteralPath $packagesDir) {
$left = Get-ChildItem -LiteralPath $packagesDir -Force -ErrorAction SilentlyContinue
if (-not $left) {
Remove-Item -LiteralPath $packagesDir -Force -ErrorAction SilentlyContinue
Write-Host " 删除空目录: $packagesDir"
}
}
# ---------- 4. 校验 ----------
Write-Host ""
Write-Host "==> 校验结果"
$cmd = Get-Command codex -ErrorAction SilentlyContinue
if ($null -eq $cmd) {
Write-Host " codex 命令已不可用 ✔"
} else {
Write-Host " 仍可找到 codex: $($cmd.Source)"
Write-Host " (可能是 npm/bun 等其他安装方式残留)"
}
Write-Host ""
Write-Host "已保留的用户数据:"
foreach ($name in @("config.toml", "auth.json", "sessions", "history.jsonl", "log")) {
$p = Join-Path $codexHome $name
if (Test-Path -LiteralPath $p) {
Write-Host " $p"
}
}
Write-Host ""
Write-Host "Codex 程序卸载完成,配置与登录数据已保留。"
Write-Host "请打开新的 PowerShell 窗口使 PATH 变更生效。"rockylinux 安装
curl -fsSL https://chatgpt.com/codex/install.sh | sh更新
codex update
评论