之前对比过pyinstaller和pyoxidizer,没有发现大的差别,选择了操作简单的pyinstaller来打包python工程。
开始几天都挺正常的,没想到这几天开始被坑。
zero.exe每次一生成就被Windows defender报有毒自动删了。

按照常理,这应该是普遍的问题,Google一番肯定能解决。
的确有许多人遇到了这个问题。
能找到的办法几乎都试了一遍。
重新编译boot loader,没用!

跟杀毒软件厂商申诉,不靠谱!
我目前用的是默认的Windows defender,其他的杀毒软件不清楚是否也报毒,总不能每一家有申诉一边,并且厂商不必定会管这事。

找微软买签名证书,为时尚早
相当于是在杀毒软件病毒库里面给自己的软件加了白名单,大致看了一些,证书类别许多,没有仔细研究差别。
看了看价格,最便宜的一年三百块钱左右,比想象中的便宜不少。只是目前我还在测试,买个证书之际一个人用不太划算,等后来真的有用户了再买也不迟。

修改编译参数,没用!

其他一些小tips也都试过,还是一生成就被杀掉。
外部找不到解决方案,于是从代码改动上分析最近开始报毒的缘由。
可疑的地方有两处:
访问系统的临时文件目录,用来缓存数据
data_dir = os.path.join(tempfile.gettempdir(), "zero")
if not os.path.exists(data_dir):
os.mkdir(data_dir)
通过subprocess执行本地bat脚本,用来添加鼠标右键菜单
if not config.get("register", False):
register_bat = os.path.join(base_dir, "register_zero.bat")
subprocess.call([register_bat])
查了一些资料发现,这两个操作加上pyinstaller自己的一些特征,触发了Windows defender的匹配规则。
只能说Windows defender过于谨慎或者有些沙雕。
这个问题存在已久,看来Windows defender和pyinstaller都觉得自己没错,都不处理,有点好奇,pyinstaller在Windows上有几个人在用?
同一份代码使用pyoxidizer生成msi安装包,安装运行毫无阻碍,真不该在pyinstaller上浪费时间折腾。
在Windows平台如果软件有外发需求又不打算买证书,还是别用pyinstaller打包,说不定就在哪个用户的电脑上被当作病毒了。













- 最新
- 最热
只看作者