Qt Windows 打包需要的工具:
1、安装Qt5.15.0 MSVC2019 32bit(默认路径)
2、安装nsis-3.06.1-setup.exe(或更高)(默认路径)
3、安装ksign_installer3.exe
4、安装证书(没有证书略过)
5、设置vcversion 环境变量,把下面文件夹名称配到环境变量里,脚本里会用到
6、添加环境变量
C:\Qt\Tools\QtCreator\bin
C:\Qt\5.15.0\msvc2019\bin
C:\Program Files (x86)\kSign
C:\Program Files (x86)\NSIS\Bin
7、执行 打包 deploy.cmd 脚本
@REM 使用utf-8
@REM chcp 65001
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
echo build .exe
cd app
@清理文件夹下所有子目录,不需要确认
rd /q /s release
@REM vcversion放到系统环境变量中
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\%vcversion%\bin\Hostx86\x86\nmake.exe" clean
qmake -config release
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\%vcversion%\bin\Hostx86\x86\nmake.exe"
cd ..
echo deploy qt dependencies
@REM 需要更新库时再执行一遍windeployqt,然后更新mkexe/libs
@REM windeployqt app\release\app.exe --qmldir rcc --verbose 3 --force --no-translations --compiler-runtime --angle --no-virtualkeyboard --no-webkit2
echo build rcc
cd rcc
call build.cmd
cd ..
echo return from rcc
copy rcc\dist\*.rcc app\release
del /q /s *.obj
cd mkexe
call create.cmd
cd ..
create.cmd 脚本如下:
@REM 使用utf-8
chcp 65001
set data_dir=".\bin"
if exist %data_dir% (
rd /q /s %data_dir%
)
mkdir %data_dir%
xcopy "..\app\release" %data_dir% /E /Y
xcopy ".\libs" %data_dir% /E /Y
del /q /s %data_dir%\app.pdb
del /q /s %data_dir%\app.map
rd /q /s %data_dir%\virtualkeyboard
rd /q /s %data_dir%\qmltooling
del /q /s %data_dir%\*.cpp
del /q /s %data_dir%\*.h
@REM del /q /s %data_dir%\d3dcompiler_47.dll
@REM copy lav filters
@REM copy ".\LAVFilters-0.74.1-x86\*.*" %data_dir%
signtool sign /v /f .\certs\证书名.pfx /p 证书密码 /tr http://timestamp.digicert.com .\bin\app.exe
signtool sign /v /as /fd SHA256 /f .\certs\证书名.pfx /p 证书密码 /tr http://timestamp.digicert.com .\bin\app.exe
makensis .\WelcomeFinish.nsi
echo %DATE%
echo %TIME%
set datetimef=%date:~8,2%%date:~11,2%-%time:~0,2%%time:~3,2%
@REM set datetimef=%date:~8,2%%date:~11,2%
echo date string: %datetimef%
@REM set app_version="0.0.0-%1-%datetimef%"
set app_version="0.0.0"
signtool sign /v /f .\certs\证书名.pfx /p 证书密码 /tr http://timestamp.digicert.com APP名-%app_version%.exe
signtool sign /v /as /fd SHA256 /f .\certs\证书名.pfx /p 证书密码 /tr http://timestamp.digicert.com APP名-%app_version%.exe
signtool sign /v /f .\certs\证书名.pfx /p 证书密码 /tr http://timestamp.digicert.com APP名-%app_version%.exe
signtool sign /v /as /fd SHA256 /f .\certs\证书名.pfx /p 证书密码 /tr http://timestamp.digicert.com APP名-%app_version%.exe
rename APP名-%app_version%.exe "XXXX-%app_version%-%datetimef%.exe"