内容纲要
背景
使用 golang + fyne 库开发 gui 程序,在编译时,windows defender 可能会告警,导致编译失败
go run main.go
command-line-arguments: open C:\Users\refusea\AppData\Local\Temp\go-build1839709761\b001\exe\main.exe: Operation did not complete successfully because the file contains a virus or potentially unwanted software.
也有时候编译不告警,但是使用 -ldflags -H=windowsgui
参数编译就会报警,导致编译失败。
解决方案
指定 go 的临时目录
# 在 c 盘根目录创建 gotemp 目录
mkdir c:\\gotemp
修改环境变量 GOTEMDIR 指向该目录
将目录加入 defender 白名单
【设置】-【隐私和安全性】-【Windows 安全中心】-【病毒与威胁防护】-【管理设置】-【排除项】
点击【添加或删除排除项】-【添加排除项】,选择【文件夹】
将 c:\gotemp
添加进去
打完,收工
回头一笑
如果你是 vscode,可能会发现无效,这应该是因为你的 vscode 的终端是 powershell,可以执行以下命令查看下环境变量
# powershell 查看环境变量
$Env:GOTMPDIR
C:\gotemp
# cmd 查看环境变量
set GOTMPDIR
GOTMPDIR=C:\gotemp
如果你确信你的环境变量设置正确,那么重启下 vscode,应该就 ok 了
golang 开发程序被 windows defender 报病毒