[scqb] Packing (Windows Only)

Packaging


You might notice that in order to run the app, one must add the environment path to QT’s dll (set path=%path%...). Otherwise, you must copy the depended DLL and QML to the app’s directory. You can use dependency walker to find out which .dll you needs. Then, ship your app with those dlls. You can use CMakeList.txt to copy the dlls to the installing package. To do so, install “WIX toolset”. Grasp it from here Wix toolset. The code below is the CMakeList.txt that generate the WIX’s project files and finally create the .msi installer.


# ================================================
# Install files (Windows only)
# ================================================
IF(WIN32)

SET(CMAKE_INSTALL_PREFIX
"C:/DevBuild/MySimpleApp")
SET(CPACK_GENERATOR WIX)
SET(CPACK_WIX_ROOT
"C:/Program Files/WiX Toolset v3.8" CACHE PATH "")
ENDIF()
SET(CPACK_WIX_UPGRADE_GUID
"8E9F80D5-452B-4333-B7A4-7FDAAE60CFAC")
INSTALL(
TARGETS SimpleApp
RUNTIME
DESTINATION programs
COMPONENT applications
)

# Copy QT's dynamic plugins
# You do not need to copy all of these.
INSTALL(
DIRECTORY ${QT_INSTALLED_PATH}/plugins/platforms
DESTINATION programs
COMPONENT applications
)
INSTALL(
DIRECTORY ${QT_INSTALLED_PATH}/qml/QtQuick
DESTINATION programs
COMPONENT applications
)
INSTALL(
DIRECTORY ${QT_INSTALLED_PATH}/qml/QtQuick.2
DESTINATION programs
COMPONENT applications
)

INSTALL(FILES
"${QT_INSTALLED_PATH}/bin/Qt5Core.dll"
"${QT_INSTALLED_PATH}/bin/Qt5Widgets.dll"
"${QT_INSTALLED_PATH}/bin/Qt5Quick.dll"
"${QT_INSTALLED_PATH}/bin/Qt5Qml.dll"
"${QT_INSTALLED_PATH}/bin/Qt5Gui.dll"
"${QT_INSTALLED_PATH}/bin/Qt5Network.dll"
"${QT_INSTALLED_PATH}/bin/icuuc54.dll"
"${QT_INSTALLED_PATH}/bin/icuin54.dll"
"${QT_INSTALLED_PATH}/bin/icudt54.dll"
DESTINATION programs
COMPONENT applications)
# Dont pack vc++ redist
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
INCLUDE(InstallRequiredSystemLibraries)
INSTALL(PROGRAMS
${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
DESTINATION programs
COMPONENT applications)

INCLUDE(CPack)
ENDIF()


Finally, you can build the installer package by build the “PACKAGE.vcproj”. Figure 1 shows the default instller UI of the built app.

Figure 1 Running the Installer

No comments:

Post a Comment