/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page qtwebengine-deploying.html
    \title Deploying Qt WebEngine Applications

    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.
    \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
    \endlist

    \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

    \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

*/
