当前位置:网站首页>Visual Studio配置Qt并通过NSIS实现项目打包
Visual Studio配置Qt并通过NSIS实现项目打包
2022-06-30 12:05:00 【DeepHao】
Visual Studio配置Qt
点击此处前往阿里软件源下载Qt,我这里使用的是Qt5.14.2,下载后双击安装。需要有Qt的账号,如果没有可以取Qt官网申请。依次点击下一步,再Qt组件选择时,建议如下图所示,将MSVC和MinGW都选中,并且32位和64位都安装上

安装使用Visual Studio 2017,注意勾选"使用C++的桌面开发"
Visual Studio 2017配置Qt5.14.2,选择“工具",扩展和更新,搜索Qt并安装

选择Qt VS Tools,选择Qt Versions,
添加Qt的MSVC路径,找到“qmake.exe",点击确认即可,将32位和64位都添加进去,方便使用时随时切换
NSIS安装
前往官网,下载安装

Qt工程打包
windeployqt实现打包
利用visual studio完成一个Qt工程,如下所示,教程在bilibili,选择x64和release
编译完成后会在工程目录下生成"x64/Release/CoinFlip.exe"文件
在桌面新建一个文件夹Coin,命名随意,将上述.exe文件拷贝至其中
打开Qt自带的命令框(不要使用windows自带的cmd)

VCINSTALLDIR
D:\programming\Microsoft Visual Studio\2017\Community\VC
值为Visual Studio的安装路径下的VC
使用NSIS进一步打包
将上述打包的整个Coin文件夹压缩成“.zip”文件,打开NSIS软件。按照如下所示步骤,完成后点击右下角generate,等待完成就行
完成后出现exe文件,双击安装即可
使用NSIS自定义脚本实现进一步打包
clone此仓库,进入到VimeoSetup目录,将上一步的Coin文件夹替换VimeoSetup下的App文件夹并重命名App
打开“NSIS-UI-Plugin”工程
选择Release或Debug,选择x86,Qt VS Tools中版本选择x86
在"属性"中修改"Qt Installation",点击“应用”,“确定”
完成后,右键"生成",完成后在"Win32\Release"下生成"NSIS-UI-Plugin.dll"文件
如果出现报错但是生成了"NSIS-UI-Plugin.dll"文件,就不用担心,这是因为没有添加NSIS环境变量,所以将NSIS添加至环境变量可以解决,其中值是NSIS安装路径
NSIS_DIR
D:\Program Files (x86)\NSIS

另一种解决方法是将生成的"NSIS-UI-Plugin.dll"文件手动拷贝至"D:\Program Files (x86)\NSIS\Plugins\x86-unicode",并重命名为"nsQtPlugin.dll",如果之前采用的Debug模式则重命名为"nsQtPluginD.dll"
但是还是建议添加环境变量,因为后面的步骤仍然需要添加NSIS环境变量
进入"VimeoSetup",编辑"vimeo-template.nsi"文件,各个变量含义如下
我修改如下,我新建了一个图标,依因此我将突图标换成对应的文件名
完成后保存,添加NSIS环境变量(如上所示)。双击"build-setup.bat",如果是Debug模式双击"build-setup [debug].bat",可以打开"bat"文件看到运行的命令
@echo off
python.exe ..\NsisScriptGenerate.py "%~dp0vimeo-template.nsi" "%~dp0App"
"%NSIS_DIR%\makensisw.exe" "%~dp0\vimeo.nsi"
PAUSE
你可能会遇到以下问题,由于原始NsisScriptGenerate.py采用Python2,因此需要做如下修改
print "file total: " + str(g_extract_file_cmd_total) + ", dir total: " + str(g_create_dir_cmd_total)
换
print("file total: " + str(g_extract_file_cmd_total) + ", dir total: " + str(g_create_dir_cmd_total))
print nsis_script_template_path
换
print(nsis_script_template_path)
print g_root_dir
换
print(g_root_dir)
完成后双击"build-setup.bat",若是Debug模式,双击"build-setup [debug].bat"
如果没有反应,需要添加Python环境变量(因为".bat"文件会调用系统cmd,因此会检索系统环境变量下的Python,参见Python环境变量添加),或手动使用Python在当前目录执行
python ../NsisScriptGenerate.py vimeo-template.nsi App
来生成"vimeo.nsi"文件,然后再双击"build-setup.bat",若是Debug模式,双击"build-setup [debug].bat"
完成后得到"CoinFlip-setup.exe"文件
双击打开,会得到以下安装流程



Python环境变量添加
环境变量添加如下:
将Python安装目录添加至环境变量以及Scripts文件夹路径

如果输入Python总是打开微软应用商店,解决如下:
在设置中搜索"应用执行别名",将响应快捷禁用即可,完成后在"cmd"中输入"python",出现以下界面则添加成功


边栏推荐
- MySql实现两个查询结果相除
- AGCO AI frontier promotion (6.30)
- Edusoho enterprise training version intranet only deployment tutorial (to solve the problems of player, upload and background jam)
- Beego development blog system learning (II)
- 60 个神级 VS Code 插件!!
- Use of redis in projects
- 60 divine vs Code plug-ins!!
- JMeter性能测试之相关术语及性能测试通过标准
- iServer发布ES服务查询设置最大返回数量
- 品达通用权限系统(Day 7~Day 8)
猜你喜欢
![移除无效的括号[用数组模拟栈]](/img/df/0a2ae5ae40adb833d52b2dddea291b.png)
移除无效的括号[用数组模拟栈]
![[leetcode] 15. Sum of three numbers](/img/0c/4363d7737d90c170eb4519828990b9.png)
[leetcode] 15. Sum of three numbers

3D线光谱共焦传感器在半导体如何检测

What is the principle of spectral confocal displacement sensor? Which fields can be applied?

Pinda general permission system (day 7~day 8)

lvgl 小部件样式篇

海思3559万能平台搭建:YUV格式简介

21. Notes on WPF binding

Redis - problèmes de cache

90. (cesium chapter) cesium high level listening events
随机推荐
Layout of pyqt5 interface and loading of resource files
Sword finger offer 05 Replace spaces: replace each space in the string s with "%20"“
Edusoho enterprise training version intranet only deployment tutorial (to solve the problems of player, upload and background jam)
[leetcode] 15. Sum of three numbers
【一天学awk】内置变量的使用
3D视觉检测在生产流水的应用有哪些
New function of SuperMap iserver11i -- release and use of legend
Redis6学习笔记-第二章-Redis6的基本操作
60 个神级 VS Code 插件!!
Hisilicon 3559 sample parsing: Venc
Swagger2自动生成APi文档
【一天学awk】运算符
Clipboardjs - development learning summary 1
实现多方数据安全共享,解决普惠金融信息不对称难题
Why should offline stores do new retail?
Pinda general permission system (day 7~day 8)
Videos are stored in a folder every 100 frames, and pictures are transferred to videos after processing
Mysql中 begin..end使用遇到的坑
Ensemble de cartes
Grep match lookup