Pyinstaller有个填不了的坑

之前对比过pyinstaller和pyoxidizer,没有发现大的差别,选择了操作简单的pyinstaller来打包python工程。

开始几天都挺正常的,没想到这几天开始被坑。

zero.exe每次一生成就被Windows defender报有毒自动删了。

Pyinstaller有个填不了的坑

按照常理,这应该是普遍的问题,Google一番肯定能解决。

的确有许多人遇到了这个问题。

能找到的办法几乎都试了一遍。

重新编译boot loader,没用!

Pyinstaller有个填不了的坑

跟杀毒软件厂商申诉,不靠谱!

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

Pyinstaller有个填不了的坑

找微软买签名证书,为时尚早

相当于是在杀毒软件病毒库里面给自己的软件加了白名单,大致看了一些,证书类别许多,没有仔细研究差别。

看了看价格,最便宜的一年三百块钱左右,比想象中的便宜不少。只是目前我还在测试,买个证书之际一个人用不太划算,等后来真的有用户了再买也不迟。

Pyinstaller有个填不了的坑

修改编译参数,没用!

Pyinstaller有个填不了的坑

其他一些小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打包,说不定就在哪个用户的电脑上被当作病毒了。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
小猫叫芝心-的头像 - 鹿快
评论 共2条

请登录后发表评论

    暂无评论内容