解决pyinstaller打包涉及uiautomation截图时出现的dll找不到的错误

解决pyinstaller打包涉及uiautomation截图时出现的dll找不到的错误

项目中有时候需要写一些小工具进行自动化测试、稳定性烤机使用。
因为主要是涉及到C端的应用,烤机过程中需要配合着错误截图。
为了定位元素以及操作方便,通常可以直接使用 uiautomation进行元素定位和操作
这个过程中则会同时设计到截图操作,
auto中有一个现成的截图方法

import uiautomation as auto
auto.GetRootControl().CaptureToImage(f"fail_{
      
      time.strftime('%H-%M-%S')}.png")

可以直接截取当前屏幕的画面。
但是打包成exe后,运行则会提示 :
Failed to load dynlib/dll ‘UIAutomationClient_VC140_X64’. Most likely this dynlib/dll was not found when the application was frozen.
在这里插入图片描述
大致意思就是无法加载 uiautomation的一个dll,这个dll可以在导入的uiautomation中找到。
在这里插入图片描述

终极解决方案

网上找了一轮 发现了一个神奇的工具:Enigma Virtual Box

介绍

和 winrar 自带的 自解压 功能不同,自解压的本质其实是将几个文件制作成一个压缩包,只是这个压缩包的格式是 exe ,运行这个 exe 后,一般会把文件解压缩到 %temp% 这个目录,之后在退出程序时再将这个目录下的文件清理掉,这个过程一般对用户是透明的。
而 Enigma Virtual Box 属于虚拟文件打包系统,不会释放文件到硬盘,所以它的打开速度要比自解压打包的 exe 启动快。
官网下载:https://enigmaprotector.com/en/downloads.html

使用方法

先选择主程序(不着急选附带的其他文件)
在这里插入图片描述
再定义导出文件的路径
在这里插入图片描述

添加其他附属文件关键的来了,把加载不上的dll添加进来
在这里插入图片描述
最后点执行封包,在导出目录里即可找到封装好的单文件。
完美解决该问题。这里记录下,免得后面又忘记怎么操作了。

猜你喜欢

转载自blog.csdn.net/Yxf11824/article/details/127899155