restructure project
@ -1,17 +1,67 @@
|
||||
#
|
||||
# Copyright (C) 2018-2021 QuasarApp.
|
||||
# Distributed under the lgplv3 software license, see the accompanying
|
||||
# Copyright (C) 2020-2022 QuasarApp.
|
||||
# Distributed under the GPLv3 software license, see the accompanying
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
# This is a stub for the cmake build system.
|
||||
|
||||
|
||||
|
||||
cmake_minimum_required(VERSION 3.18)
|
||||
project(CQtDeployer LANGUAGES CXX)
|
||||
if(TARGET ${PROJECT_NAME})
|
||||
message("The ${PROJECT_NAME} arledy included in main Project")
|
||||
return()
|
||||
endif()
|
||||
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
include(QuasarAppLib/CMake/QuasarAppCITargets.cmake)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
if (ANDROID OR IOS)
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
endif()
|
||||
|
||||
if (NOT QT_VERSION_MAJOR)
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Test QUIET)
|
||||
endif()
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Test QUIET)
|
||||
|
||||
include(submodules/CMake/QuasarApp.cmake)
|
||||
|
||||
updateGitVars()
|
||||
set(CQtDeployer_VERSION "0.${GIT_COMMIT_COUNT}.${GIT_COMMIT_HASH}")
|
||||
set(CQtDeployer_PACKAGE_ID "quasarapp.core.CQtDeployer")
|
||||
|
||||
option(CQtDeployer_TESTS "This option disables or enables tests of the ${PROJECT_NAME} project" ON)
|
||||
option(CQtDeployer_EXAMPLE "This option disables or enables example app of the ${PROJECT_NAME} project" ON)
|
||||
|
||||
if (ANDROID OR IOS OR NOT QT_VERSION_MAJOR OR QA_WASM32)
|
||||
set(CQtDeployer_TESTS OFF CACHE BOOL "This option force disbled for ANDROID IOS QA_WASM32 and Not Qt projects" FORCE)
|
||||
endif()
|
||||
|
||||
if (NOT QT_VERSION_MAJOR)
|
||||
set(CQtDeployer_EXAMPLE OFF CACHE BOOL "This option force disbled for Not Qt projects" FORCE)
|
||||
endif()
|
||||
|
||||
make_directory(Distro)
|
||||
|
||||
initAll()
|
||||
|
||||
add_subdirectory(src/Library)
|
||||
|
||||
if (DEFINED CQtDeployer_EXAMPLE)
|
||||
add_subdirectory(src/Example)
|
||||
endif()
|
||||
|
||||
if (CQtDeployer_TESTS)
|
||||
add_subdirectory(tests)
|
||||
else()
|
||||
message("The ${PROJECT_NAME} tests is disabled.")
|
||||
endif()
|
||||
|
||||
|
||||
addDoc(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/doxygen.conf)
|
||||
addDeployFromCustomFile("CQtDeployer" "${CMAKE_CURRENT_SOURCE_DIR}/Deploy/CQtDeployer.json")
|
||||
|
@ -1,78 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018-2022 QuasarApp.
|
||||
# Distributed under the lgplv3 software license, see the accompanying
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
|
||||
TEMPLATE = subdirs
|
||||
CONFIG += ordered
|
||||
|
||||
lessThan(QT_MAJOR_VERSION, 6):lessThan(QT_MINOR_VERSION, 12) {
|
||||
warning("Tests are only enabled on Qt 5.12.0 or later version. You are using $$[QT_VERSION].")
|
||||
DEFINES += WITHOUT_TESTS
|
||||
DEFINES += WITHOUT_TR
|
||||
}
|
||||
|
||||
unix:gcc {
|
||||
COMPILER_VERSION = $$system($$QMAKE_CXX " -dumpversion")
|
||||
COMPILER_MAJOR_VERSION = $$COMPILER_VERSION
|
||||
lessThan(COMPILER_MAJOR_VERSION, 5): {
|
||||
warning("The PE parser library is disabled. For build the PE parser library require gcc 5 or later version.")
|
||||
DEFINES += DISABLE_PE
|
||||
}
|
||||
message(Version GCC : $$COMPILER_VERSION)
|
||||
}
|
||||
|
||||
android: DEFINES += WITHOUT_TESTS
|
||||
|
||||
!android {
|
||||
SUBDIRS += QuasarAppLib \
|
||||
Pe \
|
||||
zip \
|
||||
Deploy \
|
||||
CQtDeployer \
|
||||
UnitTests \
|
||||
tests/TestOnlyC \
|
||||
tests/TestCPPOnly \
|
||||
tests/TestQtWidgets \
|
||||
tests/TestQMLWidgets \
|
||||
tests/virtualkeyboard
|
||||
|
||||
unix:SUBDIRS += tests/quicknanobrowser
|
||||
unix:SUBDIRS += tests/webui
|
||||
|
||||
contains(DEFINES, DISABLE_PE) {
|
||||
SUBDIRS -= Pe
|
||||
DEFINES += WITHOUT_TESTS
|
||||
}
|
||||
|
||||
contains(DEFINES, WITHOUT_TESTS) {
|
||||
SUBDIRS -= UnitTests \
|
||||
tests/TestOnlyC \
|
||||
tests/TestCPPOnly \
|
||||
tests/TestQtWidgets \
|
||||
tests/TestQMLWidgets \
|
||||
tests/quicknanobrowser \
|
||||
tests/webui
|
||||
}
|
||||
|
||||
CQtDeployer.depends=QuasarAppLib
|
||||
CQtDeployer.depends=Deploy
|
||||
|
||||
QuasarAppLib.file = $$PWD/QuasarAppLib/QuasarApp.pro
|
||||
Pe.file = $$PWD/pe/pe-parser-library/pe-parser-library.pro
|
||||
|
||||
include('$$PWD/QIFData/installerCQtDeployer.pri')
|
||||
!contains(QMAKE_HOST.arch, arm.*):{
|
||||
include($$PWD/test.pri)
|
||||
}
|
||||
|
||||
DISTFILES += \
|
||||
snap/snapcraft.yaml \
|
||||
snap/gui/cqtdeployer.desktop \
|
||||
README.md \
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,44 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018-2022 QuasarApp.
|
||||
# Distributed under the lgplv3 software license, see the accompanying
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
|
||||
QT -= gui
|
||||
|
||||
CONFIG += c++17 console
|
||||
CONFIG -= app_bundle
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any feature of Qt which as been marked deprecated (the exact warnings
|
||||
# depend on your compiler). Please consult the documentation of the
|
||||
# deprecated API in order to know how to port your code away from it.
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
# You can also make your code fail to compile if you use deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
CONFIG(release, debug|release): {
|
||||
DESTDIR="$$PWD/build/release"
|
||||
} else {
|
||||
DESTDIR="$$PWD/build/debug"
|
||||
}
|
||||
|
||||
include('$$PWD/../QuasarAppLib/QuasarLib.pri')
|
||||
include('$$PWD/../Deploy/Deploy.pri')
|
||||
include('$$PWD/../zip/zip.pri')
|
||||
|
||||
!contains(DEFINES, DISABLE_PE) {
|
||||
include('$$PWD/../pe/pe-parser-library/pe-parser-library.pri')
|
||||
}
|
||||
|
||||
TARGET = cqtdeployer
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
|
||||
|
||||
win32: RC_ICONS = $$PWD/../res/icon.ico
|
@ -1,25 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018-2022 QuasarApp.
|
||||
# Distributed under the lgplv3 software license, see the accompanying
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
|
||||
!isEmpty(DEPLOY_LIB):error("Deploy.pri already included")
|
||||
DEPLOY_LIB = 1
|
||||
|
||||
#DEPENDS
|
||||
CONFIG(release, debug|release): {
|
||||
DEPLOY_LIB_OUTPUT_DIR="$$PWD/build/release"
|
||||
} else {
|
||||
DEPLOY_LIB_OUTPUT_DIR="$$PWD/build/debug"
|
||||
}
|
||||
|
||||
unix:LIBS += -L$$DEPLOY_LIB_OUTPUT_DIR -lDeploy
|
||||
win32:LIBS += -L$$DEPLOY_LIB_OUTPUT_DIR -lDeploy1
|
||||
|
||||
|
||||
INCLUDEPATH += "$$PWD/"
|
||||
|
||||
|
||||
|
@ -1,129 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018-2022 QuasarApp.
|
||||
# Distributed under the lgplv3 software license, see the accompanying
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2019-01-26T13:55:47
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT -= gui
|
||||
CONFIG += c++17
|
||||
TARGET = Deploy
|
||||
TEMPLATE = lib
|
||||
|
||||
DEFINES += DEPLOY_LIBRARY
|
||||
|
||||
VERSION = 1.5.4.17
|
||||
|
||||
DEFINES += APP_VERSION='\\"$$VERSION\\"'
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any feature of Qt which has been marked as deprecated (the exact warnings
|
||||
# depend on your compiler). Please consult the documentation of the
|
||||
# deprecated API in order to know how to port your code away from it.
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
# You can also make your code fail to compile if you use deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
CONFIG(release, debug|release): {
|
||||
DESTDIR="$$PWD/build/release"
|
||||
} else {
|
||||
DESTDIR="$$PWD/build/debug"
|
||||
}
|
||||
|
||||
include('$$PWD/../QuasarAppLib/QuasarLib.pri')
|
||||
!contains(DEFINES, DISABLE_PE) {
|
||||
include('$$PWD/../pe/pe-parser-library/pe-parser-library.pri')
|
||||
}
|
||||
include('$$PWD/../zip/zip.pri')
|
||||
|
||||
|
||||
SOURCES += \
|
||||
Distributions/deb.cpp \
|
||||
Distributions/defaultdistro.cpp \
|
||||
Distributions/templateinfo.cpp \
|
||||
Distributions/ziparhive.cpp \
|
||||
dependencymap.cpp \
|
||||
deployconfig.cpp \
|
||||
distromodule.cpp \
|
||||
distrostruct.cpp \
|
||||
configparser.cpp \
|
||||
deploy.cpp \
|
||||
deploycore.cpp \
|
||||
elf_type.cpp \
|
||||
envirement.cpp \
|
||||
extra.cpp \
|
||||
extracter.cpp \
|
||||
filemanager.cpp \
|
||||
Distributions/idistribution.cpp \
|
||||
generalfiles_type.cpp \
|
||||
ignorerule.cpp \
|
||||
metafilemanager.cpp \
|
||||
packagecontrol.cpp \
|
||||
packing.cpp \
|
||||
pathutils.cpp \
|
||||
igetlibinfo.cpp \
|
||||
dependenciesscanner.cpp \
|
||||
../qtTools/src/shared/winutils/elfreader.cpp \
|
||||
pe_type.cpp \
|
||||
pluginsparser.cpp \
|
||||
Distributions/qif.cpp \
|
||||
qml.cpp \
|
||||
libinfo.cpp \
|
||||
qtdir.cpp \
|
||||
targetdata.cpp \
|
||||
targetinfo.cpp \
|
||||
zipcompresser.cpp
|
||||
|
||||
HEADERS += \
|
||||
Distributions/deb.h \
|
||||
Distributions/defaultdistro.h \
|
||||
Distributions/templateinfo.h \
|
||||
Distributions/ziparhive.h \
|
||||
defines.h \
|
||||
dependencymap.h \
|
||||
deployconfig.h \
|
||||
distromodule.h \
|
||||
distrostruct.h \
|
||||
configparser.h \
|
||||
deploy.h \
|
||||
deploy_global.h \
|
||||
deploycore.h \
|
||||
elf_type.h \
|
||||
envirement.h \
|
||||
extra.h \
|
||||
extracter.h \
|
||||
filemanager.h \
|
||||
Distributions/idistribution.h \
|
||||
generalfiles_type.h \
|
||||
ignorerule.h \
|
||||
metafilemanager.h \
|
||||
packagecontrol.h \
|
||||
packing.h \
|
||||
pathutils.h \
|
||||
igetlibinfo.h \
|
||||
dependenciesscanner.h \
|
||||
../qtTools/src/shared/winutils/elfreader.h \
|
||||
pe_type.h \
|
||||
pluginsparser.h \
|
||||
Distributions/qif.h \
|
||||
qml.h \
|
||||
libinfo.h \
|
||||
qtdir.h \
|
||||
targetdata.h \
|
||||
targetinfo.h \
|
||||
zipcompresser.h
|
||||
|
||||
STATECHARTS +=
|
||||
|
||||
RESOURCES += \
|
||||
DeployResources.qrc
|
@ -1,64 +0,0 @@
|
||||
|
||||
QT_DIR= $$[QT_HOST_BINS]
|
||||
|
||||
win32:QMAKE_BIN= $$QT_DIR/qmake.exe
|
||||
win32:LUPDATE = $$QT_DIR/lupdate.exe
|
||||
win32:LRELEASE = $$QT_DIR/lrelease.exe
|
||||
win32:DEPLOYER=cqtdeployer
|
||||
|
||||
|
||||
contains(QMAKE_HOST.os, Linux):{
|
||||
QMAKE_BIN= $$QT_DIR/qmake
|
||||
LUPDATE = $$QT_DIR/lupdate
|
||||
LRELEASE = $$QT_DIR/lrelease
|
||||
DEPLOYER = cqtdeployer
|
||||
}
|
||||
|
||||
android {
|
||||
DEPLOYER = $$QT_DIR/androiddeployqt
|
||||
}
|
||||
|
||||
message( PWD :$$PWD)
|
||||
|
||||
message( Configuration variables :)
|
||||
message(QT_DIR = $$QT_DIR)
|
||||
message(QMAKE_BIN = $$QMAKE_BIN)
|
||||
message(LUPDATE = $$LUPDATE)
|
||||
message(LRELEASE = $$LRELEASE)
|
||||
message(DEPLOYER = $$DEPLOYER)
|
||||
|
||||
BINARY_LIST
|
||||
REPO_LIST
|
||||
|
||||
sopprted_versions = 4.5 4.4 4.3 4.2 4.1 4.0 3.2 3.1 3.0
|
||||
for(val, sopprted_versions) {
|
||||
|
||||
exists( $$QT_DIR/../../../Tools/QtInstallerFramework/$$val/bin/ ) {
|
||||
message( "QtInstallerFramework v$$val: yes" )
|
||||
BINARY_LIST += $$QT_DIR/../../../Tools/QtInstallerFramework/$$val/bin/binarycreator
|
||||
REPO_LIST += $$QT_DIR/../../../Tools/QtInstallerFramework/$$val/bin/repogen
|
||||
}
|
||||
}
|
||||
|
||||
isEmpty (BINARY_LIST) {
|
||||
warning( "QtInstallerFramework not found! use binaries from PATH." )
|
||||
EXEC=binarycreator
|
||||
REPOGEN=repogen
|
||||
|
||||
} else: {
|
||||
win32:EXEC=$$first(BINARY_LIST).exe
|
||||
win32:REPOGEN=$$first(REPO_LIST).exe
|
||||
|
||||
contains(QMAKE_HOST.os, Linux):{
|
||||
unix:EXEC=$$first(BINARY_LIST)
|
||||
win32:EXEC=wine $$first(BINARY_LIST).exe
|
||||
|
||||
REPOGEN=$$first(REPO_LIST)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
message( selected $$EXEC and $$REPOGEN)
|
||||
|
||||
|
@ -1,27 +0,0 @@
|
||||
OTHER_FILES += \
|
||||
$$PWD/*.md \
|
||||
$$PWD/*.sh \
|
||||
$$PWD/scripts/*.py \
|
||||
$$PWD/packages/QIF/meta/*.xml
|
||||
|
||||
win32:PLATFORM = windows
|
||||
unix: PLATFORM = linux
|
||||
|
||||
win32:PY = python
|
||||
unix: PY = python3
|
||||
|
||||
qif.commands= $$PY $$PWD/scripts/QIF.py $$PLATFORM 4.4 $$PWD/packages/QIF/data
|
||||
alias.commands= $$PY $$PWD/scripts/alias.py
|
||||
|
||||
!isEmpty( ONLINE ) {
|
||||
|
||||
message(prepare release QIF)
|
||||
deployOffline.depends += qif
|
||||
buildSnap.depends += qif
|
||||
}
|
||||
|
||||
unix:deployOffline.depends += alias
|
||||
|
||||
QMAKE_EXTRA_TARGETS += \
|
||||
qif \
|
||||
alias
|
Before Width: | Height: | Size: 383 KiB |
@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Installer>
|
||||
<WizardDefaultWidth>640px</WizardDefaultWidth>
|
||||
<WizardDefaultHeight>400px</WizardDefaultHeight>
|
||||
<Name>CQtDeployer</Name>
|
||||
<Version>1.5.4.17</Version>
|
||||
<Title>CQtDeployer</Title>
|
||||
<Publisher>QuasarApp</Publisher>
|
||||
<StartMenuDir>CQtDeployer</StartMenuDir>
|
||||
<TargetDir>@HomeDir@/CQtDeployer</TargetDir>
|
||||
<InstallActionColumnVisible>true</InstallActionColumnVisible>
|
||||
<RemoveTargetDir>true</RemoveTargetDir>
|
||||
<ControlScript>controlScript.js</ControlScript>
|
||||
<MaintenanceToolName>CQtDeployerTool</MaintenanceToolName>
|
||||
<WizardStyle>Modern</WizardStyle>
|
||||
<StyleSheet>style.css</StyleSheet>
|
||||
<Logo>logo.png</Logo>
|
||||
|
||||
<RemoteRepositories>
|
||||
<Repository>
|
||||
<Url>http://quasarapp.ddns.net:3030/CQtDeployer/Linux</Url>
|
||||
<Enabled>1</Enabled>
|
||||
<DisplayName>QuasarApp</DisplayName>
|
||||
</Repository>
|
||||
</RemoteRepositories>
|
||||
</Installer>
|
@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Installer>
|
||||
<WizardDefaultWidth>640px</WizardDefaultWidth>
|
||||
<WizardDefaultHeight>400px</WizardDefaultHeight>
|
||||
<Name>CQtDeployer</Name>
|
||||
<Version>1.5.4.17</Version>
|
||||
<Title>CQtDeployer</Title>
|
||||
<Publisher>QuasarApp</Publisher>
|
||||
<StartMenuDir>CQtDeployer</StartMenuDir>
|
||||
<TargetDir>@ApplicationsDir@/CQtDeployer</TargetDir>
|
||||
<InstallActionColumnVisible>true</InstallActionColumnVisible>
|
||||
<RemoveTargetDir>true</RemoveTargetDir>
|
||||
<ControlScript>controlScript.js</ControlScript>
|
||||
<MaintenanceToolName>CQtDeployerTool</MaintenanceToolName>
|
||||
<WizardStyle>Modern</WizardStyle>
|
||||
<StyleSheet>style.css</StyleSheet>
|
||||
<Logo>logo.png</Logo>
|
||||
|
||||
<RemoteRepositories>
|
||||
<Repository>
|
||||
<Url>http://quasarapp.ddns.net:3030/CQtDeployer/Windows</Url>
|
||||
<Enabled>1</Enabled>
|
||||
<DisplayName>QuasarApp</DisplayName>
|
||||
</Repository>
|
||||
</RemoteRepositories>
|
||||
</Installer>
|
@ -1,53 +0,0 @@
|
||||
function Controller()
|
||||
{
|
||||
generateTr();
|
||||
|
||||
installer.setMessageBoxAutomaticAnswer("OverwriteTargetDirectory", QMessageBox.Yes);
|
||||
installer.uninstallationFinished.connect(this, Controller.prototype.uninstallationFinished);
|
||||
installer.installationFinished.connect(this, Controller.prototype.installationFinished);
|
||||
|
||||
|
||||
}
|
||||
|
||||
Controller.prototype.ComponentSelectionPageCallback = function()
|
||||
{
|
||||
var widget = gui.currentPageWidget(); // get the current wizard page
|
||||
if (widget !== null && installer.isInstaller()) {
|
||||
widget.deselectAll();
|
||||
widget.selectComponent('cqtdeployer.1_5');
|
||||
widget.selectComponent('QIF');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function generateTr() {
|
||||
console.log("generate tr start ")
|
||||
|
||||
installer.setValue("Name", qsTr("CQtDeployer"));
|
||||
installer.setValue("Title", qsTr("Install CQtDeployer"));
|
||||
}
|
||||
|
||||
Controller.prototype.uninstallationFinished = function()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
Controller.prototype.installationFinished = function()
|
||||
{
|
||||
|
||||
if (systemInfo.kernelType === "winnt") {
|
||||
|
||||
QMessageBox["information"](qsTr("install in system"), qsTr("Installer"),
|
||||
qsTr("CQtDeployer successfully installed on your computer to use the call \"cqtdeployer\"."),
|
||||
QMessageBox.Ok);
|
||||
|
||||
} else {
|
||||
|
||||
QMessageBox["information"](qsTr("install in system"), qsTr("Installer"),
|
||||
qsTr("CQtDeployer successfully installed on your computer to use the call \"cqtdeployer\", cqt or cqtdeployer.cqt."),
|
||||
QMessageBox.Ok);
|
||||
}
|
||||
|
||||
|
||||
}
|
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 24 KiB |
@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
<context>
|
||||
<name>controlScript</name>
|
||||
<message>
|
||||
<location filename="controlScript.js" line="26"/>
|
||||
<source>CQtDeployer</source>
|
||||
<translation>CQtDeployer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="controlScript.js" line="27"/>
|
||||
<source>Install CQtDeployer</source>
|
||||
<oldsource>Install Snake</oldsource>
|
||||
<translation>Установка CQtDeployer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="controlScript.js" line="41"/>
|
||||
<location filename="controlScript.js" line="47"/>
|
||||
<source>install in system</source>
|
||||
<translation>Установка в систему</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="controlScript.js" line="41"/>
|
||||
<location filename="controlScript.js" line="47"/>
|
||||
<source>Installer</source>
|
||||
<translation>Установщик</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="controlScript.js" line="42"/>
|
||||
<source>CQtDeployer successfully installed on your computer to use the call "cqtdeployer".</source>
|
||||
<oldsource>To uninstall cqtdeployer on your system, you need administrator rights!. </oldsource>
|
||||
<translation type="unfinished">Чтобы удалить cqtdeployer в вашей системе, вам нужны права администратора !. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="controlScript.js" line="48"/>
|
||||
<source>CQtDeployer successfully installed on your computer to use the call "cqtdeployer", cqt or cqtdeployer.cqt.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To install cqtdeployer on your system, you need administrator rights!. </source>
|
||||
<translation type="vanished">Чтобы установить cqtdeployer в вашей системе, вам нужны права администратора!. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The installation was successful, but cqtdeployer will not be available from the console. </source>
|
||||
<translation type="vanished">Установка прошла успешно, но cqtdeployer не будет доступен из консоли. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Example: </source>
|
||||
<translation type="vanished">Пример: </translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -1,61 +0,0 @@
|
||||
.QWidget {
|
||||
background-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.QLabel {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.QPushButton {
|
||||
background-color: transparent;
|
||||
border: 2px solid #ffffff;
|
||||
border-radius: 3px;
|
||||
height: 30px;
|
||||
min-width: 100px;
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
.QPushButton:pressed,
|
||||
.QPushButton:checked {
|
||||
background-color: #2ed3ed;
|
||||
}
|
||||
|
||||
.QPushButton:focus {
|
||||
background-color: #aaf2ff;
|
||||
}
|
||||
|
||||
.QPushButton:hover {
|
||||
border: 2px solid #2ed3ed;
|
||||
}
|
||||
|
||||
|
||||
.QProgressBar {
|
||||
background: #b1dbcc;
|
||||
border: 1px solid #cdcdcd;
|
||||
border-radius: 2px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
color: #ffffff;
|
||||
height: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.QProgressBar::chunk {
|
||||
background: #16dbcc;
|
||||
border-radius: 2px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.QProgressBar:hover {
|
||||
border-color: #2ed3ed;
|
||||
}
|
||||
|
||||
.QLineEdit {
|
||||
background-color: transparent;
|
||||
border-color: #cdcdcd;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.QLineEdit:hover {
|
||||
border-color: #2ed3ed;
|
||||
}
|
@ -1,163 +0,0 @@
|
||||
VERSION = 1.5.4.17
|
||||
|
||||
include($$PWD/InstallerBase.pri);
|
||||
mkpath( $$PWD/../Distro)
|
||||
|
||||
message(QMAKE_HOST.arch = $$QMAKE_HOST.arch)
|
||||
|
||||
win32:OUT_FILE = CQtDeployer_'$$VERSION'_Installer_Win'_$$QMAKE_HOST.arch'.exe
|
||||
unix:OUT_FILE = CQtDeployer_'$$VERSION'_Installer_Linux'_$$QMAKE_HOST.arch'.run
|
||||
|
||||
win32:OUT_FILE_OFF = CQtDeployer_'$$VERSION'_OfflineInstaller_Win'_$$QMAKE_HOST.arch'.exe
|
||||
unix:OUT_FILE_OFF = CQtDeployer_'$$VERSION'_OfflineInstaller_Linux'_$$QMAKE_HOST.arch'.run
|
||||
|
||||
DEPLOY_TARGET = $$PWD/../CQtDeployer/build/release
|
||||
|
||||
DATA_DIR = $$PWD/packages/cqtdeployer.1_5/data/1.5
|
||||
META_DIR = $$PWD/packages/cqtdeployer.1_5/meta/
|
||||
|
||||
win32:OUT_LIB= -libOut lib
|
||||
win32:OUT_BIN= -binOut bin
|
||||
|
||||
BASE_DEPLOY_FLAGS = clear -qmake $$QMAKE_BIN -libDir $$PWD/../ -recursiveDepth 4 -ignoreEnv $$DEPLOY_TARGET -extraLibs icu
|
||||
BASE_DEPLOY_FLAGS_CQT = $$BASE_DEPLOY_FLAGS -targetDir $$DATA_DIR $$OUT_LIB $$OUT_BIN
|
||||
|
||||
|
||||
win32:CQT_ICON = -icon $$PWD/config/icon.ico
|
||||
unix:CQT_ICON = -icon $$PWD/config/logo.png
|
||||
BASE_DEPLOY_FLAGS_DEB = $$BASE_DEPLOY_FLAGS -targetDir $$PWD/../Distro $$OUT_LIB $$OUT_BIN deb zip -name CQtDeployer -publisher QuasarApp $$CQT_ICON -deployVersion 1.5.4.17 -debOut CQtDeployer_'$$VERSION'_Linux'_$$QMAKE_HOST.arch'.deb -zipOut CQtDeployer_'$$VERSION'_Linux'_$$QMAKE_HOST.arch'.zip
|
||||
|
||||
DEPLOY_TARGET_DEB = $$DEPLOY_TARGET,$$PWD/packages/QIF/data/QIF
|
||||
deploy_dep.commands += $$DEPLOYER -bin $$DEPLOY_TARGET $$BASE_DEPLOY_FLAGS_CQT
|
||||
deploy_deb.commands += $$DEPLOYER -bin $$DEPLOY_TARGET_DEB $$BASE_DEPLOY_FLAGS_DEB
|
||||
|
||||
win32:CONFIG_FILE = $$PWD/config/configWin.xml
|
||||
unix:CONFIG_FILE = $$PWD/config/configLinux.xml
|
||||
|
||||
deployOffline.commands = $$EXEC \
|
||||
--offline-only \
|
||||
-c $$CONFIG_FILE \
|
||||
-p $$PWD/packages \
|
||||
$$PWD/../Distro/$$OUT_FILE_OFF
|
||||
|
||||
|
||||
!contains(QMAKE_HOST.arch, arm.*):{
|
||||
deploy.depends = deploy_dep
|
||||
deploy.depends += deployOffline
|
||||
|
||||
}
|
||||
|
||||
unix:deploy.depends += deploy_deb
|
||||
|
||||
win32:ONLINE_REPO_DIR = $$ONLINE/CQtDeployer/Windows
|
||||
unix:ONLINE_REPO_DIR = $$ONLINE/CQtDeployer/Linux
|
||||
|
||||
win32:PY = python
|
||||
unix: PY = python3
|
||||
|
||||
create_repo.commands = $$PY $$PWD/../QuasarAppScripts/cp.py $$PWD/packages/ $$PWD/../Repo
|
||||
|
||||
chmodSnap.commands = chmod 777 -R $$DATA_DIR
|
||||
unix:deploy.depends += chmodSnap
|
||||
|
||||
|
||||
message( ONLINE_REPO_DIR $$ONLINE_REPO_DIR)
|
||||
!isEmpty( ONLINE ) {
|
||||
|
||||
message(online)
|
||||
|
||||
release.depends = create_repo
|
||||
|
||||
deploy.commands = $$EXEC \
|
||||
--online-only \
|
||||
-c $$CONFIG_FILE \
|
||||
-p $$PWD/packages \
|
||||
$$PWD/../Distro/$$OUT_FILE
|
||||
}
|
||||
|
||||
buildSnap.commands = snapcraft
|
||||
clearSnap.commands = rm parts prime stage *.snap -rdf
|
||||
clearSnap2.commands = rm parts prime stage -rdf
|
||||
|
||||
deploySnap.commands = rm *.snap -rdf && chmod 777 -R $$PWD/../prime && snapcraft && cp *.snap $$PWD/../Distro/
|
||||
releaseSnap.commands = snapcraft push *.snap # bad patern
|
||||
|
||||
|
||||
|
||||
!isEmpty( ONLINE ) {
|
||||
|
||||
!contains(QMAKE_HOST.arch, arm.*):{
|
||||
|
||||
message(Snap)
|
||||
unix:deploy.depends += clearSnap
|
||||
unix:deploy.depends += buildSnap
|
||||
unix:deploy.depends += deploySnap
|
||||
unix:deploy.depends += clearSnap2
|
||||
unix:release.depends += releaseSnap
|
||||
}
|
||||
}
|
||||
|
||||
OTHER_FILES += \
|
||||
$$META_DIR/* \
|
||||
$$PWD/config/*.*
|
||||
|
||||
include(QIF.pri)
|
||||
|
||||
QMAKE_EXTRA_TARGETS += \
|
||||
deploy_dep \
|
||||
deploy_deb \
|
||||
deployOffline \
|
||||
deploy \
|
||||
create_repo \
|
||||
release \
|
||||
clearSnap \
|
||||
clearSnap2 \
|
||||
deploySnap \
|
||||
releaseSnap \
|
||||
buildSnap \
|
||||
chmodSnap
|
||||
|
||||
|
||||
!contains(DEFINES, WITHOUT_TR) {
|
||||
|
||||
# Translations
|
||||
SUPPORT_LANGS = ru
|
||||
|
||||
defineReplace(findFiles) {
|
||||
patern = $$1
|
||||
path = $$2
|
||||
|
||||
all_files = $$files(*$${patern}, true)
|
||||
win32:all_files ~= s|\\\\|/|g
|
||||
win32:path ~= s|\\\\|/|g
|
||||
|
||||
for(file, all_files) {
|
||||
result += $$find(file, $$path)
|
||||
}
|
||||
|
||||
return($$result)
|
||||
}
|
||||
|
||||
XML_FILES = $$files(*.xml, true)
|
||||
|
||||
for(LANG, SUPPORT_LANGS) {
|
||||
for(XML, XML_FILES) {
|
||||
FILE_PATH = $$dirname(XML)
|
||||
|
||||
JS_FILES = $$findFiles(".js", $$FILE_PATH)
|
||||
UI_FILES = $$findFiles(".ui", $$FILE_PATH)
|
||||
|
||||
commands += "$$LUPDATE $$JS_FILES $$UI_FILES -ts $$FILE_PATH/$${LANG}.ts"
|
||||
TS_FILES += $$FILE_PATH/$${LANG}.ts
|
||||
|
||||
}
|
||||
|
||||
for(TS, TS_FILES) {
|
||||
commands += "$$LRELEASE $$TS"
|
||||
}
|
||||
}
|
||||
|
||||
for(command, commands) {
|
||||
system($$command)|error("Failed to run: $$command")
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Package>
|
||||
<DisplayName>Qt Installer Framework</DisplayName>
|
||||
<Description>Qt Installer Framework for CQtDeployer</Description>
|
||||
<Version>4.4.0.0</Version>
|
||||
<ReleaseDate>2022-07-25</ReleaseDate>
|
||||
<Default>true</Default>
|
||||
</Package>
|
BIN
QIFData/packages/cqtdeployer.1_5/data/1.5/icon.png
vendored
Before Width: | Height: | Size: 140 KiB |
@ -1,152 +0,0 @@
|
||||
const VERSION = "1.5"
|
||||
|
||||
function Component()
|
||||
{
|
||||
generateTr();
|
||||
}
|
||||
|
||||
function generateTr() {
|
||||
component.setValue("DisplayName", qsTr("CQtDeployer " + VERSION ));
|
||||
component.setValue("Description", qsTr("This package contains CQtDeployer version " + VERSION));
|
||||
}
|
||||
|
||||
Component.prototype.createOperations = function() {
|
||||
// // call default implementation to actually install README.txt!
|
||||
component.createOperations();
|
||||
systemIntegration();
|
||||
|
||||
}
|
||||
|
||||
function stripPath(path, separator) {
|
||||
const array = path.split(separator);
|
||||
|
||||
let newPath = [];
|
||||
|
||||
array.forEach(function (item) {
|
||||
if (!newPath.includes(item)) {
|
||||
newPath.push(item);
|
||||
}
|
||||
});
|
||||
|
||||
return newPath.join(separator);
|
||||
}
|
||||
|
||||
function stripWinPath(path) {
|
||||
return stripPath(path, ';');
|
||||
}
|
||||
|
||||
function stripUnixPath(path) {
|
||||
return stripPath(path, ':');
|
||||
}
|
||||
|
||||
function extractFileName(path) {
|
||||
const fullName = path.substring(path.lastIndexOf('/') + 1);
|
||||
|
||||
const index = fullName.lastIndexOf('.');
|
||||
if (index >= 0) {
|
||||
return fullName.substring(0, index)
|
||||
}
|
||||
|
||||
return fullName;
|
||||
}
|
||||
|
||||
function generateShortCutCmd(cmd, icon) {
|
||||
if (systemInfo.kernelType === "winnt") {
|
||||
|
||||
console.log("create icons!!! on Windows");
|
||||
component.addOperation("CreateShortcut",
|
||||
"@TargetDir@/" + cmd,
|
||||
"@DesktopDir@/" + extractFileName(cmd) + ".lnk");
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (systemInfo.kernelType === "linux") {
|
||||
console.log("create icons!!! on LINUX");
|
||||
const name = extractFileName(cmd);
|
||||
component.addOperation("CreateDesktopEntry",
|
||||
"@HomeDir@/.local/share/applications/" + name + ".desktop",
|
||||
"Version=@Version@\n
|
||||
Type=Application\n
|
||||
Terminal=true\n
|
||||
Exec=@TargetDir@/" + cmd + ".sh\n
|
||||
Name=" + name + "\n
|
||||
Icon=@TargetDir@/" + icon + "\n
|
||||
Name[en_US]=" + name);
|
||||
|
||||
console.log("create icons!!! on LINUX done");
|
||||
}
|
||||
}
|
||||
|
||||
function systemIntegration() {
|
||||
targetDir = installer.value("TargetDir", "");
|
||||
homeDir = installer.value("HomeDir", "");
|
||||
|
||||
console.log("install component")
|
||||
console.log("targetDir " + targetDir)
|
||||
console.log("hometDir " + homeDir)
|
||||
|
||||
if (systemInfo.kernelType === "winnt") {
|
||||
|
||||
component.addOperation('Execute', ["SETX", "cqtdeployer", targetDir + "\\" + VERSION + "\\cqtdeployer.bat"],
|
||||
"UNDOEXECUTE", ["SETX", "cqtdeployer", ""])
|
||||
component.addOperation('Execute', ["SETX", "cqtDir", targetDir + "\\" + VERSION + "\\"],
|
||||
"UNDOEXECUTE", ["SETX", "cqtDir", ""])
|
||||
|
||||
|
||||
let PATH = installer.environmentVariable("PATH");
|
||||
const cqtDir = installer.environmentVariable("cqtDir");
|
||||
|
||||
console.log("path befor strip : " + PATH);
|
||||
|
||||
if (!PATH.includes(cqtDir) && cqtDir.length) {
|
||||
PATH = stripWinPath(PATH);
|
||||
console.log("path after strip : " + PATH);
|
||||
|
||||
component.addOperation('Execute', ["SETX", "PATH", PATH + ";%cqtDir%"])
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if (!installer.fileExists(homeDir + "/.local/bin")) {
|
||||
|
||||
component.addOperation('Execute', ["mkdir", "-p", homeDir + "/.local/bin"])
|
||||
|
||||
QMessageBox["warning"](qsTr("install in system"), qsTr("Installer"),
|
||||
qsTr("The \"~/local/bin\" folder was not initialized, you may need to reboot to work correctly!"),
|
||||
QMessageBox.Ok);
|
||||
|
||||
const ansver = installer.execute('cat', [homeDir + "/.profile"]);
|
||||
let result;
|
||||
if (ansver.length >= 2) {
|
||||
result = ansver[0];
|
||||
}
|
||||
|
||||
if (!result.includes("/.local/bin")) {
|
||||
|
||||
const script = '\n# set PATH so it includes users private bin if it exists (generated by cqtdeployer installer) \n' +
|
||||
'if [ -d "$HOME/.local/bin" ] ; then \n' +
|
||||
' PATH="$HOME/.local/bin:$PATH" \n' +
|
||||
'fi \n';
|
||||
|
||||
component.addOperation('AppendFile', [homeDir + "/.profile", script])
|
||||
}
|
||||
|
||||
}
|
||||
component.addOperation('Execute', ["ln", "-sf", targetDir + "/" + VERSION + "/cqtdeployer.sh",
|
||||
homeDir + "/.local/bin/cqtdeployer"],
|
||||
"UNDOEXECUTE", ["rm", "-f", homeDir + "/.local/bin/cqtdeployer"] )
|
||||
|
||||
component.addOperation('Execute', ["ln", "-sf", targetDir + "/" + VERSION + "/cqt.sh",
|
||||
homeDir + "/.local/bin/cqt"],
|
||||
"UNDOEXECUTE", ["rm", "-f", homeDir + "/.local/bin/cqt"] )
|
||||
|
||||
component.addOperation('Execute', ["ln", "-sf", targetDir + "/" + VERSION + "/cqt.sh",
|
||||
homeDir + "/.local/bin/cqtdeployer.cqt"],
|
||||
"UNDOEXECUTE", ["rm", "-f", homeDir + "/.local/bin/cqtdeployer.cqt"] )
|
||||
|
||||
generateShortCutCmd(VERSION + "/cqtdeployer", VERSION + "/icon.png");
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<Package>
|
||||
<DisplayName>CQtDeployer 1.5</DisplayName>
|
||||
<Description>CQtDeployer 1.5</Description>
|
||||
<Version>1.5.4.17</Version>
|
||||
<Default>true</Default>
|
||||
<ForcedInstallation>false</ForcedInstallation>
|
||||
<Script>installscript.js</Script>
|
||||
<ReleaseDate>2022-03-03</ReleaseDate>
|
||||
<SortingPriority>201</SortingPriority>
|
||||
<Translations>
|
||||
<Translation>ru.qm</Translation>
|
||||
</Translations>
|
||||
</Package>
|
@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
<context>
|
||||
<name>installscript</name>
|
||||
<message>
|
||||
<source>CQtDeployer 1.3</source>
|
||||
<oldsource>CQtDeployer</oldsource>
|
||||
<translation type="obsolete">CQtDeployer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This package contains CQtDeployer version 1.3</source>
|
||||
<oldsource>This package contains CQtDeployer</oldsource>
|
||||
<translation type="obsolete">Этот пакет содержит CQtDeployer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>install in system</source>
|
||||
<translation>Установка в систему</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Installer</source>
|
||||
<translation>Установщик</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To uninstall cqtdeployer on your system, you need administrator rights!. </source>
|
||||
<translation type="vanished">Чтобы удалить cqtdeployer в вашей системе, вам нужны права администратора !. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To install cqtdeployer on your system, you need administrator rights!. </source>
|
||||
<translation type="vanished">Чтобы установить cqtdeployer в вашей системе, вам нужны права администратора!. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The installation was successful, but cqtdeployer will not be available from the console. </source>
|
||||
<translation type="vanished">Установка прошла успешно, но cqtdeployer не будет доступен из консоли. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To take advantage of this program you will need to enter the full path to it. </source>
|
||||
<translation type="vanished">Чтобы воспользоваться этой программой, вам нужно будет ввести полный путь к ней. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Example: </source>
|
||||
<translation type="vanished">Пример: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CQtDeployer successfully installed on your computer to use the call "cqtdeployer".</source>
|
||||
<translation type="vanished">CQtDeployer успешно установлен на вашем компьютере, чтобы использоваться введите в консоле "cqtdeployer".</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The "~/local/bin" folder was not initialized, you may need to reboot to work correctly!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<Package>
|
||||
<DisplayName>CQtDeployer</DisplayName>
|
||||
<Description>CQtDeployer</Description>
|
||||
<Version>1.5</Version>
|
||||
<Default>true</Default>
|
||||
<ForcedInstallation>false</ForcedInstallation>
|
||||
<ReleaseDate>2021-05-25</ReleaseDate>
|
||||
<SortingPriority>100</SortingPriority>
|
||||
</Package>
|
@ -1,39 +0,0 @@
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
import shutil
|
||||
|
||||
PLATFORM = sys.argv[1]
|
||||
VERSION = sys.argv[2]
|
||||
PATHQIF = sys.argv[3]
|
||||
|
||||
if len(PLATFORM) <= 0:
|
||||
PLATFORM = "linux"
|
||||
|
||||
if os.path.isdir(PATHQIF + "/QIF"):
|
||||
print("if target already executed")
|
||||
exit(0)
|
||||
|
||||
print("PLATFORM=" + PLATFORM)
|
||||
print("VERSION=" + VERSION)
|
||||
|
||||
# Command Example : aqt tool linux tools_ifw 4.0 qt.tools.ifw.40
|
||||
command = ["aqt",
|
||||
"tool",
|
||||
# "-b",
|
||||
# "https://mirrors.ocf.berkeley.edu/qt/",
|
||||
"--outputdir",
|
||||
PATHQIF,
|
||||
PLATFORM,
|
||||
"tools_ifw",
|
||||
VERSION,
|
||||
"qt.tools.ifw." + VERSION.replace('.', '')]
|
||||
|
||||
print("command=" + " ".join(command))
|
||||
|
||||
subprocess.call(command)
|
||||
|
||||
os.rename(PATHQIF + "/Tools/QtInstallerFramework/" + VERSION[0:3] + "/bin/",
|
||||
PATHQIF + "/QIF")
|
||||
shutil.rmtree(PATHQIF + "/Tools")
|
||||
os.remove("aqtinstall.log")
|
@ -1,12 +0,0 @@
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__))
|
||||
dest = dir_path + "/../packages/cqtdeployer.1_5/data/1.5/"
|
||||
if not os.path.isdir(dest):
|
||||
os.makedirs(dest)
|
||||
|
||||
|
||||
shutil.copyfile(dir_path + "/alias/cqt.sh", dest + "/cqt.sh")
|
||||
subprocess.run(["chmod", "777", dest + "/cqt.sh"])
|
@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function join_by { local IFS="$1"; shift; echo "$*"; }
|
||||
|
||||
var=$(join_by , $@)
|
||||
cqtdeployer $var -bin $var
|
||||
|
73
UnitTests/.gitignore
vendored
@ -1,73 +0,0 @@
|
||||
# This file is used to ignore files which are generated
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
*~
|
||||
*.autosave
|
||||
*.a
|
||||
*.core
|
||||
*.moc
|
||||
*.o
|
||||
*.obj
|
||||
*.orig
|
||||
*.rej
|
||||
*.so
|
||||
*.so.*
|
||||
*_pch.h.cpp
|
||||
*_resource.rc
|
||||
*.qm
|
||||
.#*
|
||||
*.*#
|
||||
core
|
||||
!core/
|
||||
tags
|
||||
.DS_Store
|
||||
.directory
|
||||
*.debug
|
||||
Makefile*
|
||||
*.prl
|
||||
*.app
|
||||
moc_*.cpp
|
||||
ui_*.h
|
||||
qrc_*.cpp
|
||||
Thumbs.db
|
||||
*.res
|
||||
*.rc
|
||||
/.qmake.cache
|
||||
/.qmake.stash
|
||||
|
||||
# qtcreator generated files
|
||||
*.pro.user*
|
||||
|
||||
# xemacs temporary files
|
||||
*.flc
|
||||
|
||||
# Vim temporary files
|
||||
.*.swp
|
||||
|
||||
# Visual Studio generated files
|
||||
*.ib_pdb_index
|
||||
*.idb
|
||||
*.ilk
|
||||
*.pdb
|
||||
*.sln
|
||||
*.suo
|
||||
*.vcproj
|
||||
*vcproj.*.*.user
|
||||
*.ncb
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.vcxproj
|
||||
*vcxproj.*
|
||||
|
||||
# MinGW generated files
|
||||
*.Debug
|
||||
*.Release
|
||||
|
||||
# Python byte code
|
||||
*.pyc
|
||||
|
||||
# Binaries
|
||||
# --------
|
||||
*.dll
|
||||
*.exe
|
||||
|
@ -1,58 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018-2022 QuasarApp.
|
||||
# Distributed under the lgplv3 software license, see the accompanying
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
|
||||
|
||||
QT += testlib
|
||||
QT -= gui
|
||||
|
||||
CONFIG(release, debug|release): {
|
||||
DESTDIR="$$PWD/build/release"
|
||||
} else {
|
||||
DESTDIR="$$PWD/build/debug"
|
||||
}
|
||||
|
||||
include('$$PWD/../QuasarAppLib/QuasarLib.pri')
|
||||
include('$$PWD/../Deploy/Deploy.pri')
|
||||
include('$$PWD/../zip/zip.pri')
|
||||
|
||||
include('$$PWD/../pe/pe-parser-library/pe-parser-library.pri')
|
||||
|
||||
|
||||
QT_DIR = $$[QT_HOST_BINS]/../
|
||||
DEFINES+=QT_BASE_DIR='\\"$$QT_DIR\\"'
|
||||
DEFINES+=TEST_BIN_DIR='\\"$$PWD/../tests/build/\\"'
|
||||
DEFINES+=QTEST_FUNCTION_TIMEOUT=900000
|
||||
|
||||
CONFIG += qt console warn_on depend_includepath testcase
|
||||
CONFIG -= app_bundle
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
SOURCES += tst_deploytest.cpp \
|
||||
libcreator.cpp \
|
||||
modules.cpp \
|
||||
modulesqt513.cpp \
|
||||
modulesqt514.cpp \
|
||||
modulesqt515.cpp \
|
||||
modulesqt5152.cpp \
|
||||
qmlcreator.cpp \
|
||||
testutils.cpp
|
||||
|
||||
RESOURCES += \
|
||||
res.qrc
|
||||
|
||||
HEADERS += \
|
||||
backward-cpp/backward.hpp \
|
||||
libcreator.h \
|
||||
modules.h \
|
||||
modulesqt513.h \
|
||||
modulesqt514.h \
|
||||
modulesqt515.h \
|
||||
modulesqt5152.h \
|
||||
qmlcreator.h \
|
||||
testutils.h
|
||||
|
@ -1,25 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file alias="debugLib">testRes/debugLibData</file>
|
||||
<file alias="linux64.so">testRes/Unix/lib.so.1</file>
|
||||
<file alias="linux64">testRes/Unix/Start</file>
|
||||
<file alias="win32mingw.exe">testRes/win32/mingw/hanoi-towers.exe</file>
|
||||
<file alias="win32mingw.dll">testRes/win32/mingw/libEGL.dll</file>
|
||||
<file alias="win32msvc.dll">testRes/win32/msvc/qtaudio_windows.dll</file>
|
||||
<file alias="win32msvc.exe">testRes/win32/msvc/TestStart.exe</file>
|
||||
<file alias="win64mingw.exe">testRes/win64/mingw/cqtdeployer.exe</file>
|
||||
<file alias="win64mingw.dll">testRes/win64/mingw/Deploy.dll</file>
|
||||
<file alias="win64msvc.exe">testRes/win64/msvc/exe.exe</file>
|
||||
<file alias="win64msvc.dll">testRes/win64/msvc/lib.dll</file>
|
||||
<file alias="qmlFile.qml">testRes/qml/Scene</file>
|
||||
<file alias="qmlFileQt6.qml">testRes/qml/SceneQt6</file>
|
||||
<file alias="qmlDir">testRes/qml/qmldir</file>
|
||||
</qresource>
|
||||
<qresource prefix="/testResurces">
|
||||
<file>testRes/TestQMLWidgets.sh</file>
|
||||
<file>testRes/testMultiPackageConfig.json</file>
|
||||
<file>testRes/customRunScript.sh</file>
|
||||
<file>testRes/TestTr.qm</file>
|
||||
<file>testRes/TestIcon.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1 +0,0 @@
|
||||
TEST TR
|
@ -1 +0,0 @@
|
||||
theme: jekyll-theme-time-machine
|
28
doxygen.conf
@ -32,7 +32,8 @@ DOXYFILE_ENCODING = UTF-8
|
||||
# title of most generated pages and in a few other places.
|
||||
# The default value is: My Project.
|
||||
|
||||
PROJECT_NAME = CQtDeployer official documentation page
|
||||
PROJECT_NAME = CQtDeployer
|
||||
|
||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
@ -50,7 +51,8 @@ PROJECT_BRIEF =
|
||||
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
||||
# the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO = "res/CQtDeployer logo_web.png"
|
||||
PROJECT_LOGO =
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
||||
# into which the generated documentation will be written. If a relative path is
|
||||
# entered, it will be relative to the location where doxygen was started. If
|
||||
@ -701,7 +703,7 @@ FILE_VERSION_FILTER =
|
||||
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
|
||||
# tag is left empty.
|
||||
|
||||
LAYOUT_FILE = QuasarAppLib/CMake/DoxyStyle/DoxygenLayout.xml
|
||||
LAYOUT_FILE = submodules/CMake/DoxyStyle/DoxygenLayout.xml
|
||||
|
||||
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
||||
# the reference definitions. This must be a list of .bib files. The .bib
|
||||
@ -788,10 +790,8 @@ WARN_LOGFILE =
|
||||
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
||||
# Note: If this tag is empty the current directory is searched.
|
||||
|
||||
INPUT = ./md \
|
||||
|
||||
|
||||
|
||||
INPUT = ./src/Library/src \
|
||||
./README.md
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||
@ -874,7 +874,7 @@ RECURSIVE = YES
|
||||
# Note that relative paths are relative to the directory from which doxygen is
|
||||
# run.
|
||||
|
||||
EXCLUDE =
|
||||
EXCLUDE = ./submodules
|
||||
|
||||
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
|
||||
# directories that are symbolic links (a Unix file system feature) are excluded
|
||||
@ -927,7 +927,7 @@ EXAMPLE_RECURSIVE = NO
|
||||
# that contain images that are to be included in the documentation (see the
|
||||
# \image command).
|
||||
|
||||
IMAGE_PATH = ./res
|
||||
IMAGE_PATH =
|
||||
|
||||
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
||||
# invoke to filter for each input file. Doxygen will invoke the filter program
|
||||
@ -983,7 +983,7 @@ FILTER_SOURCE_PATTERNS =
|
||||
# (index.html). This can be useful if you have a project on for instance GitHub
|
||||
# and want to reuse the introduction page also for the doxygen output.
|
||||
|
||||
USE_MDFILE_AS_MAINPAGE = md/README.md
|
||||
USE_MDFILE_AS_MAINPAGE = ./README.md
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to source browsing
|
||||
@ -1193,7 +1193,7 @@ HTML_STYLESHEET =
|
||||
# list). For an example see the documentation.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
HTML_EXTRA_STYLESHEET = QuasarAppLib/CMake/DoxyStyle/doxygenStyles.css
|
||||
HTML_EXTRA_STYLESHEET = submodules/CMake/DoxyStyle/doxygenStyles.css
|
||||
|
||||
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
|
||||
# other source files which should be copied to the HTML output directory. Note
|
||||
@ -1392,7 +1392,7 @@ QCH_FILE =
|
||||
# The default value is: org.doxygen.Project.
|
||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||
|
||||
QHP_NAMESPACE = QuasarApp
|
||||
QHP_NAMESPACE = org.doxygen.Project
|
||||
|
||||
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
|
||||
# Help Project output. For more information please see Qt Help Project / Virtual
|
||||
@ -1496,7 +1496,7 @@ ENUM_VALUES_PER_LINE = 4
|
||||
# Minimum value: 0, maximum value: 1500, default value: 250.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
TREEVIEW_WIDTH = 300
|
||||
TREEVIEW_WIDTH = 250
|
||||
|
||||
# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
|
||||
# external symbols imported via tag files in a separate window.
|
||||
@ -1621,7 +1621,7 @@ SERVER_BASED_SEARCH = NO
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||
|
||||
EXTERNAL_SEARCH = NO
|
||||
EXTERNAL_SEARCH = YES
|
||||
|
||||
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
|
||||
# which will return the search results when EXTERNAL_SEARCH is enabled.
|
||||
|
@ -1,24 +0,0 @@
|
||||
QMAKE_CXX.INCDIRS = \
|
||||
/usr/include/c++/7 \
|
||||
/usr/include/x86_64-linux-gnu/c++/7 \
|
||||
/usr/include/c++/7/backward \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/7/include \
|
||||
/usr/local/include \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed \
|
||||
/usr/include/x86_64-linux-gnu \
|
||||
/usr/include
|
||||
QMAKE_CXX.LIBDIRS = \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/7 \
|
||||
/usr/lib/x86_64-linux-gnu \
|
||||
/usr/lib \
|
||||
/lib/x86_64-linux-gnu \
|
||||
/lib
|
||||
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
|
||||
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 7
|
||||
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
|
||||
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
|
||||
QMAKE_CXX.COMPILER_MACROS = \
|
||||
QT_COMPILER_STDCXX \
|
||||
QMAKE_GCC_MAJOR_VERSION \
|
||||
QMAKE_GCC_MINOR_VERSION \
|
||||
QMAKE_GCC_PATCH_VERSION
|
@ -1,14 +0,0 @@
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
Page {
|
||||
width: 600
|
||||
height: 400
|
||||
|
||||
title: qsTr("Home")
|
||||
|
||||
Label {
|
||||
text: qsTr("You are on the home page.")
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
Page {
|
||||
width: 600
|
||||
height: 400
|
||||
|
||||
title: qsTr("Page 1")
|
||||
|
||||
Label {
|
||||
text: qsTr("You are on Page 1.")
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
Page {
|
||||
width: 600
|
||||
height: 400
|
||||
|
||||
title: qsTr("Page 2")
|
||||
|
||||
Label {
|
||||
text: qsTr("You are on Page 2.")
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
# This example for packing apps to snap
|
||||
You need to build your project with your own Qt version.
|
||||
|
||||
1. cd ~/ # go to home dir
|
||||
2. snap install cqtdeployer # install cqtdeployer from snap store
|
||||
3. git clone https://github.com/QuasarApp/CQtDeployer.git # clone this project
|
||||
4. cd Console-QtDeployer/examples/TestQMLWidgets # go to folder with example
|
||||
5. /path/to/your/qmake/bin/qmake TestQMLWidgets.pro # run your qmake for this example
|
||||
6. make # build example
|
||||
7. cqtdeployer -bin ./build/TestQMLWidgets -qmake /path/to/your/qmake/bin/qmake -qmlDir ./ -targetDir ./distro
|
||||
# run cqtdeployer for deploy example project
|
||||
8. snapcraft # create snapcraft build
|
||||
9. snap install cqtdeployerexample_0.1_amd64.snap --dangerous # install this example
|
||||
10. cqtdeployerexample # check
|
||||
|
||||
Done!
|
@ -1,27 +0,0 @@
|
||||
QT += quick
|
||||
CONFIG += c++11
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any Qt feature that has been marked deprecated (the exact warnings
|
||||
# depend on your compiler). Refer to the documentation for the
|
||||
# deprecated API to know how to port your code away from it.
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
# You can also make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
|
||||
RESOURCES += qml.qrc
|
||||
|
||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||
QML_IMPORT_PATH =
|
||||
|
||||
# Additional import path used to resolve QML modules just for Qt Quick Designer
|
||||
QML_DESIGNER_IMPORT_PATH =
|
||||
|
||||
DESTDIR="$$PWD/build"
|
||||
|
@ -1,16 +0,0 @@
|
||||
#include <QGuiApplication>
|
||||
#include <QQmlApplicationEngine>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
|
||||
if (engine.rootObjects().isEmpty())
|
||||
return -1;
|
||||
|
||||
return app.exec();
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
ApplicationWindow {
|
||||
id: window
|
||||
visible: true
|
||||
width: 640
|
||||
height: 480
|
||||
title: qsTr("Stack")
|
||||
|
||||
header: ToolBar {
|
||||
contentHeight: toolButton.implicitHeight
|
||||
|
||||
ToolButton {
|
||||
id: toolButton
|
||||
text: stackView.depth > 1 ? "\u25C0" : "\u2630"
|
||||
font.pixelSize: Qt.application.font.pixelSize * 1.6
|
||||
onClicked: {
|
||||
if (stackView.depth > 1) {
|
||||
stackView.pop()
|
||||
} else {
|
||||
drawer.open()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
text: stackView.currentItem.title
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
||||
|
||||
Drawer {
|
||||
id: drawer
|
||||
width: window.width * 0.66
|
||||
height: window.height
|
||||
|
||||
Column {
|
||||
anchors.fill: parent
|
||||
|
||||
ItemDelegate {
|
||||
text: qsTr("Page 1")
|
||||
width: parent.width
|
||||
onClicked: {
|
||||
stackView.push("Page1Form.ui.qml")
|
||||
drawer.close()
|
||||
}
|
||||
}
|
||||
ItemDelegate {
|
||||
text: qsTr("Page 2")
|
||||
width: parent.width
|
||||
onClicked: {
|
||||
stackView.push("Page2Form.ui.qml")
|
||||
drawer.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StackView {
|
||||
id: stackView
|
||||
initialItem: "HomeForm.ui.qml"
|
||||
anchors.fill: parent
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>main.qml</file>
|
||||
<file>HomeForm.ui.qml</file>
|
||||
<file>Page1Form.ui.qml</file>
|
||||
<file>Page2Form.ui.qml</file>
|
||||
<file>qtquickcontrols2.conf</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1,6 +0,0 @@
|
||||
; This file can be edited to change the style of the application
|
||||
; Read "Qt Quick Controls 2 Configuration File" for details:
|
||||
; http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html
|
||||
|
||||
[Controls]
|
||||
Style=Imagine
|
@ -1,53 +0,0 @@
|
||||
name: cqtdeployerexample # you probably want to 'snapcraft register <name>'
|
||||
base: core18 # the base snap is the execution environment for this snap
|
||||
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
|
||||
summary: simple example for packing with cqtdeployer # 79 char long summary
|
||||
description: |
|
||||
simple example for packing with cqtdeployer
|
||||
|
||||
grade: stable # must be 'stable' to release into candidate/stable channels
|
||||
confinement: strict # use 'strict' once you have the right plugs and slots
|
||||
|
||||
|
||||
apps:
|
||||
cqtdeployerexample:
|
||||
command: desktop-launch $SNAP/TestQMLWidgets.sh
|
||||
|
||||
plugs: [desktop, unity7, home, opengl, x11, wayland]
|
||||
|
||||
|
||||
parts:
|
||||
cqtdeployerexample:
|
||||
# See 'snapcraft plugins'
|
||||
plugin: dump
|
||||
source: distro
|
||||
after: [wrapper, libsgl]
|
||||
|
||||
wrapper:
|
||||
plugin: dump
|
||||
source: wrapper
|
||||
|
||||
libsgl:
|
||||
plugin: nil
|
||||
stage-packages:
|
||||
# Here for the plugins-- they're not linked in automatically.
|
||||
- libx11-xcb1
|
||||
- libglu1-mesa
|
||||
- libxrender1
|
||||
- libxi6
|
||||
- libegl1-mesa
|
||||
- fontconfig
|
||||
- libgl1-mesa-dri
|
||||
- libxkbcommon0
|
||||
- ttf-ubuntu-font-family
|
||||
- dmz-cursor-theme
|
||||
- adwaita-icon-theme
|
||||
- gnome-themes-standard
|
||||
- shared-mime-info
|
||||
- libgdk-pixbuf2.0-0
|
||||
- libgtk2.0-0
|
||||
- xdg-user-dirs
|
||||
- libxrandr2
|
||||
- libwayland-cursor0
|
||||
- libwayland-egl1
|
||||
- libpq5
|
@ -1,442 +0,0 @@
|
||||
#!/bin/bash
|
||||
#################
|
||||
# Launcher init #
|
||||
#################
|
||||
|
||||
START=$(date +%s.%N)
|
||||
|
||||
# On Fedora $SNAP is under /var and there is some magic to map it to /snap.
|
||||
# # We need to handle that case and reset $SNAP
|
||||
SNAP=`echo $SNAP | sed -e "s|/var/lib/snapd||g"`
|
||||
|
||||
needs_update=true
|
||||
|
||||
. $SNAP_USER_DATA/.last_revision 2>/dev/null || true
|
||||
if [ "$SNAP_DESKTOP_LAST_REVISION" = "$SNAP_REVISION" ]; then
|
||||
needs_update=false
|
||||
fi
|
||||
|
||||
# Set $REALHOME to the users real home directory
|
||||
REALHOME=`getent passwd $UID | cut -d ':' -f 6`
|
||||
|
||||
# If the user has modified their user-dirs settings, force an update
|
||||
if [[ -f $HOME/.config/user-dirs.dirs.md5sum && -f $HOME/.config/user-dirs.locale.md5sum ]]; then
|
||||
if [[ "$(md5sum < $REALHOME/.config/user-dirs.dirs)" != "$(cat $HOME/.config/user-dirs.dirs.md5sum)" ||
|
||||
"$(md5sum < $REALHOME/.config/user-dirs.locale)" != "$(cat $HOME/.config/user-dirs.locale.md5sum)" ]]; then
|
||||
needs_update=true
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$SNAP_ARCH" == "amd64" ]; then
|
||||
ARCH="x86_64-linux-gnu"
|
||||
elif [ "$SNAP_ARCH" == "armhf" ]; then
|
||||
ARCH="arm-linux-gnueabihf"
|
||||
elif [ "$SNAP_ARCH" == "arm64" ]; then
|
||||
ARCH="aarch64-linux-gnu"
|
||||
else
|
||||
ARCH="$SNAP_ARCH-linux-gnu"
|
||||
fi
|
||||
|
||||
export SNAP_LAUNCHER_ARCH_TRIPLET=$ARCH
|
||||
|
||||
# Don't LD_PRELOAD bindtextdomain for classic snaps
|
||||
if ! grep -qs "^\s*confinement:\s*classic\s*" $SNAP/meta/snap.yaml; then
|
||||
if [ -f $SNAP/lib/bindtextdomain.so ]; then
|
||||
export LD_PRELOAD=$LD_PRELOAD:$SNAP/lib/bindtextdomain.so
|
||||
fi
|
||||
fi
|
||||
###############################################
|
||||
# Launcher common exports for any desktop app #
|
||||
###############################################
|
||||
|
||||
function prepend_dir() {
|
||||
local var="$1"
|
||||
local dir="$2"
|
||||
if [ -d "$dir" ]; then
|
||||
eval "export $var=\"\$dir\${$var:+:\$$var}\""
|
||||
fi
|
||||
}
|
||||
|
||||
function append_dir() {
|
||||
local var="$1"
|
||||
local dir="$2"
|
||||
if [ -d "$dir" ]; then
|
||||
eval "export $var=\"\${$var:+\$$var:}\$dir\""
|
||||
fi
|
||||
}
|
||||
|
||||
function can_open_file() {
|
||||
return `head -c0 "$1" &> /dev/null`;
|
||||
}
|
||||
|
||||
WITH_RUNTIME=no
|
||||
if [ -z "$RUNTIME" ]; then
|
||||
RUNTIME=$SNAP
|
||||
else
|
||||
# add general paths not added by snapcraft due to runtime snap
|
||||
append_dir LD_LIBRARY_PATH $RUNTIME/lib/$ARCH
|
||||
append_dir LD_LIBRARY_PATH $RUNTIME/usr/lib/$ARCH
|
||||
append_dir PATH $RUNTIME/usr/bin
|
||||
WITH_RUNTIME=yes
|
||||
fi
|
||||
|
||||
# XKB config
|
||||
export XKB_CONFIG_ROOT=$RUNTIME/usr/share/X11/xkb
|
||||
|
||||
# Give XOpenIM a chance to locate locale data.
|
||||
# This is required for text input to work in SDL2 games.
|
||||
export XLOCALEDIR=$RUNTIME/usr/share/X11/locale
|
||||
|
||||
# Set XCursors path
|
||||
export XCURSOR_PATH=$RUNTIME/usr/share/icons
|
||||
|
||||
# Mesa Libs for OpenGL support
|
||||
append_dir LD_LIBRARY_PATH $RUNTIME/usr/lib/$ARCH/mesa
|
||||
append_dir LD_LIBRARY_PATH $RUNTIME/usr/lib/$ARCH/mesa-egl
|
||||
|
||||
# Tell libGL where to find the drivers
|
||||
export LIBGL_DRIVERS_PATH=$RUNTIME/usr/lib/$ARCH/dri
|
||||
append_dir LD_LIBRARY_PATH $LIBGL_DRIVERS_PATH
|
||||
|
||||
# Workaround in snapd for proprietary nVidia drivers mounts the drivers in
|
||||
# /var/lib/snapd/lib/gl that needs to be in LD_LIBRARY_PATH
|
||||
# Without that OpenGL using apps do not work with the nVidia drivers.
|
||||
# Ref.: https://bugs.launchpad.net/snappy/+bug/1588192
|
||||
append_dir LD_LIBRARY_PATH /var/lib/snapd/lib/gl
|
||||
|
||||
# Unity7 export (workaround for https://launchpad.net/bugs/1638405)
|
||||
append_dir LD_LIBRARY_PATH $RUNTIME/usr/lib/$ARCH/libunity
|
||||
|
||||
# Pulseaudio export
|
||||
append_dir LD_LIBRARY_PATH $RUNTIME/usr/lib/$ARCH/pulseaudio
|
||||
|
||||
# EGL vendor files on glvnd enabled systems
|
||||
[ -d /var/lib/snapd/lib/glvnd/egl_vendor.d ] && \
|
||||
append_dir __EGL_VENDOR_LIBRARY_DIRS /var/lib/snapd/lib/glvnd/egl_vendor.d
|
||||
|
||||
# Tell GStreamer where to find its plugins
|
||||
export GST_PLUGIN_PATH=$SNAP/usr/lib/$ARCH/gstreamer-1.0
|
||||
export GST_PLUGIN_SYSTEM_PATH=$RUNTIME/usr/lib/$ARCH/gstreamer-1.0
|
||||
# gst plugin scanner doesn't install in the correct path: https://github.com/ubuntu/snapcraft-desktop-helpers/issues/43
|
||||
export GST_PLUGIN_SCANNER=$RUNTIME/usr/lib/$ARCH/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner
|
||||
|
||||
# XDG Config
|
||||
[ "$WITH_RUNTIME" = yes ] && prepend_dir XDG_CONFIG_DIRS $RUNTIME/etc/xdg
|
||||
prepend_dir XDG_CONFIG_DIRS $SNAP/etc/xdg
|
||||
|
||||
# Define snaps' own data dir
|
||||
[ "$WITH_RUNTIME" = yes ] && prepend_dir XDG_DATA_DIRS $RUNTIME/usr/share
|
||||
prepend_dir XDG_DATA_DIRS $SNAP/usr/share
|
||||
prepend_dir XDG_DATA_DIRS $SNAP/share
|
||||
prepend_dir XDG_DATA_DIRS $SNAP/data-dir
|
||||
prepend_dir XDG_DATA_DIRS $SNAP_USER_DATA
|
||||
|
||||
# Set XDG_DATA_HOME to local path
|
||||
export XDG_DATA_HOME=$SNAP_USER_DATA/.local/share
|
||||
mkdir -p $XDG_DATA_HOME
|
||||
|
||||
# Workaround for GLib < 2.53.2 not searching for schemas in $XDG_DATA_HOME:
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=741335
|
||||
prepend_dir XDG_DATA_DIRS $XDG_DATA_HOME
|
||||
|
||||
# Set cache folder to local path
|
||||
export XDG_CACHE_HOME=$SNAP_USER_COMMON/.cache
|
||||
if [[ -d $SNAP_USER_DATA/.cache && ! -e $XDG_CACHE_HOME ]]; then
|
||||
# the .cache directory used to be stored under $SNAP_USER_DATA, migrate it
|
||||
mv $SNAP_USER_DATA/.cache $SNAP_USER_COMMON/
|
||||
fi
|
||||
mkdir -p $XDG_CACHE_HOME
|
||||
|
||||
# Set config folder to local path
|
||||
export XDG_CONFIG_HOME=$SNAP_USER_DATA/.config
|
||||
mkdir -p $XDG_CONFIG_HOME
|
||||
|
||||
# Create $XDG_RUNTIME_DIR if not exists (to be removed when LP: #1656340 is fixed)
|
||||
[ -n "$XDG_RUNTIME_DIR" ] && mkdir -p $XDG_RUNTIME_DIR -m 700
|
||||
|
||||
# Ensure the app finds locale definitions (requires locales-all to be installed)
|
||||
append_dir LOCPATH $RUNTIME/usr/lib/locale
|
||||
|
||||
# If any, keep track of where XDG dirs were so we can potentially migrate the content later
|
||||
test -f ${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs && . ${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs
|
||||
for d in DOCUMENTS DESKTOP DOWNLOAD MUSIC PICTURES VIDEOS PUBLICSHARE TEMPLATES; do
|
||||
eval $(echo "OLD_XDG_${d}_DIR")=`eval "$(echo "echo \\$XDG_${d}_DIR")"`
|
||||
done
|
||||
|
||||
# Setup user-dirs.* or run xdg-user-dirs-update if needed
|
||||
needs_xdg_update=false
|
||||
needs_xdg_links=false
|
||||
if can_open_file "$REALHOME/.config/user-dirs.dirs" && can_open_file "$REALHOME/.config/user-dirs.locale"; then
|
||||
mkdir -p $HOME/.config -m 700
|
||||
sed /^#/!s#\$HOME#${REALHOME}#g $REALHOME/.config/user-dirs.dirs > $HOME/.config/user-dirs.dirs
|
||||
cp -a $REALHOME/.config/user-dirs.locale $HOME/.config/
|
||||
for f in user-dirs.dirs user-dirs.locale; do
|
||||
md5sum < $REALHOME/.config/$f > $HOME/.config/$f.md5sum
|
||||
done
|
||||
else
|
||||
needs_xdg_update=true
|
||||
needs_xdg_links=true
|
||||
fi
|
||||
|
||||
# Check if we can actually read the contents of each xdg dir
|
||||
test -f ${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs && . ${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs
|
||||
XDG_SPECIAL_DIRS=($XDG_DOCUMENTS_DIR $XDG_DESKTOP_DIR $XDG_DOWNLOAD_DIR $XDG_MUSIC_DIR $XDG_PICTURES_DIR $XDG_VIDEOS_DIR $XDG_PUBLIC_DIR $XDG_TEMPLATES_DIR)
|
||||
for d in ${XDG_SPECIAL_DIRS[@]}; do
|
||||
if ! can_open_file $d; then
|
||||
needs_xdg_update=true
|
||||
fi
|
||||
done
|
||||
|
||||
# If needs XDG update and xdg-user-dirs-update exists in $PATH, run it
|
||||
if [ $needs_xdg_update = true ] && command -v xdg-user-dirs-update >/dev/null; then
|
||||
xdg-user-dirs-update
|
||||
fi
|
||||
|
||||
# Create links for user-dirs.dirs
|
||||
if [ $needs_xdg_links = true ]; then
|
||||
test -f ${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs && . ${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs
|
||||
XDG_SPECIAL_DIRS=($XDG_DOCUMENTS_DIR $XDG_DESKTOP_DIR $XDG_DOWNLOAD_DIR $XDG_MUSIC_DIR $XDG_PICTURES_DIR $XDG_VIDEOS_DIR $XDG_PUBLIC_DIR $XDG_TEMPLATES_DIR)
|
||||
for d in ${XDG_SPECIAL_DIRS[@]}; do
|
||||
b=$(realpath "$d" --relative-to="$REALHOME")
|
||||
if [ -e $REALHOME/$b ] && [ ! -e $HOME/$b ]; then
|
||||
ln -s $REALHOME/$b $HOME/$b
|
||||
fi
|
||||
done
|
||||
else
|
||||
# If we aren't creating new links, check if we have content saved in old locations and move it
|
||||
for d in DOCUMENTS DESKTOP DOWNLOAD MUSIC PICTURES VIDEOS PUBLICSHARE TEMPLATES; do
|
||||
old=`eval "$(echo "echo \\$OLD_XDG_${d}_DIR")"`
|
||||
new=`eval "$(echo "echo \\$XDG_${d}_DIR")"`
|
||||
if [ -L "$old" ] && [ -d "$new" ] && [ `readlink "$old"` != "$new" ]; then
|
||||
mv "$old"/* "$new"/ 2>/dev/null
|
||||
elif [ -d "$old" ] && [ -d "$new" ] && [ "$old" != "$new" ]; then
|
||||
mv "$old"/* "$new"/ 2>/dev/null
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# If detect wayland server socket, then set environment so applications prefer
|
||||
# wayland, and setup compat symlink (until we use user mounts. Remember,
|
||||
# XDG_RUNTIME_DIR is /run/user/<uid>/snap.$SNAP so look in the parent directory
|
||||
# for the socket. For details:
|
||||
# https://forum.snapcraft.io/t/wayland-dconf-and-xdg-runtime-dir/186/10
|
||||
# Applications that don't support wayland natively may define DISABLE_WAYLAND
|
||||
# (to any non-empty value) to skip that logic entirely.
|
||||
wayland_available=false
|
||||
if [[ -n "$XDG_RUNTIME_DIR" && -z "$DISABLE_WAYLAND" ]]; then
|
||||
wdisplay="wayland-0"
|
||||
if [ -n "$WAYLAND_DISPLAY" ]; then
|
||||
wdisplay="$WAYLAND_DISPLAY"
|
||||
fi
|
||||
wayland_sockpath="$XDG_RUNTIME_DIR/../$wdisplay"
|
||||
wayland_snappath="$XDG_RUNTIME_DIR/$wdisplay"
|
||||
if [ -S "$wayland_sockpath" ]; then
|
||||
# if running under wayland, use it
|
||||
#export WAYLAND_DEBUG=1
|
||||
wayland_available=true
|
||||
# create the compat symlink for now
|
||||
if [ ! -e "$wayland_snappath" ]; then
|
||||
ln -s "$wayland_sockpath" "$wayland_snappath"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make PulseAudio socket available inside the snap-specific $XDG_RUNTIME_DIR
|
||||
if [ -n "$XDG_RUNTIME_DIR" ]; then
|
||||
pulsenative="pulse/native"
|
||||
pulseaudio_sockpath="$XDG_RUNTIME_DIR/../$pulsenative"
|
||||
if [ -S "$pulseaudio_sockpath" ]; then
|
||||
export PULSE_SERVER="unix:${pulseaudio_sockpath}"
|
||||
fi
|
||||
fi
|
||||
|
||||
# GI repository
|
||||
[ "$WITH_RUNTIME" = yes ] && prepend_dir GI_TYPELIB_PATH $RUNTIME/usr/lib/$ARCH/girepository-1.0
|
||||
[ "$WITH_RUNTIME" = yes ] && prepend_dir GI_TYPELIB_PATH $RUNTIME/usr/lib/girepository-1.0
|
||||
prepend_dir GI_TYPELIB_PATH $SNAP/usr/lib/$ARCH/girepository-1.0
|
||||
prepend_dir GI_TYPELIB_PATH $SNAP/usr/lib/girepository-1.0
|
||||
prepend_dir GI_TYPELIB_PATH $SNAP/usr/lib/gjs/girepository-1.0
|
||||
|
||||
# Keep an array of data dirs, for looping through them
|
||||
IFS=':' read -r -a data_dirs_array <<< "$XDG_DATA_DIRS"
|
||||
|
||||
# Font Config and themes
|
||||
export FONTCONFIG_PATH=$RUNTIME/etc/fonts
|
||||
export FONTCONFIG_FILE=$RUNTIME/etc/fonts/fonts.conf
|
||||
|
||||
function make_user_fontconfig {
|
||||
echo "<fontconfig>"
|
||||
if [ -d $REALHOME/.local/share/fonts ]; then
|
||||
echo " <dir>$REALHOME/.local/share/fonts</dir>"
|
||||
fi
|
||||
if [ -d $REALHOME/.fonts ]; then
|
||||
echo " <dir>$REALHOME/.fonts</dir>"
|
||||
fi
|
||||
for d in "${data_dirs_array[@]}"; do
|
||||
if [ -d "$d/fonts" ]; then
|
||||
echo " <dir>$d/fonts</dir>"
|
||||
fi
|
||||
done
|
||||
echo ' <include ignore_missing="yes">conf.d</include>'
|
||||
# We need to include this default cachedir first so that caching
|
||||
# works: without it, fontconfig will try to write to the real user home
|
||||
# cachedir and be blocked by AppArmor.
|
||||
echo ' <cachedir prefix="xdg">fontconfig</cachedir>'
|
||||
if [ -d $REALHOME/.cache/fontconfig ]; then
|
||||
echo " <cachedir>$REALHOME/.cache/fontconfig</cachedir>"
|
||||
fi
|
||||
echo "</fontconfig>"
|
||||
}
|
||||
|
||||
if [ $needs_update = true ]; then
|
||||
rm -rf $XDG_DATA_HOME/{fontconfig,fonts,fonts-*,themes,.themes}
|
||||
|
||||
# This fontconfig fragment is installed in a location that is
|
||||
# included by the system fontconfig configuration: namely the
|
||||
# etc/fonts/conf.d/50-user.conf file.
|
||||
mkdir -p $XDG_CONFIG_HOME/fontconfig
|
||||
make_user_fontconfig > $XDG_CONFIG_HOME/fontconfig/fonts.conf
|
||||
|
||||
# the themes symlink are needed for GTK 3.18 when the prefix isn't changed
|
||||
# GTK 3.20 looks into XDG_DATA_DIR which has connected themes.
|
||||
ln -sf $RUNTIME/usr/share/themes $XDG_DATA_HOME
|
||||
ln -sfn $RUNTIME/usr/share/themes $SNAP_USER_DATA/.themes
|
||||
fi
|
||||
|
||||
# Build mime.cache
|
||||
# needed for gtk and qt icon
|
||||
if [ $needs_update = true ]; then
|
||||
rm -rf $XDG_DATA_HOME/mime
|
||||
if [ ! -f $RUNTIME/usr/share/mime/mime.cache ]; then
|
||||
if command -v update-mime-database >/dev/null; then
|
||||
cp --preserve=timestamps -dR $RUNTIME/usr/share/mime $XDG_DATA_HOME
|
||||
update-mime-database $XDG_DATA_HOME/mime
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Gio modules and cache (including gsettings module)
|
||||
export GIO_MODULE_DIR=$XDG_CACHE_HOME/gio-modules
|
||||
function compile_giomodules {
|
||||
if [ -f $1/glib-2.0/gio-querymodules ]; then
|
||||
rm -rf $GIO_MODULE_DIR
|
||||
mkdir -p $GIO_MODULE_DIR
|
||||
ln -s $1/gio/modules/*.so $GIO_MODULE_DIR
|
||||
$1/glib-2.0/gio-querymodules $GIO_MODULE_DIR
|
||||
fi
|
||||
}
|
||||
if [ $needs_update = true ]; then
|
||||
compile_giomodules $RUNTIME/usr/lib/$ARCH
|
||||
fi
|
||||
|
||||
# Setup compiled gsettings schema
|
||||
GS_SCHEMA_DIR=$XDG_DATA_HOME/glib-2.0/schemas
|
||||
function compile_schemas {
|
||||
if [ -f "$1" ]; then
|
||||
rm -rf $GS_SCHEMA_DIR
|
||||
mkdir -p $GS_SCHEMA_DIR
|
||||
for d in "${data_dirs_array[@]}"; do
|
||||
schema_dir=$d/glib-2.0/schemas
|
||||
if [ -f "$schema_dir/gschemas.compiled" ]; then
|
||||
# This directory already has compiled schemas
|
||||
continue
|
||||
fi
|
||||
if [ -n "$(ls -A $schema_dir/*.xml 2>/dev/null)" ]; then
|
||||
ln -s $schema_dir/*.xml $GS_SCHEMA_DIR
|
||||
fi
|
||||
if [ -n "$(ls -A $schema_dir/*.override 2>/dev/null)" ]; then
|
||||
ln -s $schema_dir/*.override $GS_SCHEMA_DIR
|
||||
fi
|
||||
done
|
||||
# Only compile schemas if we copied anyting
|
||||
if [ -n "$(ls -A $GS_SCHEMA_DIR/*.xml $GS_SCHEMA_DIR/*.override 2>/dev/null)" ]; then
|
||||
"$1" $GS_SCHEMA_DIR
|
||||
fi
|
||||
fi
|
||||
}
|
||||
if [ $needs_update = true ]; then
|
||||
compile_schemas $RUNTIME/usr/lib/$ARCH/glib-2.0/glib-compile-schemas
|
||||
fi
|
||||
|
||||
# Enable gsettings user changes
|
||||
# symlink the dconf file if home plug is connected for read
|
||||
DCONF_DEST_USER_DIR=$SNAP_USER_DATA/.config/dconf
|
||||
if [ ! -f $DCONF_DEST_USER_DIR/user ]; then
|
||||
if [ -f $REALHOME/.config/dconf/user ]; then
|
||||
mkdir -p $DCONF_DEST_USER_DIR
|
||||
ln -s $REALHOME/.config/dconf/user $DCONF_DEST_USER_DIR
|
||||
fi
|
||||
fi
|
||||
|
||||
# Testability support
|
||||
append_dir LD_LIBRARY_PATH $SNAP/testability
|
||||
append_dir LD_LIBRARY_PATH $SNAP/testability/$ARCH
|
||||
append_dir LD_LIBRARY_PATH $SNAP/testability/$ARCH/mesa
|
||||
|
||||
# Gdk-pixbuf loaders
|
||||
export GDK_PIXBUF_MODULE_FILE=$XDG_CACHE_HOME/gdk-pixbuf-loaders.cache
|
||||
export GDK_PIXBUF_MODULEDIR=$RUNTIME/usr/lib/$ARCH/gdk-pixbuf-2.0/2.10.0/loaders
|
||||
if [ $needs_update = true ]; then
|
||||
rm -f $GDK_PIXBUF_MODULE_FILE
|
||||
if [ -f $RUNTIME/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders ]; then
|
||||
$RUNTIME/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders > $GDK_PIXBUF_MODULE_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
# Icon themes cache
|
||||
if [ $needs_update = true ]; then
|
||||
rm -rf $XDG_DATA_HOME/icons
|
||||
mkdir -p $XDG_DATA_HOME/icons
|
||||
for d in "${data_dirs_array[@]}"; do
|
||||
for i in $d/icons/*; do
|
||||
if [ -f "$i/index.theme" -a ! -f "$i/icon-theme.cache" ]; then
|
||||
theme_dir=$XDG_DATA_HOME/icons/$(basename "$i")
|
||||
if [ ! -d "$theme_dir" ]; then
|
||||
mkdir -p "$theme_dir"
|
||||
ln -s $i/* "$theme_dir"
|
||||
if [ -f $RUNTIME/usr/sbin/update-icon-caches ]; then
|
||||
$RUNTIME/usr/sbin/update-icon-caches "$theme_dir"
|
||||
elif [ -f $RUNTIME/usr/sbin/update-icon-cache.gtk2 ]; then
|
||||
$RUNTIME/usr/sbin/update-icon-cache.gtk2 "$theme_dir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
# GTK theme and behavior modifier
|
||||
# Those can impact the theme engine used by Qt as well
|
||||
gtk_configs=(.config/gtk-3.0/settings.ini .config/gtk-3.0/bookmarks .config/gtk-2.0/gtkfilechooser.ini)
|
||||
for f in ${gtk_configs[@]}; do
|
||||
dest="$SNAP_USER_DATA/$f"
|
||||
if [ ! -L "$dest" ]
|
||||
then
|
||||
mkdir -p `dirname $dest`
|
||||
ln -s $REALHOME/$f $dest
|
||||
fi
|
||||
done
|
||||
|
||||
# create symbolic link to ibus socket path for ibus to look up its socket files
|
||||
# (see comments #3 and #6 on https://launchpad.net/bugs/1580463)
|
||||
IBUS_CONFIG_PATH=$XDG_CONFIG_HOME/ibus
|
||||
mkdir -p $IBUS_CONFIG_PATH
|
||||
[ -d $IBUS_CONFIG_PATH/bus ] && rm -rf $IBUS_CONFIG_PATH/bus
|
||||
ln -sfn $REALHOME/.config/ibus/bus $IBUS_CONFIG_PATH
|
||||
|
||||
##############################
|
||||
# Glib minimum specific part #
|
||||
##############################
|
||||
|
||||
###############################
|
||||
# Mark update and exec binary #
|
||||
###############################
|
||||
|
||||
[ $needs_update = true ] && echo "SNAP_DESKTOP_LAST_REVISION=$SNAP_REVISION" > $SNAP_USER_DATA/.last_revision
|
||||
|
||||
if [ -n "$SNAP_DESKTOP_DEBUG" ]; then
|
||||
echo "desktop-launch elapsed time: " $(date +%s.%N --date="$START seconds ago")
|
||||
echo "Now running: exec $@"
|
||||
fi
|
||||
|
||||
exec "$@"
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"$schema": "http://qt.io/schema/extension-schema-v1#",
|
||||
"title": "CQtDeployer",
|
||||
"extensionType": [
|
||||
"tool"
|
||||
],
|
||||
"version": "1.3.2",
|
||||
"vendor": {
|
||||
"name": "QuasarApp group",
|
||||
"url": "https://github.com/QuasarApp"
|
||||
},
|
||||
"contact": " QuasarApp@yandex.by",
|
||||
"copyright": [ "QuasarApp" ],
|
||||
"author": "QuasarApp team",
|
||||
"icon": "https://github.com/QuasarApp/CQtDeployer/blob/master/res/icon%20(snapAlpha).png",
|
||||
"licenses": [
|
||||
{ "licenseType": "lGPLv3",
|
||||
"licenseUrl": "https://github.com/QuasarApp/CQtDeployer/blob/master/LICENSE" }
|
||||
],
|
||||
"created": "2018-08-19",
|
||||
"lastUpdate": "2019-11-15",
|
||||
"platforms": [
|
||||
"Linux (libc 2.27 or later)", "Windows 7 or later"
|
||||
],
|
||||
"qtVersions": [
|
||||
"5.12", "5.13", "5.14"
|
||||
],
|
||||
"tags": [
|
||||
"Deploy", "Deployment" ],
|
||||
"price": {
|
||||
"listprice": 0
|
||||
},
|
||||
"support": "https://github.com/QuasarApp/CQtDeployer/issues",
|
||||
"bugUrl": "https://github.com/QuasarApp/CQtDeployer/issues",
|
||||
"sourceRepoUrl": "https://github.com/QuasarApp/CQtDeployer",
|
||||
"dependencies": [
|
||||
"Core"
|
||||
]
|
||||
}
|
||||
|
@ -1,33 +0,0 @@
|
||||
## What is CQtDeployer
|
||||
The CQtDeployer is application for extract all depends library of executable and create launch script for your application.
|
||||
|
||||
Key differences of this program:
|
||||
* Performance: this program deploys the application several times faster (up to 10 seconds)
|
||||
* Flexibility: this application's got flags that help you to configure the deployment for your or your project's needs
|
||||
* Crossdeploy: this application's support windows and linux distrebutives, This means that you can use it not only to deploy a project for your platform, but also to deploy a project on Linux for Windows and vice versa.
|
||||
|
||||
## How to use
|
||||
Deploying a Qt or QML application is easy!
|
||||
To do this, simply install cqtdeployer on your computer and enter the following line:
|
||||
|
||||
#### Linux:
|
||||
``` bash
|
||||
cqtdeployer -bin myApp -qmake /media/D/Qt/5.12.3/gcc_64/bin/qmake -qmlDir ./
|
||||
```
|
||||
|
||||
#### Windows:
|
||||
``` bash
|
||||
%cqtdeployer% -bin myApp.exe -qmake /media/D/Qt/5.12.3/gcc_64/bin/qmake.exe -qmlDir ./
|
||||
```
|
||||
|
||||
|
||||
#### Discription
|
||||
* -bin - this is option for set the path to executable files.
|
||||
* -qmake - this is option for set the path to qmake with which the application was created.
|
||||
* -qmlDir - this is option for set the path to folder with qml files of application.
|
||||
|
||||
## Install
|
||||
You can download the latest version of the CQtDeployer [here](https://github.com/QuasarApp/CQtDeployer/releases) for Windows and linux platforms.
|
||||
Or use the snap version for servers without gui.
|
||||
|
||||
[](https://snapcraft.io/cqtdeployer)
|
13
md/README.md
@ -1,13 +0,0 @@
|
||||
# CQtDeployer
|
||||
|
||||
Here you can find documentation for the CQtDeployer in different languages. It describes:
|
||||
|
||||
* Information on how to use this deployment Tool. (How to create installers with cqtdeployer)
|
||||
* Main description (description of the functionality and capabilities of the program)
|
||||
* Description of recent changes (changelog)
|
||||
|
||||
|
||||
## Сhoose your language to read the CQtDeployer documentation:
|
||||
|
||||
* [Документация на русском языке](ru/Home.md)
|
||||
* [English language documentation](en/Home.md)
|
@ -1 +0,0 @@
|
||||
theme: jekyll-theme-dinky
|
422
md/en/1_4.md
@ -1,422 +0,0 @@
|
||||
# Release of CQtDeployer v1.4.0 (Binary Box)
|
||||
|
||||
Release of C++/Qt and QML application deployment utility CQtDeployer v1.4.0 (Binary Box)
|
||||
|
||||
Almost half a year later, a major update of the CQtDeployer deployment utility was released.
|
||||
This update has many new futures, but the main emphasis is on creating packages.
|
||||
|
||||
## CQtDeployer 1.4.0
|
||||
### Fixes
|
||||
- Fixed The help output in the console, now the actual size of the console is recounted before the output, which allows you to correctly transfer text.
|
||||
- Fixed work with the deployment of Qt plugins. Now plug-ins do not extract all system dependencies, but only qt. Extract system dependencies caused applications to crash due to incompatible plugin libraries.
|
||||
- Minor bug fixes and improvements.
|
||||
|
||||
### New features
|
||||
- Added support for qmake search from the system environment.
|
||||
- Added the ability to initialize the repository for further packaging, similar to git init.
|
||||
- Added support for Qt Install Framework packages. Now you can pack the distribution into the installer.
|
||||
- Added the ability to split the final distribution into several packages.
|
||||
- Added the ability to unify the creation of packages for the final distribution.
|
||||
- Added support for adding custom scripts to application launch scripts.
|
||||
- Added support for extracting system dependencies for Windows.
|
||||
- Added support for RPATH for Linux. Now cqtdeployer can independently determine the necessary qmake to deploy the application.
|
||||
- Added support for finding the required dependency by library name.
|
||||
- Added support for Qt libraries from Linux distributions repositories.
|
||||
- Added new alias for the run command (cqt and cqtdeployer.cqt) for fast deploy of applications.
|
||||
- Added support the native name of command for windows. Now you can run a cqtdeployer from cqtdeployer commnad in cmd and powershell.
|
||||
|
||||
### New options
|
||||
- init - will initialize cqtdeployer.json file (configuration file). For example: "cqtdeployer init" - to initialize the configuration of a base package. "cqtdeployer -init multi" - to initialize the configuration of several packages.
|
||||
- noCheckRPATH - disables the automatic search for paths to qmake in executable files (Linux only).
|
||||
- noCheckPATH - disables the automatic search for paths to qmake in the system environment.
|
||||
- extractPlugins - forces to extract all plug-in dependencies.
|
||||
- qif - creates an installer at the end of the deployment.
|
||||
- extraLibs - adds a template for an additional library, which should be included in the distribution.
|
||||
- customScript - adds a custom script to the startup script of the application.
|
||||
- -targetPackage [package; tar1, package; tar2] - used to form packages, denotes lists of target files for specific packages.
|
||||
- recOut - indicates in which folder the resources will be added after deployment.
|
||||
- name - sets the name of the package.
|
||||
- description - sets the package description
|
||||
- deployVersion - sets the package version
|
||||
- releaseDate - sets the release date of the package.
|
||||
- icon - sets the package icon.
|
||||
- publisher - sets the publisher of the package.
|
||||
- qifStyle - Sets the path to the CSS style file or sets the default style. Available styles: quasar
|
||||
- qifBanner - Sets path to the banner png file.
|
||||
- qifLogo - Sets path to the logo png file.
|
||||
|
||||
## A detailed analysis of the most interesting changes.
|
||||
|
||||
The first thing you should pay attention to is that CQtDeployer has learned to work with RPATH (Linux only) and PATH. This means that if your application is built with RPATH support (and RPATH in qt is enabled by default) or your qmake is registered in PATH, then you do not need to specify the path to qmake. CQtDeployer will find qmake for itself.
|
||||
|
||||
Let's test it in practice.
|
||||
I created a simple console application using Qt.
|
||||
|
||||
``` cpp
|
||||
#include <QString>
|
||||
#include <QDebug>
|
||||
int main(int, char *[])
|
||||
{
|
||||
QString str = "hello CQtDeployer 1.4";
|
||||
qInfo() << str;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
I will use the cmake build system, as it is more relevant than qmake.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello$ tree
|
||||
.
|
||||
├── CMakeLists.txt
|
||||
├── CMakeLists.txt.user
|
||||
└── main.cpp
|
||||
|
||||
0 directories, 3 files
|
||||
```
|
||||
|
||||
Create a folder for the assembly.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello$ mkdir build
|
||||
```
|
||||
|
||||
Run the cmake in the created folder.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ cmake .. -DCMAKE_PREFIX_PATH=~/Qt/5.14.1/gcc_64
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /home/andrei/Hello/build
|
||||
```
|
||||
|
||||
building a project
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ make
|
||||
Scanning dependencies of target Hello_autogen
|
||||
[ 25%] Automatic MOC and UIC for target Hello
|
||||
[ 25%] Built target Hello_autogen
|
||||
Scanning dependencies of target Hello
|
||||
[ 50%] Building CXX object CMakeFiles/Hello.dir/Hello_autogen/mocs_compilation.cpp.o
|
||||
[ 75%] Building CXX object CMakeFiles/Hello.dir/main.cpp.o
|
||||
[100%] Linking CXX executable Hello
|
||||
[100%] Built target Hello
|
||||
```
|
||||
|
||||
Checking our program.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ ls
|
||||
CMakeCache.txt CMakeFiles cmake_install.cmake Hello Hello_autogen Makefile
|
||||
```
|
||||
And we start cqtdeployer passing it the program without qmake.
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ cqtdeployer -bin Hello
|
||||
Deploy ...
|
||||
flag targetDir not used. use default target dir : "/home/andrei/Hello/build/DistributionKit"
|
||||
target deploy started!!
|
||||
copy : "/home/andrei/Hello/build/Hello"
|
||||
extract lib : "/home/andrei/Hello/build/DistributionKit//bin//Hello"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libQt5Core.so.5"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libicuuc.so.56"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libicui18n.so.56"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libicudata.so.56"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ar.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_bg.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ca.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_cs.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_da.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_de.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_en.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_es.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_fi.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_fr.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_gd.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_he.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_hu.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_it.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ja.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ko.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_lv.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_pl.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ru.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_sk.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_uk.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_zh_TW.qm"
|
||||
try deploy msvc
|
||||
deploy done!
|
||||
```
|
||||
|
||||
Oh miracle, now our application is completely autonomous.
|
||||
Check it out.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ cd DistributionKit/
|
||||
andrei@HP:~/Hello/build/DistributionKit$ tree
|
||||
.
|
||||
├── bin
|
||||
│ ├── Hello
|
||||
│ └── qt.conf
|
||||
├── Hello.sh
|
||||
├── lib
|
||||
│ ├── libicudata.so.56
|
||||
│ ├── libicui18n.so.56
|
||||
│ ├── libicuuc.so.56
|
||||
│ └── libQt5Core.so.5
|
||||
└── translations
|
||||
├── qtbase_ar.qm
|
||||
├── qtbase_bg.qm
|
||||
├── qtbase_ca.qm
|
||||
├── qtbase_cs.qm
|
||||
├── qtbase_da.qm
|
||||
├── qtbase_de.qm
|
||||
├── qtbase_en.qm
|
||||
├── qtbase_es.qm
|
||||
├── qtbase_fi.qm
|
||||
├── qtbase_fr.qm
|
||||
├── qtbase_gd.qm
|
||||
├── qtbase_he.qm
|
||||
├── qtbase_hu.qm
|
||||
├── qtbase_it.qm
|
||||
├── qtbase_ja.qm
|
||||
├── qtbase_ko.qm
|
||||
├── qtbase_lv.qm
|
||||
├── qtbase_pl.qm
|
||||
├── qtbase_ru.qm
|
||||
├── qtbase_sk.qm
|
||||
├── qtbase_uk.qm
|
||||
└── qtbase_zh_TW.qm
|
||||
|
||||
3 directories, 29 files
|
||||
andrei@HP:~/Hello/build/DistributionKit$
|
||||
```
|
||||
The root of the program:
|
||||
|
||||

|
||||
|
||||
Libraries needed for the program to work:
|
||||
|
||||

|
||||
|
||||
|
||||
As you can see from the example, the application is fully assembled.
|
||||
|
||||
## Qt Installer Framework
|
||||
The second innovation worth knowing is the ability to form QIF installers out of the box. All that is needed for our example is to add the qif option to the packaging command.
|
||||
|
||||
Usage example.
|
||||
|
||||
|
||||
```
|
||||
andrei@HP:~/Hello/build$ cqtdeployer -bin Hello qif
|
||||
```
|
||||
|
||||
Just one simple command and the program gets a presentable look.
|
||||
|
||||

|
||||
|
||||
This installer supports minimal integration of Linux distributions and Windows. Namely: creating shortcuts, and registering the application in the OS.
|
||||
If for some reason you are not satisfied with the appearance of this installer, you can change it using the qifStyle flag. At the time of version 1.4, cqtdeployer supports only 2 styles (native and quasar).
|
||||
|
||||
Example quasar style:
|
||||
|
||||

|
||||
|
||||
You can also use your own qss stylesheet. To do this, pass the path to your qss or css file instead of the style name.
|
||||
For example, consider the following qss stylesheet.
|
||||
|
||||
|
||||
Style.qss:
|
||||
``` css
|
||||
QWidget
|
||||
{
|
||||
color: white;
|
||||
background-color: rgb(65, 65, 65);
|
||||
}
|
||||
|
||||
QPushButton
|
||||
{
|
||||
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(150, 150, 150, 60%), stop:1 rgba(50, 50, 50, 60%));
|
||||
border-color: rgb(60, 60, 60);
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
border-radius: 9px;
|
||||
min-height: 20px;
|
||||
max-height: 20px;
|
||||
min-width: 60px;
|
||||
max-width: 60px;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
QPushButton:pressed, QPushButton:checked
|
||||
{
|
||||
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(50, 50, 50, 60%), stop:1 rgba(150, 150, 150, 60%));
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Let's check what we get in this case.
|
||||
|
||||
``` bash
|
||||
cqtdeployer -bin Hello qif -qifStyle ./../style.qss
|
||||
```
|
||||
|
||||

|
||||
|
||||
Here, in fact, is the dark theme of the installer.
|
||||
|
||||
## Splitting into packages
|
||||
And, probably, the last important update worth knowing is the ability to split a large multi-binar project into subprojects.
|
||||
|
||||
This feature is the most difficult of all listed, since it requires a lot of text to use it. So I recommend using the configuration file.
|
||||
|
||||
To begin with, we will complicate our project by adding 2 more executable files to it. I did not bother and just made 2 copies of my Hello utility.
|
||||
|
||||
To simplify working with packages, you need to initialize the directory.
|
||||
|
||||
``` bash
|
||||
cqtdeployer init
|
||||
```
|
||||
|
||||
This is another new function that creates a CQtDeployer.json file, in which we will write our configurations, instead of passing options to the utility.
|
||||
|
||||
``` js
|
||||
{
|
||||
"binDir": ".",
|
||||
"clear": true,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 5
|
||||
}
|
||||
```
|
||||
|
||||
Now let's make 2 packages of 3 of our programs. To do this, specify:
|
||||
```js
|
||||
{
|
||||
"binDir": ".",
|
||||
"clear": true,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 5,
|
||||
"targetPackage": [
|
||||
["Dstro1", "Hello1"],
|
||||
["Dstro2", "Hello2"],
|
||||
["Dstro2", "Hello3"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Please note that I had to explicitly specify the binding for Dstro2 to Hello2 Hello3. Unfortunately, at the time of version 1.4 cqtdeployer was not able to parse target enumerations. Please note that if I write Hello1 Hello instead, then the selection will be made for all matches and all 3 programs will be selected.
|
||||
So, let's see what happened.
|
||||
|
||||
|
||||
``` bash
|
||||
cqtdeployer
|
||||
|
||||
.
|
||||
├── Dstro1
|
||||
│ ├── bin
|
||||
│ │ ├── Hello1
|
||||
│ │ └── qt.conf
|
||||
│ ├── Hello1.sh
|
||||
│ ├── lib
|
||||
│ │ ├── libicudata.so.56
|
||||
│ │ ├── libicui18n.so.56
|
||||
│ │ ├── libicuuc.so.56
|
||||
│ │ └── libQt5Core.so.5
|
||||
│ └── translations
|
||||
│ ├── qtbase_ar.qm
|
||||
│ ├── qtbase_bg.qm
|
||||
│ ├── qtbase_ca.qm
|
||||
│ ├── qtbase_cs.qm
|
||||
│ ├── qtbase_da.qm
|
||||
│ ├── qtbase_de.qm
|
||||
│ ├── qtbase_en.qm
|
||||
│ ├── qtbase_es.qm
|
||||
│ ├── qtbase_fi.qm
|
||||
│ ├── qtbase_fr.qm
|
||||
│ ├── qtbase_gd.qm
|
||||
│ ├── qtbase_he.qm
|
||||
│ ├── qtbase_hu.qm
|
||||
│ ├── qtbase_it.qm
|
||||
│ ├── qtbase_ja.qm
|
||||
│ ├── qtbase_ko.qm
|
||||
│ ├── qtbase_lv.qm
|
||||
│ ├── qtbase_pl.qm
|
||||
│ ├── qtbase_ru.qm
|
||||
│ ├── qtbase_sk.qm
|
||||
│ ├── qtbase_uk.qm
|
||||
│ └── qtbase_zh_TW.qm
|
||||
└── Dstro2
|
||||
├── bin
|
||||
│ ├── Hello2
|
||||
│ ├── Hello3
|
||||
│ └── qt.conf
|
||||
├── Hello2.sh
|
||||
├── Hello3.sh
|
||||
├── lib
|
||||
│ ├── libicudata.so.56
|
||||
│ ├── libicui18n.so.56
|
||||
│ ├── libicuuc.so.56
|
||||
│ └── libQt5Core.so.5
|
||||
└── translations
|
||||
├── qtbase_ar.qm
|
||||
├── qtbase_bg.qm
|
||||
├── qtbase_ca.qm
|
||||
├── qtbase_cs.qm
|
||||
├── qtbase_da.qm
|
||||
├── qtbase_de.qm
|
||||
├── qtbase_en.qm
|
||||
├── qtbase_es.qm
|
||||
├── qtbase_fi.qm
|
||||
├── qtbase_fr.qm
|
||||
├── qtbase_gd.qm
|
||||
├── qtbase_he.qm
|
||||
├── qtbase_hu.qm
|
||||
├── qtbase_it.qm
|
||||
├── qtbase_ja.qm
|
||||
├── qtbase_ko.qm
|
||||
├── qtbase_lv.qm
|
||||
├── qtbase_pl.qm
|
||||
├── qtbase_ru.qm
|
||||
├── qtbase_sk.qm
|
||||
├── qtbase_uk.qm
|
||||
└── qtbase_zh_TW.qm
|
||||
|
||||
8 directories, 60 files
|
||||
```
|
||||
|
||||
As you can see from the result tree, we got 2 distributions.
|
||||
1. Dstro1 - contains the application Hello1
|
||||
2. Dstro2 - contains the remaining 2.
|
||||
|
||||
Now let's check what happens if all this is packaged by the installer. Add the qif option to true in CQtDeployer.json: ** qif: true, **.
|
||||
|
||||
``` js
|
||||
{
|
||||
"binDir": ".",
|
||||
"clear": true,
|
||||
"qif": true,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 5,
|
||||
"targetPackage": [
|
||||
["Dstro1", "Hello1"],
|
||||
["Dstro2", "Hello2"],
|
||||
["Dstro2", "Hello3"]
|
||||
]
|
||||
```
|
||||
|
||||

|
||||
|
||||
As can be seen from the screenshot, now we have 2 packages during installation.
|
||||
|
||||
## New aliases
|
||||
|
||||
And the last small but nice addition: now new commands have been added to cqtdeployer.
|
||||
* сqt — is a quick way to deploy your application. It simplifies the deployment call.
|
||||
* Example:
|
||||
**cqt myApp** — this is the same as **cqtdeployer -bin myApp**.
|
||||
* cqtdeployer.cqt - same as cqt but for snap package.
|
||||
* В windows-версии теперь не нужно добовлять знак % для вызова утилиты.
|
||||
* In the windows version, now there is no need to add the% sign to call the utility.
|
||||
Now the call looks like in Linux. (cqtdeployer)
|
158
md/en/1_5.md
@ -1,158 +0,0 @@
|
||||
# Release of CQtDeployer v1.5.0
|
||||
|
||||
Release of the C++/Qt and QML application deployment utility CQtDeployer v1.5.0
|
||||
|
||||
This is the first major update in 2021. CQtDeployer 1.5 contains many useful improvements. The biggest improvements are the addition of the ability to package deb packages, and the ability to use your own packaging template for the qt install framework.
|
||||
|
||||
## Complete list of all changes
|
||||
|
||||
## CQtDeployer 1.5.0
|
||||
|
||||
### New features
|
||||
|
||||
- Added new theme of qif installer "quasarDark".
|
||||
- Added support of work with custom template for qif option.
|
||||
- Added support of debian packages.
|
||||
- Added support of targets icons. now the icon option work with targets but not packages.
|
||||
- Added support of the control custom translation files.
|
||||
- Added support the deploy nonexecutable data. (extraData option)
|
||||
- Added envirement variables for deployed applications.
|
||||
- Added support of the generate deb packages.
|
||||
- Added support of the generate zip arrhives.
|
||||
- Added support create a qif installer using custom template
|
||||
- Added command for init default qif and deb templates (getDefaulttemplate)
|
||||
- Added support of import custom launch scripts
|
||||
- Added support of md5 packages hashes
|
||||
- Added support of Qt6.1
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fixed stability for the deploySystem option on windows
|
||||
- Fixed verbose log.
|
||||
- Fixed general output log.
|
||||
- Fixed typo errors in log.
|
||||
- Fixed cross-deployment for ARM platform .
|
||||
- Fixed deploy Qt6 qml
|
||||
- Fixed powershell commands on Windows
|
||||
- bug fixes and improvements.
|
||||
|
||||
|
||||
### New Envirement Variables
|
||||
|
||||
- CQT_RUN_FILE - This variable contains path to the run script of the using application.
|
||||
- CQT_PKG_ROOT - This variable contains path to root of the current package.
|
||||
|
||||
### New parameters
|
||||
|
||||
- zip - create a ZIP archive for deployable programm
|
||||
- deb - Create the deb package for deployable programm
|
||||
- homepage - Sets the homepage url for a package
|
||||
- noQt - Ignors the error of initialize of a qmake. Use only if your application does not use the qt framework
|
||||
- allowEmptyPackages - Allows configure the empty packages.
|
||||
- getDefaultTemplate - Extracts defaults deb or qif templates.
|
||||
- tr - Adds qm files into the translations folder.
|
||||
- extraData - Adds the extra files or directories like a target. The selected directory will be copy to the extraDataOut location with save own structure.
|
||||
- extraDataOut - Sets path to extra data files out directory.
|
||||
- prefix - Sets the prefix for the package relatively a target directory
|
||||
- homePage - Sets the homepage url for a package
|
||||
- binPrefix - Sets prefix for bin option.
|
||||
- noHashSum - Disables campute hashes of packages
|
||||
|
||||
### Deprecated and removed options
|
||||
|
||||
- deploySystem-with-libc - instead of this option use the deploySystem option.
|
||||
- allQmlDependes - instead of this option use the qmlDir option.
|
||||
|
||||
|
||||
## Detailed analysis of the most interesting changes.
|
||||
|
||||
### Debian pacakges
|
||||
This feature is very conveniently if you want to create server application.
|
||||
For example i need to create simple server for my simple game.
|
||||
And my steps:
|
||||
* build my application in the release mode.
|
||||
* run cqtdeployer with deb option.
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin mySimpleServer deb -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
```
|
||||
The SimpleServer depends only on qt, so it was enough for me to specify only the path to qmake for my application.
|
||||
|
||||
It is all!!!. And i get the workly deb package.
|
||||
By Default CQtDeployer create an independet debian packages.
|
||||
|
||||
|
||||
### Zip arrhives
|
||||
This feature allow compress your distribution pacakges to zip arrhive.
|
||||
|
||||
Example:
|
||||
```bash
|
||||
cqtdeployer -bin mySimpleServer zip -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
```
|
||||
|
||||
### Custom Qt Installer Framework tempaltes.
|
||||
|
||||
Now you can override default template of the cqtdeployer. To do this, you must pass the path to your template to the qif parameter.
|
||||
|
||||
```
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template
|
||||
```
|
||||
|
||||
### Template
|
||||
The qif template should contain 2 folders:
|
||||
* packages
|
||||
* config
|
||||
|
||||
### Attention
|
||||
The name of the packages in the packages folder must match the names of the packages during deployment.
|
||||
|
||||
For example:
|
||||
``` json
|
||||
"targetPackage": [
|
||||
[
|
||||
"myCustomInstaller",
|
||||
"tar1"
|
||||
]
|
||||
],
|
||||
```
|
||||
|
||||
``` bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
||||
|
||||
If the folder names do not match the package names then CQtDeployer will use the standard QIF package.
|
||||
|
||||
If you have only one package then you can use the **name** option for set name the application.
|
||||
|
||||
```bash
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
|
||||
```
|
||||
|
||||
#### Do not forget to rename the your package folder to the packaga name of the name option.
|
||||
|
||||
|
||||
```bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller << "This is folder of the your package"
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
@ -1,90 +0,0 @@
|
||||
# Install CQtDeployer
|
||||
|
||||
You can download the latest version of the application [here](https://github.com/QuasarApp/CQtDeployer/releases).
|
||||
|
||||
### Installer
|
||||
|
||||
- [Download](https://github.com/QuasarApp/CQtDeployer/releases) CQtDeployer_X.X.X.X_Installer_Linux64.run or CQtDeployer_X.X.X.X_Installer_Win64.exe
|
||||
|
||||
#### Install without gui
|
||||
|
||||
##### Linux
|
||||
|
||||
``` bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.3/CQtDeployer_1.5.3.0_Installer_Linux64.run
|
||||
chmod +x CQtDeployer_1.5.3.0_Installer_Linux64.run
|
||||
./CQtDeployer_1.5.3.0_Installer_Linux64.run install
|
||||
```
|
||||
|
||||
##### Windows
|
||||
|
||||
``` bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.3/CQtDeployer_1.5.3.0_Installer_Win64.exe
|
||||
CQtDeployer_1.5.3.0_Installer_Win64.exe install
|
||||
```
|
||||
|
||||
### Deb
|
||||
|
||||
``` bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.3/CQtDeployer_1.5.3.0_Linux64.deb
|
||||
sudo dpkg -i CQtDeployer_1.5.3.0_Linux64.deb
|
||||
```
|
||||
|
||||
**Note** the package name and links can be changed, please check [Download](https://github.com/QuasarApp/CQtDeployer/releases) page before installation.
|
||||
|
||||
### Snap
|
||||
|
||||
[](https://snapcraft.io/cqtdeployer)
|
||||
|
||||
``` bash
|
||||
sudo snap install cqtdeployer
|
||||
```
|
||||
|
||||
#### Features of the snap version
|
||||
|
||||
If you are using the snap version of the application. Enable all permissions for cqtdeployer.
|
||||
this can be done in the snap-store
|
||||
Or starting with ubuntu 20.04 in the ubuntu application settings manager.
|
||||
|
||||
If you do not have the GUI then you can enable all permissions using next commands:
|
||||
|
||||
``` bash
|
||||
sudo snap connect cqtdeployer:process-control
|
||||
sudo snap connect cqtdeployer:removable-media
|
||||
sudo snap connect cqtdeployer:system-backup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Build from sources
|
||||
|
||||
## Build for Linux
|
||||
|
||||
- install qt and qt QtInstallFrameWork from [qt installer](https://www.qt.io/download-qt-installer?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f9bb77-7bb77-4bb77-4)
|
||||
- git clone https://github.com/QuasarApp/CQtDeployer.git
|
||||
- cd CQtDeployer
|
||||
- git submodule update --init --recursive
|
||||
- qmake -r
|
||||
- Here you must definitely call the qmake that was loaded from the 1st item.
|
||||
- Example: ~/Qt/5.15.0/gcc_64/bin/qmake -r
|
||||
- make -j$(nproc)
|
||||
- make deploy
|
||||
- this command requires installed [cqtdeployer](https://github.com/QuasarApp/CQtDeployer/releases)
|
||||
- ./Distro/CQtDeployerInstaller.run
|
||||
|
||||
## Build for Windows (CMD)
|
||||
|
||||
- install qt and qt QtInstallFrameWork from [qt installer](https://www.qt.io/download-qt-installer?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f9bb77-7bb77-4bb77-4)
|
||||
- git clone https://github.com/QuasarApp/CQtDeployer.git
|
||||
- cd CQtDeployer
|
||||
- git submodule update --init --recursive
|
||||
- SET PATH=C:/Qt/Tools/mingw810_64/bin;%PATH%
|
||||
- It is important to set up the qt environment.
|
||||
- qmake.exe -r
|
||||
- Here you must definitely call the qmake that was loaded from the 1st item.
|
||||
- Example: C:/Qt/5.15.0/mingw81_64/bin/qmake.exe -r
|
||||
- migw32-make -j8
|
||||
- migw32-make deploy
|
||||
- this command requires installed [cqtdeployer](https://github.com/QuasarApp/CQtDeployer/releases)
|
||||
- ./Distro/CQtDeployerInstaller.exe
|
||||
|
@ -1,363 +0,0 @@
|
||||
# Change log
|
||||
|
||||
## CQtDeployer 1.5.4
|
||||
|
||||
|
||||
### New options
|
||||
|
||||
* qifConfig - Sets a custom path to the configure file of the qt ifw installer. By default it is qif/config/config.xml #653
|
||||
* qifPackages - Sets a custom path to the packages directories. By default it is qif/packages #653
|
||||
* qifResources - Sets a custom path to the resources files. By default this option is skipped #653
|
||||
* debOut - Sets name of the output debian file. This option can be work with multiple packages
|
||||
* zipOut - Sets name of the output zip arrhive. This option can be work with multiple packages
|
||||
|
||||
### Bug fixes :
|
||||
|
||||
* fixed crossdeploy linux -> windows #652
|
||||
|
||||
|
||||
## CQtDeployer 1.5.3
|
||||
|
||||
### New options
|
||||
|
||||
* installDirDeb - Sets install target directory for debian package (by default it is /opt path) #640
|
||||
* installDirQIFW - Sets install target directory for installers (by default it is /home path) #640
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Fix warning on installer fix #628
|
||||
* Added support validation input options of the command line fix #421
|
||||
* Added Error message for conflict between libDir and targetDir options #629
|
||||
|
||||
## CQtDeployer 1.5.2
|
||||
|
||||
### New parameters
|
||||
|
||||
* Added **qifOut** option for set name of the output installer
|
||||
* Added **disableRunScript** option for disabling the generation of run script for selected targets
|
||||
* Added **disableShortCut** option for disabling the generation of shortcut for selected targets
|
||||
|
||||
### Fixes
|
||||
|
||||
* Fix documentation
|
||||
* Fix deploy openssl libraries
|
||||
|
||||
## CQtDeployer 1.5.1
|
||||
|
||||
### Fixes
|
||||
|
||||
* Fix deploy multi target Debian packages
|
||||
* Fix deploy qt6 qml applications
|
||||
|
||||
|
||||
Change log for all versions of the CQtDeployer.
|
||||
|
||||
## CQtDeployer 1.5.0
|
||||
|
||||
### New features
|
||||
|
||||
- Added new theme of qif installer "quasarDark".
|
||||
- Added support of work with custom template for qif option.
|
||||
- Added support of debian packages.
|
||||
- Added support icons for targets. now the icon option work with targets but not packages.
|
||||
- Added support of the control custom translation files.
|
||||
- Added support the deploy nonexecutable data. (extraData option)
|
||||
- Added envirement variables for deployed applications.
|
||||
- Added support of the generate deb packages.
|
||||
- Added support of the generate zip arrhives.
|
||||
- Added support create a qif installer using custom template
|
||||
- Added command of init default qif of deb template (getDefaulttemplate)
|
||||
- Added support of import custom launch scripts
|
||||
- Added support of md5 packages hashes
|
||||
- Added support of Qt6.1
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fixed stability for the deploySystem option on windows
|
||||
- Fixed verbose log.
|
||||
- Fixed general output log.
|
||||
- Fixed typo errors in log.
|
||||
- Fixed crossdeploy of the arm distributions.
|
||||
- Fixed deploy Qt6 qml
|
||||
- Fixed powershell commands on Windows
|
||||
- bug fixes and improvements.
|
||||
|
||||
|
||||
### New Envirement Variables
|
||||
|
||||
- CQT_RUN_FILE - This variable contains path to the run script of the using application.
|
||||
- CQT_PKG_ROOT - This variable contains path to root of the current package.
|
||||
|
||||
### New parameters
|
||||
|
||||
- zip - create a ZIP archive for deployable programs
|
||||
- deb - Create the deb package for deployment programm
|
||||
- homepage - Sets the homepage url for a package
|
||||
- noQt - Ignors the error of initialize of a qmake. Use only if your application does not use the qt framework
|
||||
- allowEmptyPackages - Allows configure the empty packages.
|
||||
- getDefaultTemplate - Extracts defaults deb or qif templates.
|
||||
- tr - Adds qm files into the translations folder.
|
||||
- extraData - Adds the extra files or directories like a target. The selected directory will be copy to the extraDataOut location with save own structure.
|
||||
- extraDataOut - Sets path to extra data files out directory.
|
||||
- prefix - Sets the prefix for the package relatively a target directory
|
||||
- homePage - Sets the homepage url for a package
|
||||
- binPrefix - Sets prefix for bin option.
|
||||
- noHashSum - Disables campute hashes of packages
|
||||
|
||||
### Deprecated and removed options
|
||||
|
||||
- deploySystem-with-libc - instead of this option use the deploySystem option.
|
||||
- allQmlDependes - instead of this option use the qmlDir option.
|
||||
|
||||
## CQtDeployer 1.5.0 Alpha
|
||||
|
||||
### Corrections
|
||||
|
||||
- bug fixes and improvements.
|
||||
|
||||
### New Features
|
||||
|
||||
- Added a new Theme for qif installer "quasarDark".
|
||||
|
||||
### New options
|
||||
|
||||
- zip - create the ZIP arhive for deployement programm
|
||||
|
||||
|
||||
## CQtDeployer 1.4.7
|
||||
|
||||
### Corrections
|
||||
|
||||
- Fixed deploy the qxcb plugin. #438
|
||||
- Fixed deploy the qtGui module. #446
|
||||
|
||||
### New Features
|
||||
|
||||
- Added support of Qt6 #437
|
||||
- Added support of Qt installer Framework 4 (with improved command line interface experience) #436
|
||||
|
||||
## CQtDeployer 1.4.6
|
||||
|
||||
### Corrections
|
||||
|
||||
- Fixed deploy sql drivers #367
|
||||
- Fixed algorithm of deploy libraryes. #423 #371
|
||||
- Fixed working with a qt from the linux system repository. (classic instaler only) #422
|
||||
- Fixed snap version of cqtdeployer, added support for qmake search by RPATH #424 #420
|
||||
- Fixed help message.
|
||||
- Minor bug fixes and improvements.
|
||||
- Removed deprecated option extractPlugins. #371
|
||||
|
||||
### New options
|
||||
|
||||
- noQt - Ignore the error of initialize of a qmake. Use only if your application does not use the qt framework.
|
||||
|
||||
## CQtDeployer 1.4.5
|
||||
|
||||
### Corrections
|
||||
|
||||
- Optimized project deployment performance. 60% faster.
|
||||
- Optimized output size of distributions. Size reduced by 25%.
|
||||
- Fixed display of shortcuts after installing deployed applications.
|
||||
- Fixed launching applications with spaces in the name. Thanks ahndee (#384)
|
||||
- Fixed deployment of the Renderer plugin.
|
||||
- Minor bug fixes and improvements.
|
||||
|
||||
### New Features
|
||||
|
||||
- Added a new deployment plugin management system.
|
||||
|
||||
### New options
|
||||
|
||||
- extraPlugin - sets an additional path to third-party application plug-in
|
||||
- enablePlugins - enables additional plugins for distribution.
|
||||
- disablePlugins - disables plugins for distribution.
|
||||
|
||||
## CQtDeployer 1.4.4
|
||||
|
||||
### New options
|
||||
- qifFromSystem - force use system binarycreator tool of qif from path or qt.
|
||||
|
||||
|
||||
## CQtDeployer 1.4.3
|
||||
### Fixes
|
||||
- Fixed display of the application downloaded from the snap store and installers in the ubuntu 20.04 application settings menu
|
||||
|
||||
### New features
|
||||
- added support recursive ignore for ignoreEnvirement #356
|
||||
|
||||
### New options
|
||||
- noRecursiveiIgnoreEnv - Disables recursive ignore for ignoreEnv option.
|
||||
|
||||
|
||||
|
||||
## CQtDeployer 1.4.2
|
||||
### Fixes
|
||||
|
||||
- fixed #337 (error generate installer with custom name)
|
||||
- fixed #338 (windows version collect pdb files)
|
||||
- fixed #339 (error of show all help messages)
|
||||
- fixed #340 (cqdeployer don't added a targets dirs into "ignore")
|
||||
- fixed #341 (The clear option don't delete old installer)
|
||||
|
||||
|
||||
## CQtDeployer 1.4.1
|
||||
|
||||
### Fixes
|
||||
- Fixed Not deploying platformthemes (#324)
|
||||
- Fixed create shortcuts on windows (#322)
|
||||
- Minor improvements and fixes
|
||||
|
||||
|
||||
## CQtDeployer 1.4.0
|
||||
### Fixes
|
||||
- Fixed The help output in the console, now the actual size of the console is recounted before the output, which allows you to correctly transfer text.
|
||||
- Fixed work with the deployment of Qt plugins. Now plug-ins do not extract all system dependencies, but only qt. Extract system dependencies caused applications to crash due to incompatible plugin libraries.
|
||||
- Minor bug fixes and improvements.
|
||||
|
||||
### New features
|
||||
- Added support for qmake search from the system environment.
|
||||
- Added the ability to initialize the repository for further packaging, similar to git init.
|
||||
- Added support for Qt Install Framework packages. Now you can pack the distribution into the installer.
|
||||
- Added the ability to split the final distribution into several packages.
|
||||
- Added the ability to unify the creation of packages for the final distribution.
|
||||
- Added support for adding custom scripts to application launch scripts.
|
||||
- Added support for extracting system dependencies for Windows.
|
||||
- Added support for RPATH for Linux. Now cqtdeployer can independently determine the necessary qmake to deploy the application.
|
||||
- Added support for finding the required dependency by library name.
|
||||
- Added support for Qt libraries from Linux distributions repositories.
|
||||
- Added new alias for the run command (cqt and cqtdeployer.cqt) for fast deploy of applications.
|
||||
- Added support the native name of command for windows. Now you can run a cqtdeployer from cqtdeployer commnad in cmd and powershell.
|
||||
|
||||
### New options
|
||||
- init - will initialize cqtdeployer.json file (configuration file). For example: "cqtdeployer init" - to initialize the configuration of a base package. "cqtdeployer -init multi" - to initialize the configuration of several packages.
|
||||
- noCheckRPATH - disables the automatic search for paths to qmake in executable files (Linux only).
|
||||
- noCheckPATH - disables the automatic search for paths to qmake in the system environment.
|
||||
- extractPlugins - forces to extract all plug-in dependencies.
|
||||
- qif - creates an installer at the end of the deployment.
|
||||
- extraLibs - adds a template for an additional library, which should be included in the distribution.
|
||||
- customScript - adds a custom script to the startup script of the application.
|
||||
- -targetPackage [package; tar1, package; tar2] - used to form packages, denotes lists of target files for specific packages.
|
||||
- recOut - indicates in which folder the resources will be added after deployment.
|
||||
- name - sets the name of the package.
|
||||
- description - sets the package description
|
||||
- deployVersion - sets the package version
|
||||
- releaseDate - sets the release date of the package.
|
||||
- icon - sets the package icon.
|
||||
- publisher - sets the publisher of the package.
|
||||
- qifStyle - Sets the path to the CSS style file or sets the default style. Available styles: quasar
|
||||
- qifBanner - Sets path to the banner png file.
|
||||
- qifLogo - Sets path to the logo png file.
|
||||
|
||||
## CQtDeployer 1.3.2
|
||||
- Fixed #218 (The CQtDeployer adding sh scripts for target libraries.)
|
||||
- Fixed #217 (The Qmake option did not work with the configuration file.)
|
||||
---
|
||||
|
||||
## CQtDeployer 1.3.1
|
||||
- Fixed a task #191 (ignore command for plugins)
|
||||
- Fixed a task #192 (invalid paths when creating)
|
||||
- Fixed absalute pathes of deployement file (see [confFile](DeployConfigFile))
|
||||
---
|
||||
|
||||
## CQtDeployer 1.3.0
|
||||
- Added support of qt.conf for Linux
|
||||
- Added support of config file for project (deploy.json) with all rules of deployment, for create deploy.json use flag -confFile [./path/to/file.json],
|
||||
- Added support of output dirs for all deployement files #145,
|
||||
- Added support of deploy WebEngine #146
|
||||
- Added support multi package in cqtdeployer installer
|
||||
- Renamed project from Console-QtDeployer to CQtDeployer #139
|
||||
- Fixed deployment of system libs in linux #172
|
||||
- Added new tests of application
|
||||
- Removed flag noLibC and added flag deploySystem-with-libc. If you need libc in the program, use the deploySystem-with-libc flag, and if not, use deploySystem.
|
||||
- The always-overwrite flag has been replaced with noOverwrite, now all files are overwritten by default, use noOverwrite to disable overwriting.
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.3
|
||||
- Added support of qt.conf for Windows builds #130
|
||||
- Fixed bug #129 now the 'clear' flag remove only copied files.
|
||||
- Fixed ignoreEnv flag
|
||||
- Fixed deploySystem flag
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.2
|
||||
- Added new flag noLibc for ignore libc and li-linux libs
|
||||
- Fixed bug #125 Deployed system lib (working with simple projects, for big projects no recommended)
|
||||
- Fixed ignoreEnv flag
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.1
|
||||
- Added new ignore flag (ignoreEnv). This flag disables unnecessary environment
|
||||
- Added support QIFW (online installer for windows and Other Linux distributives)
|
||||
- Added support update for windows and Other Linux distributives (not snap)
|
||||
- Fixed bug #116 (copy files from removable media)
|
||||
- Fixed bug #115 (create target in folder with russean name)
|
||||
- Fixed big size of msvc version
|
||||
- FIxed crossdeploy Linux >> Windows
|
||||
- Removeв old build scripts
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.0
|
||||
- Added own qml dependecies scaner.
|
||||
- Moved to used a new [PE-Lib scaner](https://github.com/QuasarApp/pe-parse/tree/7138bb218a05c81d825728ba8a0a6f6a56c4fdbc).
|
||||
- Moved to used a new [ELF-lib scaner](https://github.com/qt/qttools/blob/b0147a5d79ce7a7e77a24f36aaddfacb1a1517c8/src/shared/winutils/elfreader.h).
|
||||
- Added a new unit tests.
|
||||
- Added support of snap version (home dir only).
|
||||
- Added new flag qmlExtern - for use qt qml import scaner.
|
||||
- Added support a levels of verbose log (0-3).
|
||||
- Fixed log of deploy app.
|
||||
- Fixed deploy the app on snap version.
|
||||
---
|
||||
|
||||
## CQtDeployer 1.1.2
|
||||
- Added support of translations
|
||||
- Added a flag for disable deploy translations
|
||||
- Added the strip flag on linux version
|
||||
- Added unit tests
|
||||
- Fixed deploy with shared version
|
||||
- Fixed bug deploy on current dir with snap and static versions
|
||||
---
|
||||
|
||||
## CQtDeployer 1.1.1
|
||||
- Fixed qml build in dinomisc version
|
||||
- Fixed -recursiveDepth flag
|
||||
- Fixed -libDir flag operation
|
||||
- The output of the application has been cleaned, a part of the log has been moved to verbose
|
||||
---
|
||||
|
||||
## CQtDeployer 1.1.0
|
||||
- Added windows support (dynamic linking only)
|
||||
- Added support for snap (now available in the snapstore)
|
||||
- Added snap build scripts
|
||||
- Added flag binDir allowing recursively to capture exe dll and so
|
||||
- Changed the logic of the bin flag now, if you select a folder in the file location, then all its contents will be captured
|
||||
- Changed and corrected the logic of the clear flag now it cleans all the expanded content on a specific target.
|
||||
- Added flag targetDir which defines the place where the expanded project will lie
|
||||
- The structure of the deployed project has been changed, now all the launch shells are in the root and the binaries are in the bin folder, a launch script of the same name is created for each binary.
|
||||
- Removed old runScript flag due to change of deployment logic
|
||||
- Added verbose flag for debugging by
|
||||
- Fixed performance bugs
|
||||
---
|
||||
|
||||
## CQtDeployer 1.0.2
|
||||
- Added a script to build (dynamic and static release)
|
||||
- Added flag -libDir to install additional path for additional libraries of the application
|
||||
- Added flag -extraPlugin to install an additional path for additional application plugins
|
||||
- Added build for C libraries only
|
||||
- Fixed deployment
|
||||
- Fixed startup script
|
||||
- Fixed static build
|
||||
---
|
||||
|
||||
## CQtDeployer 1.0.1
|
||||
- fix qml deploy (redundancy)
|
||||
- fix run script
|
||||
---
|
||||
|
||||
## CQtDeployer 1.0.0
|
||||
- Added a flag runScript
|
||||
- Added a flag allQmlDependes
|
||||
- Fixed bug of deploy qml
|
||||
- Fixed bug of deploy plugins
|
||||
- Added support static build
|
||||
|
@ -1,17 +0,0 @@
|
||||
# Compare Features
|
||||
|
||||
Compare Features of Distributions of the CQtDeployer
|
||||
|
||||
### snap vs installer vs windows installer
|
||||
|
||||
| Feature name | Classic linux version (Installer) | Snap Version | Windows version |
|
||||
|---|---|---|----|
|
||||
| Automatic updates | NO | YES | NO |
|
||||
| Online updates | YES | YES | YES |
|
||||
| Deploy system libraries | YES | YES | YES |
|
||||
| Create installers | YES | YES | YES |
|
||||
| Create archives | YES | YES | YES |
|
||||
| Search of libraries and cmake from environment | YES | NO | YES |
|
||||
| Search of the qmake from a RPATH | YES | YES | NO |
|
||||
| Support of the 'strip' command | YES | NO | NO |
|
||||
| Support work with the qmake from a system repository of OS| YES| NO| NO |
|
@ -1,69 +0,0 @@
|
||||
# Custom Scripts
|
||||
|
||||
After version 1.5.1 cqtdeployer support self variables in the custom scripts.
|
||||
For using custom scripts use the **runScript option**
|
||||
|
||||
### Exmaples :
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin MyExecutable.exe -runScript MyExecutable,path/to/my/custom/script.bat
|
||||
```
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin MyExecutable -runScript MyExecutable,path/to/my/custom/script.sh
|
||||
```
|
||||
|
||||
## Suported variables list:
|
||||
|
||||
* CQT_LIB_PATH - are releative path to libraryes of a deployed distribution.
|
||||
* CQT_QML_PATH - are releative path to qml libraryes of a deployed distribution.
|
||||
* CQT_PLUGIN_PATH - are releative path to qt plugins of a deployed distribution.
|
||||
* CQT_BIN_PATH - are releative path to targets of a deployed distribution.
|
||||
|
||||
* CQT_SYSTEM_LIB_PATH - are releative path to system libraryes of a deployed distribution.
|
||||
* CQT_BASE_NAME - are base name of the executable that will be launched after run this script.
|
||||
* CQT_CUSTOM_SCRIPT_BLOCK - This is code from the customScript option
|
||||
* CQT_RUN_COMMAND - This is command for run application. Require BASEDIR variable. Note: This variable already contains symbols for redirect input script arguments to executable.
|
||||
|
||||
|
||||
## The Scripts tempalte
|
||||
|
||||
### Linux
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
BASE_DIR=$(dirname "$(readlink -f "$0")")
|
||||
export LD_LIBRARY_PATH="$BASE_DIR"CQT_LIB_PATH:"$BASE_DIR":$LD_LIBRARY_PATH
|
||||
export QML_IMPORT_PATH="$BASE_DIR"CQT_QML_PATH:$QML_IMPORT_PATH
|
||||
export QML2_IMPORT_PATH="$BASE_DIR"CQT_QML_PATH:$QML2_IMPORT_PATH
|
||||
export QT_PLUGIN_PATH="$BASE_DIR"CQT_PLUGIN_PATH:$QT_PLUGIN_PATH
|
||||
export QTWEBENGINEPROCESS_PATH="$BASE_DIR"CQT_BIN_PATH/QtWebEngineProcess
|
||||
export QTDIR="$BASE_DIR"
|
||||
export CQT_PKG_ROOT="$BASE_DIR"
|
||||
export CQT_RUN_FILE="$BASE_DIR/CQT_BASE_NAME.sh"
|
||||
|
||||
export QT_QPA_PLATFORM_PLUGIN_PATH="$BASE_DIR"CQT_PLUGIN_PATH/platforms:$QT_QPA_PLATFORM_PLUGIN_PATH
|
||||
|
||||
CQT_CUSTOM_SCRIPT_BLOCK
|
||||
|
||||
CQT_RUN_COMMAND
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
```bash
|
||||
|
||||
@echo off
|
||||
SET BASE_DIR=%~dp0
|
||||
SET PATH=%BASE_DIR%CQT_LIB_PATH;%PATH%;CQT_SYSTEM_LIB_PATH
|
||||
SET CQT_PKG_ROOT=%BASE_DIR%
|
||||
SET CQT_RUN_FILE=%BASE_DIR%CQT_BASE_NAME.bat
|
||||
|
||||
CQT_CUSTOM_SCRIPT_BLOCK
|
||||
|
||||
CQT_RUN_COMMAND
|
||||
```
|
||||
|
||||
|
||||
Or you can get last version of this scripts from the github [repository](https://github.com/QuasarApp/CQtDeployer/tree/main/Deploy/ScriptsTemplates).
|
101
md/en/DEB.md
@ -1,101 +0,0 @@
|
||||
# DEB using
|
||||
|
||||
General rules for using DEB
|
||||
|
||||
#### Available from version CQtDeployer 1.5
|
||||
|
||||
### How to use deb option
|
||||
|
||||
Just add to cqtdeployer option "deb".
|
||||
|
||||
#### For example:
|
||||
|
||||
``` bash
|
||||
cqtdeployer ... deb
|
||||
```
|
||||
|
||||
Where:
|
||||
* **...** - is list of other options.
|
||||
* **deb** - option for create the deb package.
|
||||
|
||||
|
||||
By default, cqtdeployer will create one deb package.
|
||||
If you want create multi package destribution, you should use [Controll of packages options](Options.md)
|
||||
To create a new package, use the -targetPackage [package; tar1] option
|
||||
|
||||
cqtdeployer create deb package for each packages.
|
||||
|
||||
Where:
|
||||
|
||||
* **package** - it is package name
|
||||
* **tar1** - it is name of the target that should be included in this package.
|
||||
|
||||
Or you can describe packages in [configuration file](DeployConfigFile.md)
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"package",
|
||||
"tar1"
|
||||
],
|
||||
],
|
||||
"deb": true
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Custom Template for DEB
|
||||
|
||||
You can create a own Template fo the debian pacakges.
|
||||
|
||||
### The debian pacakge structure:
|
||||
|
||||
|
||||
```bash
|
||||
└── Debian templates
|
||||
├── debPacakge1
|
||||
│ └── DEBIAN
|
||||
│ ├── control
|
||||
│ ├── postinst
|
||||
│ └── prerm
|
||||
└── debPacakge2
|
||||
└── DEBIAN
|
||||
├── control
|
||||
├── postinst
|
||||
└── prerm
|
||||
|
||||
```
|
||||
|
||||
For include your templates into your destribution you need to add path of the Debian templates folder into deployConfig.json
|
||||
|
||||
```json
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"debPacakge1",
|
||||
"tar1"
|
||||
],
|
||||
[
|
||||
"debPacakge2",
|
||||
"tar2"
|
||||
],
|
||||
],
|
||||
"deb": "./Debian templates"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Initialization of the debian template
|
||||
|
||||
For initialize default templates you can use the getDefaultTemplate option.
|
||||
The getDefaultTemplate option extract default template of the cqtdeployer. This is can be very convinion if you want override default behavior of the installer or anothe distribution package.
|
||||
|
||||
### Example
|
||||
|
||||
### Getting default debian template.
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate deb
|
||||
```
|
@ -1,228 +0,0 @@
|
||||
# Deployment file
|
||||
|
||||
**Deployment file** - it's a json file containing the parameters for cqtdeployer. This file supports all parameters except confFile, since this parameter is responsible for connecting and initializing the file itself.
|
||||
|
||||
### Configuration file structure
|
||||
|
||||
```json
|
||||
{
|
||||
"Bool option": true/false,
|
||||
"Option": "Value",
|
||||
"Enumeration-enabled option": [
|
||||
"Value 1",
|
||||
"Value 2",
|
||||
"Value 3",
|
||||
],
|
||||
"Option with support for multilevel enumerations": [
|
||||
[
|
||||
"Value A1",
|
||||
"Value A2"
|
||||
],
|
||||
[
|
||||
"Value B1",
|
||||
"Value B2"
|
||||
],
|
||||
[
|
||||
"Value C1",
|
||||
"Value C2"
|
||||
],
|
||||
]
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
Read more about cqtdeployer options in the [options](Options.md) section.
|
||||
|
||||
Examples of the contents of this file:
|
||||
|
||||
File without using enumerated parameters
|
||||
```json
|
||||
{
|
||||
"noOverwrite": false,
|
||||
"bin": "./",
|
||||
"binDir": "./",
|
||||
"qmlDir": "./",
|
||||
"deploySystem": false,
|
||||
"deploySystem-with-libc": false,
|
||||
"qmake": "my/custom/path/to/qmake",
|
||||
"ignore": "ignoreLib.dll",
|
||||
"ignoreEnv": "/my/ignore/path",
|
||||
"clear": true,
|
||||
"force-clear": false,
|
||||
"allQmlDependes": false,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 3,
|
||||
"extraLibs": "myExtraLib (libssl)",
|
||||
"extraPlugin": "myExtraPulgin (platforms)",
|
||||
"targetDir": "./Distro",
|
||||
"targetPackage": "",
|
||||
"noStrip": false,
|
||||
"extractPlugins": false,
|
||||
"noTranslations": false,
|
||||
"qmlOut": "qml",
|
||||
"libOut": "lib",
|
||||
"trOut": "tr",
|
||||
"pluginOut": "plug",
|
||||
"binOut": "bin",
|
||||
"recOut": "rec",
|
||||
"verbose": 3,
|
||||
"qif": false,
|
||||
"noCheckRPATH": false,
|
||||
"noCheckPATH": false,
|
||||
"name": "mainApplication",
|
||||
"description": "this is description for default package",
|
||||
"deployVersion": "1.0.0",
|
||||
"releaseDate": "yyyy-MM-dd",
|
||||
"icon": "/path/main/icon.png",
|
||||
"publisher": "main team",
|
||||
"customScript": "echo 'I am use custom script!!!'"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
File Using Enumerated Parameters
|
||||
``` json
|
||||
{
|
||||
"noOverwrite": false,
|
||||
"bin": "./",
|
||||
"binDir": "./",
|
||||
"qmlDir": [
|
||||
[
|
||||
"package2",
|
||||
"./TestQMLWidgets/"
|
||||
],
|
||||
[
|
||||
"./qml/for/All"
|
||||
]
|
||||
],
|
||||
|
||||
"deploySystem": false,
|
||||
"deploySystem-with-libc": false,
|
||||
"qmake": "this parameter should contain the path to your qmake, for Windows this field is required. On Linux, you can remove it, then qmake will be found by rpath.",
|
||||
"ignore": "ignoreLib.dll",
|
||||
"ignoreEnv": "/my/ignore/path",
|
||||
"clear": true,
|
||||
"force-clear": false,
|
||||
"allQmlDependes": false,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 3,
|
||||
"extraLibs": "myExtraLib (libssl)",
|
||||
"extraPlugin": "myExtraPulgin (platforms)",
|
||||
"targetDir": "./Distro",
|
||||
"targetPackage": [
|
||||
[
|
||||
"/package1/",
|
||||
"TestOnlyC"
|
||||
],
|
||||
[
|
||||
"/package2/",
|
||||
"TestQMLWidgets"
|
||||
]
|
||||
],
|
||||
"noStrip": false,
|
||||
"extractPlugins": false,
|
||||
"noTranslations": false,
|
||||
"qmlOut": "qml",
|
||||
"libOut": "lib",
|
||||
"trOut": "tr",
|
||||
"pluginOut": "plug",
|
||||
"binOut": "bin",
|
||||
"recOut": "rec",
|
||||
"verbose": 3,
|
||||
"qif": false,
|
||||
"noCheckRPATH": false,
|
||||
"noCheckPATH": false,
|
||||
"name": [
|
||||
[
|
||||
"package2",
|
||||
"package2Application"
|
||||
],
|
||||
[
|
||||
"mainApplication"
|
||||
]
|
||||
],
|
||||
"description": [
|
||||
[
|
||||
"package2",
|
||||
"this is description for package 'package2'"
|
||||
],
|
||||
[
|
||||
"this is description for default package"
|
||||
]
|
||||
],
|
||||
"deployVersion": [
|
||||
[
|
||||
"package2",
|
||||
"1.0.0"
|
||||
],
|
||||
[
|
||||
"1.0.0"
|
||||
]
|
||||
],
|
||||
"releaseDate": [
|
||||
[
|
||||
"package2",
|
||||
"yyyy-MM-dd"
|
||||
],
|
||||
[
|
||||
"yyyy-MM-dd"
|
||||
]
|
||||
],
|
||||
"icon": [
|
||||
[
|
||||
"package2",
|
||||
"/path/icon.png"
|
||||
],
|
||||
[
|
||||
"/path/main/icon.png"
|
||||
]
|
||||
],
|
||||
"publisher": [
|
||||
[
|
||||
"package2",
|
||||
"team of package2"
|
||||
],
|
||||
[
|
||||
"main team"
|
||||
]
|
||||
],
|
||||
"customScript": "echo 'I am use custom script!!!'"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
The purpose of file is to simplify the cqtdeployer's call and move some of the parameters into a file. The parameters specified in the file have a lower priority than the parameters added to the console at the run.
|
||||
|
||||
### Creating of the file
|
||||
|
||||
#### The first method
|
||||
|
||||
1. Call `cqtdeployer init` to initialize the file for a single-package application.
|
||||
Or `cqtdeployer -init multi` to initialize the file for a project with multiple packages.
|
||||
2. Open CQtDeployer.json and edit it to fit your needs.
|
||||
3. Call 'cqtdeployer' in the directory with the file 'CQtDeployer.json', or specify the path to it using the flag '-confFile path/to/my/CQtDeployer.json'
|
||||
|
||||
|
||||
#### The second method
|
||||
Call the cqtdeployer with a set of parameters you need and specify the path to the file using -confFile flag (the file should be absent). If the file exists, cqtdeployer will start unloading the parameters from it.
|
||||
|
||||
An example:
|
||||
``` bash
|
||||
cqtdeployer -confFile deploy.json -bin CQtDeployerInstaller -targetDir ./test -qmlOut myqml -binOut mybin -libOut mylib -pluginOut myplugins noStrip noTranslations -recursiveDepth 5 -extraPlugin sqldrivers,audio,mediaservice force-clear deploySystem noOverwrite
|
||||
```
|
||||
|
||||
Where:
|
||||
|
||||
* cqtdeployer - the call of cqtdeployer
|
||||
* -confFile deploy.json - the path to the file,that should be created
|
||||
* "-bin CQtDeployerInstaller -targetDir ./test -qmlOut myqml -binOut mybin -libOut mylib -pluginOut myplugins noStrip noTranslations -recursiveDepth 5 -extraPlugin sqldrivers,audio,mediaservice force-clear deploySystem noOverwrite" - necessary parameters.
|
||||
|
||||
|
||||
### Using of the deployment file.
|
||||
|
||||
Use the flag -confFile [path to the file] to make cqtdeployer start reading the parameters from the file
|
||||
|
||||
#### Example:
|
||||
|
||||
cqtdeployer -qmake ~/Qt/bin/qmake -confFile ./deploy.json
|
||||
|
@ -1,9 +0,0 @@
|
||||
# What is CQtDeployer
|
||||
|
||||
The CQtDeployer is application for extract all depends library of executable and create launch script for your application.
|
||||
|
||||
Key differences of this program:
|
||||
* Performance: this program deploys the application several times faster (up to 10 seconds)
|
||||
* Flexibility: this utility got flags that help you to configure the deployment for your or your project's needs
|
||||
* Crossdeploy: this utility support windows and linux distrebutives, This means that you can use it not only to deploy a project for your platform, but also to deploy a project on Linux for Windows and vice versa.
|
||||
* Packaging - this utility can create installation files and packages for your application.
|
@ -1,19 +0,0 @@
|
||||
# Disabling shortcuts
|
||||
|
||||
Disabling shortcuts for multi targets distribution Kit in the Qt Installer framework.
|
||||
|
||||
Some times we need to disable creating automaticly shortcuts for some applications.
|
||||
For solve this problem i recomendet override the default qt installer framework template.
|
||||
|
||||
# Note
|
||||
Starting from CQtDeployer 1.5.1, you can use the -disableShortcuts option to disable the automatic creation of shortcuts.
|
||||
|
||||
### Example:
|
||||
|
||||
```bash
|
||||
cqtdeployer -disableShortCut targetName,target2Name
|
||||
```
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myProgramm.exe -disableShortCut myProgramm
|
||||
```
|
@ -1,50 +0,0 @@
|
||||
# Environment variables
|
||||
|
||||
Environment variables of the CQtDeployer
|
||||
|
||||
This page contains information about environment variables of the default launcher script.
|
||||
|
||||
## Initialization
|
||||
|
||||
All environment variables initialized in the default launcher script. So if you use the runScript option then you must be reunited all needed variables manually.
|
||||
|
||||
|
||||
## Variables list
|
||||
|
||||
| Variable name | Description |
|
||||
|---|---|
|
||||
| CQT_PKG_ROOT | This variable contains path to root of the current package.|
|
||||
| CQT_RUN_FILE | This variable contains path to the run script of the using application.|
|
||||
|
||||
## Description of definitions
|
||||
|
||||
**Root of the current package** - This root is local root for any separate packages.
|
||||
|
||||
|
||||
Example :
|
||||
|
||||
```bash
|
||||
.
|
||||
├── pakcage1 << This is local root of the package1
|
||||
│ ├── bin
|
||||
│ ├── lib
|
||||
│ ├── plugins
|
||||
│ ├── qml
|
||||
│ └── translations
|
||||
├── package2 << This is local root of the package2
|
||||
│ ├── bin
|
||||
│ ├── lib
|
||||
│ ├── plugins
|
||||
│ ├── qml
|
||||
│ └── translations
|
||||
└── pakcage3 << This is local root of the package3
|
||||
├── bin
|
||||
├── lib
|
||||
├── plugins
|
||||
├── qml
|
||||
└── translations
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
@ -1,107 +0,0 @@
|
||||
# Adding extraData
|
||||
|
||||
Adding extraData into distributive.
|
||||
|
||||
CQtDeployer has support to work with extra data files.
|
||||
|
||||
For this you should use the -extraData and -extraDataOut options.
|
||||
|
||||
## Examples:
|
||||
|
||||
### Add custom file into root directory of the your distribution.
|
||||
|
||||
```
|
||||
cqtdeployer -extraData path/to/my/customFile
|
||||
```
|
||||
|
||||
Or in configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"extraData": "./path/to/my/customFile"
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
This command support list of arguments.
|
||||
|
||||
|
||||
```bash
|
||||
cqtdeployer -extraData path/to/my/customFile,path/to/my/customFile2,path/to/my/customFile3
|
||||
```
|
||||
|
||||
Or in configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"extraData": [
|
||||
"./path/to/my/customFile",
|
||||
"./path/to/my/customFile2",
|
||||
"./path/to/my/customFile3"
|
||||
]
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Changing location of extra data files.
|
||||
|
||||
For change location you should use the extraDataOut options. This option change destination path based on the root of the distributive.
|
||||
|
||||
### Example. Add custom scripts into scripts folder in the Distribution.
|
||||
|
||||
```bash
|
||||
cqtdeployer -extraData /path/to/myScripts.sh,/another/path/to/myScripts.sh -extraDataOut scripts
|
||||
```
|
||||
|
||||
Or in configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"extraData": [
|
||||
"./path/to/myScripts.sh",
|
||||
"./another/path/to/myScripts.sh"
|
||||
],
|
||||
"extraDataOut": "scripts"
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
## Packages
|
||||
|
||||
extraData and extraDataOut options have support to work with packages. See the packaging [page](Packing.md) to get more information about packages.
|
||||
|
||||
Sometimes we need to create a multipackages application. For example create a installer for client-server application with the client and server applications. The client and server have a own default configuration files. We add config files using the extraData option.
|
||||
|
||||
For create a big distribution i recommend use the [confFile](DeployConfigFile.md).
|
||||
|
||||
## Example multipacking application.
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
"bin": [
|
||||
"myClientExecutable",
|
||||
"myServerExecutable"
|
||||
],
|
||||
|
||||
"targetPackage" : [
|
||||
["Client", "myClientExecutable"],
|
||||
["Server", "myServerExecutable"]
|
||||
],
|
||||
|
||||
"extraData": [
|
||||
["Client", "./path/to/clientConfig.conf"],
|
||||
["Server", "./path/to/serverConfig.conf"]
|
||||
],
|
||||
"extraDataOut": [
|
||||
["Client", "defaultConfigurations"],
|
||||
["Server", "defaultConfigurations"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
This config create a distribution with two appications (client and server). Each application have a own configuration file in the defaultConfigurations folder.
|
@ -1,49 +0,0 @@
|
||||
# Extracting default templates
|
||||
|
||||
Sometimes you need to create your own templates for installers or deb packages.
|
||||
Fot this you can use the getDefaultTemplate option. This option extracts your distribution's default template to the target directory. This option will generate a template according to your settings. If you use the targetPackage option then a template will be generated for each package you configured.
|
||||
|
||||
### Example:
|
||||
|
||||
``` bash
|
||||
cqtdeployer -bin myExecutable getDefaultTemplate qif
|
||||
```
|
||||
This command generate template for qt installer framework into DistributionKit folder for your "myExecutable" programm.
|
||||
|
||||
If you want change target location just add the targetDir option
|
||||
``` bash
|
||||
cqtdeployer -bin myExecutable getDefaultTemplate qif -targetDir "/distanation/Dir"
|
||||
|
||||
```
|
||||
|
||||
## Work With multipackage distribution.
|
||||
|
||||
This option support the configFile.json
|
||||
|
||||
### Example :
|
||||
|
||||
#### configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
"bin": [
|
||||
"myClientExecutable",
|
||||
"myServerExecutable"
|
||||
],
|
||||
|
||||
"targetPackage" : [
|
||||
["Client", "myClientExecutable"],
|
||||
["Server", "myServerExecutable"]
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif -confFile "path/to/configFile.json"
|
||||
```
|
||||
|
||||
|
||||
## Note
|
||||
This option support work with all packages except of zip.
|
||||
If you want get more information about available packages see the packing [page](Packing.md).
|
550
md/en/Guide.md
@ -1,550 +0,0 @@
|
||||
# How to deploy
|
||||
|
||||
How to deploy C++ Application
|
||||
|
||||
|
||||
In this article i describe deploy processes of c++/qt application with cqtdeployer.
|
||||
|
||||
## Recommendation
|
||||
If you want maximum stability of your distribution and you want to run your application on different Distributions with a different versions then you need to use Qt from official [build](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5).
|
||||
|
||||
## Case
|
||||
In this case we deploy Qt GUI Application for Ubuntu 16.04,Ubuntu 18.04 and Ubuntu 20.04 ++.
|
||||
|
||||
**If you want support all distributions begin from Ubuntu 16.04 you need build and deploy you application on the older distribution (in my case it is 16.04)**
|
||||
|
||||
## Install CQtDeployer
|
||||
If you want use system qt from your OS then install [classic](https://github.com/QuasarApp/CQtDeployer/releases/download/1.4.7/LinuxInstaller.run) version of the cqtdeployer.
|
||||
|
||||
```bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.4.7/LinuxInstaller.run
|
||||
```
|
||||
|
||||
```
|
||||
chmod +x LinuxInstaller.run
|
||||
./LinuxInstaller.run
|
||||
```
|
||||

|
||||
|
||||
Select latest stable version (1.4)
|
||||
|
||||

|
||||
|
||||
Done.
|
||||
|
||||
If You use official qt build then you can use snap version of the cqtdeployer.
|
||||
|
||||
```
|
||||
sudo snap install cqtdeployer
|
||||
```
|
||||
|
||||
After install add requirement permissions.
|
||||
|
||||
```
|
||||
sudo snap connect cqtdeployer:process-control
|
||||
sudo snap connect cqtdeployer:removable-media
|
||||
sudo snap connect cqtdeployer:system-backup
|
||||
```
|
||||
|
||||
Done!!!
|
||||
|
||||
## Deploy Qt GUI Application
|
||||
|
||||
### Deploy your executable file.
|
||||
|
||||
* For Linux systems:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable
|
||||
```
|
||||
|
||||
* For Windows systems:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake C:/Qt/5.15.0/min_gw/bin/qmake.exe
|
||||
```
|
||||
|
||||
* For crossplatform build (Linux -> Windows)
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake ~/crossbuildet-Qt/5.15.0/min_gw/bin/qmake
|
||||
```
|
||||
|
||||
## Extra options
|
||||
|
||||
If you use extra libraries, just add path for cqtdeployer to used libs.
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs
|
||||
```
|
||||
|
||||
If you want find libraries recursively from libDir path, just add recursive Depth option.
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5
|
||||
```
|
||||
|
||||
If you application use qml, just add qmlDir option
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources
|
||||
```
|
||||
|
||||
If you want create simple installer for your application just add gif option.
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif
|
||||
```
|
||||
|
||||
If cqtdeployer not found qmake then add the -qmake option to an invoke command.
|
||||
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif -qmake /path/to/my/qmake
|
||||
|
||||
```
|
||||
|
||||
|
||||
# Using a live animation example from [Qt Examples](https://doc.qt.io/qt-5/qtquick-animation-example.html)
|
||||
|
||||
## Build the project as a release
|
||||
|
||||
Run qmake with the -r option for release build
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.152/quick/animation$ ~/Qt/5.15.2/gcc_64/binqmake -r .
|
||||
```
|
||||
|
||||
Call your make command.
|
||||
|
||||
For Linux:
|
||||
|
||||
```bash
|
||||
make -j${nproc}
|
||||
```
|
||||
|
||||
For Windows
|
||||
|
||||
```bash
|
||||
Qt/Tools/QtCreator/bin/jom.exe
|
||||
```
|
||||
|
||||
Build log:
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ make -j${nproc}
|
||||
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../../../5.15.2/gcc_64/include -I../../../../5.15.2/gcc_64/include/QtQuick -I../../../../5.15.2/gcc_64/include/QtGui -I../../../../5.15.2/gcc_64/include/QtQmlModels -I../../../../5.15.2/gcc_64/include/QtQml -I../../../../5.15.2/gcc_64/include/QtNetwork -I../../../../5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I../../../../5.15.2/gcc_64/mkspecs/linux-g++ -o main.o main.cpp
|
||||
/home/andrei/Qt/5.15.2/gcc_64/bin/rcc -name shared ../shared/shared.qrc -o qrc_shared.cpp
|
||||
/home/andrei/Qt/5.15.2/gcc_64/bin/rcc -name animation animation.qrc -o qrc_animation.cpp
|
||||
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../../../5.15.2/gcc_64/include -I../../../../5.15.2/gcc_64/include/QtQuick -I../../../../5.15.2/gcc_64/include/QtGui -I../../../../5.15.2/gcc_64/include/QtQmlModels -I../../../../5.15.2/gcc_64/include/QtQml -I../../../../5.15.2/gcc_64/include/QtNetwork -I../../../../5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I../../../../5.15.2/gcc_64/mkspecs/linux-g++ -o qrc_animation.o qrc_animation.cpp
|
||||
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../../../5.15.2/gcc_64/include -I../../../../5.15.2/gcc_64/include/QtQuick -I../../../../5.15.2/gcc_64/include/QtGui -I../../../../5.15.2/gcc_64/include/QtQmlModels -I../../../../5.15.2/gcc_64/include/QtQml -I../../../../5.15.2/gcc_64/include/QtNetwork -I../../../../5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I../../../../5.15.2/gcc_64/mkspecs/linux-g++ -o qrc_shared.o qrc_shared.cpp
|
||||
g++ -Wl,-O1 -Wl,-rpath,/home/andrei/Qt/5.15.2/gcc_64/lib -o animation main.o qrc_shared.o qrc_animation.o /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Quick.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Gui.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QmlModels.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Qml.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Network.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Core.so -lGL -lpthread
|
||||
```
|
||||
|
||||
## Find our resulting executable file
|
||||
|
||||
If you built the project using qtCreator, your executable file will be found one level higher in the **build-animations-Desktop_Qt_5_15_2_GCC_64bit-Release** folder. In my case, the executable file is located in the root directory of the project.
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ tree
|
||||
.
|
||||
├── animation # Here it is.
|
||||
├── animation.pro
|
||||
├── animation.qml
|
||||
├── animation.qmlproject
|
||||
├── animation.qrc
|
||||
├── basics
|
||||
│ ├── animators.qml
|
||||
│ ├── color-animation.qml
|
||||
│ ├── images
|
||||
│ │ ├── face-smile.png
|
||||
│ │ ├── moon.png
|
||||
│ │ ├── shadow.png
|
||||
│ │ ├── star.png
|
||||
│ │ └── sun.png
|
||||
│ └── property-animation.qml
|
||||
├── behaviors
|
||||
│ ├── behavior-example.qml
|
||||
│ ├── FocusRect.qml
|
||||
│ ├── SideRect.qml
|
||||
│ ├── tvtennis.qml
|
||||
│ └── wigglytext.qml
|
||||
├── doc
|
||||
│ ├── images
|
||||
│ │ └── qml-animations-example.png
|
||||
│ └── src
|
||||
│ └── animation.qdoc
|
||||
├── easing
|
||||
│ └── easing.qml
|
||||
├── main.cpp
|
||||
├── main.o
|
||||
├── Makefile
|
||||
├── pathanimation
|
||||
│ └── pathanimation.qml
|
||||
├── pathinterpolator
|
||||
│ └── pathinterpolator.qml
|
||||
├── qrc_animation.cpp
|
||||
├── qrc_animation.o
|
||||
├── qrc_shared.cpp
|
||||
├── qrc_shared.o
|
||||
└── states
|
||||
├── qt-logo.png
|
||||
├── states.qml
|
||||
└── transitions.qml
|
||||
|
||||
10 directories, 33 files
|
||||
```
|
||||
|
||||
## Call cqtdeployer to form the base distribution
|
||||
|
||||
For Linux:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin animation -qmlDir . qif -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
```
|
||||
|
||||
For Windows:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin animation -qmlDir . qif -qmake ~/Qt/5.15.2/mingw_810_64/bin/qmake.exe
|
||||
```
|
||||
|
||||
Deploy log:
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ cqtdeployer -bin animation -qmlDir . qif -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
Info: Deploy ...
|
||||
Info: flag targetDir not used. use default target dir :/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit
|
||||
Info: target deploy started!!
|
||||
Info: copy :/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/animation
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/libqmlplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/Models.2/libmodelsplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/Models.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/Models.2/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/RemoteObjects/libqtqmlremoteobjects.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/RemoteObjects/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/RemoteObjects/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/StateMachine/libqtqmlstatemachine.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/StateMachine/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/StateMachine/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/WorkerScript.2/libworkerscriptplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/WorkerScript.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/WorkerScript.2/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick/Particles.2/libparticlesplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick/Particles.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick/Particles.2/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick.2/libqtquick2plugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick.2/qmldir
|
||||
Info: platform : libqvnc is disabled
|
||||
Info: platform : libqvnc is disabled
|
||||
Info: platform : libqwebgl is disabled
|
||||
Info: platform : libqwebgl is disabled
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/bearer/libqconnmanbearer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/bearer/libqgenericbearer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/bearer/libqnmbearer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/iconengines/libqsvgicon.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqgif.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqicns.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqico.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqjpeg.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqsvg.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqtga.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqtiff.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqwbmp.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqwebp.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqeglfs.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqlinuxfb.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqminimal.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqminimalegl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqoffscreen.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-generic.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-xcomposite-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-xcomposite-glx.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platformthemes/libqgtk3.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platformthemes/libqxdgdesktopportal.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-decoration-client/libbradient.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libdmabuf-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libdrm-egl-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libshm-emulation-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libvulkan-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libxcomposite-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libxcomposite-glx.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-dmabuf-server-buffer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-drm-egl-server-buffer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-linux-dmabuf-unstable-v1.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-shm-emulation-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-vulkan-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-wayland-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-wayland-eglstream-controller.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-xcomposite-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-xcomposite-glx.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libfullscreen-shell-v1.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libivi-shell.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libwl-shell.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libxdg-shell-v5.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libxdg-shell-v6.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libxdg-shell.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/xcbglintegrations/libqxcb-egl-integration.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/xcbglintegrations/libqxcb-glx-integration.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Core.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Network.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5EglFSDeviceIntegration.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5XcbQpa.so.5
|
||||
Info: copy :/home/andrei/CQtDeployer/1.5/lib/libicui18n.so.56
|
||||
Info: copy :/usr/lib/x86_64-linux-gnu/libxcb-xinerama.so.0
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5RemoteObjects.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QuickParticles.so.5
|
||||
Info: copy :/home/andrei/CQtDeployer/1.5/lib/libicudata.so.56
|
||||
Info: copy :/home/andrei/CQtDeployer/1.5/lib/libicuuc.so.56
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QmlWorkerScript.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Widgets.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5WaylandClient.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5DBus.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Qml.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Quick.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QmlModels.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Gui.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Svg.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5WaylandCompositor.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ar.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_bg.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ca.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_cs.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_da.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_de.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_en.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_es.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_fi.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_fr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_gd.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_he.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_hu.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_it.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ja.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ko.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_lv.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_pl.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ru.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_sk.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_tr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_uk.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_zh_TW.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_bg.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_da.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_de.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_en.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_es.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_fi.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_fr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_hu.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_ja.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_ko.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_lv.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_pl.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_ru.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_sk.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_tr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_uk.qm
|
||||
Info: try deploy msvc
|
||||
Info: deploy done!
|
||||
Info: copy ::/shared/Distributions/Templates/Icon.png
|
||||
Error: not exits
|
||||
Info: [0] Parsed arguments, ok.
|
||||
Info: [2] Collecting information about available packages...
|
||||
Info: [4] Found subdirectory "Application"
|
||||
Info: [4] - it provides the package "Application" - "1.0"
|
||||
Info: [4] Copying component data for "Application"
|
||||
Info: [5] Compressing data directory "bin"
|
||||
Info: [21] Compressing data directory "icons"
|
||||
Info: [31] Compressing data directory "lib"
|
||||
Info: [11111] Compressing data directory "plugins"
|
||||
Info: [11740] Compressing data directory "qml"
|
||||
Info: [11786] Compressing data directory "translations"
|
||||
Info: [12321] Compressing files found in data directory: ("/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/packages/Application/data/animation.sh")
|
||||
Info: [12321] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z.sha1"
|
||||
[12321] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z"
|
||||
Info: [12321] Generated sha1 hash: "0af6cb9dc074407a8857403f07d13aa7d1b3c9cb"
|
||||
Info: [12322] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z.sha1"
|
||||
[12322] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z"
|
||||
Info: [12322] Generated sha1 hash: "aa938cb332bfb427a6d0280c07c204c1bb48da22"
|
||||
Info: [12322] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z.sha1"
|
||||
[12322] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z"
|
||||
Info: [12347] Generated sha1 hash: "7c3a43111e694bc82a0ab0d19a6e4d0025f17313"
|
||||
Info: [12347] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z.sha1"
|
||||
[12347] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z"
|
||||
Info: [12349] Generated sha1 hash: "4ed23c36835a9b62701478ab6897737dfe9dfc9a"
|
||||
Info: [12349] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z.sha1"
|
||||
Info: [12349] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z"
|
||||
Info: [12349] Generated sha1 hash: "bd44e15d2c26c8f6cb50760032eadf0241eedf43"
|
||||
Info: [12349] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z.sha1"
|
||||
[12349] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z"
|
||||
Info: [12350] Generated sha1 hash: "030e0ede0c0e058a5d5a3b6c43c6a4767119d3f1"
|
||||
Info: [12350] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0content.7z.sha1"
|
||||
Info: [12350] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0content.7z"
|
||||
Info: [12350] Generated sha1 hash: "acd2cd63e77971acedbcda2a65f93b2cc036025f"
|
||||
Info: [12350] Copy meta data for package "Application" using "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/packages/Application/meta/package.xml"
|
||||
Info: [12350] calculate size of directory "/tmp/binarycreator-yOPMPa/Application/data"
|
||||
Info: [12359] Copying associated "script" file "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/packages/Application/meta/installscript.qs"
|
||||
Info: [12360] done.
|
||||
Info: [12360] Begin to copy configuration file and data.
|
||||
Info: [12360] Copying associated "configuration" file "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/config/config.xml"
|
||||
Info: [12360] done.
|
||||
Info: [12360] Read dom element: <Name>animation</Name>.
|
||||
Info: [12360] Read dom element: <Version>1.0</Version>.
|
||||
Info: [12360] Read dom element: <Title>animation</Title>.
|
||||
Info: [12360] Read dom element: <Publisher>Company</Publisher>.
|
||||
[12360] Read dom element: <StartMenuDir>animation</StartMenuDir>.
|
||||
[12360] Read dom element: <TargetDir>@HomeDir@/animation</TargetDir>.
|
||||
Info: [12360] Read dom element: <InstallActionColumnVisible>true</InstallActionColumnVisible>.
|
||||
[12360] Read dom element: <RemoveTargetDir>true</RemoveTargetDir>.
|
||||
Info: [12360] Read dom element: <ControlScript>controlScript.qs</ControlScript>.
|
||||
Info: [12360] Copying associated "ControlScript" file "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/config/controlScript.qs"
|
||||
Info: [12360] done.
|
||||
Info: [12360] Read dom element: <MaintenanceToolName>animationTool</MaintenanceToolName>.
|
||||
[12360] Read dom element: <ProductUrl></ProductUrl>.
|
||||
Info: [12360] done.
|
||||
Info: [12362] Creating the binary
|
||||
Info: [12407] Creating resource archive for "Application"
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z" ("61.58 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z" ("108.00 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z" ("18.08 MB")
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z" ("1.08 MB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z" ("53.29 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z.sha1" ("40.00 bytes")
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z" ("595.71 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0content.7z" ("439.00 bytes")
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0content.7z.sha1" ("40.00 bytes")
|
||||
Info: [12449] Cleaning up...
|
||||
```
|
||||
|
||||
Done. The distribution has been saved to the **DistributionKit** folder
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ ./DistributionKit/Installeranimation.run
|
||||
```
|
||||

|
||||
|
||||
After installation, all the necessary shortcuts will be created.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
## Integration with QtCreator
|
||||
|
||||
Unfortunately, there is currently no integration with qtcreator.
|
||||
The only way is to enable build target for ** qmake ** or ** cmake **
|
||||
|
||||
### qmake
|
||||
|
||||
```qmake
|
||||
QT_DIR= $$[QT_HOST_BINS]
|
||||
win32:QMAKE_BIN= $$QT_DIR/qmake.exe
|
||||
contains(QMAKE_HOST.os, Linux):{
|
||||
QMAKE_BIN= $$QT_DIR/qmake
|
||||
}
|
||||
|
||||
deploy.commands= cqtdeployer -bin $$DESTDIR/$$TARGET -qmake $$QMAKE_BIN -libDir $$PWD -qmlDir $$PWD -recursiveDepth 5 qif
|
||||
|
||||
QMAKE_EXTRA_TARGETS += deploy
|
||||
|
||||
```
|
||||
|
||||
### cmake
|
||||
|
||||
```cmake
|
||||
find_program(Q_MAKE_EXE qmake)
|
||||
|
||||
find_program(CQT_EXE cqtdeployer)
|
||||
|
||||
IF(NOT EXISTS ${CQT_EXE})
|
||||
message("the cqtdeployer not exits please install the cqtdeployer and run cmake again!")
|
||||
return()
|
||||
endif(NOT EXISTS ${CQT_EXE})
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
deploy
|
||||
COMMAND cqtdeployer clear -bin ${CURENT_PROJECT} -qmake ${Q_MAKE_EXE} -libDir ${PROJECT_SOURCE_DIR} -qmlDir ${PROJECT_SOURCE_DIR} -recursiveDepth 5
|
||||
COMMENT "Deploy: cqtdeployer clear -bin ${CURENT_PROJECT} -qmake ${Q_MAKE_EXE} -libDir ${PROJECT_SOURCE_DIR} -qmlDir ${PROJECT_SOURCE_DIR} -recursiveDepth 5"
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
```
|
||||
|
||||
The **libDir** parameter is used to set the paths to the directory paths contain dependencies of your application, and the **qmlDir** parameter is used to set the directory paths contain the qml files required by your application. In this example, the application source code root is selected by these two options.
|
||||
The **recursiveDepth** parameter is used to set the search depth of **libDir** and **qmlDir**.
|
||||
The **qif** parameter is used to create a installer using Qt Installer Framework.
|
||||
|
||||
|
||||
## Integration example
|
||||
Create a test project
|
||||
|
||||
```qmake
|
||||
|
||||
QT += quick
|
||||
|
||||
CONFIG += c++11
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
|
||||
RESOURCES += qml.qrc
|
||||
|
||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||
QML_IMPORT_PATH =
|
||||
|
||||
# Additional import path used to resolve QML modules just for Qt Quick Designer
|
||||
QML_DESIGNER_IMPORT_PATH =
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
|
||||
|
||||
QT_DIR= $$[QT_HOST_BINS]
|
||||
win32:QMAKE_BIN= $$QT_DIR/qmake.exe
|
||||
contains(QMAKE_HOST.os, Linux):{
|
||||
QMAKE_BIN= $$QT_DIR/qmake
|
||||
}
|
||||
|
||||
DESTDIR=$$PWD/Build
|
||||
|
||||
deploy.commands= cqtdeployer -bin $$DESTDIR/$$TARGET -qmake $$QMAKE_BIN -libDir $$PWD -qmlDir $$PWD -recursiveDepth 5 qif
|
||||
|
||||
QMAKE_EXTRA_TARGETS += deploy
|
||||
|
||||
```
|
||||
|
||||
2. Open the project control panel
|
||||

|
||||
|
||||
3. Choose a release build
|
||||

|
||||
|
||||
|
||||
3. Add "Custom build step"
|
||||

|
||||
|
||||
4. In the "Make arguments" field, add our "deploy" deployment step
|
||||

|
||||
|
||||
5. Save
|
||||
6. Start the building
|
||||
|
||||
#### As a result, you will receive a DistributionKit folder with the installer of your application.
|
@ -1,26 +0,0 @@
|
||||
# Welcome to the "C Qt Deployer"!
|
||||
# 
|
||||
|
||||
***************************
|
||||
|
||||
# Main sections
|
||||
|
||||
* [Description CQtDeployer](Description.md)
|
||||
* [Options](Options.md)
|
||||
* [Guide](Guide.md)
|
||||
* [Quick guide](QuickGuide.md)
|
||||
* [Build and Install](Build-and-Install.md)
|
||||
* [Deploy file](DeployConfigFile.md)
|
||||
* [Packing](Packing.md)
|
||||
* [Change log page](Changelog.md)
|
||||
* [Reviews](ReleaseReviews.md)
|
||||
* [Compare Features](CompareFeatures.md)
|
||||
* [Adding extra files](ExtraFiles.md)
|
||||
* [Retrieving packaging templates](ExtractDefaultsTemplates.md)
|
||||
* [Default Environment Variables](EnvironmentVariables.md)
|
||||
* [Disable standard shortcuts ](DisableShortcats.md)
|
||||
* [Custom scripts](CustomScripts.md)
|
||||
|
||||
|
||||
## Support the project
|
||||
If you like what we do and it benefits you, you can support the project on the official page [QuasarApp in Patreon](https://www.patreon.com/QuasarApp)
|
174
md/en/Options.md
@ -1,174 +0,0 @@
|
||||
# Options general rules
|
||||
|
||||
General rules for using options
|
||||
|
||||
```
|
||||
cqtdeployer -option1 value1 -option2 list, of, values flag1 flag2 flag3
|
||||
```
|
||||
|
||||
* All options must begin with a '-' sign.
|
||||
* After specifying the desired option, you must specify the value.
|
||||
* Some options support enumerations (arrays of values). When initializing such options, specify the list of values through ',' without spaces. If you use any programming language and call the cqtdeployer process, then the array of values must be passed as 1 parameter.
|
||||
* Some options support redistributions with the ability to select the target for which the flag will be applied. Target and values are separated using the ';' sign. Example -libOut target1;value1,target2;value2,defaultValue.
|
||||
* To include a flag, simply include the flag name in the list of options.
|
||||
|
||||
## Description of values in the table
|
||||
|
||||
* **-binDir [params]** - option without array support.
|
||||
* **-bin [params,list]** - option with support for arrays. The delimiter used is ','.
|
||||
* **-libOut [package;path,path]** - parameter with support for selecting the package for which the flag value is set. As a separator, use ';'. Please note that the rule described above is used to enumerate parameter values. The last parameter does not have a package value, this means that this value will be set for all non-configured packages by default.
|
||||
* **clear** - boolean option
|
||||
|
||||
## Definitions in description
|
||||
|
||||
**System environments** - paths of directories containing the system libraries.
|
||||
* Windows:
|
||||
* Paths defined in the PATH variable.
|
||||
* C:/Windows/System32
|
||||
* C:/Windows/SysWOW64
|
||||
* Linux:
|
||||
* Paths defined in the LD_LIBRARY_PATH and PATH variables.
|
||||
* /usr/lib
|
||||
* /lib
|
||||
|
||||
**Deployable files** - all file that will be copied into distribution (include executable files)
|
||||
|
||||
**Targets** - all executable files marked by bin option.
|
||||
|
||||
**Executable files** - all files with PE, ELF and Mach-O formats.
|
||||
|
||||
## Options:
|
||||
|
||||
### Boolean options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| init | will initialize cqtdeployer.json file (configuration file)|
|
||||
| | For example: "cqtdeployer init" - for initialize base package configuration|
|
||||
| | "cqtdeployer -init multi" - for initialize multi package configuration|
|
||||
| | "cqtdeployer -init single" - for initialize single package configuration |
|
||||
| help / h | Shows help. |
|
||||
| clear | Deletes deployable files of the previous session.
|
||||
| force-clear | Deletes the destination directory before deployment. |
|
||||
| noStrip | Skips strip step |
|
||||
| noTranslations | Skips the translations files. |
|
||||
| | It doesn't work without qmake and inside a snap package |
|
||||
| noOverwrite | Prevents replacing existing files. |
|
||||
| noCheckRPATH | Disables automatic search of paths to qmake in executable files.|
|
||||
| noCheckPATH | Disables automatic search of paths to qmake in system PATH. |
|
||||
| noRecursiveiIgnoreEnv | Disables recursive ignore for ignoreEnv option. |
|
||||
| v / version | Shows compiled version |
|
||||
| qif | Create the QIF installer for deployment programm" |
|
||||
| | Example: cqtdeployer qif" }, |
|
||||
| | Starting with CQtDeployer 1.5 you can specify the path to your own installer template. |
|
||||
| | Examples: cqtdeployer -qif path/to/myCustom/qif. More details can be found [here](QIF.md) |
|
||||
| deb | Create the deb package for deployment programm" |
|
||||
| | Example: cqtdeployer deb" }, |
|
||||
| | you can specify the path to your own DEBIAN template. |
|
||||
| | Examples: cqtdeployer -deb path/to/myCustom/DEBIAN. More details can be found [here](DEB.md) |
|
||||
| deploySystem | Deploys all libraries not recomendet because there may be conflicts with system libraries |
|
||||
| noQt | Ignors the error of initialize of a qmake. Use only if your application does not use the qt framework. |
|
||||
| allowEmptyPackages | Allows configure the empty packages. |
|
||||
| getDefaultTemplate | Extracts defaults deb or qif templates. For more information see the extracting default templates [page](ExtractDefaultsTemplates.md) |
|
||||
| noHashSum | Disable computation of a packages hash sum |
|
||||
|
||||
|
||||
### Deploy options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -bin [list,params] | Files to deploy or folders that contain files to deploy. For example -bin ~/my/project/bin/,~/my/project/bin.exe,~/my/project/runtimeLinking/lib.dll. For files: These files will be unconditional copied to the destination directory, regardless of their format or suffix. For folders: CQtDeployer will enter these folders and non-recursively copy all executable files to the destination directory. Then, CQtDeployer will extract all dependencies of the copied files and search dependencies in system environments and **libDir** paths. **Note**: If CQtDeployer can't find required file then CQtDeployer try find required file in the system PATH enviroment.|
|
||||
| -binPrefix [prefixPath] | Sets prefix path for bin option. Example: **-bin path/MyExecutable** is some as **-bin MyExecutable -binPrefix path** |
|
||||
| -confFile [params] | The path to the json file with all deployment configurations.|
|
||||
| | Using this file, you can add the necessary options, |
|
||||
| | thereby simplifying in the command invocation the console. |
|
||||
| | However, the parameters in Kansol have a higher priority than in the file.|
|
||||
| | For more info about this flag see [wiki](DeployConfigFile) |
|
||||
| -qmlDir [params] | Qml data dir. For example -qmlDir ~/my/project/qml |
|
||||
| -qmake [params] | Qmake path. For example |
|
||||
| | -qmake ~/Qt/5.14.0/gcc_64/bin/qmake |
|
||||
| -ignore [list,params] | The list of libs to ignore. |
|
||||
| | For example -ignore libicudata.so.56,libicudata2.so.56 |
|
||||
| -ignoreEnv [list,params] | The list of the environment to ignore. |
|
||||
| | For example -ignoreEnv /bad/dir,/my/bad/Dir |
|
||||
| -libDir [list,params] | Sets additional paths for extra libs of an app. |
|
||||
| | For example -libDir ~/myLib,~/newLibs. **Attention** the libDir option should not be children of the targetDir directory. The targetDir option is forbidden for library searches, as it may contain outdated project libraries, which in turn may lead to unwanted crashes. |
|
||||
| -extraLibs [list,params] | Sets the mask of the library name for forced copying. |
|
||||
| | Example: "-extraLib mySql" - forces to copy all libraries whose names contain mySql to the project folder. This option is case-insensitive on Windows and case-sensitive on other platforms. This option will only search libraries in system environments similar to **deploySystem**.|
|
||||
| -customScript [scriptCode]| Insert extra code inTo All run script. |
|
||||
| -extraPlugin [list,params]| Sets an additional path to extraPlugin of an app |
|
||||
| -recursiveDepth [params] | Sets the Depth of recursive search of libs and ignoreEnv (default 0) |
|
||||
| -targetDir [params] | Sets target directory(by default it is the path to the first deployable file)|
|
||||
| -installDirDeb [params] | Sets install target directory fordebian package (by default it is /opt path) |
|
||||
| -installDirQIFW [params] | Sets install target directory for installers (by default it is /home path) |
|
||||
| -verbose [0-3] | Shows debug log. By default it is 2 |
|
||||
| -platform [list] | If this option is enabled then CQtDeployer will deploy only binaries of a selected platform. Supported values: [win_x86 win_x86_64 win_arm win_arm64 linux_x86 linux_x86_64 linux_ARM linux_ARM64] |
|
||||
|
||||
### Controll of packages options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -targetPackage [package;tar1,package;tar2]| Creates a new package and adds 'tar1 and tar2' to it |
|
||||
| -qmlOut [package;path,path] | Sets path to qml out directory |
|
||||
| -libOut [package;path,path] | Sets path to libraries out directory |
|
||||
| -trOut [package;path,path] | Sets path to translations out directory |
|
||||
| -pluginOut [package;path,path]| Sets path to plugins out directory |
|
||||
| -binOut [package;path,path] | Sets path to binary out directory |
|
||||
| -recOut [package;path,path] | Sets path to recurses out directory |
|
||||
| -extraDataOut [package;path,path] | Sets path to extra data files out directory. By Default it is root dir of the distribution. |
|
||||
| -name [package;val,val] | Sets name for package. If this if you do not specify a package, the value will be assigned to the default package ("")|
|
||||
| -description [package;val,val] | Sets description for package |
|
||||
| -deployVersion [package;val,val] | Sets version for package |
|
||||
| -releaseDate [package;val,val] | Sets release date for package |
|
||||
| -publisher [package;val,val]| Sets publisher for package |
|
||||
| -homePage [package;val,val] | Sets the homepage url for a package |
|
||||
| -prefix [package;val,val] | Sets the prefix for the package relatively a target directory |
|
||||
| -extraData [package;val,val]| Adds the extra files or directories like a target. The selected directory will be copy to the extraDataOut location with save own structure.|
|
||||
| -tr [package;val,val] | Adds qm files into the translations folder. |
|
||||
|
||||
### Controll of targets options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -icon [target;val,val] | Sets path to icon for a targets. This option support only png (Linux) and ico (Windows) files. |
|
||||
| -disableRunScript [target,target2,target3] | Disables the generation of run script for selected targets|
|
||||
| -disableShortCut [target,target2,target3] | Disables the generation of shortcut for selected targets |
|
||||
| -runScript [target;val,val] | forces cqtdeployer swap default run script to new from the arguments of option. This option copy all content from input file and insert all code into runScript.sh or .bat. Example of use: cqtdeployer -runScript "myTargetMame;path/to/my/myCustomLaunchScript.sh,myTargetSecondMame;path/to/my/mySecondCustomLaunchScript.sh" For get more information about customScript see the documentation [page](CustomScripts.md)|
|
||||
|
||||
### Plugins Controll Options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -extraPlugin [package;val1;val2,SingeleVal]| Sets an additional path to third-party application plug-in |
|
||||
| -enablePlugins [package;val1;val2,SingeleVal] | Enables additional plugins for distribution. |
|
||||
| -disablePlugins [package;val1;val2,SingeleVal]| Disables plugins for distribution. |
|
||||
| |You can disable any plugin of your Qt build, just see the yourQtFolder/plugins forlder for available plugins.|
|
||||
| |Example: if you want disable qxcb plugin: -disablePlugins qxcb. Note that the name of the plugin is indicated without its extension.|
|
||||
|
||||
### QtInstallFramework options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -qifStyle [path/to/style.css]| Sets the path to the CSS style file or sets the default style. Available styles: quasar |
|
||||
| -qifBanner [path/to/banner.png]| Sets path to the banner png file. |
|
||||
| -qifLogo [path/to/logo.png]| Sets path to the logo png file. |
|
||||
| -qifOut [nameOfOutputInstallerFile] | Sets name of output qifw installer. Note: on Windows, the exe suffix will be added to the installer automatically. |
|
||||
| -qifConfig [path/to/config.xml] | Sets a custom path to the configure file of the qt ifw installer. By default it is qif/config/config.xml. Note This path sets releative target folder (sets by TargetDir option). |
|
||||
| -qifPackages [path/to/packagesFodoler] | Sets a custom path to the packages directories. By default it is qif/packages. Note This path sets releative target folder (sets by TargetDir option). |
|
||||
| -qifResources [path/to/resources1.qrc,path/to/resources2.qrc] | Sets a custom path to the resources files. By default this option is skipped. Note This path sets releative target folder (sets by TargetDir option). |
|
||||
| -qifArchiveFormat [7z,zip,tar,tar.gz,tar.bz2,tar.xz] | Sets the format used when packaging new component data archives. If you omit this option, the 7z format will be used as a default. |
|
||||
| -binarycreator [binarycreator command] | Sets new binarycreator command. Example : cqtdeployer -bin my.exe qifw -binarycreator 'wine path/to/binarycreator.exe'|
|
||||
|
||||
### Deb package options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -debOut [package;nameOfOutputDebFile,nameOfOutputDebFile]| Sets name of the output debian file. This option can be work with multiple packages |
|
||||
|
||||
### Zip pacakge options
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -zipOut [package;nameOfOutputZipFile,nameOfOutputZipFile]| Sets name of the output zip arrhive. This option can be work with multiple packages |
|
||||
|
||||
#### Example: cqtdeployer -bin myApp -qmlDir ~/MyAppProject/qml -qmake ~/Qt/5.15.4/gcc_64/bin/qmake clear
|
139
md/en/Packing.md
@ -1,139 +0,0 @@
|
||||
# Packaging distributions
|
||||
|
||||
General information on packaging your distributions in packages.
|
||||
|
||||
## Packaging Types
|
||||
|
||||
* Automatic
|
||||
* Manual
|
||||
|
||||
## Automatic Packages
|
||||
|
||||
Packages with this type creates automaticly.
|
||||
By default the distribution have a one main package. You can configure it using [Controll of packages options](Options.md).
|
||||
|
||||
#### Example (Set new name for pacakge)
|
||||
|
||||
```
|
||||
ctdeployer ... -name "MyPackage"
|
||||
```
|
||||
|
||||
If your distribution have a multiple executable files then you can be create a distribution with multiple package.
|
||||
|
||||
One package can contain from 1 to infinity of executable files.
|
||||
|
||||
For configure a package you must be use the targetPackage option.
|
||||
|
||||
Example of using:
|
||||
|
||||
```
|
||||
cqtdeployer ... -targetPackage myPacage;target1,myPacage2;target2
|
||||
```
|
||||
|
||||
Where myPacage is a name of package and target1 is a name of executable file.
|
||||
so This example create 2 packages from 2 targets.
|
||||
|
||||
The Next example create a 2 packages from 3 targets.
|
||||
```
|
||||
cqtdeployer ... -targetPackage myPacage;target1,myPacage;target2,myPacage2;target3
|
||||
```
|
||||
|
||||
|
||||
You can also do the same in the config file
|
||||
|
||||
```
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"myPacage",
|
||||
"target1"
|
||||
],
|
||||
[
|
||||
"myPacage2",
|
||||
"target2"
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"myPacage",
|
||||
"target1"
|
||||
],
|
||||
[
|
||||
"myPacage",
|
||||
"target2"
|
||||
],
|
||||
[
|
||||
"myPacage2",
|
||||
"target3"
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Manual Packages
|
||||
|
||||
Manual packages is packages created by user template.
|
||||
For example you have a aplication that must be execute a complex script on the debian package or the installer.
|
||||
So you need to create your template and add tehe path to you template for a package option.
|
||||
|
||||
Example
|
||||
|
||||
```
|
||||
cqtdeployer ... -qif /path/to/my/template/installer
|
||||
```
|
||||
|
||||
The /path/to/my/template/installer folder must be contains a folder with the package name.
|
||||
for example i am deploy application with the "MyExample" name, so my custom template must be locate in the
|
||||
/path/to/my/template/installer/MyExample path.
|
||||
|
||||
For multi-package distributions, the same rules apply.
|
||||
|
||||
Your folder with the templates must be contains folders with same names as packages.
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"myPacage",
|
||||
"target1"
|
||||
],
|
||||
[
|
||||
"myPacage",
|
||||
"target2"
|
||||
],
|
||||
[
|
||||
"myPacage2",
|
||||
"target3"
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
~/path/to/my/template/installer$ tree
|
||||
.
|
||||
├── myPacage
|
||||
│ └── ...
|
||||
└── myPacage2
|
||||
└── ...
|
||||
|
||||
```
|
||||
|
||||
### Note
|
||||
|
||||
You can also extract the standard package template in order to override it if for some reason you are not satisfied with the standard implementation. See this [page](ExtractDefaultsTemplates.md) for details on how to do this
|
||||
|
||||
|
||||
## Available packages
|
||||
|
||||
* [Qt Install Framework](QIF.md)
|
||||
* [ZIP Arhive](ZIP.md)
|
||||
* [DEB Package](DEB.md)
|
176
md/en/QIF.md
@ -1,176 +0,0 @@
|
||||
# Qt Installer Framwork
|
||||
|
||||
General rules for using Qt Installer Framwork
|
||||
|
||||
### What is Qt Installer Framwork
|
||||
|
||||
The **Qt Installer Framework** (QIF) provides a set of tools and utilities to create installers for the supported desktop Qt platforms: Linux, Microsoft Windows, and OS X.
|
||||
In **CQtDeployer** QIF availabel in qif option.
|
||||
|
||||
### How to use qif option
|
||||
|
||||
The qif option invoke with path to custo qt installer template or with default installer template.
|
||||
|
||||
#### For example:
|
||||
|
||||
```bash
|
||||
cqtdeployer ... qif
|
||||
```
|
||||
|
||||
Where:
|
||||
* **...** - is list of other options.
|
||||
* **qif** - option for use qt installer framework with default template.
|
||||
|
||||
|
||||
By default, cqtdeployer will create an installation file with one package in which your entire distribution kit will lie.
|
||||
If you want to configure it, you should use [Controll of packages options](Options.md)
|
||||
To create a new package, use the -targetPackage [package; tar1] option
|
||||
|
||||
|
||||
Where:
|
||||
|
||||
* **package** - it is package name
|
||||
* **tar1** - it is name of the target that should be included in this package.
|
||||
|
||||
Or you can describe packages in [configuration file](DeployConfigFile.md)
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"package",
|
||||
"tar1"
|
||||
]
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
# Custom Template for QIF
|
||||
|
||||
Starting with CQtDeployer Version 1.5 you can use your own installer template. To do this, you must pass the path to your template to the qif parameter.
|
||||
|
||||
```bash
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template
|
||||
```
|
||||
|
||||
### Template
|
||||
|
||||
The qif template should contain 2 folders:
|
||||
* packages
|
||||
* config
|
||||
|
||||
### Attention
|
||||
|
||||
The name of the packages in the packages folder must match the names of the packages during deployment.
|
||||
|
||||
For example:
|
||||
|
||||
```json
|
||||
"targetPackage": [
|
||||
[
|
||||
"myCustomInstaller",
|
||||
"tar1"
|
||||
]
|
||||
],
|
||||
```
|
||||
|
||||
```bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
||||
|
||||
If the folder names do not match the package names then CQtDeployer will use the standard QIF package.
|
||||
|
||||
If you have only one package then you can use the **name** option for set name the application.
|
||||
|
||||
```bash
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
|
||||
```
|
||||
|
||||
#### Do not forget to rename the your package folder to the packaga name of the name option.
|
||||
|
||||
|
||||
```bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller << "This is folder of the your package"
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
||||
|
||||
## Initialization of the qifw template
|
||||
|
||||
For initialize default templates you can use the getDefaultTemplate option.
|
||||
The getDefaultTemplate option extract default template of the cqtdeployer. This is can be very convinion if you want override default behavior of the installer or anothe distribution package.
|
||||
|
||||
### Example
|
||||
|
||||
### Getting default qt installer framwork template.
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif
|
||||
```
|
||||
|
||||
|
||||
### Note
|
||||
|
||||
CQtDeployer will skip create a packages directory for the template because this commmnad do not contains any deploying data.
|
||||
If you want to prepare template with packages configurations then you should add deployed data to your command or your config.json file using bin or extraData options.
|
||||
If you create multi pacakges distribution then you need to configure your packages in your deploying commnad.
|
||||
|
||||
|
||||
#### Example:
|
||||
|
||||
Extracting template with pacakges:
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif -bin myExecutable
|
||||
```
|
||||
|
||||
Extracting template for multi packages distribution
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif -bin myExecutable1,myExecutable2 -targetPackage p1;myExecutable1,p2;myExecutable2
|
||||
```
|
||||
|
||||
You also can use the config file for configure templates.
|
||||
|
||||
Config.json
|
||||
|
||||
```json
|
||||
{
|
||||
"qif": true,
|
||||
"bin": [
|
||||
"myExecutable1",
|
||||
"myExecutable2"
|
||||
],
|
||||
"targetPackage": [
|
||||
["p1", "myExecutable1"],
|
||||
["p2", "myExecutable2"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Run CQtDeployer for generate template:
|
||||
|
||||
```bash
|
||||
cqtdeployer -confFile Config.json getDefaultTemplate
|
||||
```
|
@ -1,81 +0,0 @@
|
||||
# Quick Guide
|
||||
|
||||
How to deploy project with cqtdeployer.
|
||||
|
||||
1. First one you need to install cqtdeployer into your platform
|
||||
|
||||
* Snap (14 more linux destributions):
|
||||
```
|
||||
sudo snap install cqtdeployer
|
||||
```
|
||||
Or
|
||||
|
||||
Install from snap store and add all requirement permissions.
|
||||
|
||||
[](https://snapcraft.io/cqtdeployer)
|
||||
|
||||
* Other linux [LinuxInstaller.run][1].
|
||||
```
|
||||
chmod +x LinuxInstaller.run
|
||||
./LinuxInstaller.run
|
||||
```
|
||||
|
||||
* Windows [installer][1]
|
||||
|
||||
2. Build your project on release mode.
|
||||
3. Deploy yor executable file.
|
||||
|
||||
* For Linux systems:
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable
|
||||
```
|
||||
|
||||
* For Windows systems:
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake C:/Qt/5.15.0/min_gw/bin/qmake.exe
|
||||
```
|
||||
|
||||
* For crossplatform build (Linux -> Windows)
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake ~/crossbuildet-Qt/5.15.0/min_gw/bin/qmake
|
||||
```
|
||||
|
||||
## Extra options
|
||||
|
||||
If you use extra libraries, just add path for cqtdeployer to used libs.
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs
|
||||
```
|
||||
|
||||
If you want find libraries recursively from libDir path, just add recursive Depth option.
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5
|
||||
```
|
||||
|
||||
If you application use qml, just add qmlDir option
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources
|
||||
```
|
||||
|
||||
If you want create simple installer for your application just add gif option.
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif
|
||||
```
|
||||
|
||||
If you use system libraries from system PATH, just add deploySystem option.
|
||||
|
||||
#### Warning: snap version do not have permision to system files. To deploy system libraries use the cqtdeployer version from the [installer][1]
|
||||
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif deploySystem
|
||||
```
|
||||
|
||||
|
||||
### If you have any problems with use cqtdeployer then ask you questions on the official github issues [page][2].
|
||||
|
||||
### For more options of CQtDeploye see oficial [documentation][3].
|
||||
|
||||
[1]: https://github.com/QuasarApp/CQtDeployer/releases
|
||||
[2]: https://github.com/QuasarApp/CQtDeployer/issues
|
||||
[3]: https://github.com/QuasarApp/CQtDeployer/blob/main/md/en/Options.md
|
||||
|
@ -1,4 +0,0 @@
|
||||
# Release Reviews
|
||||
|
||||
* [Review v1.5](1_5.md)
|
||||
* [Review v1.4 (Binary Box)](1_4.md)
|
47
md/en/ZIP.md
@ -1,47 +0,0 @@
|
||||
# ZIP Using
|
||||
|
||||
General rules for using ZIP
|
||||
|
||||
|
||||
Available from version CQtDeployer 1.5
|
||||
|
||||
### How to use zip option
|
||||
|
||||
Just add to cqtdeployer option "zip".
|
||||
|
||||
### For example:
|
||||
|
||||
```bash
|
||||
cqtdeployer ... zip
|
||||
```
|
||||
|
||||
Where:
|
||||
* **...** - is list of other options.
|
||||
* **zip** - option for use zip arhives.
|
||||
|
||||
|
||||
By default, cqtdeployer will create one zip arhive.
|
||||
If you want create multi package destribution, you should use [Controll of packages options](Options.md)
|
||||
To create a new package, use the -targetPackage [package; tar1] option
|
||||
|
||||
cqtdeployer create zip arhive for each packages.
|
||||
|
||||
Where:
|
||||
|
||||
* **package** - it is package name
|
||||
* **tar1** - it is name of the target that should be included in this package.
|
||||
|
||||
Or you can describe packages in [configuration file](DeployConfigFile.md)
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"package",
|
||||
"tar1"
|
||||
],
|
||||
],
|
||||
"zip": true
|
||||
}
|
||||
```
|
409
md/ru/1_4.md
@ -1,409 +0,0 @@
|
||||
# Релиз CQtDeployer v1.4.0 (Binary Box)
|
||||
|
||||
Релиз утилиты развертывания С++/Qt и QML приложений CQtDeployer v1.4.0 (Binary Box)
|
||||
|
||||
Спустя почти полгода, вышло мажорное обновление утилиты развёртывания CQtDeployer.
|
||||
В данном обновлении множество нововведений, но основной упор в сделан на создание пакетов.
|
||||
|
||||
## Полный список всех изменений
|
||||
|
||||
### Исправления
|
||||
- Исправлен вывод справки в консоли, теперь перед выводом пересчитывается реальный размер консоли, что позволяет выполнять переносы текста правильно.
|
||||
- Исправлена работа с развертыванием плагинов Qt. Теперь плагины не тянут за собой все системные зависимости, а только qt. Захват системных зависимостей приводил к падению приложений из-за несовместимости библиотек плагинов.
|
||||
- Мелкие исправления и улучшения.
|
||||
### Нововведения
|
||||
- Добавлена поддержка поиска qmake из системного окружения.
|
||||
- Добавлена возможность инициализировать репозиторий для дальнейшей упаковки аналогично git init.
|
||||
- Добавлена поддержка Qt Install Framework пакетов. Теперь можно запаковать дистрибутив в инсталлятор.
|
||||
- Добавлена возможность разбивать конечный дистрибутив на несколько пакетов.
|
||||
- Добавлен механизм, позволяющий унифицировать создание пакетов для конечного дистрибутива.
|
||||
- Добавлена поддержка добавления пользовательских скриптов в скрипты запуска приложений.
|
||||
- Добавлена поддержка сборки системных зависимостей для Windows.
|
||||
- Добавлена поддержка RPATH для Linux. Теперь cqtdeployer может самостоятельно определить нужный qmake для развертывания приложения.
|
||||
- Добавлена поддержка поиска необходимой зависимости по имени библиотеки.
|
||||
- Добавлена поддержка Qt библиотек из репозиториев Linux дистрибутивов.
|
||||
### Новые опции
|
||||
- init - инициализирует файл cqtdeployer.json (файл конфигурации). Например: «cqtdeployer init» - для инициализации конфигурации одного пакета. "cqtdeployer -init multiPackage" - для инициализации конфигурации нескольких пакетов.
|
||||
- noCheckRPATH - отключает автоматический поиск путей к qmake в исполняемых файлах (Только Linux).
|
||||
- noCheckPATH - отключает автоматический поиск путей к qmake в системном окружении.
|
||||
- extractPlugins - заставляет извлекать все зависимости плагинов.
|
||||
- qif - создает инсталлятор в конце развертывания.
|
||||
- extraLibs - добавляет шаблон дополнительной библиотеки, которая должна будет попасть в дистрибутив.
|
||||
- customScript - добавляет пользовательский скрипт в скрип запуска приложения.
|
||||
- -targetPackage [package;tar1,package;tar2] - используется для формирования пакетов, обозначает списки целевых файлов для определенных пакетов.
|
||||
- recOut - указывает в какую папку будут складываться ресурсы после развертывания.
|
||||
- name - устанавливает имя пакета.
|
||||
- description - устанавливает описание пакета
|
||||
- deployVersion - устанавливает версию пакета
|
||||
- releaseDate - дата релиза пакета.
|
||||
- icon - иконка пакета.
|
||||
- publisher - издатель пакета.
|
||||
- qifStyle - Устанавливает путь к CSS файлу стиля или устанавливает стиль по умолчанию. Доступные стили: quasar
|
||||
- qifBanner - Устанавливает путь к png-файлу баннера.
|
||||
- qifLogo - Устанавливает путь к файлу логотипа png.
|
||||
|
||||
## Подробный разбор самых интересных изменений.
|
||||
|
||||
Первое, на что стоит обратить внимание, это то что CQtDeployer научился работать с RPATH (Только Linux) и PATH. Это значит, что если ваше приложение собранно с поддержкой RPATH (а RPATH в qt включен по молчанию) или ваш qmake прописан в PATH, то вам не нужно указывать путь к qmakе. CQtDeployer сам найдет нужный ему qmake.
|
||||
Давайте проверим это на практике.
|
||||
Я написал простое консольное приложение с использованием Qt.
|
||||
``` cpp
|
||||
#include <QString>
|
||||
#include <QDebug>
|
||||
int main(int, char *[])
|
||||
{
|
||||
QString str = "hello CQtDeployer 1.4";
|
||||
qInfo() << str;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Я буду использовать сборочную систему cmake, так как она более актуальная чем qmake.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello$ tree
|
||||
.
|
||||
├── CMakeLists.txt
|
||||
├── CMakeLists.txt.user
|
||||
└── main.cpp
|
||||
|
||||
0 directories, 3 files
|
||||
```
|
||||
|
||||
Создадим папку для сборки.
|
||||
``` bash
|
||||
andrei@HP:~/Hello$ mkdir build
|
||||
```
|
||||
|
||||
Выполним в созданной папке cmake.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ cmake .. -DCMAKE_PREFIX_PATH=~/Qt/5.14.1/gcc_64
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /home/andrei/Hello/build
|
||||
```
|
||||
|
||||
Выполняем сборку.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ make
|
||||
Scanning dependencies of target Hello_autogen
|
||||
[ 25%] Automatic MOC and UIC for target Hello
|
||||
[ 25%] Built target Hello_autogen
|
||||
Scanning dependencies of target Hello
|
||||
[ 50%] Building CXX object CMakeFiles/Hello.dir/Hello_autogen/mocs_compilation.cpp.o
|
||||
[ 75%] Building CXX object CMakeFiles/Hello.dir/main.cpp.o
|
||||
[100%] Linking CXX executable Hello
|
||||
[100%] Built target Hello
|
||||
```
|
||||
|
||||
Проверяем нашу программу.
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ ls
|
||||
CMakeCache.txt CMakeFiles cmake_install.cmake Hello Hello_autogen Makefile
|
||||
```
|
||||
И запускаем cqtdeployer передав ему программу без qmake.
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ cqtdeployer -bin Hello
|
||||
Deploy ...
|
||||
flag targetDir not used. use default target dir : "/home/andrei/Hello/build/DistributionKit"
|
||||
target deploy started!!
|
||||
copy : "/home/andrei/Hello/build/Hello"
|
||||
extract lib : "/home/andrei/Hello/build/DistributionKit//bin//Hello"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libQt5Core.so.5"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libicuuc.so.56"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libicui18n.so.56"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/lib/libicudata.so.56"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ar.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_bg.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ca.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_cs.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_da.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_de.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_en.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_es.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_fi.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_fr.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_gd.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_he.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_hu.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_it.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ja.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ko.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_lv.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_pl.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_ru.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_sk.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_uk.qm"
|
||||
copy : "/home/andrei/Qt/5.14.1/gcc_64/translations/qtbase_zh_TW.qm"
|
||||
try deploy msvc
|
||||
deploy done!
|
||||
```
|
||||
|
||||
О чудо, теперь наше приложение полностью автономно.
|
||||
Проверяем это.
|
||||
|
||||
``` bash
|
||||
andrei@HP:~/Hello/build$ cd DistributionKit/
|
||||
andrei@HP:~/Hello/build/DistributionKit$ tree
|
||||
.
|
||||
├── bin
|
||||
│ ├── Hello
|
||||
│ └── qt.conf
|
||||
├── Hello.sh
|
||||
├── lib
|
||||
│ ├── libicudata.so.56
|
||||
│ ├── libicui18n.so.56
|
||||
│ ├── libicuuc.so.56
|
||||
│ └── libQt5Core.so.5
|
||||
└── translations
|
||||
├── qtbase_ar.qm
|
||||
├── qtbase_bg.qm
|
||||
├── qtbase_ca.qm
|
||||
├── qtbase_cs.qm
|
||||
├── qtbase_da.qm
|
||||
├── qtbase_de.qm
|
||||
├── qtbase_en.qm
|
||||
├── qtbase_es.qm
|
||||
├── qtbase_fi.qm
|
||||
├── qtbase_fr.qm
|
||||
├── qtbase_gd.qm
|
||||
├── qtbase_he.qm
|
||||
├── qtbase_hu.qm
|
||||
├── qtbase_it.qm
|
||||
├── qtbase_ja.qm
|
||||
├── qtbase_ko.qm
|
||||
├── qtbase_lv.qm
|
||||
├── qtbase_pl.qm
|
||||
├── qtbase_ru.qm
|
||||
├── qtbase_sk.qm
|
||||
├── qtbase_uk.qm
|
||||
└── qtbase_zh_TW.qm
|
||||
|
||||
3 directories, 29 files
|
||||
andrei@HP:~/Hello/build/DistributionKit$
|
||||
```
|
||||
Корень программы:
|
||||
|
||||

|
||||
|
||||
Библиотеки,нужные для работы программы:
|
||||
|
||||

|
||||
|
||||
|
||||
Как видно из примера, приложение полностью собрано.
|
||||
|
||||
## Qt Installer Framework
|
||||
Второе нововведение, о котором стоит знать, это возможность из коробки формировать установщики QIF. Все, что нужно для нашего примера, это добавить в команду на упаковку опцию qif.
|
||||
|
||||
Пример использования.
|
||||
|
||||
```
|
||||
andrei@HP:~/Hello/build$ cqtdeployer -bin Hello qif
|
||||
```
|
||||
|
||||
Всего одна простая команда и программа получает презентабельный вид.
|
||||
|
||||

|
||||
|
||||
Этот установщик поддерживает минимальную интеграцию Linux дистрибутивами и Windows. А именно: создание ярлыков, и регистрация приложения в OС.
|
||||
Если по каким то причинам вас не устраивает внешний вид данного установщика, его можно изменить при помощи флага qifStyle . На момент версии 1.4 cqtdeployer поддерживает всего 2 стиля (native и quasar).
|
||||
|
||||
Пример стиля quasar:
|
||||
|
||||

|
||||
|
||||
Вы также можете использовать свою собственную таблицу стилей qss. Для этого вместо названия стиля передайте путь к вашему qss или css файлу.
|
||||
Для примера можно рассмотреть следующую таблицу стилей qss.
|
||||
|
||||
Style.qss:
|
||||
``` css
|
||||
QWidget
|
||||
{
|
||||
color: white;
|
||||
background-color: rgb(65, 65, 65);
|
||||
}
|
||||
|
||||
QPushButton
|
||||
{
|
||||
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(150, 150, 150, 60%), stop:1 rgba(50, 50, 50, 60%));
|
||||
border-color: rgb(60, 60, 60);
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
border-radius: 9px;
|
||||
min-height: 20px;
|
||||
max-height: 20px;
|
||||
min-width: 60px;
|
||||
max-width: 60px;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
QPushButton:pressed, QPushButton:checked
|
||||
{
|
||||
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgba(50, 50, 50, 60%), stop:1 rgba(150, 150, 150, 60%));
|
||||
}
|
||||
```
|
||||
|
||||
Давайте проверим, что у нас получится в таком случае.
|
||||
``` bash
|
||||
cqtdeployer -bin Hello qif -qifStyle ./../style.qss
|
||||
```
|
||||
|
||||

|
||||
|
||||
Вот,собственно, и тёмная тема установщика.
|
||||
|
||||
## Разбиение на пакеты
|
||||
И,наверное, последнее важное обновление, о котором стоит знать — это возможность разделять большой многобинарный проект на подпроекты.
|
||||
|
||||
Эта возможность самая сложная из всех перечисленных, так как требует много текста для ее использования. Так что я рекоммендую использовать файл конфигураций.
|
||||
|
||||
Для начала усложним наш проект, добавив в него ещё 2 исполняемого файла. Я не стал заморачиваться и просто сделал 2 копии моей Hello утилиты.
|
||||
|
||||
Для упрощения работы с пакетами нужно инициализировать директорию.
|
||||
|
||||
``` bash
|
||||
cqtdeployer init
|
||||
```
|
||||
|
||||
Это еще одна новая функция, которая создаёт CQtDeployer.json файл, в котором мы и будем писать наши конфигурации, вместо передачи опций в утилиту.
|
||||
|
||||
``` js
|
||||
{
|
||||
"binDir": ".",
|
||||
"clear": true,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 5
|
||||
}
|
||||
```
|
||||
|
||||
Теперь давайте сделаем 2 пакета из 3х наших программ. Для этого нужно указать:
|
||||
```js
|
||||
{
|
||||
"binDir": ".",
|
||||
"clear": true,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 5,
|
||||
"targetPackage": [
|
||||
["Dstro1", "Hello1"],
|
||||
["Dstro2", "Hello2"],
|
||||
["Dstro2", "Hello3"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Обратите внимание на то, что мне пришлось явно указать привязку для Dstro2 к Hello2 Hello3, К сожалению, на момент версии 1.4 cqtdeployer не умеет парсить перечисления целей. Обратите внимание, что если я напишу вместо Hello1 Hello, то выборка будет сделана по всем совпадениям и будут выбраны все 3 программы.
|
||||
Итак, смотрим что получилось.
|
||||
|
||||
``` bash
|
||||
cqtdeployer
|
||||
|
||||
.
|
||||
├── Dstro1
|
||||
│ ├── bin
|
||||
│ │ ├── Hello1
|
||||
│ │ └── qt.conf
|
||||
│ ├── Hello1.sh
|
||||
│ ├── lib
|
||||
│ │ ├── libicudata.so.56
|
||||
│ │ ├── libicui18n.so.56
|
||||
│ │ ├── libicuuc.so.56
|
||||
│ │ └── libQt5Core.so.5
|
||||
│ └── translations
|
||||
│ ├── qtbase_ar.qm
|
||||
│ ├── qtbase_bg.qm
|
||||
│ ├── qtbase_ca.qm
|
||||
│ ├── qtbase_cs.qm
|
||||
│ ├── qtbase_da.qm
|
||||
│ ├── qtbase_de.qm
|
||||
│ ├── qtbase_en.qm
|
||||
│ ├── qtbase_es.qm
|
||||
│ ├── qtbase_fi.qm
|
||||
│ ├── qtbase_fr.qm
|
||||
│ ├── qtbase_gd.qm
|
||||
│ ├── qtbase_he.qm
|
||||
│ ├── qtbase_hu.qm
|
||||
│ ├── qtbase_it.qm
|
||||
│ ├── qtbase_ja.qm
|
||||
│ ├── qtbase_ko.qm
|
||||
│ ├── qtbase_lv.qm
|
||||
│ ├── qtbase_pl.qm
|
||||
│ ├── qtbase_ru.qm
|
||||
│ ├── qtbase_sk.qm
|
||||
│ ├── qtbase_uk.qm
|
||||
│ └── qtbase_zh_TW.qm
|
||||
└── Dstro2
|
||||
├── bin
|
||||
│ ├── Hello2
|
||||
│ ├── Hello3
|
||||
│ └── qt.conf
|
||||
├── Hello2.sh
|
||||
├── Hello3.sh
|
||||
├── lib
|
||||
│ ├── libicudata.so.56
|
||||
│ ├── libicui18n.so.56
|
||||
│ ├── libicuuc.so.56
|
||||
│ └── libQt5Core.so.5
|
||||
└── translations
|
||||
├── qtbase_ar.qm
|
||||
├── qtbase_bg.qm
|
||||
├── qtbase_ca.qm
|
||||
├── qtbase_cs.qm
|
||||
├── qtbase_da.qm
|
||||
├── qtbase_de.qm
|
||||
├── qtbase_en.qm
|
||||
├── qtbase_es.qm
|
||||
├── qtbase_fi.qm
|
||||
├── qtbase_fr.qm
|
||||
├── qtbase_gd.qm
|
||||
├── qtbase_he.qm
|
||||
├── qtbase_hu.qm
|
||||
├── qtbase_it.qm
|
||||
├── qtbase_ja.qm
|
||||
├── qtbase_ko.qm
|
||||
├── qtbase_lv.qm
|
||||
├── qtbase_pl.qm
|
||||
├── qtbase_ru.qm
|
||||
├── qtbase_sk.qm
|
||||
├── qtbase_uk.qm
|
||||
└── qtbase_zh_TW.qm
|
||||
|
||||
8 directories, 60 files
|
||||
```
|
||||
|
||||
Как видно из дерева результата, у нас получилось 2 дистрибутива.
|
||||
1. Dstro1 — содержит в себе приложение Hello1
|
||||
2. Distro2 — содержит оставшиеся 2.
|
||||
|
||||
А теперь давайте проверим, что будет, если все это запаковать а установщик. Добавим в CQtDeployer.json опцию qif **"qif": true,**.
|
||||
|
||||
``` js
|
||||
{
|
||||
"binDir": ".",
|
||||
"clear": true,
|
||||
"qif": true,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 5,
|
||||
"targetPackage": [
|
||||
["Dstro1", "Hello1"],
|
||||
["Dstro2", "Hello2"],
|
||||
["Dstro2", "Hello3"]
|
||||
]
|
||||
```
|
||||
|
||||

|
||||
|
||||
Кака видно из скриншота, теперь у нас 2 пакета при установке.
|
||||
|
||||
## Новые алиасы
|
||||
|
||||
И последнее небольшое но приятное дополнение: теперь в cqtdeployer добавлены новые команды.
|
||||
* сqt — бывстрый способ задеплоить ваше приложение. Он упрощает вызов развертывания.
|
||||
* Пример:
|
||||
**cqt myApp** — это тоже самое что и **cqtdeployer -bin myApp**.
|
||||
* cqtdeployer.cqt — тоже что и cqt но для snap пакета.
|
||||
* В windows-версии теперь не нужно добовлять знак % для вызова утилиты.
|
||||
Теперь вызов выглядит так, как и в Linux. (cqtdeployer)
|
157
md/ru/1_5.md
@ -1,157 +0,0 @@
|
||||
# Выпуск CQtDeployer v1.5.0
|
||||
|
||||
Выпуск утилиты развертывания приложений C ++ / Qt и QML CQtDeployer v1.5.0
|
||||
|
||||
Это первое крупное обновление в 2021 году. CQtDeployer 1.5 содержит множество полезных улучшений. Самыми большими улучшениями являются добавление возможности упаковывать пакеты deb и возможность использовать собственный шаблон упаковки для среды установки qt.
|
||||
|
||||
## Полный список всех изменений
|
||||
|
||||
## CQtDeployer 1.5.0
|
||||
|
||||
### Новые возможности
|
||||
|
||||
- Добавлена новая тема установщика qif "quasarDark".
|
||||
- Добавлена поддержка работы с кастомным шаблоном для опции qif.
|
||||
- Добавлена поддержка пакетов debian.
|
||||
- Добавлены поддержка иконок целей. Теперь опция icon работает с целями, но не с пакетами.
|
||||
- Добавлена поддержка управления файлами пользовательского перевода.
|
||||
- Добавлена поддержка развертывания неисполняемых файлов. (опция extraData)
|
||||
- Добавлены переменные окружения для развернутых приложений.
|
||||
- Добавлена поддержка создания пакетов deb.
|
||||
- Добавлена поддержка создания архивов zip.
|
||||
- Добавлена поддержка создания установщика qif с использованием настраиваемого шаблона.
|
||||
- Добавлена команда для инициализации шаблонов qif и deb по умолчанию (getDefaulttemplate)
|
||||
- Добавлена поддержка импорта пользовательских скриптов запуска.
|
||||
- Добавлена поддержка хэшей md5 пакетов.
|
||||
- Добавлена поддержка Qt6.1.
|
||||
|
||||
### Исправления
|
||||
|
||||
- Исправлена стабильность для опции deploySystem в Windows.
|
||||
- Исправлен подробный журнал.
|
||||
- Исправлен общий журнал вывода.
|
||||
- Исправлены опечатки в логе.
|
||||
- Исправлено кросс-развертывание под платформу ARM
|
||||
- Исправлено развертывание Qt6 qml
|
||||
- Исправлены команды PowerShell в Windows.
|
||||
- исправления ошибок и улучшения.
|
||||
|
||||
|
||||
### Новые переменные окружения
|
||||
|
||||
- CQT_RUN_FILE - Эта переменная содержит путь к сценарию выполнения используемого приложения.
|
||||
- CQT_PKG_ROOT - эта переменная содержит путь к корню текущего пакета.
|
||||
|
||||
### Новые параметры
|
||||
|
||||
- zip - создать ZIP-архив для развертываемой программы
|
||||
- deb - Создать пакет deb для развертываемой программы
|
||||
- homepage - Устанавливает URL-адрес домашней страницы для пакета
|
||||
- noQt - игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует фреймворк qt
|
||||
- allowEmptyPackages - позволяет настраивать пустые пакеты.
|
||||
- getDefaultTemplate - Извлекает шаблоны deb или qif по умолчанию.
|
||||
- tr - Добавляет qm файлы в папку переводов.
|
||||
- extraData - добавляет дополнительные файлы или каталоги как цель. Выбранный каталог будет скопирован в папку extraDataOut с сохранением собственной структуры.
|
||||
- extraDataOut - Устанавливает путь к каталогу с дополнительными файлами данных.
|
||||
- prefix - Устанавливает префикс для пакета относительно целевого каталога
|
||||
- homePage - Устанавливает URL-адрес домашней страницы для пакета
|
||||
- binPrefix - устанавливает префикс для опции bin.
|
||||
- noHashSum - отключает хэши кампутных пакетов
|
||||
|
||||
### Устаревшие и удаленные параметры
|
||||
|
||||
- deploySystem-with-libc - вместо этого параметра используйте параметр deploySystem.
|
||||
- allQmlDependes - вместо этого параметра используйте параметр qmlDir.
|
||||
|
||||
|
||||
## Подробный разбор наиболее интересных изменений.
|
||||
|
||||
### Пакеты Debian
|
||||
Эта функция очень удобна, если вы хотите создать серверное приложение.
|
||||
Например, мне нужно создать простой сервер для простой игры.
|
||||
Мои шаги:
|
||||
* собрать мое приложение в режиме релиза.
|
||||
* запустите cqtdeployer с опцией deb.
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin mySimpleServer deb -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
```
|
||||
SimpleServer зависит только от qt, поэтому мне было достаточно указать только путь к qmake для моего приложения.
|
||||
|
||||
Это все!!!. И я получаю рабочий пакет deb.
|
||||
По умолчанию CQtDeployer создает независимые пакеты debian.
|
||||
|
||||
|
||||
### Почтовые архивы
|
||||
Эта функция позволяет сжать пакеты вашего дистрибутива в zip-архив.
|
||||
|
||||
Пример:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin mySimpleServer zip -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
```
|
||||
|
||||
# Пользовательский Шаблон для QIF
|
||||
Начиная с Версии CQtDeployer 1.5 вы можете использовать свой собственный шаблон установщика. Для этого вы должны передать в параметр qif путь к вашему шаблону.
|
||||
|
||||
```
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template
|
||||
```
|
||||
|
||||
### Шаблон
|
||||
Шаблон qif долже содержать 2 папки:
|
||||
* packages
|
||||
* config
|
||||
|
||||
### Внимание
|
||||
Название пакетов в папке packages должны совподать с названием пакетов при развертывание.
|
||||
Например:
|
||||
``` json
|
||||
"targetPackage": [
|
||||
[
|
||||
"myCustomInstaller",
|
||||
"tar1"
|
||||
]
|
||||
],
|
||||
```
|
||||
|
||||
``` bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
||||
|
||||
Если имена папок не совподут с именами пакетов то CQtDeployer будет использовать стандартный пакет для QIF.
|
||||
|
||||
Если у вас только один пакет, вы можете использовать опцию **name** для установки имени приложения.
|
||||
|
||||
```
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
|
||||
```
|
||||
|
||||
#### Не забудьте переименовать папку вашего пакета в имя пакета из опции имени.
|
||||
|
||||
|
||||
``` bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller << "This is folder of the your package"
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
@ -1,86 +0,0 @@
|
||||
# Установка CQtDeployer
|
||||
|
||||
Вы можете загрузить последнее подготовленные сборки [здесь](https://github.com/QuasarApp/CQtDeployer/releases).
|
||||
|
||||
### Установщик
|
||||
|
||||
- [Загрузить](https://github.com/QuasarApp/CQtDeployer/releases) CQtDeployer_X.X.X.X_Installer_Linux64.run или CQtDeployer_X.X.X.X_Installer_Win64.exe
|
||||
|
||||
#### Установка в консоли (CMD) без GUI
|
||||
|
||||
##### Linux
|
||||
|
||||
``` bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.3/CQtDeployer_1.5.3.0_Installer_Linux64.run
|
||||
chmod +x CQtDeployer_1.5.3.0_Installer_Linux64.run
|
||||
./CQtDeployer_1.5.3.0_Installer_Linux64.run install
|
||||
```
|
||||
|
||||
##### Windows
|
||||
|
||||
``` bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.3/CQtDeployer_1.5.3.0_Installer_Win64.exe
|
||||
CQtDeployer_1.5.3.0_Installer_Win64.exe install
|
||||
```
|
||||
|
||||
### Deb
|
||||
|
||||
``` bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.3/CQtDeployer_1.5.3.0_Linux64.deb
|
||||
sudo dpkg -i CQtDeployer_1.5.3.0_Linux64.deb
|
||||
```
|
||||
|
||||
**Примечание** имя пакета и ссылки могут быть изменены, пожалуйста, проверьте страницу [Загрузки](https://github.com/QuasarApp/CQtDeployer/releases) перед установкой.
|
||||
|
||||
### Snap
|
||||
|
||||
[](https://snapcraft.io/cqtdeployer)
|
||||
|
||||
|
||||
#### Особенности snap версии
|
||||
|
||||
Если вы используете snap версию приложения. Включите все разрешения для cqtdeployer.
|
||||
это можно сделать в snap-store
|
||||
Или начиная с ubuntu 20.04 в менеджере настроек приложений ubuntu.
|
||||
|
||||
Если у вас нет графического интерфейса, вы можете включить все разрешения, используя следующие команды:
|
||||
|
||||
``` bash
|
||||
sudo snap connect cqtdeployer:process-control
|
||||
sudo snap connect cqtdeployer:removable-media
|
||||
sudo snap connect cqtdeployer:system-backup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Сборка из исходников
|
||||
|
||||
## Build для Linux
|
||||
|
||||
- установите qt и qt QtInstallFrameWork из [Установщик qt](https://www.qt.io/download-qt-installer?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)
|
||||
- git clone https://github.com/QuasarApp/CQtDeployer.git
|
||||
- cd CQtDeployer
|
||||
- git submodule update --init --recursive
|
||||
- qmake -r
|
||||
- Здесь нужно обязательно вызвать тот qmake, который был загружен из 1го пункта.
|
||||
- Пример: ~/Qt/5.15.0/gcc_64/bin/qmake -r
|
||||
- make -j$(nproc)
|
||||
- make deploy
|
||||
- эта команда требует установленный [cqtdeployer](https://github.com/QuasarApp/CQtDeployer/releases)
|
||||
|
||||
## Build для Windows (CMD)
|
||||
|
||||
- установите qt и qt QtInstallFrameWork из [Установщик qt](https://www.qt.io/download-qt-installer?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)
|
||||
- git clone https://github.com/QuasarApp/CQtDeployer.git
|
||||
- cd CQtDeployer
|
||||
- git submodule update --init --recursive
|
||||
- SET PATH=C:/Qt/Tools/mingw810_64/bin;%PATH%
|
||||
- Здесь важно настроить окружение qt.
|
||||
- qmake.exe -r
|
||||
- Здесь нужно обязательно вызвать тот qmake, который был загружен из 1го пункта.
|
||||
- Пример: C:/Qt/5.15.0/mingw81_64/bin/qmake.exe -r
|
||||
- migw32-make -j8
|
||||
- migw32-make deploy
|
||||
- эта команда требует установленный [cqtdeployer](https://github.com/QuasarApp/CQtDeployer/releases)
|
||||
- ./Distro/CQtDeployerInstaller.exe
|
||||
|
@ -1,346 +0,0 @@
|
||||
# Журнал изменений
|
||||
|
||||
Журнал изменений для всех версий CQtDeployer.
|
||||
|
||||
|
||||
## CQtDeployer 1.5.4
|
||||
|
||||
### Новые параметры
|
||||
* qifConfig - Устанавливает собственный путь к файлу конфигурации установщика qt ifw. По умолчанию это qif/config/config.xml #653.
|
||||
* qifPackages - Устанавливает собственный путь к каталогам пакетов. По умолчанию это qif/packages #653.
|
||||
* qifResources - Устанавливает собственный путь к файлам ресурсов. По умолчанию эта опция пропущена #653
|
||||
* debOut - Устанавливает имя выходного файла debian. Эта опция может работать с несколькими пакетами
|
||||
* zipOut - Устанавливает имя выходного zip-архива. Эта опция может работать с несколькими пакетами
|
||||
|
||||
### Исправление ошибок :
|
||||
|
||||
* исправлено crossdeploy linux -> windows # 652
|
||||
|
||||
|
||||
## CQtDeployer 1.5.3
|
||||
|
||||
### Новые параметры
|
||||
|
||||
* installDirDeb - Устанавливает целевой каталог установки для пакета debian (по умолчанию это / opt путь)
|
||||
* installDirQIFW - Устанавливает целевой каталог установки для установщиков (по умолчанию это / home путь)
|
||||
|
||||
### Исправления
|
||||
* Исправлено предупреждение при установке В windows
|
||||
* Добавлена пороверка параметров ввода
|
||||
* Добавлено сообщение об ошибке из-за конфликта между опциями libDir и targetDir
|
||||
|
||||
## CQtDeployer 1.5.2
|
||||
|
||||
### Новые параметры
|
||||
|
||||
* Добавлена опция **qifOut** для установки имени установщика
|
||||
* Добавлена опция **disableRunScript** для отключения генерации сценария запуска для выбранных целей
|
||||
* Добавлена опция **disableShortCut** для отключения генерации ярлыка для выбранных целей
|
||||
|
||||
### Исправления
|
||||
|
||||
* Фикс документации
|
||||
* Фикс развертывания библиотек openssl
|
||||
|
||||
## CQtDeployer 1.5.1
|
||||
|
||||
### Исправления
|
||||
|
||||
* Исправлено развертывание многоцелевых пакетов Debian
|
||||
* Фикс развертывания qt6 qml приложений
|
||||
|
||||
## CQtDeployer 1.5.0
|
||||
|
||||
### Нововведения
|
||||
|
||||
- Добавлена новая тема установщика qif "quasarDark".
|
||||
- Добавлена поддержка работы с кастомным шаблоном для опции qif.
|
||||
- Добавлена поддержка пакетов debian.
|
||||
- Добавлена поддержка иконок для целей. теперь опция icon работает с целями, а не с пакетами.
|
||||
- Добавлена поддержка управления файлами пользовательского перевода.
|
||||
- Добавлена поддержка развертывания дополнительных файлов. (опция extraData)
|
||||
- Добавлены переменные окружения для развернутых приложений.
|
||||
- Добавлена поддержка создания пакетов deb.
|
||||
- Добавлена поддержка создания zip-архивов.
|
||||
- Добавлена поддержка создания установщика qif с использованием настраиваемого шаблона.
|
||||
- Добавлена команда инициализации qif по умолчанию шаблона deb (getDefaulttemplate)
|
||||
- Добавлена поддержка импорта пользовательских скриптов запуска.
|
||||
- Добавлена поддержка хэш сумм md5 для всех пакетов.
|
||||
- Добавлена поддержка Qt6.1.
|
||||
|
||||
### Исправления
|
||||
|
||||
- Исправлена стабильность для опции deploySystem в Windows.
|
||||
- Исправлен подробный журнал.
|
||||
- Исправлен общий журнал вывода.
|
||||
- Исправлены опечатки в логе.
|
||||
- Исправлено кросс-развертывание arm дистрибутива.
|
||||
- Исправлено развертывание Qt6 qml
|
||||
- Исправлены команды PowerShell в Windows.
|
||||
- исправления ошибок и улучшения.
|
||||
|
||||
### Новые переменные среды
|
||||
|
||||
- CQT_RUN_FILE - эта переменная содержит путь к сценарию выполнения используемого приложения.
|
||||
- CQT_PKG_ROOT - эта переменная содержит путь к корню текущего пакета.
|
||||
|
||||
### Новые параметры
|
||||
|
||||
- zip - создать ZIP-архив для развертываемых программ
|
||||
- deb - Создаст deb пакет для развертываемой программы
|
||||
- homepage - Установит URL-адрес домашней страницы для пакета
|
||||
- noQt - Игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует платформу qt
|
||||
- allowEmptyPackages - разрешает настраивать пустые пакеты.
|
||||
- getDefaultTemplate - Извлекает шаблоны deb или qif по умолчанию.
|
||||
- tr - Добавляет qm файлы в папку переводов.
|
||||
- extraData - Добавляет дополнительные файлы или каталоги как цель. Выбранный каталог будет скопирован в расположение extraDataOut с сохранением собственной структуры.
|
||||
- extraDataOut - Устанавливает путь к каталогу с дополнительными файлами данных. По умолчанию это корневой каталог дистрибутива.
|
||||
- prefix - Устанавливает префикс для пакета относительно целевого каталога
|
||||
- homePage - Установит URL-адрес домашней страницы для пакета
|
||||
- binPrefix - Устанавливает путь префикса для опции bin
|
||||
- noHashSum - Отключить вычисление хеш-суммы пакетов
|
||||
|
||||
### Устаревшие и удаленные параметры
|
||||
|
||||
- deploySystem-with-libc - вместо этого параметра используйте параметр deploySystem.
|
||||
- allQmlDependes - вместо этого параметра используйте параметр qmlDir.
|
||||
|
||||
## CQtDeployer 1.5.0 Alpha
|
||||
|
||||
### Исправления
|
||||
- исправления ошибок и улучшения.
|
||||
|
||||
### Новые особенности
|
||||
- Добавлена новая тема для установщика qif "quasarDark".
|
||||
|
||||
### Новые параметры
|
||||
- zip - создать ZIP-архив для развертываемых программ
|
||||
|
||||
## CQtDeployer 1.4.7
|
||||
### Исправления
|
||||
- Исправлено развертывание плагина qxcb. #438
|
||||
- Исправлено развертывание модуля qtGui. #446
|
||||
|
||||
### Новые возможности
|
||||
- Добавлена поддержка Qt6. #437
|
||||
- Добавлена поддержка Qt installer Framework 4 (с улучшенным интерфейсом командной строки)ю #436
|
||||
|
||||
## CQtDeployer 1.4.6
|
||||
### Исправления
|
||||
- Исправлено развертывание драйверов sql #367.
|
||||
- Исправлен алгоритм развертывания библиотек. #423 #371
|
||||
- Исправлена работа с qt из системного репозитория linux. (только классический установщик) #422
|
||||
- Исправлена snap версия cqtdeployer, добавлена поддержка поиска qmake по RPATH #424 #420
|
||||
- Исправлен хелп.
|
||||
- Мелкие исправления и улучшения.
|
||||
- Удалена устаревшая опция extractPlugins. #371
|
||||
|
||||
### Новые параметры
|
||||
- noQt - игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует платформу qt.
|
||||
|
||||
## CQtDeployer 1.4.5
|
||||
### Исправления
|
||||
- Оптимизирована производительность развертывания проектов. На 60% быстрее.
|
||||
- Оптимизирован выходной размер дистрибутивов. Размер уменьшен на 25%.
|
||||
- Исправлено отображение ярлыков после установки развернутых приложений.
|
||||
- Исправлен запуск приложений с пробелами в имени. спасибо ahndee (#384)
|
||||
- Исправлено развертывание плагина Renderer.
|
||||
- Незначительные исправления и улучшения.
|
||||
|
||||
### Новые особенности
|
||||
- Добавлена новая система управления плагинами развертывания.
|
||||
|
||||
### Новые опции
|
||||
|
||||
- extraPlugin - устанавливает дополнительный путь к сторонним плагина приложения
|
||||
- enablePlugins - включает дополнительные плагины для распространения.
|
||||
- disablePlugins - отключает плагины для распространения.
|
||||
|
||||
## CQtDeployer 1.4.4
|
||||
|
||||
### New options
|
||||
- qifFromSystem - Принудительно использовать системный инструмент binarycreator из path или qt
|
||||
|
||||
## CQtDeployer 1.4.3
|
||||
### Исправления
|
||||
- Исправленно отображение приложения скаченого из snap store и установщика в меню настроек приложений ubuntu 20.04
|
||||
|
||||
### Нововведения
|
||||
- Добавленна поддержка рекурсивного добовления для флага ignoreEnv #356
|
||||
|
||||
### Новые опции
|
||||
- noRecursiveiIgnoreEnv - Отключает рекурсивное игнорирование переменной среды для флага ignoreEnv.
|
||||
|
||||
|
||||
## CQtDeployer 1.4.2
|
||||
### Исправления
|
||||
|
||||
- исправлено #337 (ошибка генерации установщика с произвольным именем)
|
||||
- исправлено #338 (версия Windows собирает pdb файлы)
|
||||
- исправлено #339 (ошибка показа всех справочных сообщений)
|
||||
- исправлено #340 (cqdeployer не добавлял каталоги целей в "ignore")
|
||||
- исправлено #341 (опция очистки не удаляет старый установщик)
|
||||
|
||||
|
||||
## CQtDeployer 1.4.1
|
||||
|
||||
### Исправления
|
||||
- Исправлено не развертывание тем платформ (#324)
|
||||
- Исправлено создание ярлыков на Windows (#322)
|
||||
- Незначительные улучшения и исправления
|
||||
|
||||
## CQtDeployer 1.4.0
|
||||
### Исправления
|
||||
- Исправлен вывод справки в консоли, теперь перед выводом пересчитывается реальный размер консоли, что позволяет выполнять правильно переносы текста.
|
||||
- Исправлена работа с развертыванием плагинов Qt. Теперь плагины не тянут за собой все системные зависимости, а только qt. Захват системных зависимостей приводил к падению приложений из-за несовместимости библиотек плагинов.
|
||||
- Мелкие исправления и улучшения.
|
||||
|
||||
### Нововведения
|
||||
- Добавлена поддержка поиска qmake из системного окружения.
|
||||
- Добавлена возможность инициализировать репозиторий для дальнейшей упаковки аналогично git init.
|
||||
- Добавлена поддержка Qt Install Framework пакетов. Теперь можно запаковать дистрибутив в инсталлятор.
|
||||
- Добавлена возможность разбивать конечный дистрибутив на несколько пакетов.
|
||||
- Добавлен механизм позволяющий унифицировать создание пакетов для конечного дистрибутива.
|
||||
- Добавлена поддержка добавления пользовательских скриптов в скрипты запуска приложений.
|
||||
- Добавлена поддержка сборки системных зависимостей для Windows.
|
||||
- Добавлена поддержка RPATH для Linux. Теперь cqtdeployer может самостоятельно определить нужный qmake для развертывания приложения.
|
||||
- Добавлена поддержка поиска необходимой зависимости по имени библиотеки.
|
||||
- Добавлена поддержка Qt библиотек из репозиториев Linux дистрибутивов.
|
||||
- Добавлены новые псевдонимы для команды запуска (cqt и cqtdeployer.cqt) для быстрого развертывания приложений.
|
||||
- Добавлена поддержка собственного имени команды для windows. Теперь вы можете запустить cqtdeployer написав cqtdeployer в cmd и powershell.
|
||||
|
||||
### Новые опции
|
||||
- init - инициализирует файл cqtdeployer.json (файл конфигурации). Например: «cqtdeployer init» - для инициализации конфигурации одного пакета. "cqtdeployer -init multi" - для инициализации конфигурации нескольких пакетов.
|
||||
- noCheckRPATH - отключает автоматический поиск путей к qmake в исполняемых файлах (Только Linux).
|
||||
- noCheckPATH - отключает автоматический поиск путей к qmake в системном окружении.
|
||||
- extractPlugins - заставляет извлекать все зависимости плагинов.
|
||||
- qif - создает инсталлятор в конце развертывания.
|
||||
- extraLibs - добавляет шаблон дополнительной библиотеки, которая должна будет попасть в дистрибутив.
|
||||
- customScript - добавляет пользовательский скрипт в скрип запуска приложения.
|
||||
- -targetPackage [package;tar1,package;tar2] - используется для формирования пакетов, обозначает списки целевых файлов для определенных пакетов.
|
||||
- recOut - указывает в какую папку будут складываться ресурсы после развертывания.
|
||||
- name - устанавливает имя пакета.
|
||||
- description - устанавливает описание пакета
|
||||
- deployVersion - устанавливает версию пакета
|
||||
- releaseDate - дата релиза пакета.
|
||||
- icon - иконка пакета.
|
||||
- publisher - издатель пакета.
|
||||
- qifStyle - Устанавливает путь к CSS файлу стиля или устанавливает стиль по умолчанию. Доступные стили: quasar
|
||||
- qifBanner - Устанавливает путь к png-файлу баннера.
|
||||
- qifLogo - Устанавливает путь к файлу логотипа png.
|
||||
|
||||
---
|
||||
|
||||
## CQtDeployer 1.3.2
|
||||
- Исправлено #218 (CQtDeployer добавлял sh-скрипты для целевых библиотек.)
|
||||
- Исправлено #217 (опция qmake не работала с файлом конфигурации.)
|
||||
---
|
||||
|
||||
## CQtDeployer 1.3.1
|
||||
- Исправлена задача #191 (команда игнорирования для плагинов)
|
||||
- Исправлена задача #192 (неверный путь при создании файла развертывания)
|
||||
- Исправлены абсолютные пути к файлу conf
|
||||
---
|
||||
|
||||
## CQtDeployer 1.3.0
|
||||
- Добавлена поддержка qt.conf для Linux
|
||||
- Добавлена поддержка конфигурационного файла для проекта (deploy.json) со всеми правилами развертывания, для создания deploy.json используйте флаг -confFile [./path/to/file.json].
|
||||
- Добавлена поддержка выходных каталогов для всех файлов развертывания #145,
|
||||
- Добавлена поддержка развертывания WebEngine #146.
|
||||
- Добавлена поддержка нескольких пакетов в установщике cqtdeployer.
|
||||
- Переименован проект из Console-QtDeployer в CQtDeployer #139
|
||||
- Исправлено развертывание системных библиотек в linux #172
|
||||
- Добавлены новые тесты приложения
|
||||
- Удален флаг noLibC и добавлен флаг deploySystem-with-libc. Если вам нужен в программе libc используйте флаг deploySystem-with-libc, а если нет то пользуйтесь deploySystem.
|
||||
- Заменен флаг always-overwrite на noOverwrite, теперь все файлы по умолчанию перезаписываются, используйте noOverwrite для отключения перезаписи.
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.3
|
||||
- Добавлена поддержка qt.conf для сборок Windows #130
|
||||
- Исправлена ошибка #129, теперь флаг «очистить» удаляет только скопированные файлы.
|
||||
- Исправлен флаг ignoreEnv
|
||||
- Исправлен флаг deploySystem
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.2
|
||||
- Добавлен новый флаг noLibc для игнорирования библиотек libc и li-linux
|
||||
- Исправлена #125 ошибка развертывания системных библиотек (работает с простыми проектами, для больших проектов не рекомендуется)
|
||||
- Исправлен флаг ignoreEnv
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.1
|
||||
- Добавлен новый флаг игнорирования (ignoreEnv). Этот флаг отключает ненужную среду
|
||||
- Добавлена поддержка QIFW (онлайн-установщик для Windows и других дистрибутивов Linux)
|
||||
- Добавлено обновление утилиты для Windows и других дистрибутивов Linux (не Snap)
|
||||
- Исправлена ошибка № 116 (копирование файлов со съемного носителя)
|
||||
- Исправлена ошибка № 115 (создание цели в папке с русским именем)
|
||||
- Исправлен большой размер версии msvc
|
||||
- Исправлено кросс-развертывание Linux >> Windows
|
||||
- Удалены старые скрипты сборки
|
||||
---
|
||||
|
||||
## CQtDeployer 1.2.0
|
||||
- Добавлен собственный сканер зависимостей qml.
|
||||
- Перешел на новый [сканер PE-Lib](https://github.com/QuasarApp/pe-parse/tree/7138bb218a05c81d825728ba8a0a6f6a56c4fdbc).
|
||||
- Перешел на новый [ELF-lib сканер](https://github.com/qt/qttools/blob/b0147a5d79ce7a7e77a24f36aaddfacb1a1517c8/src/shared/winutils/elfreader.h).
|
||||
- Добавлены новые юнит-тесты.
|
||||
- Добавлена поддержка версии Snap (только домашний каталог).
|
||||
- Добавлен новый флаг qmlExtern - для использования сканера импорта qt qml.
|
||||
- Добавлена поддержка уровней подробного журнала (0-3).
|
||||
- Исправлен журнал развертывания приложения.
|
||||
- Исправлено развертывание приложения в версии Snap.
|
||||
---
|
||||
|
||||
## CQtDeployer 1.1.2
|
||||
- Добавлена поддержка переводов
|
||||
- Добавлен флаг для отключения развертывания переводов
|
||||
- Добавлена strip для Linux
|
||||
- Добавлены юнит-тесты
|
||||
- Исправлено развертывание в динамической версией
|
||||
- Исправлена ошибка развертывания на текущем каталоге с привязкой и статической версией.
|
||||
---
|
||||
|
||||
## CQtDeployer 1.1.1
|
||||
- Исправлена сборка qml в диномисечкой версии
|
||||
- Исправленна работа флага -recursiveDepth
|
||||
- Исправленна работа флага -libDir
|
||||
- Исправленно копирование библиотек по ссылке
|
||||
- Почищен вывод приложения, часть лога перенесенна в verbose
|
||||
---
|
||||
|
||||
## CQtDeployer 1.1.0
|
||||
- Добавлена поддержка windows (только динамическая линковка)
|
||||
- Добавлена поддержка snap (теперь доступно в snapstore)
|
||||
- Добавлены сборочные скрипты для snap
|
||||
- Добавлен флаг binDir позволяющий рекурсивно захватывать exe dll и so
|
||||
- Изменена логика работы флага bin теперь если выбрать в место файла папку то будет захвачено все ее содержимое
|
||||
- Изменена и исправлена логика работы флага clear теперь он чистит все развернутое содержимое по определенному таргету.
|
||||
- Добавлен флаг targetDir который определяет место где будет лежать развернутый проект
|
||||
- Изменена структура развернутого проекта, теперь все оболочки запуска лежат в корне а бинарники в папке bin, для каждого бинарника создается одноименный скрипт запуска.
|
||||
- Удален старый флаг runScript из-за смены логики развертывания
|
||||
- Добавлен флаг verbose для отладки по
|
||||
- Исправлены ошибки производительности
|
||||
---
|
||||
|
||||
## CQtDeployer 1.0.2
|
||||
- Добавлен скрипт для сборки (динамический и статический выпуск)
|
||||
- Добавлен флаг -libDir для установки дополнительного пути для дополнительных библиотек приложения
|
||||
- Добавлен флаг -extraPlugin для установки дополнительного пути для дополнительных плагинов приложения
|
||||
- Добавлена сборка только для С библиотек
|
||||
- Исправленно развертывание
|
||||
- Исправлен сценарий запуска
|
||||
- Исправлена статическая сборка
|
||||
---
|
||||
|
||||
## CQtDeployer 1.0.1
|
||||
- Исправлена ошибка развертывания qml (избыточность)
|
||||
- Исправлен скрипт запуска приложения
|
||||
|
||||
---
|
||||
|
||||
## CQtDeployer 1.0.0
|
||||
- Добавлен флаг runScript
|
||||
- Добавлен флаг allQmlDependes
|
||||
- Исправлена ошибка развертывания qml
|
||||
- Исправлена ошибка развертывания плагинов
|
||||
- Добавлена поддержка статической сборки
|
@ -1,15 +0,0 @@
|
||||
# Сравнение особенностей
|
||||
|
||||
Сравните особенности дистрибутивов CQtDeployer
|
||||
|
||||
| Название функции | Классическая версия linux (установщик) | Snap версия | Windows версия |
|
||||
|---|---|---|----|
|
||||
| Автоматические обновляется | Нет | Да | Нет |
|
||||
| Онлайн-обновления | Да | Да | Да |
|
||||
| Поддержка системных библиотек | Да | Да | Да |
|
||||
| Поддержка создания установщиков | Да | Да | Да |
|
||||
| Поддержка создания архивов | Да | Да | Да |
|
||||
| Поддержка поиска библиотек и cmake из среды | Да | Нет | Да |
|
||||
| Поддержка поиска qmake из RPATH | Да | Да | Нет
|
||||
| Поддержка команды 'strip' | Да | Нет | Нет |
|
||||
| Поддержка работы с qmake из системного репозитория ОС| Да| Нет | Нет |
|
@ -1,68 +0,0 @@
|
||||
# Пользовательские скрипты
|
||||
|
||||
После версии 1.5.1 cqtdeployer поддерживает собственные переменные в пользовательских скриптах.
|
||||
Для использования пользовательских сценариев используйте параметр **runScript**.
|
||||
|
||||
### Примеры:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin MyExecutable.exe -runScript MyExecutable,path/to/my/custom/script.bat
|
||||
```
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin MyExecutable -runScript MyExecutable,path/to/my/custom/script.sh
|
||||
```
|
||||
|
||||
## Список поддерживаемых переменных:
|
||||
|
||||
* CQT_LIB_PATH - это относительный путь к библиотекам развернутого дистрибутива.
|
||||
* CQT_QML_PATH - это относительный путь к библиотекам qml развернутого дистрибутива.
|
||||
* CQT_PLUGIN_PATH - это относительный путь к плагинам qt развернутого дистрибутива.
|
||||
* CQT_BIN_PATH - это относительный путь к целям развернутого дистрибутива.
|
||||
|
||||
* CQT_SYSTEM_LIB_PATH - это относительный путь к системным библиотекам развернутого дистрибутива.
|
||||
* CQT_BASE_NAME - это базовое имя исполняемого файла, который будет запущен после запуска этого скрипта.
|
||||
* CQT_CUSTOM_SCRIPT_BLOCK - это код из опции customScript
|
||||
* CQT_RUN_COMMAND - это команда для запуска приложения. Требуется переменная BASE_DIR. Важно: Эта переменная уже содержит символы перенапровления аргументов скрипта в исполняемый файл.
|
||||
|
||||
## Шаблоны скриптов запуска
|
||||
|
||||
### Linux
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
BASE_DIR=$(dirname "$(readlink -f "$0")")
|
||||
export LD_LIBRARY_PATH="$BASE_DIR"CQT_LIB_PATH:"$BASE_DIR":$LD_LIBRARY_PATH
|
||||
export QML_IMPORT_PATH="$BASE_DIR"CQT_QML_PATH:$QML_IMPORT_PATH
|
||||
export QML2_IMPORT_PATH="$BASE_DIR"CQT_QML_PATH:$QML2_IMPORT_PATH
|
||||
export QT_PLUGIN_PATH="$BASE_DIR"CQT_PLUGIN_PATH:$QT_PLUGIN_PATH
|
||||
export QTWEBENGINEPROCESS_PATH="$BASE_DIR"CQT_BIN_PATH/QtWebEngineProcess
|
||||
export QTDIR="$BASE_DIR"
|
||||
export CQT_PKG_ROOT="$BASE_DIR"
|
||||
export CQT_RUN_FILE="$BASE_DIR/CQT_BASE_NAME.sh"
|
||||
|
||||
export QT_QPA_PLATFORM_PLUGIN_PATH="$BASE_DIR"CQT_PLUGIN_PATH/platforms:$QT_QPA_PLATFORM_PLUGIN_PATH
|
||||
|
||||
CQT_CUSTOM_SCRIPT_BLOCK
|
||||
|
||||
CQT_RUN_COMMAND
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
```bash
|
||||
|
||||
@echo off
|
||||
SET BASE_DIR=%~dp0
|
||||
SET PATH=%BASE_DIR%CQT_LIB_PATH;%PATH%;CQT_SYSTEM_LIB_PATH
|
||||
SET CQT_PKG_ROOT=%BASE_DIR%
|
||||
SET CQT_RUN_FILE=%BASE_DIR%CQT_BASE_NAME.bat
|
||||
|
||||
CQT_CUSTOM_SCRIPT_BLOCK
|
||||
|
||||
CQT_RUN_COMMAND
|
||||
```
|
||||
|
||||
|
||||
Или вы можете получить последнюю версию этих скриптов из github [репозитория](https://github.com/QuasarApp/CQtDeployer/tree/main/Deploy/ScriptsTemplates).
|
100
md/ru/DEB.md
@ -1,100 +0,0 @@
|
||||
# Использование DEB
|
||||
|
||||
Общие правила использования DEB
|
||||
|
||||
#### Доступно с версии CQtDeployer 1.5
|
||||
|
||||
### Как использовать опцию DEB
|
||||
|
||||
Просто добавьте в cqtdeployer опцию «deb».
|
||||
|
||||
#### Например:
|
||||
|
||||
``` bash
|
||||
cqtdeployer ... deb
|
||||
```
|
||||
|
||||
Где:
|
||||
* **...** - список других опций.
|
||||
* **deb** - опция для создания deb пакетов.
|
||||
|
||||
|
||||
По умолчанию cqtdeployer создает один deb пакет .
|
||||
Если вы хотите создать несколько пакетов, вы должны использовать [Параметры управления пакетами](Options.md)
|
||||
Чтобы создать новый пакет, используйте -targetPackage [package; tar1]
|
||||
|
||||
cqtdeployer создает вуи пакет для каждого пакета.
|
||||
|
||||
Где:
|
||||
|
||||
* **package** - это название пакета
|
||||
* **tar1** - это имя цели, которая должна быть включена в этот пакет.
|
||||
|
||||
Или вы можете описать пакеты в [файле конфигурации](DeployConfigFile.md)
|
||||
|
||||
|
||||
```JSON
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"package",
|
||||
"Tar1"
|
||||
],
|
||||
],
|
||||
"deb": true
|
||||
}
|
||||
```
|
||||
|
||||
# Использование собственных шаблонов для создания деб пакетов
|
||||
|
||||
Вы можете создать собственный шаблон для пакетов debian.
|
||||
|
||||
### Структура пакета debian:
|
||||
|
||||
|
||||
```bash
|
||||
└── Debian templates
|
||||
├── debPacakge1
|
||||
│ └── DEBIAN
|
||||
│ ├── control
|
||||
│ ├── postinst
|
||||
│ └── prerm
|
||||
└── debPacakge2
|
||||
└── DEBIAN
|
||||
├── control
|
||||
├── postinst
|
||||
└── prerm
|
||||
|
||||
```
|
||||
|
||||
Для включения ваших шаблонов в дистрибутив вам необходимо добавить путь к папке шаблонов Debian в deploy Config.json.
|
||||
|
||||
```json
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"debPacakge1",
|
||||
"tar1"
|
||||
],
|
||||
[
|
||||
"debPacakge2",
|
||||
"tar2"
|
||||
],
|
||||
],
|
||||
"deb": "./Debian templates"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Инициализация шаблона debian
|
||||
|
||||
Для инициализации шаблонов по умолчанию вы можете использовать параметр getDefaultTemplate.
|
||||
Параметр getDefaultTemplate извлекает шаблон по умолчанию для cqtdeployer. Это может быть очень удобно, если вы хотите переопределить поведение установщика или другого пакета распространения по умолчанию.
|
||||
|
||||
### Пример
|
||||
|
||||
### Получение шаблона debian по умолчанию.
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate deb
|
||||
```
|
@ -1,226 +0,0 @@
|
||||
# Файл развертывания
|
||||
|
||||
**Файл развертывания** - это json файл, содержащий в себе параметры для cqtdeployer. Данный файл поддерживает все параметры кроме confFile, так как данный параметр отвечает за подключение и инициализацию самого файла.
|
||||
|
||||
### Структура файла конфигурации
|
||||
```json
|
||||
{
|
||||
"Флаг": true/false,
|
||||
"Параметр": "Значение",
|
||||
"Параметер с поддержкой перечислений": [
|
||||
"Значение 1",
|
||||
"Значение 2",
|
||||
"Значение 3",
|
||||
],
|
||||
"Параметр с поддержкой многоуровневых перечислений": [
|
||||
[
|
||||
"Значение A1",
|
||||
"Значение A2"
|
||||
],
|
||||
[
|
||||
"Значение B1",
|
||||
"Значение B2"
|
||||
],
|
||||
[
|
||||
"Значение C1",
|
||||
"Значение C2"
|
||||
],
|
||||
]
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
Подробно о параметрах cqtdeployer читайте в разделе [Параметры](Options.md).
|
||||
|
||||
Примеры содержимого данного файла:
|
||||
|
||||
Файл без использования параметров с перечислениями
|
||||
```json
|
||||
{
|
||||
"noOverwrite": false,
|
||||
"bin": "./",
|
||||
"binDir": "./",
|
||||
"qmlDir": "./",
|
||||
"deploySystem": false,
|
||||
"deploySystem-with-libc": false,
|
||||
"qmake": "my/custom/path/to/qmake",
|
||||
"ignore": "ignoreLib.dll",
|
||||
"ignoreEnv": "/my/ignore/path",
|
||||
"clear": true,
|
||||
"force-clear": false,
|
||||
"allQmlDependes": false,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 3,
|
||||
"extraLibs": "myExtraLib (libssl)",
|
||||
"extraPlugin": "myExtraPulgin (platforms)",
|
||||
"targetDir": "./Distro",
|
||||
"targetPackage": "",
|
||||
"noStrip": false,
|
||||
"extractPlugins": false,
|
||||
"noTranslations": false,
|
||||
"qmlOut": "qml",
|
||||
"libOut": "lib",
|
||||
"trOut": "tr",
|
||||
"pluginOut": "plug",
|
||||
"binOut": "bin",
|
||||
"recOut": "rec",
|
||||
"verbose": 3,
|
||||
"qif": false,
|
||||
"noCheckRPATH": false,
|
||||
"noCheckPATH": false,
|
||||
"name": "mainApplication",
|
||||
"description": "this is description for default package",
|
||||
"deployVersion": "1.0.0",
|
||||
"releaseDate": "yyyy-MM-dd",
|
||||
"icon": "/path/main/icon.png",
|
||||
"publisher": "main team",
|
||||
"customScript": "echo 'I am use custom script!!!'"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Файл с использованием параметров с перечислениями
|
||||
``` json
|
||||
{
|
||||
"noOverwrite": false,
|
||||
"bin": "./",
|
||||
"binDir": "./",
|
||||
"qmlDir": [
|
||||
[
|
||||
"package2",
|
||||
"./TestQMLWidgets/"
|
||||
],
|
||||
[
|
||||
"./qml/for/All"
|
||||
]
|
||||
],
|
||||
|
||||
"deploySystem": false,
|
||||
"deploySystem-with-libc": false,
|
||||
"qmake": "this parameter should contain the path to your qmake, for Windows this field is required. On Linux, you can remove it, then qmake will be found by rpath.",
|
||||
"ignore": "ignoreLib.dll",
|
||||
"ignoreEnv": "/my/ignore/path",
|
||||
"clear": true,
|
||||
"force-clear": false,
|
||||
"allQmlDependes": false,
|
||||
"libDir": "./",
|
||||
"recursiveDepth": 3,
|
||||
"extraLibs": "myExtraLib (libssl)",
|
||||
"extraPlugin": "myExtraPulgin (platforms)",
|
||||
"targetDir": "./Distro",
|
||||
"targetPackage": [
|
||||
[
|
||||
"/package1/",
|
||||
"TestOnlyC"
|
||||
],
|
||||
[
|
||||
"/package2/",
|
||||
"TestQMLWidgets"
|
||||
]
|
||||
],
|
||||
"noStrip": false,
|
||||
"extractPlugins": false,
|
||||
"noTranslations": false,
|
||||
"qmlOut": "qml",
|
||||
"libOut": "lib",
|
||||
"trOut": "tr",
|
||||
"pluginOut": "plug",
|
||||
"binOut": "bin",
|
||||
"recOut": "rec",
|
||||
"verbose": 3,
|
||||
"qif": false,
|
||||
"noCheckRPATH": false,
|
||||
"noCheckPATH": false,
|
||||
"name": [
|
||||
[
|
||||
"package2",
|
||||
"package2Application"
|
||||
],
|
||||
[
|
||||
"mainApplication"
|
||||
]
|
||||
],
|
||||
"description": [
|
||||
[
|
||||
"package2",
|
||||
"this is description for package 'package2'"
|
||||
],
|
||||
[
|
||||
"this is description for default package"
|
||||
]
|
||||
],
|
||||
"deployVersion": [
|
||||
[
|
||||
"package2",
|
||||
"1.0.0"
|
||||
],
|
||||
[
|
||||
"1.0.0"
|
||||
]
|
||||
],
|
||||
"releaseDate": [
|
||||
[
|
||||
"package2",
|
||||
"yyyy-MM-dd"
|
||||
],
|
||||
[
|
||||
"yyyy-MM-dd"
|
||||
]
|
||||
],
|
||||
"icon": [
|
||||
[
|
||||
"package2",
|
||||
"/path/icon.png"
|
||||
],
|
||||
[
|
||||
"/path/main/icon.png"
|
||||
]
|
||||
],
|
||||
"publisher": [
|
||||
[
|
||||
"package2",
|
||||
"team of package2"
|
||||
],
|
||||
[
|
||||
"main team"
|
||||
]
|
||||
],
|
||||
"customScript": "echo 'I am use custom script!!!'"
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Цель файла- упростить вызов cqtdeployer и переместить часть или все параметры в файл. Все параметры, указанные в файле, имеют более низкий приоритет, чем параметры, добавленные в консоль при запуске.
|
||||
|
||||
### Создание файла
|
||||
|
||||
#### Способ 1
|
||||
|
||||
1. Вызовите `cqtdeployer init` Для инициализации файла для приложения состоящего из одного пакета.
|
||||
Или `cqtdeployer -init multi` Для инициализации файла для проекта с несколькими пакетами.
|
||||
2. Откройте CQtDeployer.json и отредактируйте его под свои нужды.
|
||||
3. Вызовите cqtdeployer в дериктории с файлом CQtDeployer.json, или укажите путь к нему используя флаг -confFile path/to/my/CQtDeployer.json
|
||||
|
||||
#### Способ 2
|
||||
|
||||
Вызовите cqtdeployer с нужным вам набором параметров и укажите путь к файлу при помощи флага -confFile (файл должен отсутствовать). Если файл будет существовать, то cqtdeployer начнет выгружать из него параметры.
|
||||
|
||||
Пример:
|
||||
``` bash
|
||||
cqtdeployer -confFile deploy.json -bin CQtDeployerInstaller -targetDir ./test -qmlOut myqml -binOut mybin -libOut mylib -pluginOut myplugins noStrip noTranslations -recursiveDepth 5 -extraPlugin sqldrivers,audio,mediaservice force-clear deploySystem noOverwrite
|
||||
```
|
||||
Где:
|
||||
|
||||
* cqtdeployer - вызов cqtdeployer
|
||||
* -confFile deploy.json - путь к файлу, который нужно создать
|
||||
* "-bin CQtDeployerInstaller -targetDir ./test -qmlOut myqml -binOut mybin -libOut mylib -pluginOut myplugins noStrip noTranslations -recursiveDepth 5 -extraPlugin sqldrivers,audio,mediaservice force-clear deploySystem noOverwrite" - необходимые параметры.
|
||||
|
||||
|
||||
### Использование файла развертывания.
|
||||
|
||||
Чтобы cqtdeployer начал читать параметры из файла, используйте флаг -confFile [путь к файлу]
|
||||
|
||||
#### Пример:
|
||||
|
||||
cqtdeployer -qmake ~/Qt/bin/qmake -confFile ./deploy.json
|
||||
|
@ -1,9 +0,0 @@
|
||||
# Что такое CQtDeployer
|
||||
|
||||
CQtDeployer - это утилита для извлечения всех зависимых библиотек исполняемых файлов и создания сценария запуска для вашего приложения.
|
||||
|
||||
Основные отличия этой программы:
|
||||
* Производительность - эта программа развертывает приложение в несколько раз быстрее (до 10 секунд)
|
||||
* Гибкость - эта утилита имеет флаги, которые помогут вам настроить деплоинг под ваши нужды и нужды вашего проекта
|
||||
* Crossdeploy - приложение поддерживает Windows и дистрибутивы Linux, это означает, что вы можете использовать его не только для развертывания проекта для вашей платформы, но и для развертывания проекта в Linux для Windows и наоборот.
|
||||
* Упаковка - эта утилита может создавать установочные файлы и пакеты, для вашего приложения.
|
@ -1,19 +0,0 @@
|
||||
# Отключение ярлыков для Qt Installer.
|
||||
|
||||
Отключение ярлыков для многоцелевого дистрибутива в структуре Qt Installer.
|
||||
|
||||
Иногда нам нужно отключить автоматическое создание ярлыков для некоторых приложений.
|
||||
Для решения этой проблемы я рекомендую переопределить шаблон фреймворка установщика qt по умолчанию.
|
||||
|
||||
# Примечание
|
||||
В CQtDeployer 1.5.1 вы можете добавить опцию -disableShortcuts для отключения автоматизации создания ярлыков.
|
||||
|
||||
### Пример:
|
||||
|
||||
```bash
|
||||
cqtdeployer -disableShortCut targetName,target2Name
|
||||
```
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myProgramm.exe -disableShortCut myProgramm
|
||||
```
|
@ -1,46 +0,0 @@
|
||||
# Переменные окружения CQtDeployer
|
||||
|
||||
Эта страница содержит информацию о переменных содержащихся в скрипте запуска по умолчанию.
|
||||
|
||||
## Инициализация
|
||||
|
||||
Все переменные окружения инициализируются в скрипте запуска по умолчанию. Поэтому, если вы используете опцию runScript, вам необходимо вручную воссоздать все необходимые переменные.
|
||||
|
||||
|
||||
## Список стандартных переменных
|
||||
|
||||
| Имя переменной | Описание |
|
||||
| --- | --- |
|
||||
| CQT_PKG_ROOT | Эта переменная содержит путь к корню текущего пакета.
|
||||
| CQT_RUN_FILE | Эта переменная содержит путь к скрипту запуска используемого приложения. |
|
||||
|
||||
|
||||
## Описания определений
|
||||
|
||||
**корень текущего пакета** - Этот корень является локальным корнем для любых отдельных пакетов.
|
||||
|
||||
|
||||
Пример :
|
||||
|
||||
```bash
|
||||
.
|
||||
├── pakcage1 << Это локальный корень пакета package1
|
||||
│ ├── bin
|
||||
│ ├── lib
|
||||
│ ├── plugins
|
||||
│ ├── qml
|
||||
│ └── translations
|
||||
├── package2 << Это локальный корень пакета package2
|
||||
│ ├── bin
|
||||
│ ├── lib
|
||||
│ ├── plugins
|
||||
│ ├── qml
|
||||
│ └── translations
|
||||
└── pakcage3 << Это локальный корень пакета package3
|
||||
├── bin
|
||||
├── lib
|
||||
├── plugins
|
||||
├── qml
|
||||
└── translations
|
||||
|
||||
```
|
@ -1,107 +0,0 @@
|
||||
# Добавление дополнительных данных
|
||||
|
||||
Добавление дополнительных данных в дистрибутив.
|
||||
|
||||
|
||||
CQtDeployer поддерживает работу с дополнительными файлами данных.
|
||||
|
||||
Для этого используйте параметры -extraData и -extraDataOut.
|
||||
|
||||
## Примеры:
|
||||
|
||||
### Добавление собственных файлов в корневой каталог дистрибутива.
|
||||
|
||||
```
|
||||
cqtdeployer -extraData путь / к / my / customFile
|
||||
```
|
||||
|
||||
Или в configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"extraData": "./path/to/my/customFile"
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
Эта команда поддерживает список аргументов.
|
||||
|
||||
|
||||
```bash
|
||||
cqtdeployer -extraData path/to/my/customFile,path/to/my/customFile2,path/to/my/customFile3
|
||||
```
|
||||
|
||||
Или в configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"extraData": [
|
||||
"./path/to/my/customFile",
|
||||
"./path/to/my/customFile2",
|
||||
"./path/to/my/customFile3"
|
||||
]
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Изменение расположения дополнительных файлов данных.
|
||||
|
||||
Для изменения местоположения используйте параметры extraDataOut. Эта опция меняет путь назначения относительно корня дистрибутива.
|
||||
|
||||
### Пример. Добавьте пользовательские скрипты в папку скриптов в Distribution.
|
||||
|
||||
```bash
|
||||
cqtdeployer -extraData /path/to/myScripts.sh,/another/path/to/myScripts.sh -extraDataOut scripts
|
||||
```
|
||||
|
||||
Или в configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"extraData": [
|
||||
"./path/to/myScripts.sh",
|
||||
"./another/path/to/myScripts.sh"
|
||||
],
|
||||
"extraDataOut": "скрипты"
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
## Пакеты
|
||||
Опции extraData и extraDataOut поддерживают работу с пакетами. Дополнительную информацию о пакетах см. На [странице](Packing.md) упаковки.
|
||||
|
||||
Иногда нам нужно создать многопакетное приложение. Например, создайте установщик для приложения client-server с клиентскими и серверными приложениями. Клиент и сервер имеют собственные файлы конфигурации по умолчанию. Мы добавляем файлы config с помощью опции extraData.
|
||||
|
||||
Для создания большого дистрибьютора я рекомендую использовать [confFile](DeployConfigFile.md).
|
||||
|
||||
## Пример применения мультиупаковки.
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
"корзина": [
|
||||
"myClientExecutable",
|
||||
"myServerExecutable"
|
||||
],
|
||||
|
||||
"targetPackage": [
|
||||
["Клиент", "myClientExecutable"],
|
||||
["Сервер", "myServerExecutable"]
|
||||
],
|
||||
|
||||
"extraData": [
|
||||
["Клиент", "./path/to/clientConfig.conf"],
|
||||
["Сервер", "./path/to/serverConfig.conf"]
|
||||
],
|
||||
"extraDataOut": [
|
||||
["Клиент", "defaultConfigurations"],
|
||||
["Сервер", "defaultConfigurations"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Эта конфигурация создает дистрибутив с двумя приложениями (клиент и сервер). Каждое приложение имеет собственный файл конфигурации в папке defaultConfigurations.
|
@ -1,56 +0,0 @@
|
||||
# Извлечение шаблонов
|
||||
|
||||
Извлечение шаблонов по умолчанию
|
||||
|
||||
Иногда вам нужно создать свои собственные шаблоны для установщиков или пакетов deb.
|
||||
Для этого вы можете использовать опцию getDefaultTemplate.
|
||||
|
||||
Эта опция извлекает шаблон вашего дистрибутива по умолчанию в целевой каталог.
|
||||
|
||||
Эта опция создаст шаблон в соответствии с вашими настройками. Если вы используете опцию targetPackage, то для каждого настроенного вами пакета будет создан шаблон.
|
||||
|
||||
### Пример:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myExecutable getDefaultTemplate qif
|
||||
```
|
||||
Эта команда создает шаблон для среды установки qt в папке DistributionKit для вашей программы "myExecutable".
|
||||
|
||||
Если вы хотите изменить целевое местоположение, просто добавьте параметр targetDir
|
||||
```bash
|
||||
cqtdeployer -bin myExecutable getDefaultTemplate qif -targetDir "/distanation/Dir"
|
||||
|
||||
```
|
||||
|
||||
## Работа с мультипакетной раздачей.
|
||||
|
||||
Эта опция поддерживает configFile.json
|
||||
|
||||
### Пример:
|
||||
|
||||
#### configFile.json
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
"корзина": [
|
||||
"myClientExecutable",
|
||||
"myServerExecutable"
|
||||
],
|
||||
|
||||
"targetPackage": [
|
||||
["Клиент", "myClientExecutable"],
|
||||
["Сервер", "myServerExecutable"]
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif -confFile "path/to/configFile.json"
|
||||
```
|
||||
|
||||
|
||||
## Запись
|
||||
|
||||
Эта опция поддерживает работу со всеми пакетами, кроме zip.
|
||||
Если вы хотите получить больше информации о доступных пакетах, смотрите упаковку [страница](Packing.md).
|
536
md/ru/Guide.md
@ -1,536 +0,0 @@
|
||||
# Как развернуть приложение
|
||||
|
||||
В этой статье я описываю процессы развертывания приложения c++/qt с помощью cqtdeployer.
|
||||
|
||||
## Рекомендация
|
||||
Если вам нужна максимальная стабильность вашего дистрибутива и вы хотите запускать свое приложение в разных дистрибутивах с разными версиями, вам необходимо использовать Qt из официального [build](https://www.qt.io/download-open-source?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5).
|
||||
|
||||
## Кейс
|
||||
В этом случае мы развертываем приложение Qt GUI для Ubuntu 16.04, Ubuntu 18.04 и Ubuntu 20.04++.
|
||||
|
||||
**Если вы хотите поддерживать все дистрибутивы, начиная с Ubuntu 16.04, вам необходимо собрать и развернуть приложение в более старом дистрибутиве (в моем случае это 16.04)**
|
||||
|
||||
## Установить CQtDeployer
|
||||
Если вы хотите использовать системный qt из своей ОС, установите [классическую](https://github.com/QuasarApp/CQtDeployer/releases/download/1.4.7/LinuxInstaller.run) версию cqtdeployer.
|
||||
|
||||
``` bash
|
||||
wget https://github.com/QuasarApp/CQtDeployer/releases/download/1.4.7/LinuxInstaller.run
|
||||
```
|
||||
|
||||
```
|
||||
chmod + x LinuxInstaller.run
|
||||
./LinuxInstaller.run
|
||||
```
|
||||

|
||||
|
||||
Выберите последнюю стабильную версию (1.4)
|
||||
|
||||

|
||||
|
||||
Выполнено.
|
||||
|
||||
Если вы используете официальную сборку qt, вы можете использовать snap-версию cqtdeployer.
|
||||
|
||||
```
|
||||
sudo snap install cqtdeployer
|
||||
```
|
||||
|
||||
После установки добавьте необходимые разрешения.
|
||||
|
||||
```
|
||||
sudo snap connect cqtdeployer:process-control
|
||||
sudo snap connect cqtdeployer:removable-media
|
||||
sudo snap connect cqtdeployer:system-backup
|
||||
```
|
||||
|
||||
Выполнено!!!
|
||||
|
||||
## Развертывание приложения Qt GUI
|
||||
|
||||
### Разверните исполняемый файл.
|
||||
|
||||
* Для систем Linux:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable
|
||||
```
|
||||
|
||||
* Для систем Windows:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake C: /Qt/5.15.0/min_gw/bin/qmake.exe
|
||||
```
|
||||
|
||||
* Для кроссплатформенной сборки (Linux -> Windows)
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake ~/crossbuildet-Qt/5.15.0/min_gw/ bin / qmake
|
||||
```
|
||||
|
||||
## Дополнительные параметры
|
||||
|
||||
Если вы используете дополнительные библиотеки, просто добавьте путь для cqtdeployer к используемым библиотекам.
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable -libDir/PathToMyExtraLibs
|
||||
```
|
||||
|
||||
Если вы хотите найти библиотеки рекурсивно из пути libDir, просто добавьте параметр рекурсивной глубины.
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable -libDir/PathToMyExtraLibs -recursiveDepth 5
|
||||
```
|
||||
|
||||
Если ваше приложение использует qml, просто добавьте опцию qmlDir
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin myexecutable -libDir/PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources
|
||||
```
|
||||
|
||||
Если вы хотите создать простой установщик для своего приложения, просто добавьте опцию gif.
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir/PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif
|
||||
```
|
||||
|
||||
Если cqtdeployer не нашел qmake, добавьте параметр -qmake в команду вызова.
|
||||
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir / PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif -qmake/path/to/my/qmake
|
||||
|
||||
```
|
||||
|
||||
# На живом примере animation из [Примеров Qt](https://doc.qt.io/qt-5/qtquick-animation-example.html)
|
||||
|
||||
|
||||
## Собираем проект в релизную сборку
|
||||
|
||||
Выполняем qmake с опцие -r для релизной сборки.
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ ~/Qt/5.15.2/gcc_64/bin/qmake -r .
|
||||
```
|
||||
|
||||
Вызываем ваш make generator
|
||||
|
||||
Для Linux:
|
||||
|
||||
```bash
|
||||
make -j${nproc}
|
||||
```
|
||||
|
||||
Для Windows
|
||||
|
||||
```bash
|
||||
Qt/Tools/QtCreator/bin/jom.exe
|
||||
```
|
||||
Билд лог
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ make -j${nproc}
|
||||
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../../../5.15.2/gcc_64/include -I../../../../5.15.2/gcc_64/include/QtQuick -I../../../../5.15.2/gcc_64/include/QtGui -I../../../../5.15.2/gcc_64/include/QtQmlModels -I../../../../5.15.2/gcc_64/include/QtQml -I../../../../5.15.2/gcc_64/include/QtNetwork -I../../../../5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I../../../../5.15.2/gcc_64/mkspecs/linux-g++ -o main.o main.cpp
|
||||
/home/andrei/Qt/5.15.2/gcc_64/bin/rcc -name shared ../shared/shared.qrc -o qrc_shared.cpp
|
||||
/home/andrei/Qt/5.15.2/gcc_64/bin/rcc -name animation animation.qrc -o qrc_animation.cpp
|
||||
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../../../5.15.2/gcc_64/include -I../../../../5.15.2/gcc_64/include/QtQuick -I../../../../5.15.2/gcc_64/include/QtGui -I../../../../5.15.2/gcc_64/include/QtQmlModels -I../../../../5.15.2/gcc_64/include/QtQml -I../../../../5.15.2/gcc_64/include/QtNetwork -I../../../../5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I../../../../5.15.2/gcc_64/mkspecs/linux-g++ -o qrc_animation.o qrc_animation.cpp
|
||||
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -I../../../../5.15.2/gcc_64/include -I../../../../5.15.2/gcc_64/include/QtQuick -I../../../../5.15.2/gcc_64/include/QtGui -I../../../../5.15.2/gcc_64/include/QtQmlModels -I../../../../5.15.2/gcc_64/include/QtQml -I../../../../5.15.2/gcc_64/include/QtNetwork -I../../../../5.15.2/gcc_64/include/QtCore -I. -I/usr/include/libdrm -I../../../../5.15.2/gcc_64/mkspecs/linux-g++ -o qrc_shared.o qrc_shared.cpp
|
||||
g++ -Wl,-O1 -Wl,-rpath,/home/andrei/Qt/5.15.2/gcc_64/lib -o animation main.o qrc_shared.o qrc_animation.o /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Quick.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Gui.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QmlModels.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Qml.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Network.so /home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Core.so -lGL -lpthread
|
||||
```
|
||||
|
||||
## Находим наш получившийся исполняемый файл
|
||||
|
||||
Если вы собирали проект с помощью qtCreator ваш исполняемый файл будет находиться на уровень выше в папке **build-Animations-Desktop_Qt_5_15_2_GCC_64bit-Release**
|
||||
В моем случае исполняемый файл лежит в корневом катологе проекта.
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ tree
|
||||
.
|
||||
├── animation # Вот он.
|
||||
├── animation.pro
|
||||
├── animation.qml
|
||||
├── animation.qmlproject
|
||||
├── animation.qrc
|
||||
├── basics
|
||||
│ ├── animators.qml
|
||||
│ ├── color-animation.qml
|
||||
│ ├── images
|
||||
│ │ ├── face-smile.png
|
||||
│ │ ├── moon.png
|
||||
│ │ ├── shadow.png
|
||||
│ │ ├── star.png
|
||||
│ │ └── sun.png
|
||||
│ └── property-animation.qml
|
||||
├── behaviors
|
||||
│ ├── behavior-example.qml
|
||||
│ ├── FocusRect.qml
|
||||
│ ├── SideRect.qml
|
||||
│ ├── tvtennis.qml
|
||||
│ └── wigglytext.qml
|
||||
├── doc
|
||||
│ ├── images
|
||||
│ │ └── qml-animations-example.png
|
||||
│ └── src
|
||||
│ └── animation.qdoc
|
||||
├── easing
|
||||
│ └── easing.qml
|
||||
├── main.cpp
|
||||
├── main.o
|
||||
├── Makefile
|
||||
├── pathanimation
|
||||
│ └── pathanimation.qml
|
||||
├── pathinterpolator
|
||||
│ └── pathinterpolator.qml
|
||||
├── qrc_animation.cpp
|
||||
├── qrc_animation.o
|
||||
├── qrc_shared.cpp
|
||||
├── qrc_shared.o
|
||||
└── states
|
||||
├── qt-logo.png
|
||||
├── states.qml
|
||||
└── transitions.qml
|
||||
10 directories, 33 files
|
||||
```
|
||||
|
||||
## Вызываем cqtdeployer для формирования Базового Дистрибутива
|
||||
|
||||
Для Linux:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin animation -qmlDir . qif -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
```
|
||||
Для Windows:
|
||||
|
||||
```bash
|
||||
cqtdeployer -bin animation -qmlDir . qif -qmake ~/Qt/5.15.2/mingw_810_64/bin/qmake.exe
|
||||
```
|
||||
|
||||
Лог развёртывания
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ cqtdeployer -bin animation -qmlDir . qif -qmake ~/Qt/5.15.2/gcc_64/bin/qmake
|
||||
Info: Deploy ...
|
||||
Info: flag targetDir not used. use default target dir :/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit
|
||||
Info: target deploy started!!
|
||||
Info: copy :/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/animation
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/libqmlplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/Models.2/libmodelsplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/Models.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/Models.2/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/RemoteObjects/libqtqmlremoteobjects.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/RemoteObjects/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/RemoteObjects/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/StateMachine/libqtqmlstatemachine.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/StateMachine/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/StateMachine/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/WorkerScript.2/libworkerscriptplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/WorkerScript.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQml/WorkerScript.2/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick/Particles.2/libparticlesplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick/Particles.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick/Particles.2/qmldir
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick.2/libqtquick2plugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick.2/plugins.qmltypes
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/qml/QtQuick.2/qmldir
|
||||
Info: platform : libqvnc is disabled
|
||||
Info: platform : libqvnc is disabled
|
||||
Info: platform : libqwebgl is disabled
|
||||
Info: platform : libqwebgl is disabled
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/bearer/libqconnmanbearer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/bearer/libqgenericbearer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/bearer/libqnmbearer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/iconengines/libqsvgicon.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqgif.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqicns.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqico.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqjpeg.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqsvg.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqtga.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqtiff.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqwbmp.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/imageformats/libqwebp.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqeglfs.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqlinuxfb.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqminimal.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqminimalegl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqoffscreen.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-generic.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-xcomposite-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqwayland-xcomposite-glx.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platformthemes/libqgtk3.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/platformthemes/libqxdgdesktopportal.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-decoration-client/libbradient.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libdmabuf-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libdrm-egl-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libshm-emulation-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libvulkan-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libxcomposite-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-client/libxcomposite-glx.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-dmabuf-server-buffer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-drm-egl-server-buffer.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-linux-dmabuf-unstable-v1.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-shm-emulation-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-vulkan-server.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-wayland-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-wayland-eglstream-controller.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-xcomposite-egl.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-graphics-integration-server/libqt-wayland-compositor-xcomposite-glx.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libfullscreen-shell-v1.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libivi-shell.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libwl-shell.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libxdg-shell-v5.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libxdg-shell-v6.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/wayland-shell-integration/libxdg-shell.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/xcbglintegrations/libqxcb-egl-integration.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/plugins/xcbglintegrations/libqxcb-glx-integration.so
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Core.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Network.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5EglFSDeviceIntegration.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5XcbQpa.so.5
|
||||
Info: copy :/home/andrei/CQtDeployer/1.5/lib/libicui18n.so.56
|
||||
Info: copy :/usr/lib/x86_64-linux-gnu/libxcb-xinerama.so.0
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5RemoteObjects.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QuickParticles.so.5
|
||||
Info: copy :/home/andrei/CQtDeployer/1.5/lib/libicudata.so.56
|
||||
Info: copy :/home/andrei/CQtDeployer/1.5/lib/libicuuc.so.56
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QmlWorkerScript.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Widgets.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5WaylandClient.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5DBus.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Qml.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Quick.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5QmlModels.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Gui.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5Svg.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/lib/libQt5WaylandCompositor.so.5
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ar.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_bg.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ca.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_cs.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_da.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_de.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_en.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_es.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_fi.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_fr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_gd.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_he.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_hu.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_it.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ja.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ko.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_lv.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_pl.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_ru.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_sk.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_tr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_uk.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtbase_zh_TW.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_bg.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_da.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_de.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_en.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_es.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_fi.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_fr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_hu.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_ja.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_ko.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_lv.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_pl.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_ru.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_sk.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_tr.qm
|
||||
Info: copy :/home/andrei/Qt/5.15.2/gcc_64/translations/qtdeclarative_uk.qm
|
||||
Info: try deploy msvc
|
||||
Info: deploy done!
|
||||
Info: copy ::/shared/Distributions/Templates/Icon.png
|
||||
Error: not exits
|
||||
Info: [0] Parsed arguments, ok.
|
||||
Info: [2] Collecting information about available packages...
|
||||
Info: [4] Found subdirectory "Application"
|
||||
Info: [4] - it provides the package "Application" - "1.0"
|
||||
Info: [4] Copying component data for "Application"
|
||||
Info: [5] Compressing data directory "bin"
|
||||
Info: [21] Compressing data directory "icons"
|
||||
Info: [31] Compressing data directory "lib"
|
||||
Info: [11111] Compressing data directory "plugins"
|
||||
Info: [11740] Compressing data directory "qml"
|
||||
Info: [11786] Compressing data directory "translations"
|
||||
Info: [12321] Compressing files found in data directory: ("/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/packages/Application/data/animation.sh")
|
||||
Info: [12321] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z.sha1"
|
||||
[12321] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z"
|
||||
Info: [12321] Generated sha1 hash: "0af6cb9dc074407a8857403f07d13aa7d1b3c9cb"
|
||||
Info: [12322] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z.sha1"
|
||||
[12322] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z"
|
||||
Info: [12322] Generated sha1 hash: "aa938cb332bfb427a6d0280c07c204c1bb48da22"
|
||||
Info: [12322] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z.sha1"
|
||||
[12322] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z"
|
||||
Info: [12347] Generated sha1 hash: "7c3a43111e694bc82a0ab0d19a6e4d0025f17313"
|
||||
Info: [12347] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z.sha1"
|
||||
[12347] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z"
|
||||
Info: [12349] Generated sha1 hash: "4ed23c36835a9b62701478ab6897737dfe9dfc9a"
|
||||
Info: [12349] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z.sha1"
|
||||
Info: [12349] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z"
|
||||
Info: [12349] Generated sha1 hash: "bd44e15d2c26c8f6cb50760032eadf0241eedf43"
|
||||
Info: [12349] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z.sha1"
|
||||
[12349] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z"
|
||||
Info: [12350] Generated sha1 hash: "030e0ede0c0e058a5d5a3b6c43c6a4767119d3f1"
|
||||
Info: [12350] Hash is stored in "/tmp/binarycreator-yOPMPa/Application/1.0content.7z.sha1"
|
||||
Info: [12350] Creating hash of archive "/tmp/binarycreator-yOPMPa/Application/1.0content.7z"
|
||||
Info: [12350] Generated sha1 hash: "acd2cd63e77971acedbcda2a65f93b2cc036025f"
|
||||
Info: [12350] Copy meta data for package "Application" using "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/packages/Application/meta/package.xml"
|
||||
Info: [12350] calculate size of directory "/tmp/binarycreator-yOPMPa/Application/data"
|
||||
Info: [12359] Copying associated "script" file "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/packages/Application/meta/installscript.qs"
|
||||
Info: [12360] done.
|
||||
Info: [12360] Begin to copy configuration file and data.
|
||||
Info: [12360] Copying associated "configuration" file "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/config/config.xml"
|
||||
Info: [12360] done.
|
||||
Info: [12360] Read dom element: <Name>animation</Name>.
|
||||
Info: [12360] Read dom element: <Version>1.0</Version>.
|
||||
Info: [12360] Read dom element: <Title>animation</Title>.
|
||||
Info: [12360] Read dom element: <Publisher>Company</Publisher>.
|
||||
[12360] Read dom element: <StartMenuDir>animation</StartMenuDir>.
|
||||
[12360] Read dom element: <TargetDir>@HomeDir@/animation</TargetDir>.
|
||||
Info: [12360] Read dom element: <InstallActionColumnVisible>true</InstallActionColumnVisible>.
|
||||
[12360] Read dom element: <RemoveTargetDir>true</RemoveTargetDir>.
|
||||
Info: [12360] Read dom element: <ControlScript>controlScript.qs</ControlScript>.
|
||||
Info: [12360] Copying associated "ControlScript" file "/home/andrei/Qt/Examples/Qt-5.15.2/quick/animation/DistributionKit/defaultQIFWTemplate/config/controlScript.qs"
|
||||
Info: [12360] done.
|
||||
Info: [12360] Read dom element: <MaintenanceToolName>animationTool</MaintenanceToolName>.
|
||||
[12360] Read dom element: <ProductUrl></ProductUrl>.
|
||||
Info: [12360] done.
|
||||
Info: [12362] Creating the binary
|
||||
Info: [12407] Creating resource archive for "Application"
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z" ("61.58 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0bin.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z" ("108.00 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0icons.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z" ("18.08 MB")
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0lib.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z" ("1.08 MB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0plugins.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z" ("53.29 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0qml.7z.sha1" ("40.00 bytes")
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z" ("595.71 KB")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0translations.7z.sha1" ("40.00 bytes")
|
||||
[12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0content.7z" ("439.00 bytes")
|
||||
Info: [12407] Appending "/tmp/binarycreator-yOPMPa/Application/1.0content.7z.sha1" ("40.00 bytes")
|
||||
Info: [12449] Cleaning up...
|
||||
```
|
||||
|
||||
Готово. дистрибутив был сохранен в папку **DistributionKit**
|
||||
|
||||
```bash
|
||||
andrei@X570-GAMING-X:~/Qt/Examples/Qt-5.15.2/quick/animation$ ./DistributionKit/Installeranimation.run
|
||||
```
|
||||
|
||||

|
||||
|
||||
После установки буду созданы все необходимые ярлыки.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
## Интеграция с QtCreator
|
||||
|
||||
К сожалению, на данный момент нет интеграции с qtcreator.
|
||||
Единственный способ - включить цель сборки для **qmake** или **cmake**
|
||||
|
||||
### qmake
|
||||
|
||||
```qmake
|
||||
QT_DIR= $$[QT_HOST_BINS]
|
||||
win32:QMAKE_BIN= $$QT_DIR/qmake.exe
|
||||
contains(QMAKE_HOST.os, Linux):{
|
||||
QMAKE_BIN= $$QT_DIR/qmake
|
||||
}
|
||||
|
||||
deploy.commands= cqtdeployer -bin $$DESTDIR/$$TARGET -qmake $$QMAKE_BIN -libDir $$PWD -qmlDir $$PWD -recursiveDepth 5 qif
|
||||
|
||||
QMAKE_EXTRA_TARGETS += deploy
|
||||
|
||||
```
|
||||
|
||||
### cmake
|
||||
|
||||
```cmake
|
||||
find_program(Q_MAKE_EXE qmake)
|
||||
|
||||
find_program(CQT_EXE cqtdeployer)
|
||||
|
||||
IF(NOT EXISTS ${CQT_EXE})
|
||||
message("the cqtdeployer not exits please install the cqtdeployer and run cmake again!")
|
||||
return()
|
||||
endif(NOT EXISTS ${CQT_EXE})
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
deploy
|
||||
COMMAND cqtdeployer clear -bin ${CURENT_PROJECT} -qmake ${Q_MAKE_EXE} -libDir ${PROJECT_SOURCE_DIR} -qmlDir ${PROJECT_SOURCE_DIR} -recursiveDepth 5
|
||||
COMMENT "Deploy: cqtdeployer clear -bin ${CURENT_PROJECT} -qmake ${Q_MAKE_EXE} -libDir ${PROJECT_SOURCE_DIR} -qmlDir ${PROJECT_SOURCE_DIR} -recursiveDepth 5"
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
```
|
||||
|
||||
Параметр **libDir** используется для установки путей к каталогам, в которых пути содержат зависимости вашего приложения, а параметр **qmlDir** используется для установки путей к каталогам, содержащих файлы qml, необходимые вашему приложению. В этом примере корень исходного кода приложения выбирается этими двумя параметрами.
|
||||
|
||||
Параметр **recursiveDepth** используется для установки глубины поиска **libDir** и **qmlDir**.
|
||||
|
||||
Параметр **qif** используется для создания установщика с использованием Qt Installer Framework.
|
||||
|
||||
|
||||
|
||||
## Пример интеграции
|
||||
|
||||
Создаем тестовый проект
|
||||
|
||||
```qmake
|
||||
QT += quick
|
||||
CONFIG += c++11
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
SOURCES += \
|
||||
main.cpp
|
||||
RESOURCES += qml.qrc
|
||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||
QML_IMPORT_PATH =
|
||||
# Additional import path used to resolve QML modules just for Qt Quick Designer
|
||||
QML_DESIGNER_IMPORT_PATH =
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
QT_DIR= $$[QT_HOST_BINS]
|
||||
win32:QMAKE_BIN= $$QT_DIR/qmake.exe
|
||||
contains(QMAKE_HOST.os, Linux):{
|
||||
QMAKE_BIN= $$QT_DIR/qmake
|
||||
}
|
||||
DESTDIR=$$PWD/Build
|
||||
deploy.commands= cqtdeployer -bin $$DESTDIR/$$TARGET -qmake $$QMAKE_BIN -libDir $$PWD -qmlDir $$PWD -recursiveDepth 5 qif
|
||||
QMAKE_EXTRA_TARGETS += deploy
|
||||
```
|
||||
|
||||
2. Открываем панель управления проектом
|
||||

|
||||
|
||||
3. Выбираем релизную сборку.
|
||||

|
||||
|
||||
|
||||
3. Добавляем "Особый этап сборки"
|
||||

|
||||
|
||||
4. В поле "Make arguments" добавляем наш этап развертывания "Deploy"
|
||||

|
||||
|
||||
5. Сохраняем
|
||||
6. Запускаем сборку.
|
||||
|
||||
#### На выходе вы получите папку DistributionKit с установщиком вашего приложения.
|
@ -1,26 +0,0 @@
|
||||
# Добро пожаловать в "C Qt Deployer"!
|
||||
# 
|
||||
|
||||
***************************
|
||||
|
||||
# Основные разделы
|
||||
|
||||
* [Описание CQtDeployer](Description.md)
|
||||
* [Параметры](Options.md)
|
||||
* [Руководство](Guide.md)
|
||||
* [Краткое Руководство](QuickGuide.md)
|
||||
* [Сборка и установка](Build-and-Install.md)
|
||||
* [Файл развертывания](DeployConfigFile.md)
|
||||
* [Упаковка](Packing.md)
|
||||
* [Список изменений](Changelog.md)
|
||||
* [Обзоры](ReleaseReviews.md)
|
||||
* [Сравнение возможностей](CompareFeatures.md)
|
||||
* [Добавление дополнительных файлов](ExtraFiles.md)
|
||||
* [Получение шаблонов упаковки](ExtractDefaultsTemplates.md)
|
||||
* [Стандартные переменные окружения](EnvironmentVariables.md)
|
||||
* [Отключение стандартных ярлыков](DisableShortcats.md)
|
||||
* [Пользовательские скрипты](CustomScripts.md)
|
||||
|
||||
|
||||
## Поддержите проект
|
||||
Если вам нравится то, что мы делаем, и это приносит вам пользу, вы можете поддержать проект на официальной странице [QuasarApp в Patreon](https://www.patreon.com/QuasarApp)
|
171
md/ru/Options.md
@ -1,171 +0,0 @@
|
||||
# Использование параметров
|
||||
|
||||
Общие правила использования параметров
|
||||
|
||||
```
|
||||
cqtdeployer -option1 value1 -option2 list,of,values flag1 flag2 flag3
|
||||
```
|
||||
|
||||
* Все параметры должны начинается с знака '-' за исключением параметров, из котегории "Флаги".
|
||||
* После указания нужного параметра нужно в обязательном порядке указать значение
|
||||
* Некоторые параметры поддерживают перечисления (массивы значений). При инициализации таких параметров укажите список значений через ',' без прабелов. Если вы используете какой либо язык программирования и вызываете процесс cqtdeployer то массив значений должен передаваться как 1 параметр.
|
||||
* Некоторые параметры поддерживают пересисления с возможностью выбрать цель для которой будет применен флаг. Цель и значения разделяются при помощи знака ';'. Пример -libOut target1;value1,target2;value2,defaultValue.
|
||||
* Для включения какого либо флага достаточно просто включить в список опций имя флага.
|
||||
|
||||
## Обозначения в таблице
|
||||
|
||||
* **-binDir [params]** - параметр без поддержки массивов.
|
||||
* **-bin [params,list]** - параметр c поддержкой массивов. В качестве разделителя используется ','.
|
||||
* **-libOut [package;path,path]** - параметр c поддержкой выбора пакета для которого бутет установленно значение флага. В качестве разделителя используется ';'. Обратитте внимание что для перечисления значений параметра используется правило описанное выше. Последний параметр не имеет значение пакета, это значит что это значение будет установленно для всех не настроенных пакетов по умолчанию.
|
||||
* **clear** - флаг
|
||||
|
||||
## Определения в описании
|
||||
|
||||
**Системное окружение** - пути к системным библиотекам.
|
||||
* Windows:
|
||||
* Пути, определенные в переменной PATH.
|
||||
* C:/Windows/System32
|
||||
* C:/Windows/SysWOW64
|
||||
|
||||
* Linux:
|
||||
* Пути, определенные в переменных LD_LIBRARY_PATH и PATH.
|
||||
* /usr/lib
|
||||
* /lib
|
||||
|
||||
**Развертываемые файлы** - это все файлы, которые будут скопированы в дистрибутив (включая исполняемые файлы)
|
||||
|
||||
**Цели** - это все исполняемые файлы, отмеченные опцией bin.
|
||||
|
||||
**Исполняемые файлы** - это все файлы в форматах PE, ELF и Mach-O.
|
||||
|
||||
## Параметры:
|
||||
|
||||
### Флаги
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| init | проинициализирует файл cqtdeployer.json (файл конфигурации)|
|
||||
| | Например: «cqtdeployer init» - для инициализации базовой конфигурации пакета|
|
||||
| | "cqtdeployer -init multi" - для инициализации конфигурации нескольких пакетов|
|
||||
| | "cqtdeployer -init single" - для инициализации конфигурации одного пакета |
|
||||
| help / h | Показывает справку |
|
||||
| clear | Удаляет все старые файлы (с прошлого запуска) |
|
||||
| force-clear | Удаляет целевую директорию перед развертыванием |
|
||||
| noStrip | Пропускает шаг strip |
|
||||
| noTranslations | Пропускает файлы переводов |
|
||||
| noOverwrite | Запрещает замену уже существующих файлов. |
|
||||
| noCheckRPATH | Отключает автоматический поиск путей к qmake в исполняемых файлах.|
|
||||
| noCheckPATH | Отключает автоматический поиск путей к qmake в системном окружении.|
|
||||
| noRecursiveiIgnoreEnv | Отключает рекурсивное игнорирование переменной среды для флага ignoreEnv. |
|
||||
| v / version | Показывает версию приложения |
|
||||
| qif | Создаст установщик QIF для развертываемой программы" |
|
||||
| | Примеры: cqtdeployer qif |
|
||||
| | Начиная с версии CQtDeployer 1.5 вы можете указать путь к своему собственному шаблону установщика. |
|
||||
| | Примеры: cqtdeployer -qif path/to/myCustom/qif. Подробнее можно посмотреть [здесь](QIF.md) |
|
||||
| deb | Создаст deb пакет для развертываемой программы" |
|
||||
| | Примеры: cqtdeployer deb |
|
||||
| | Вы можете указать путь к своему собственному шаблону пакета. |
|
||||
| | Примеры: cqtdeployer -deb path/to/myCustom/DEBIAN. Подробнее можно посмотреть [здесь](DEB.md) |
|
||||
| deploySystem | Копирует все библиотеки кроме libc |
|
||||
| | (не рекомендуется, так как занимает много памяти, возможны конфликты библиотек) |
|
||||
| noQt | Игнорирует ошибку инициализации qmake. Используйте только в том случае, если ваше приложение не использует платформу qt. |
|
||||
| allowEmptyPackages | Разрешите настраивать пустые пакеты. |
|
||||
| getDefaultTemplate | Извлекает deb или qif шаблоны по умолчанию. Для получения дополнительной информации см. [Страницу](ExtractDefaultsTemplates.md) извлечения шаблонов по умолчанию. |
|
||||
| noHashSum | Отключить вычисление хеш-суммы пакетов |
|
||||
|
||||
### Параметры развертывания:
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -bin [list,params] | Развертываемый файл или папка. пример -bin ~/my/project/bin/,~/my/project/bin.exe. Для файлов: эти файлы будут безоговорочно скопированы в целевой каталог, независимо от их формата или суффикса. Для папок: CQtDeployer войдет в эти папки и нерекурсивно скопирует все развертываемые файлы в целевой каталог. Затем CQtDeployer извлечет все зависимости скопированных файлов. CQtDeployer будет искать зависимости в системной среде и в путях libDir. **Примечание**. Если CQtDeployer не может найти требуемый файл, CQtDeployer попытается найти требуемый файл в системной среде PATH. |
|
||||
| -binPrefix [prefixPath] | Устанавливает путь префикса для опции bin. Пример: **-bin path/MyExecutable** - это тоже что и **-bin MyExecutable -binPrefix path** |
|
||||
| -confFile [params] | Путь к файлу json со всеми конфигурациями развертывания. С помощью этого файла можно добавить нужные опции, тем самым упрастить вызов комманды в консоле. Однако пораметры в кансоле имеют больший приоритет чем в файле. Для получения дополнительной информации об этом флаге см. [Вики](DeployConfigFile) |
|
||||
| -qmlDir [params] | Папка qml. пример -qmlDir ~/my/project/qml |
|
||||
| -qmake [params] | Путь к qmake. пример |
|
||||
| | -qmake ~/Qt/5.14.0/gcc_64/bin/qmake |
|
||||
| -ignore [list,params] | Список библиотек для игнорирования |
|
||||
| | Пример -ignore libicudata.so.56,libicudata2.so.56 |
|
||||
| -ignoreEnv [list,params] | Список путей для игнорирования. |
|
||||
| | Пример -ignoreEnv /bad/dir,/my/bad/Dir |
|
||||
| -libDir [list,params] | Устанавливает дополнительные пути к библиотекам |
|
||||
| | Пример -libDir ~/myLib,~/newLibs. **Внимание** опция libDir не должна быть дочерней от каталога targetDir. Опция targetDir является запрещенной для поиска библиотек, так как может содержать устаревшие библиотеки проекта, что в свою очередь может привести к нежелательным крашам. |
|
||||
| -extraLibs [list,params] | Пример: «-extraLib mySql» - заставляет скопировать все библиотеки, имена которых содержат mySql, в папку проекта. Этот параметр не чувствителен к регистру в Windows и чувствителен к регистру на других платформах. Эта опция будет искать библиотеки только в системных средах, подобных **deploySystem**. |
|
||||
| -customScript [scriptCode] | Установит дополнительный код в скрипты запуска. |
|
||||
| -extraPlugin [list,params] | Устанавливает дополнительный путь для extraPlugin приложения|
|
||||
| -recursiveDepth [params] | Устанавливает глубину поиска библиотек и глубину игнорирования окружения для ignoreEnv (по умолчанию 0) |
|
||||
| -targetDir [params] | Устанавливает целевой каталог (по умолчанию это путь к первому развертываемому файлу)|
|
||||
| -installDirDeb [параметры] | Устанавливает целевой каталог для установки пакета Debian (по умолчанию это /opt путь) |
|
||||
| -installDirQIFW [параметры]| Устанавливает целевой каталог установки для инсталляторов (по умолчанию это путь /home) |
|
||||
| -verbose [0-3] | Показывает дебаг лог. По умолчанию равен 2 |
|
||||
| -platform [list] | Если этот параметр включен, CQtDeployer будет развертывать только двоичные файлы указанной платформы. Поддерживоемые значения : [win_x86 win_x86_64 win_arm win_arm64 linux_x86 linux_x86_64 linux_ARM linux_ARM64] |
|
||||
|
||||
### Параметры управлениями пакетами:
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -targetPackage [package;tar1,package;tar2]| Создает новый пакет и добавляет в него 'tar1 и tar2'|
|
||||
| -qmlOut [package;path,path] | Установит путь к папке с qml |
|
||||
| -libOut [package;path,path] | Установит путь к папке с зависимостями |
|
||||
| -trOut [package;path,path] | Установит путь к папке с файламми переводов |
|
||||
| -pluginOut [package;path,path]| Установит путь к папке с плагинами |
|
||||
| -binOut [package;path,path] | Установит путь к папке с исполняемыми файлами |
|
||||
| -recOut [package;path,path] | Установит путь к папке с ресурсами |
|
||||
| -extraDataOut [package;path,path] | Устанавливает путь к каталогу с дополнительными файлами данных. По умолчанию это корневой каталог дистрибутива. |
|
||||
| -name [package;val,val] | Установит имя пакету. Если указать значение без префикса, то значение будет установленно пакету по умолчанию. |
|
||||
| -description [package;val,val] | Установит описание пакету |
|
||||
| -deployVersion [package;val,val]| Установит версию пакету |
|
||||
| -releaseDate [package;val,val] | Установит дату выпуска пакету |
|
||||
| -icon [package;val,val] | Установит путь к иконке или логотипу пакету |
|
||||
| -publisher [package;val,val]| Установит Издательство (автора) пакету |
|
||||
| -homePage [package;val,val] | Установит URL-адрес домашней страницы для пакета |
|
||||
| -prefix [package;val,val] | Устанавливает префикс для пакета относительно целевого каталога |
|
||||
| -extraData [package;val,val]| Добавляет дополнительные файлы или каталоги как цель. Выбранный каталог будет скопирован в расположение extraDataOut с сохранением собственной структуры.|
|
||||
| -tr [package;val,val] | Добавляет qm файлы в папку переводов. |
|
||||
|
||||
### Параметры управлениями целями:
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -icon [target;val,val] | Установит путь к иконке или логотипу для целе. Эта комманда поддерживает только png файлы для Linux и ico файлы для Windows |
|
||||
| -disableRunScript [target; val, val]| Отключает создание сценария выполнения для выбранных целей |
|
||||
| -disableShortCut [target; val, val] | Отключает создание ярлыков для выбранных целей |
|
||||
| -runScript [target; val, val] | заставляет cqtdeployer заменить сценарий запуска по умолчанию на новый из аргументов параметра. Эта опция копирует все содержимое из входного файла и вставляет весь код в runScript.sh или .bat. Пример использования: cqtdeployer -runScript "myTargetMame;path/to/my/myCustomLaunchScript.sh,myTargetSecondMame;path/to/my/mySecondCustomLaunchScript.sh". Для получения дополнительной информации смотрите статью [Кастомные скрипты](CustomScripts.md)|
|
||||
|
||||
### Параметры управления плагинами:
|
||||
|
||||
| Option | Descriptiion |
|
||||
| ----------------------------|---------------------------------------------------------- |
|
||||
| -extraPlugin [пакет; val1; val2, SingeleVal] | Устанавливает дополнительный путь к стороннему плагину приложения |
|
||||
| -enablePlugins [target,target2,target3] | Включает дополнительные плагины для распространения. |
|
||||
| -disablePlugins [target,target2,target3] | Отключает плагины для распространения. |
|
||||
| | Вы можете отключить любой плагин вашей сборки Qt, просто проверте список доступных плагинов в свой qlFolder/plugins папке.
|
||||
| | Пример: Если вы хотите отключить плагин qxcb: -disablePlugins qxcb. Обратите внимание, что имя плагина указывается без его расширения.
|
||||
|
||||
### Параметры QtInstallFramework:
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -qifStyle [path/to/style.css]| Устанавливает путь к CSS файлу стиля или устанавливает стиль по умолчанию. Доступные стили: quasar |
|
||||
| -qifBanner [path/to/banner.png]| Устанавливает путь к png-файлу баннера. |
|
||||
| -qifLogo [path/to/logo.png]| Устанавливает путь к файлу логотипа png. |
|
||||
| -qifOut [nameOfOutputInstallerFile] | Устанавливает имя выходного установщика qifw. Примечание: для установщика Windows автоматически добавляется суффикс exe. |
|
||||
| -qifConfig [path/to/config.xml] | Устанавливает пользовательский путь к файлу конфигурации установщика qt ifw. По умолчанию это qif/config/config.xml. Важно путь считаеться относительным целевого католога (установленным опцией targetDir). |
|
||||
| -qifPackages [path/to/packagesFodoler] | Устанавливает пользовательский путь к каталогам пакетов. По умолчанию это qif/packages. Важно путь считаеться относительным целевого католога (установленным опцией targetDir). |
|
||||
| -qifResources [path/to/resources1.qrc,path/to/resources2.qrc] | Устанавливает пользовательский путь к файлам ресурсов. По умолчанию эта опция пропущена. Важно путь считаеться относительным целевого католога (установленным опцией targetDir). |
|
||||
| -qifArchiveFormat [7z,zip,tar,tar.gz,tar.bz2,tar.xz] | Задает формат, используемый при упаковке новых архивов данных компонентов. Если вы опустите этот параметр, по умолчанию будет использоваться формат 7z. |
|
||||
| -binarycreator [binarycreator command] | Установит новую команду вызова binarycreator. Пример : cqtdeployer -bin my.exe qifw -binarycreator 'wine path/to/binarycreator.exe'|
|
||||
|
||||
### Deb package options:
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -debOut [package;nameOfOutputDebFile,nameOfOutputDebFile]| Устанавливает имя выходного файла debian. Эта опция может работать с несколькими пакетами |
|
||||
|
||||
### Zip pacakge options:
|
||||
|
||||
| Option | Descriptiion |
|
||||
|-----------------------------|-----------------------------------------------------------|
|
||||
| -zipOut [package;nameOfOutputZipFile,nameOfOutputZipFile]| Устанавливает имя выходного zip архива. Эта опция может работать с несколькими пакетами |
|
||||
|
||||
|
||||
#### Пример: cqtdeployer -bin myApp -qmlDir ~/MyAppProject/qml -qmake ~/Qt/5.15.0/gcc_64/bin/qmake clear
|
138
md/ru/Packing.md
@ -1,138 +0,0 @@
|
||||
# Упаковка дистрибутивов
|
||||
|
||||
Общая информация об упаковке ваших дистрибутивов в пакеты.
|
||||
|
||||
## Типы упаковки
|
||||
|
||||
* Автоматически
|
||||
* Вручную
|
||||
|
||||
## Автоматические пакеты
|
||||
|
||||
Пакеты с этим типом создаются автоматически.
|
||||
По умолчанию в дистрибутиве есть один основной пакет. Вы можете настроить его, используя [Параметры управления пакетами](Options.md).
|
||||
|
||||
#### Пример (Установить новое имя для pacakge)
|
||||
|
||||
```
|
||||
ctdeployer ... -name "MyPackage"
|
||||
```
|
||||
|
||||
Если в вашем дистрибутиве есть несколько исполняемых файлов, вы можете создать дистрибутив с несколькими пакетами.
|
||||
|
||||
Один пакет может содержать от 1 до бесконечности исполняемых файлов.
|
||||
|
||||
Для настройки пакета необходимо использовать параметр targetPackage.
|
||||
|
||||
Пример использования:
|
||||
|
||||
```
|
||||
cqtdeployer ... -targetPackage myPacage; target1, myPacage2; target2
|
||||
```
|
||||
|
||||
Где myPacage - это имя пакета, а target1 - имя исполняемого файла.
|
||||
Итак, в этом примере создается 2 пакета из 2 целей.
|
||||
|
||||
В следующем примере создается 2 пакета из 3 целей.
|
||||
```
|
||||
cqtdeployer ... -targetPackage myPacage; target1, myPacage; target2, myPacage2; target3
|
||||
```
|
||||
|
||||
|
||||
Вы также можете сделать то же самое в файле конфигурации
|
||||
|
||||
```
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"myPacage",
|
||||
"target1"
|
||||
],
|
||||
[
|
||||
"myPacage2",
|
||||
"target2"
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"myPacage",
|
||||
"target1"
|
||||
],
|
||||
[
|
||||
"myPacage",
|
||||
"target2"
|
||||
],
|
||||
[
|
||||
"myPacage2",
|
||||
"target3"
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Ручные пакеты
|
||||
|
||||
Ручные пакеты - это пакеты, созданные по шаблону пользователя.
|
||||
Например, у вас есть приложение, которое должно выполнять сложный сценарий в пакете debian или программе установки.
|
||||
Итак, вам нужно создать свой шаблон и добавить путь к вашему шаблону для варианта пакета.
|
||||
|
||||
пример
|
||||
|
||||
```
|
||||
cqtdeployer ... -qif /path/to/my/template/installer
|
||||
```
|
||||
|
||||
Папка /path/to/my/template/installer должна содержать папку с именем пакета.
|
||||
например, я развертываю приложение с именем "MyExample", поэтому мой настраиваемый шаблон должен быть расположен в
|
||||
/path/to/my/template/installer/MyExample путь.
|
||||
|
||||
Для многопакетных дистрибутивов применяются те же правила.
|
||||
|
||||
Ваша папка с шаблонами должна содержать папки с такими же названиями, что и пакеты.
|
||||
|
||||
Пример:
|
||||
|
||||
```
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"myPacage",
|
||||
"target1"
|
||||
],
|
||||
[
|
||||
"myPacage",
|
||||
"target2"
|
||||
],
|
||||
[
|
||||
"myPacage2",
|
||||
"target3"
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
~/path/to/my/template/installer $ tree
|
||||
.
|
||||
├── myPacage
|
||||
│ └── ...
|
||||
└── myPacage2
|
||||
└── ...
|
||||
|
||||
```
|
||||
|
||||
### Примечание
|
||||
|
||||
Вы так же можете извлечь стандартный шаблон пакета для того что бы его переопределить если вас по каким то причинам не устраевает стандартная реализация. Подробнее как это сделать смотрите на этой [странице](ExtractDefaultsTemplates.md).
|
||||
|
||||
## Доступные пакеты
|
||||
|
||||
* [Qt Install Framework](QIF.md)
|
||||
* [ZIP-архив](ZIP.md)
|
||||
* [Пакет DEB](DEB.md)
|
175
md/ru/QIF.md
@ -1,175 +0,0 @@
|
||||
# Использование Qt Installer Framwork
|
||||
|
||||
Общие правила использования Qt Installer Framwork
|
||||
|
||||
### Что такое Qt Installer Framwork
|
||||
|
||||
**Qt Installer Framework** (QIF) предоставляет набор инструментов и утилит для создания установщиков для поддерживаемых настольных платформ Qt: Linux, Microsoft Windows и OS X.
|
||||
В **CQtDeployer** QIF доступен в виде опции qif.
|
||||
|
||||
### Как использовать опцию qif
|
||||
|
||||
Опция qif является булевским параметром для создания Установочного файла.
|
||||
|
||||
#### Пример:
|
||||
|
||||
``` bash
|
||||
cqtdeployer ... qif
|
||||
```
|
||||
|
||||
Где:
|
||||
* **...** - список других опций.
|
||||
* **qif** - опция для использования qt installer framework с шаблоном по умолчанию.
|
||||
|
||||
|
||||
По умолчанию cqtdeployer создаст установочный файл с одним пакетом в котором будет лежать весь ваш дистрибутив.
|
||||
Если вы хотите его настроить вы должны использовать [параметр c поддержкой выбора пакета](Options.md)
|
||||
Для создание нового пакета используйте флаг -targetPackage [package;tar1]
|
||||
|
||||
|
||||
Где:
|
||||
|
||||
* **package** - это имя пакета
|
||||
* **tar1** - это название таргета который должен попасть в этот пакет.
|
||||
|
||||
Или вы можете описать пакеты в [конфигурационном файле](DeployConfigFile.md)
|
||||
|
||||
```json
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"package",
|
||||
"tar1"
|
||||
]
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
# Пользовательский Шаблон для QIF
|
||||
|
||||
Начиная с Версии CQtDeployer 1.5 вы можете использовать свой собственный шаблон установщика. Для этого вы должны передать в параметр qif путь к вашему шаблону.
|
||||
|
||||
```
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template
|
||||
```
|
||||
|
||||
### Шаблон
|
||||
|
||||
Шаблон qif долже содержать 2 папки:
|
||||
* packages
|
||||
* config
|
||||
|
||||
### Внимание
|
||||
|
||||
Название пакетов в папке packages должны совподать с названием пакетов при развертывание.
|
||||
|
||||
Например:
|
||||
|
||||
```json
|
||||
"targetPackage": [
|
||||
[
|
||||
"myCustomInstaller",
|
||||
"tar1"
|
||||
]
|
||||
],
|
||||
```
|
||||
|
||||
```bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
||||
|
||||
Если имена папок не совподут с именами пакетов то CQtDeployer будет использовать стандартный пакет для QIF.
|
||||
|
||||
Если у вас только один пакет, вы можете использовать опцию **name** для установки имени приложения.
|
||||
|
||||
```
|
||||
cqtdeployer ... -qif /path/to/my/custom/qif/template -name myCustomInstaller
|
||||
```
|
||||
|
||||
#### Не забудьте переименовать папку вашего пакета в имя пакета из опции имени.
|
||||
|
||||
|
||||
```bash
|
||||
.
|
||||
├── config
|
||||
│ ├── config.xml
|
||||
│ └── style.qss
|
||||
└── packages
|
||||
└── myCustomInstaller << "This is folder of the your package"
|
||||
└── meta
|
||||
├── installscript.qs
|
||||
└── package.xml
|
||||
|
||||
4 directories, 4 files
|
||||
|
||||
```
|
||||
|
||||
|
||||
## Инициализация шаблона qifw
|
||||
|
||||
Для инициализации шаблонов по умолчанию вы можете использовать параметр getDefaultTemplate.
|
||||
Параметр getDefaultTemplate извлекает шаблон по умолчанию для cqtdeployer. Это может быть очень удобно, если вы хотите переопределить поведение установщика или другого пакета распространения по умолчанию.
|
||||
|
||||
### Пример
|
||||
|
||||
### Получение шаблона фреймворка установщика qt по умолчанию.
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif
|
||||
```
|
||||
|
||||
### Примечание
|
||||
|
||||
CQtDeployer пропустит создание каталога пакетов для шаблона, поскольку эта команда не содержит данных для развертывания.
|
||||
Если вы хотите подготовить шаблон с конфигурациями пакетов, вам следует добавить развернутые данные в свою команду или в файл config.json, используя параметры bin или extraData.
|
||||
Если вы создаете дистрибутив с несколькими пакетами, вам необходимо настроить свои пакеты в развертываемой команде.
|
||||
|
||||
|
||||
#### Пример:
|
||||
|
||||
Извлечение шаблона с пакетами:
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif -bin myExecutable
|
||||
```
|
||||
|
||||
Извлечение шаблона для распространения нескольких пакетов
|
||||
|
||||
```bash
|
||||
cqtdeployer getDefaultTemplate qif -bin myExecutable1,myExecutable2 -targetPackage p1;myExecutable1,p2;myExecutable2
|
||||
```
|
||||
|
||||
Вы также можете использовать файл конфигурации для настройки шаблонов.
|
||||
|
||||
Config.json
|
||||
|
||||
```json
|
||||
{
|
||||
"qif": true,
|
||||
"bin": [
|
||||
"myExecutable1",
|
||||
"myExecutable2"
|
||||
],
|
||||
"targetPackage": [
|
||||
["p1", "myExecutable1"],
|
||||
["p2", "myExecutable2"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Запустите CQtDeployer для создания шаблона:
|
||||
|
||||
```bash
|
||||
cqtdeployer -confFile Config.json getDefaultTemplate
|
||||
```
|
@ -1,81 +0,0 @@
|
||||
# Быстрый гайд
|
||||
|
||||
Как развернуть приложение с помощью CQtDeployer
|
||||
|
||||
1. Прежде всего вам нужно установить CQtDeployer на вашу платформу
|
||||
|
||||
* Snap (более 14 дистрибутивов Linux):
|
||||
```
|
||||
sudo snap install cqtdeployer
|
||||
```
|
||||
или
|
||||
|
||||
Установите из магазина snap и включите все необходимые приложению разрешения.
|
||||
|
||||
[](https://snapcraft.io/cqtdeployer)
|
||||
|
||||
* Другие Linux дистрибутивы [LinuxInstaller.run][1].
|
||||
```
|
||||
chmod +x LinuxInstaller.run
|
||||
./LinuxInstaller.run
|
||||
```
|
||||
|
||||
* Windows [installer][1]
|
||||
|
||||
2. Скомпилируйте ваш проект в режиме релиза.
|
||||
3. Разверните ваш исполняемый файл:
|
||||
|
||||
* Для Linux систем:
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable
|
||||
```
|
||||
|
||||
* Для Windows систем:
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake C:/Qt/5.15.0/min_gw/bin/qmake.exe
|
||||
```
|
||||
|
||||
* Для кросплатформенной сборки (Linux -> Windows)
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable.exe -qmake ~/crossbuildet-Qt/5.15.0/min_gw/bin/qmake
|
||||
```
|
||||
|
||||
## Дополнительные опции
|
||||
|
||||
Если вы используете дополнительные библиотеки, просто добавьте путь к cqtdeployer для используемых библиотек.
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs
|
||||
```
|
||||
|
||||
Если вы хотите найти библиотеки рекурсивно по пути libDir, просто добавьте рекурсивный параметр Depth.
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5
|
||||
```
|
||||
|
||||
Если ваше приложение использует qml, просто добавьте опцию qmlDir
|
||||
``` bash
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources
|
||||
```
|
||||
|
||||
Если вы хотите создать простой установщик для вашего приложения, просто добавьте опцию qif.
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif
|
||||
```
|
||||
|
||||
Если вы используете системные библиотеки из системного PATH, просто добавьте опцию deploySystem.
|
||||
|
||||
#### Предупреждение: версия Snap не имеет прав доступа к системным файлам. Для развертывания системных библиотек используйте версию cqtdeployer из [установщика][1]
|
||||
|
||||
```
|
||||
cqtdeployer -bin myexecutable -libDir /PathToMyExtraLibs -recursiveDepth 5 -qmlDir /path/to/my/qml/sources qif deploySystem
|
||||
```
|
||||
|
||||
|
||||
### Если у вас есть какие-либо проблемы с использованием cqtdeployer, тогда задавайте вопросы на официальной github [странице][2].
|
||||
|
||||
### Дополнительные параметры CQtDeployer см. В официальной [документации][3].
|
||||
|
||||
[1]: https://github.com/QuasarApp/CQtDeployer/releases
|
||||
[2]: https://github.com/QuasarApp/CQtDeployer/issues
|
||||
[3]: https://github.com/QuasarApp/CQtDeployer/blob/main/md/ru/Options.md
|
||||
|
@ -1,4 +0,0 @@
|
||||
# Обзоры на релизы
|
||||
|
||||
* [Обзор v1.5](1_5.md)
|
||||
* [Обзор v1.4 (Бинарный ящик)](1_4.md)
|
47
md/ru/ZIP.md
@ -1,47 +0,0 @@
|
||||
# Использование ZIP
|
||||
|
||||
Общие правила использования ZIP
|
||||
|
||||
Доступно с версии CQtDeployer 1.5
|
||||
|
||||
### Как использовать опцию zip
|
||||
|
||||
Просто добавьте в cqtdeployer опцию «zip».
|
||||
|
||||
### Например:
|
||||
|
||||
```bash
|
||||
cqtdeployer ... zip
|
||||
```
|
||||
|
||||
Где:
|
||||
|
||||
* **...** - список других опций.
|
||||
* **zip** - опция использования zip архивов.
|
||||
|
||||
|
||||
По умолчанию cqtdeployer создает один zip-архив.
|
||||
Если вы хотите создать рассылку нескольких пакетов, вы должны использовать [Параметры управления пакетами](Options.md).
|
||||
Чтобы создать новый пакет, используйте -targetPackage [package; tar1] вариант
|
||||
|
||||
cqtdeployer создает zip-архив для каждого пакета.
|
||||
|
||||
Где:
|
||||
|
||||
* **package** - это название пакета
|
||||
* **tar1** - это имя цели, которая должна быть включена в этот пакет.
|
||||
|
||||
Или вы можете описать пакеты в [файле конфигурации](DeployConfigFile.md)
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"targetPackage": [
|
||||
[
|
||||
"package",
|
||||
"Tar1"
|
||||
],
|
||||
],
|
||||
"zip": true
|
||||
}
|
||||
```
|
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 24 KiB |
147
src/CQtDeployer/CMakeLists.txt
Normal file
@ -0,0 +1,147 @@
|
||||
#
|
||||
# Copyright (C) 2021-2022 QuasarApp.
|
||||
# Distributed under the GPLv3 software license, see the accompanying
|
||||
# Everyone is permitted to copy and distribute verbatim copies
|
||||
# of this license document, but changing it is not allowed.
|
||||
#
|
||||
|
||||
cmake_minimum_required(VERSION 3.18)
|
||||
|
||||
get_filename_component(CURRENT_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR} NAME)
|
||||
|
||||
set(CURRENT_PROJECT "${PROJECT_NAME}${CURRENT_PROJECT_DIR}")
|
||||
option(SIGN_APP "This option enable od disabled sign apk and aab files" ON)
|
||||
|
||||
file(GLOB_RECURSE SOURCE_CPP
|
||||
"*.cpp" "*.h"
|
||||
)
|
||||
|
||||
if (${QT_VERSION_MAJOR})
|
||||
file(GLOB_RECURSE SOURCE_QRC
|
||||
"*.qrc"
|
||||
)
|
||||
endif()
|
||||
|
||||
set(ALL_SOURCES ${SOURCE_CPP} ${SOURCE_QRC})
|
||||
|
||||
set(PUBLIC_INCUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
set(PRIVATE_INCUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Private")
|
||||
|
||||
updateGitVars()
|
||||
|
||||
if (${QT_VERSION_MAJOR} EQUAL 6)
|
||||
|
||||
qt_add_executable(${CURRENT_PROJECT} MANUAL_FINALIZATION ${ALL_SOURCES})
|
||||
|
||||
else()
|
||||
if (ANDROID)
|
||||
add_library(${CURRENT_PROJECT} ${ALL_SOURCES})
|
||||
else ()
|
||||
add_executable(${CURRENT_PROJECT} ${ALL_SOURCES} )
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
target_link_libraries(${CURRENT_PROJECT} PUBLIC ${PROJECT_NAME}Library)
|
||||
|
||||
target_include_directories(${CURRENT_PROJECT} PUBLIC ${PUBLIC_INCUDE_DIR})
|
||||
target_include_directories(${CURRENT_PROJECT} PRIVATE ${PRIVATE_INCUDE_DIR})
|
||||
|
||||
SET(TARGET_DIR "${CMAKE_SOURCE_DIR}/Distro")
|
||||
file(MAKE_DIRECTORY ${TARGET_DIR})
|
||||
|
||||
if (ANDROID)
|
||||
|
||||
set(ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android CACHE INTERNAL "")
|
||||
set(ENV{ANDROID_API_VERSION} 31)
|
||||
set(ANDROID_API_VERSION $ENV{ANDROID_API_VERSION})
|
||||
set(OPENSSL_ROOT_PATH "$ENV{OPENSSL_ROOT_DIR}")
|
||||
|
||||
set(CQtDeployer_EXTRA_LIBS
|
||||
${PROJECT_NAME}Library
|
||||
# libName
|
||||
)
|
||||
|
||||
# find_package(Qt${QT_VERSION_MAJOR} COMPONENTS AndroidExtras REQUIRED)
|
||||
# target_link_libraries(${CURRENT_PROJECT} PRIVATE Qt${QT_VERSION_MAJOR}::AndroidExtras)
|
||||
|
||||
if (SIGN_APP)
|
||||
message("SIGN_APP")
|
||||
addDeploySignedAPK(${CURRENT_PROJECT}
|
||||
"${CMAKE_CURRENT_LIST_DIR}/android"
|
||||
"QuasarAppProject"
|
||||
"${SIGPATH}/quasarapp.keystore"
|
||||
"${SIGPASS_QUASARAPP}"
|
||||
"${TARGET_DIR}"
|
||||
"${CQtDeployer_EXTRA_LIBS}")
|
||||
|
||||
else()
|
||||
message("NO_SIGN_APP")
|
||||
|
||||
addDeployAPK(${CURRENT_PROJECT}
|
||||
"${CMAKE_CURRENT_LIST_DIR}/android"
|
||||
"${TARGET_DIR}"
|
||||
"${CQtDeployer_EXTRA_LIBS}")
|
||||
|
||||
endif()
|
||||
set(manifest_file "${CMAKE_CURRENT_SOURCE_DIR}/android/AndroidManifest.xml")
|
||||
configure_file("${manifest_file}.in" ${manifest_file} @ONLY)
|
||||
|
||||
set(gradle_file "${CMAKE_CURRENT_SOURCE_DIR}/android/build.gradle")
|
||||
configure_file("${gradle_file}.in" ${gradle_file} @ONLY)
|
||||
|
||||
file(GLOB java_files
|
||||
"android/src/com/quasarapp/androidtools/*.java"
|
||||
"android/*.xml"
|
||||
"android/*.gradle"
|
||||
"android/gradlew"
|
||||
"android/gradle.*"
|
||||
|
||||
)
|
||||
|
||||
add_custom_target(${name}Android
|
||||
SOURCES ${java_files}
|
||||
)
|
||||
|
||||
elseif(IOS)
|
||||
# set_xcode_property(${CURRENT_PROJECT} PRODUCT_BUNDLE_IDENTIFIER ${CHEATCARD_PACKAGE_ID} All)
|
||||
|
||||
set_target_properties(${CURRENT_PROJECT} PROPERTIES
|
||||
MACOSX_BUNDLE_GUI_IDENTIFIER ${CQtDeployer_PACKAGE_ID}
|
||||
MACOSX_BUNDLE_BUNDLE_VERSION ${CQtDeployer_VERSION}
|
||||
MACOSX_BUNDLE_SHORT_VERSION_STRING ${CQtDeployer_VERSION}
|
||||
)
|
||||
else()
|
||||
# Desctop deploying
|
||||
|
||||
message(GIT_COMMIT_COUNT = ${GIT_COMMIT_COUNT})
|
||||
|
||||
set(DeployFile "${CMAKE_CURRENT_SOURCE_DIR}/Deploy/CQtDeployer.json")
|
||||
configure_file("${DeployFile}.in" ${DeployFile} @ONLY)
|
||||
|
||||
addDeployFromCustomFile("CQtDeployer" ${DeployFile})
|
||||
|
||||
endif()
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
# Add This line if your project use the Quick module
|
||||
# qt_import_qml_plugins(${CURRENT_PROJECT})
|
||||
qt_finalize_executable(${CURRENT_PROJECT})
|
||||
endif()
|
||||
|
||||
|
||||
set(LANGS ${CMAKE_CURRENT_SOURCE_DIR}/languages/en.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/ru.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/uk.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/ja.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/tr.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/zh.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/de.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/fr.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/es.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/languages/pl.ts)
|
||||
|
||||
prepareQM(${CURRENT_PROJECT} ${CMAKE_CURRENT_SOURCE_DIR}/../ "${LANGS}")
|
||||
|
||||
|
27
src/CQtDeployer/Deploy/CQtDeployer.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"bin": [
|
||||
"src/build/Debug/CQtDeployerEaxample",
|
||||
"src/build/Debug/CQtDeployerEaxample.exe"
|
||||
],
|
||||
"clear": true,
|
||||
"binPrefix": "/media/D/builds/build-CMakeProject-Desktop_Qt_6_1_3_GCC_64bit-Debug",
|
||||
"libDir": [
|
||||
"/media/D/builds/CMakeProject",
|
||||
"/home/andrei/Qt/5.15.2/gcc_64",
|
||||
"/media/D/builds/build-CMakeProject-Desktop_Qt_6_1_3_GCC_64bit-Debug"
|
||||
],
|
||||
"recursiveDepth": "10",
|
||||
"deploySystem": false,
|
||||
"qmlDir": "../",
|
||||
"deb": true,
|
||||
"qif": true,
|
||||
"zip": true,
|
||||
"ignoreEnv": [
|
||||
"/media/D/builds/CMakeProject/Distro"
|
||||
],
|
||||
"extraLib": "crypto",
|
||||
"targetDir": "/media/D/builds/CMakeProject/Distro",
|
||||
"deployVersion": "0.84.1a139e7",
|
||||
|
||||
}
|
||||
|
27
src/CQtDeployer/Deploy/CQtDeployer.json.in
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"bin": [
|
||||
"src/build/Debug/CQtDeployerEaxample",
|
||||
"src/build/Debug/CQtDeployerEaxample.exe"
|
||||
],
|
||||
"clear": true,
|
||||
"binPrefix": "@CMAKE_BINARY_DIR@",
|
||||
"libDir": [
|
||||
"@CMAKE_SOURCE_DIR@",
|
||||
"@CMAKE_PREFIX_PATH@",
|
||||
"@CMAKE_BINARY_DIR@"
|
||||
],
|
||||
"recursiveDepth": "10",
|
||||
"deploySystem": false,
|
||||
"qmlDir": "../",
|
||||
"deb": true,
|
||||
"qif": true,
|
||||
"zip": true,
|
||||
"ignoreEnv": [
|
||||
"@CMAKE_SOURCE_DIR@/Distro"
|
||||
],
|
||||
"extraLib": "crypto",
|
||||
"targetDir": "@CMAKE_SOURCE_DIR@/Distro",
|
||||
"deployVersion": "@CQtDeployer_VERSION@",
|
||||
|
||||
}
|
||||
|