Qt 应用打包发布 #

发布概述 #

text
┌─────────────────────────────────────────────────────────────┐
│                    Qt 应用发布流程                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   1. 编译 Release 版本                                      │
│         │                                                   │
│         ▼                                                   │
│   2. 部署 Qt 依赖库                                         │
│         │                                                   │
│         ▼                                                   │
│   3. 打包应用资源                                           │
│         │                                                   │
│         ▼                                                   │
│   4. 创建安装包                                             │
│         │                                                   │
│         ▼                                                   │
│   5. 测试和分发                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Windows 发布 #

使用 windeployqt #

bash
# 编译 Release 版本
qmake
make release

# 使用 windeployqt 部署依赖
cd release
windeployqt MyQtApp.exe

# 部署额外模块
windeployqt --quick --sql MyQtApp.exe

# 部署到指定目录
windeployqt --dir deploy MyQtApp.exe

创建安装包 #

nsis
; NSIS 安装脚本示例
!include "MUI2.nsh"

Name "MyQtApp"
OutFile "MyQtApp_Setup.exe"
InstallDir "$PROGRAMFILES\MyQtApp"

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

Section "Install"
    SetOutPath $INSTDIR
    File /r "deploy\*.*"
    
    CreateDirectory "$SMPROGRAMS\MyQtApp"
    CreateShortCut "$SMPROGRAMS\MyQtApp\MyQtApp.lnk" "$INSTDIR\MyQtApp.exe"
    
    WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd

Section "Uninstall"
    RMDir /r "$INSTDIR"
    RMDir /r "$SMPROGRAMS\MyQtApp"
SectionEnd

macOS 发布 #

创建应用包 #

bash
# 编译 Release 版本
qmake
make release

# 使用 macdeployqt
macdeployqt MyQtApp.app -dmg

# 指定 Qt 框架路径
macdeployqt MyQtApp.app -verbose=2 -qmldir=/path/to/qml

Info.plist 配置 #

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleName</key>
    <string>MyQtApp</string>
    <key>CFBundleDisplayName</key>
    <string>My Qt App</string>
    <key>CFBundleIdentifier</key>
    <string>com.company.myqtapp</string>
    <key>CFBundleVersion</key>
    <string>1.0.0</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0.0</string>
    <key>CFBundleIconFile</key>
    <string>AppIcon.icns</string>
    <key>LSMinimumSystemVersion</key>
    <string>10.14</string>
    <key>NSHighResolutionCapable</key>
    <true/>
</dict>
</plist>

Linux 发布 #

AppImage 打包 #

bash
# 安装 linuxdeploy
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage

# 安装 Qt 插件
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage

# 创建 AppImage
./linuxdeploy-x86_64.AppImage --appdir AppDir \
    --executable ./MyQtApp \
    --desktop-file myqtapp.desktop \
    --icon-file myqtapp.png \
    --plugin qt \
    --output appimage

创建 .desktop 文件 #

text
[Desktop Entry]
Type=Application
Name=MyQtApp
Comment=My Qt Application
Exec=MyQtApp
Icon=myqtapp
Categories=Utility;
Terminal=false

通用配置 #

.pro 文件配置 #

qmake
# 版本信息
VERSION = 1.0.0

# 应用图标
win32: RC_ICONS = app.ico
macx: ICON = app.icns

# 应用名称
TARGET = MyQtApp

# Release 优化
CONFIG += release
CONFIG += optimize_full

# 定义版本宏
DEFINES += APP_VERSION=\\\"$$VERSION\\\"

下一步 #

现在你已经掌握了打包发布,接下来学习 移动端开发,了解 Qt 移动应用开发!

最后更新:2026-03-29