|
|
|
|
|
# Go 1.21 环境安装脚本 (Windows PowerShell)
|
|
|
|
|
|
# 适用于 Windows 10/11
|
|
|
|
|
|
# 以管理员身份运行
|
|
|
|
|
|
|
|
|
|
|
|
param()
|
|
|
|
|
|
|
|
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
|
|
|
|
|
|
|
|
Write-Host "==============================================" -ForegroundColor Cyan
|
|
|
|
|
|
Write-Host " Go 1.21 环境安装脚本 (Windows) " -ForegroundColor Cyan
|
|
|
|
|
|
Write-Host "==============================================" -ForegroundColor Cyan
|
|
|
|
|
|
Write-Host ""
|
|
|
|
|
|
|
|
|
|
|
|
# 配置参数
|
|
|
|
|
|
$GoVersion = "1.21.6"
|
|
|
|
|
|
$DownloadUrl = "https://go.dev/dl/go$GoVersion.windows-amd64.msi"
|
|
|
|
|
|
$InstallerPath = "$env:TEMP\go$GoVersion.windows-amd64.msi"
|
|
|
|
|
|
|
|
|
|
|
|
# 检查当前是否已安装 Go
|
|
|
|
|
|
Write-Host "[1/5] 检查当前 Go 版本..." -ForegroundColor Yellow
|
|
|
|
|
|
$CurrentGo = Get-Command go -ErrorAction SilentlyContinue
|
|
|
|
|
|
if ($CurrentGo) {
|
|
|
|
|
|
$Version = & go version
|
|
|
|
|
|
Write-Host " 检测到已安装: $Version" -ForegroundColor Green
|
|
|
|
|
|
|
|
|
|
|
|
$response = Read-Host " 是否重新安装? (y/N)"
|
|
|
|
|
|
if ($response -ne 'y' -and $response -ne 'Y') {
|
|
|
|
|
|
Write-Host " 跳过安装" -ForegroundColor Gray
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
Write-Host " 未检测到 Go" -ForegroundColor Gray
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 下载安装包
|
|
|
|
|
|
Write-Host "[2/5] 下载 Go $GoVersion ..." -ForegroundColor Yellow
|
|
|
|
|
|
Write-Host " 下载地址: $DownloadUrl" -ForegroundColor Gray
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
$webClient = New-Object System.Net.WebClient
|
|
|
|
|
|
$webClient.DownloadFile($DownloadUrl, $InstallerPath)
|
|
|
|
|
|
Write-Host " 下载完成: $InstallerPath" -ForegroundColor Green
|
|
|
|
|
|
} catch {
|
|
|
|
|
|
Write-Error "下载失败: $_"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 验证下载文件
|
|
|
|
|
|
if (-not (Test-Path $InstallerPath)) {
|
|
|
|
|
|
Write-Error "下载失败,文件不存在"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$fileSize = (Get-Item $InstallerPath).Length / 1MB
|
|
|
|
|
|
Write-Host " 文件大小: $([math]::Round($fileSize, 2)) MB" -ForegroundColor Gray
|
|
|
|
|
|
|
|
|
|
|
|
# 执行安装
|
|
|
|
|
|
Write-Host "[3/5] 开始安装 Go..." -ForegroundColor Yellow
|
|
|
|
|
|
Write-Host " 正在运行安装程序..." -ForegroundColor Gray
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
$arguments = "/i `"$InstallerPath`" /passive /norestart"
|
|
|
|
|
|
$process = Start-Process -FilePath "msiexec.exe" -ArgumentList $arguments -Wait -PassThru
|
|
|
|
|
|
|
|
|
|
|
|
if ($process.ExitCode -ne 0) {
|
|
|
|
|
|
Write-Error "安装失败,退出码: $($process.ExitCode)"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Write-Host " 安装完成" -ForegroundColor Green
|
|
|
|
|
|
} catch {
|
|
|
|
|
|
Write-Error "安装过程出错: $_"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 设置环境变量
|
|
|
|
|
|
Write-Host "[4/5] 配置环境变量..." -ForegroundColor Yellow
|
|
|
|
|
|
|
|
|
|
|
|
$GoPath = "$env:USERPROFILE\go"
|
|
|
|
|
|
$GoBin = "$GoPath\bin"
|
|
|
|
|
|
|
|
|
|
|
|
# 检查 GOPATH
|
|
|
|
|
|
$CurrentGoPath = [Environment]::GetEnvironmentVariable("GOPATH", "User")
|
|
|
|
|
|
if (-not $CurrentGoPath) {
|
|
|
|
|
|
[Environment]::SetEnvironmentVariable("GOPATH", $GoPath, "User")
|
|
|
|
|
|
Write-Host " 设置 GOPATH: $GoPath" -ForegroundColor Green
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 更新 PATH - 添加 Goin
|
|
|
|
|
|
$UserPath = [Environment]::GetEnvironmentVariable("Path", "User")
|
|
|
|
|
|
if ($UserPath -notlike "*C:\Program Files\Go\bin*") {
|
|
|
|
|
|
$NewPath = $UserPath + ";C:\Program Files\Go\bin"
|
|
|
|
|
|
[Environment]::SetEnvironmentVariable("Path", $NewPath, "User")
|
|
|
|
|
|
Write-Host " 添加 Go 到 PATH" -ForegroundColor Green
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 添加 GOPATH\bin 到 PATH
|
|
|
|
|
|
if ($UserPath -notlike "*$GoBin*") {
|
|
|
|
|
|
$UserPath = [Environment]::GetEnvironmentVariable("Path", "User")
|
|
|
|
|
|
$NewPath = $UserPath + ";" + $GoBin
|
|
|
|
|
|
[Environment]::SetEnvironmentVariable("Path", $NewPath, "User")
|
|
|
|
|
|
Write-Host " 添加 GOPATH/bin 到 PATH" -ForegroundColor Green
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 设置 GOPROXY
|
|
|
|
|
|
[Environment]::SetEnvironmentVariable("GOPROXY", "https://goproxy.cn,direct", "User")
|
|
|
|
|
|
Write-Host " 设置 GOPROXY: https://goproxy.cn,direct" -ForegroundColor Green
|
|
|
|
|
|
|
|
|
|
|
|
Write-Host " 环境变量配置完成" -ForegroundColor Green
|
|
|
|
|
|
|
|
|
|
|
|
# 验证安装
|
|
|
|
|
|
Write-Host "[5/5] 验证安装..." -ForegroundColor Yellow
|
|
|
|
|
|
|
|
|
|
|
|
# 刷新环境变量
|
|
|
|
|
|
$env:Path = [Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [Environment]::GetEnvironmentVariable("Path", "User")
|
|
|
|
|
|
|
|
|
|
|
|
# 验证
|
|
|
|
|
|
try {
|
|
|
|
|
|
$GoExePath = "C:\Program Files\Go\bin\go.exe"
|
|
|
|
|
|
if (Test-Path $GoExePath) {
|
|
|
|
|
|
$GoVersionOutput = & $GoExePath version
|
|
|
|
|
|
Write-Host " Go 版本: $GoVersionOutput" -ForegroundColor Green
|
|
|
|
|
|
|
|
|
|
|
|
$GoEnvPath = & $GoExePath env GOPATH
|
|
|
|
|
|
Write-Host " GOPATH: $GoEnvPath" -ForegroundColor Green
|
|
|
|
|
|
|
|
|
|
|
|
$GoProxyVal = & $GoExePath env GOPROXY
|
|
|
|
|
|
Write-Host " GOPROXY: $GoProxyVal" -ForegroundColor Green
|
|
|
|
|
|
} else {
|
|
|
|
|
|
Write-Warning " 未找到 go.exe,可能安装未完成"
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch {
|
|
|
|
|
|
Write-Warning " 验证失败,请重新打开命令提示符后再次运行 'go version'"
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 清理
|
|
|
|
|
|
Write-Host "[清理] 删除安装包..." -ForegroundColor Gray
|
|
|
|
|
|
Remove-Item $InstallerPath -ErrorAction SilentlyContinue
|
|
|
|
|
|
|
|
|
|
|
|
Write-Host ""
|
|
|
|
|
|
Write-Host "==============================================" -ForegroundColor Cyan
|
|
|
|
|
|
Write-Host " Go 安装完成! " -ForegroundColor Cyan
|
|
|
|
|
|
Write-Host "==============================================" -ForegroundColor Cyan
|
|
|
|
|
|
Write-Host ""
|
|
|
|
|
|
Write-Host "请重新打开 PowerShell 或命令提示符,然后运行:" -ForegroundColor Yellow
|
|
|
|
|
|
Write-Host " go version"
|
|
|
|
|
|
Write-Host ""
|
|
|
|
|
|
Write-Host "接下来可以启动行情数据服务:" -ForegroundColor Yellow
|
|
|
|
|
|
Write-Host " cd d:\fs_workspace\market-data-service"
|
|
|
|
|
|
Write-Host " go mod download"
|
|
|
|
|
|
Write-Host " go run ./cmd/server"
|
|
|
|
|
|
Write-Host ""
|
|
|
|
|
|
Write-Host "然后访问管理后台:" -ForegroundColor Yellow
|
|
|
|
|
|
Write-Host " http://localhost:8080/admin"
|
|
|
|
|
|
Write-Host ""
|
|
|
|
|
|
|
|
|
|
|
|
Read-Host "按 Enter 键退出"
|