Flutter Windows应用如何打包为单个EXE文件?
Flutter Windows 打包为单个EXE的可行方案
方法一:使用第三方打包工具(无需修改CMake,适合新手)
这是最省心的方式,不用接触C++或CMake配置,只需先完成Flutter的Release构建,再用打包工具将整个输出目录打包为单个可执行文件。
构建Flutter Release版本
在项目根目录执行命令:flutter build windows --release执行完成后,产物会生成在
build/windows/x64/runner/Release目录下,包含你的应用EXE和所有依赖的DLL、资源文件。用打包工具生成单EXE
推荐两款工具:- Inno Setup:免费开源,操作简单。新建脚本,指定Release目录为源,设置输出为单文件自解压EXE,用户运行时会自动释放文件到临时目录并启动应用。
- Advanced Installer:有免费版,可视化操作,支持直接将Flutter产物打包为单文件EXE,无需编写脚本。
方法二:使用flutter_distributor工具(Flutter生态工具,一键打包)
这是Flutter社区维护的分发工具,内置了单EXE打包能力,步骤极简:
安装flutter_distributor
dart pub global activate flutter_distributor添加配置文件
在项目根目录创建distribute.yaml,内容如下:name: your_app_name release_options: windows: builder: inno args: - /SILENT打包单EXE
执行命令:flutter_distributor release --name windows工具会自动完成构建并生成单个EXE安装包,位于
dist目录下。
方法三:修改CMake配置(进阶,适合愿意尝试的用户)
如果你想直接通过修改Flutter的CMake配置实现单文件输出,可按以下步骤操作(无需深入C++知识,复制粘贴即可):
打开Windows项目的CMakeLists.txt
路径为windows/CMakeLists.txt,找到add_executable部分。添加静态链接配置
在add_executable下方添加:# 启用静态链接,减少依赖DLL set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /static")打包依赖资源到EXE
使用CMake的file(COPY ...)将资源文件嵌入EXE,或者使用第三方工具Resource Hacker手动将DLL和资源嵌入生成的EXE中。
注意:这种方法可能会导致EXE体积增大,且部分系统兼容性需要测试,新手优先推荐前两种方法。
内容的提问来源于stack exchange,提问作者Shobu
相关产品推荐
相关产品推荐

