summaryrefslogtreecommitdiffstats
path: root/src/core/doc/src/qtwebengine-deploying.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/doc/src/qtwebengine-deploying.qdoc')
-rw-r--r--src/core/doc/src/qtwebengine-deploying.qdoc199
1 files changed, 199 insertions, 0 deletions
diff --git a/src/core/doc/src/qtwebengine-deploying.qdoc b/src/core/doc/src/qtwebengine-deploying.qdoc
new file mode 100644
index 000000000..3d8a976c8
--- /dev/null
+++ b/src/core/doc/src/qtwebengine-deploying.qdoc
@@ -0,0 +1,199 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*!
+ \page qtwebengine-deploying.html
+ \title Deploying Qt WebEngine Applications
+ \ingroup explanations-webtechnologies
+
+ The way to package and deploy applications varies between operating systems.
+ For Windows and \macos, \l{The Windows Deployment Tool}{windeployqt} and
+ \l{Deploying Applications on macOS}{macdeployqt} automate the steps to
+ generate a stand-alone application package.
+
+ When manually deploying applications that depend on \QWE, all the
+ files that are required to run the application have to be included:
+ libraries, QML imports, plugins, and translations.
+
+ For more information, see \l {Deploying Qt Applications}.
+
+ \section1 Target Platforms
+
+ \QWE does try to support all \l{Supported Platforms} of Qt. However,
+ due to different requirements of Chromium this is not always possible. Known
+ limitations are:
+
+ \list
+ \li \QWE currently supports only Windows, Linux, and \macos.
+
+ \li On Windows, \QWE only supports Windows Vista or newer as
+ target platform. Due to use of newer API in Chromium, Windows XP is
+ not supported. WinRT is not supported, either.
+ \endlist
+
+ \section1 Deploying Applications Manually
+
+ When manually deploying applications that depend on \QWE, the
+ following files might have to be deployed:
+
+ \list
+ \li Libraries
+ \li QML imports
+ \li \QWE process
+ \li Resources
+ \li Translations
+ \li Audio and video codecs
+ \endlist
+
+ \section2 Deploying Libraries
+
+ The following libraries must be deployed with applications that depend on
+ \QWE:
+
+ \list
+ \li QtWebEngineCore library
+ \li QtWebEngineWidgets or QtWebEngine libraries, depending on
+ application type
+ \endlist
+
+ \section2 Deploying QML Imports
+
+ If Qt Quick integration is used in the application, the QtWebEngine import
+ directory needs to be deployed.
+
+ \section2 Deploying \QWE Processes
+
+ \QWE takes advantage of the multi-process model that the Chromium
+ project offers. The multi-process model requires that the \QWE
+ Process executable be deployed alongside your application.
+
+ The WebEngine process is executed for each QWebEngineView or WebEngineView
+ instance. For example, a browser application
+ with two tabs open should have two separate instances of the process
+ running. This is a common approach used by most modern web engines to
+ provide a stable browsing experience.
+
+ At runtime, \QWE looks for the \c QtWebEngineProcess executable in
+ the directory that
+ QLibraryInfo::location(QLibraryInfo::LibraryExecutablesPath) returns.
+ For Qt installations, this is \c QTDIR/libexec (Linux) or \c QTDIR\bin
+ (Windows). The path can be changed by defining a \c qt.conf file, for
+ example. Alternatively, an executable path can be set as a value of the
+ \c QTWEBENGINEPROCESS_PATH environment variable. On \macos, \QWE
+ looks for the executable in \c .app/Helpers/QtWebEngineProcess.
+
+ \section2 Deploying Resources
+
+ \QWE requires the following resource files:
+
+ \list
+ \li \c qtwebengine_resources.pak contains the resources needed by
+ Chromium.
+ \li \c qtwebengine_devtools_resources.pak contains tools for remote
+ debugging.
+ \li \c qtwebengine_resources_100p.pak contains images suitable for low
+ resolution displays.
+ \li \c qtwebengine_resources_200p.pak contains images suitable for high
+ DPI displays.
+ \li \c icudtl.dat provides support for International Components for
+ Unicode (ICU). It is the Chromium version of ICU, which is not
+ needed if \QWE was configured to use the system ICU.
+ \li \c v8_context_snapshot.bin contains a previously prepared snapshot
+ of a v8 context used to speed up initialization. Debug builds use
+ separate snapshots with the file name extension \c .debug.bin instead
+ of \c .bin. On \macos, there is a snapshot for each architecture named
+ accordingly, for example \c v8_context_snapshot.arm64.bin or
+ \c v8_context_snapshot.arm64.debug.bin.
+ \endlist
+
+ Resources are searched from the following locations:
+
+ \list
+ \li On Linux and Windows: the \c resources directory in the directory
+ specified by QLibraryInfo::location(QLibraryInfo::DataPath)
+ \li On \macos: \c .app/Content/Resources
+ \li The application directory specified by QCoreApplication::applicationDirPath()
+ \endlist
+
+ Alternatively, a resources directory path can be set as a value of the
+ \c QTWEBENGINE_RESOURCES_PATH environment variable.
+
+ \section2 Translations
+
+ Locale data (such as \c en-US.pak) is searched form the following locations:
+
+ \list
+ \li On \macos: \c .app/Content/Resources
+ \li On Linux and Windows: \c qtwebengine_locales directory in the
+ directory specified by
+ QLibraryInfo::location(QLibraryInfo::TranslationsPath)
+ \endlist
+
+ Alternatively, a locales directory path can be set as a value of the
+ \c QTWEBENGINE_LOCALES_PATH environment variable.
+
+ \section2 JavaScript Files in Qt Resource Files
+
+ If your WebEngine application is built using the Qt Quick Compiler, and the application ships
+ JavaScript files inside .qrc resources, and these files are supposed to be loaded from inside
+ HTML pages, make sure to specify the resource files in a \c QTQUICK_COMPILER_SKIPPED_RESOURCES
+ qmake variable inside your project. This prevents the Qt Quick Compiler from trying to generate
+ C++ code for the corresponding JavaScript code, as well as removing the original JavaScript code
+ from the Qt resources file, which would lead to broken HTML pages. For example:
+
+ \code
+ QTQUICK_COMPILER_SKIPPED_RESOURCES += resources/my_resource.qrc
+ \endcode
+
+ \section2 \macos Specific Deployment Steps
+
+ To deploy a \QWE application on \macos, you will need to ensure that the \QWE process is signed
+ with an entitlements file that at least contains the entitlements listed in
+ QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/Resources/QtWebEngineProcess.entitlements.
+
+ To deploy a \QWE application that accesses the microphone or camera
+ on \macos, you will need to provide texts for the messages that will be shown to the user to
+ explain why the application asks for permission to access to the camera or microphone.
+ To do this, add the texts to the application's \c Info.plist file using the keys
+ described below.
+
+ For the camera usage message, provide a text using the following key:
+ \code
+ <key>NSCameraUsageDescription</key>
+ <string>Your message text for camera usage.</string>
+ \endcode
+
+ See also \l{https://developer.apple.com/documentation/bundleresources/information_property_list/nscamerausagedescription}
+ {Apple's property list file documentation}.
+
+ For the microphone usage message, provide a text using the following key:
+ \code
+ <key>NSMicrophoneUsageDescription</key>
+ <string>Your message text for microphone usage.</string>
+ \endcode
+
+ See also \l{https://developer.apple.com/documentation/bundleresources/information_property_list/nsmicrophoneusagedescription}
+ {Apple's property list file documentation}.
+
+ To notarize an application that accesses the camera or the microphone,
+ you will need to add the corresponding keys to your application's entitlements file used for
+ deployment and notarization.
+
+ To enable access to the camera, add:
+ \code
+ <key>com.apple.security.device.camera</key>
+ <true/>
+ \endcode
+
+ See also \l{https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_device_camera}
+ {Apple's camera entitlement documentation}.
+
+ To enable access to the microphone, add:
+ \code
+ <key>com.apple.security.device.microphone</key>
+ <true/>
+ \endcode
+
+ See also \l{https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_device_microphone}
+ {Apple's microphone entitlement documentation}.
+*/