最近的项目必须要windows桌面版本,使用flutter开发完成后,win10上运行没有问题,但是在win7上运行不了。最关键的是手边没有win7的电脑进行测试,根本都如从下手。然后填坑开始了
首先建立个demo然后再win7上运行,可以运行,然后又开始使用自己的程序,使用win7兼容方式运行,也没有问题。最终查出问题时inno setup 造成的问题。既然找到问题那就解决问题吧从官网下载的inno setup 最新版本是6.3.3,官网上介绍说6.2.2是最后一个支持windows vista 和 windows server 2008的版本,但是从6.1版本开始,MinVersion 默认值是6.1,然后又查资料得出MinVersion 6.0支持win7 和 win vista 默认是6.1 支持的是win8。下一步那就找地方改这个MinVersion吧,由于使用的是flutter_distributor 进行的打包,查看源码发现,里面根本就没有MinVersion的配置项。
修改方案有2个:
方案1,直接下载inno setup 6.1以下版本进行打包配置,这个是最简单的一种方案
方案2,使用inno setup 6.2.2以下版本,假如6.1~6.2.2版本的话,需要对flutter_distributor源码进行修改,在
另外还需要考虑的是flutter开发过程中所使用的pub package是否支持win7,加入是不支持win7的话那说什么都白搭,更重要的一点是win10以后才有了权限的概念,所以针对win7打包的话一定要记住把APP种所用到的权限的东西去掉
flutter_distributor/blob/main/packages/flutter_app_packager/lib/src/makers/exe/inno_setup/inno_setup_script.dart [Setup] 下面添加一行MinVersion=6.0 然后再进行打包就可以了
flutter 打包win桌面需要的工具
1、安装Visual Studio 2022 从官网下载,安装c++桌面开发组件,及其对应的c++解析库
2、安装NuGet 包管理 并且配置对应的环境变量
3、安装inno setup 6
4、由于我使用了flutter_distributor进行打包,所以需要安装 dart pub global activate flutter_distributor
并且在windows目录下新建packaging/exe/make_config.yaml文件 配置对应的appId appPublisher appPublisherUrl displayName 等配置项 具体查看flutter_distributor介绍中 exe的相关配置
5、假如是用vcpkg进行win cmake编辑的话还需要安装vcpkg 并且配置对应的环境变量,在window目录下 CMakeSettings.json配置对应的方式
6、配置distribute_opthons.yaml文件
运行flutter_distributor release --name [distribute_opthons 中设置的名字]
win桌面版打包现有问题踩坑总汇,后续有啥问题可以相互探讨