restructure project

This commit is contained in:
Andrei Yankovich 2022-08-08 22:46:51 +03:00
parent a2c796b62a
commit 32d2203c7f
313 changed files with 515 additions and 10883 deletions

View File

@ -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")

View File

@ -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 \
}

View File

@ -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

View File

@ -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/"

View File

@ -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

View File

@ -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)

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 KiB

View File

@ -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>

View File

@ -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>

View File

@ -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);
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -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 &quot;cqtdeployer&quot;.</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 &quot;cqtdeployer&quot;, 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>

View File

@ -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;
}

View File

@ -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")
}
}

View File

@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

View File

@ -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");
}
}

View File

@ -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>

View File

@ -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 &quot;cqtdeployer&quot;.</source>
<translation type="vanished">CQtDeployer успешно установлен на вашем компьютере, чтобы использоваться введите в консоле &quot;cqtdeployer&quot;.</translation>
</message>
<message>
<source>The &quot;~/local/bin&quot; folder was not initialized, you may need to reboot to work correctly!</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -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>

View File

@ -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")

View File

@ -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"])

View File

@ -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
View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -1 +0,0 @@
TEST TR

Binary file not shown.

View File

@ -1 +0,0 @@
theme: jekyll-theme-time-machine

View File

@ -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.

View File

@ -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

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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!

View File

@ -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"

View File

@ -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();
}

View File

@ -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
}
}

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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 "$@"

View File

@ -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"
]
}

View File

@ -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.
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/cqtdeployer)

View File

@ -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)

View File

@ -1 +0,0 @@
theme: jekyll-theme-dinky

View File

@ -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:
![image](https://user-images.githubusercontent.com/12465465/77245272-619a0280-6c2e-11ea-92f2-447563f72dcc.png)
Libraries needed for the program to work:
![image](https://user-images.githubusercontent.com/12465465/77245274-6363c600-6c2e-11ea-8729-7d494a073b66.png)
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.
![image](https://user-images.githubusercontent.com/12465465/77245315-b3428d00-6c2e-11ea-9326-c23229020eb5.png)
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:
![image](https://user-images.githubusercontent.com/12465465/77245334-d2d9b580-6c2e-11ea-9e55-e205499a9219.png)
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
```
![image](https://user-images.githubusercontent.com/12465465/77245346-00266380-6c2f-11ea-8426-42bf58038458.png)
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"]
]
```
![image](https://user-images.githubusercontent.com/12465465/77245542-534ce600-6c30-11ea-9323-72ec5e200f39.png)
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)

View File

@ -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
```

View File

@ -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
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](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

View File

@ -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

View File

@ -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 |

View File

@ -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).

View File

@ -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
```

View File

@ -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

View File

@ -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.

View File

@ -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
```

View File

@ -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
```

View File

@ -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.

View File

@ -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).

View File

@ -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
```
![CQtDeployer Setup](https://user-images.githubusercontent.com/12465465/100077575-9280a600-2e53-11eb-8d9d-d184341cfa7c.png)
Select latest stable version (1.4)
![Screenshot from 2020-11-24 12-50-54](https://user-images.githubusercontent.com/12465465/100077707-bb08a000-2e53-11eb-9838-6f896af33105.png)
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
```
![2021-02-22 11-25-34](https://user-images.githubusercontent.com/12465465/108681955-c629a580-7500-11eb-8087-cedfa8134aae.png)
After installation, all the necessary shortcuts will be created.
![2021-02-22 11-27-11](https://user-images.githubusercontent.com/12465465/108682148-012bd900-7501-11eb-9f0b-f46fd79aef25.png)
![2021-02-22 11-29-23](https://user-images.githubusercontent.com/12465465/108682391-48b26500-7501-11eb-8d81-b430ddf97d46.png)
## 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
![Снимок экрана от 2021-02-22 12-15-51](https://user-images.githubusercontent.com/12465465/108687472-d09b6d80-7507-11eb-9b56-8d09d42dac5e.png)
3. Choose a release build
![изображение](https://user-images.githubusercontent.com/12465465/108688147-a39b8a80-7508-11eb-81b9-9a24426a94a3.png)
3. Add "Custom build step"
![изображение](https://user-images.githubusercontent.com/12465465/108687640-02143900-7508-11eb-8d1c-532afd7f6ccb.png)
4. In the "Make arguments" field, add our "deploy" deployment step
![изображение](https://user-images.githubusercontent.com/12465465/108687800-35ef5e80-7508-11eb-8f69-aec090d4baa0.png)
5. Save
6. Start the building
#### As a result, you will receive a DistributionKit folder with the installer of your application.

View File

@ -1,26 +0,0 @@
# Welcome to the "C Qt Deployer"!
# ![Logo](https://user-images.githubusercontent.com/12465465/84260958-99289480-ab23-11ea-8aab-374368a545dc.png)
***************************
# 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)

View File

@ -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

View File

@ -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)

View File

@ -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
```

View File

@ -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.
[![Download from Snap Store](https://snapcraft.io/static/images/badges/ru/snap-store-black.svg)](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

View File

@ -1,4 +0,0 @@
# Release Reviews
* [Review v1.5](1_5.md)
* [Review v1.4 (Binary Box)](1_4.md)

View File

@ -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
}
```

View File

@ -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$
```
Корень программы:
![image](https://user-images.githubusercontent.com/12465465/77245272-619a0280-6c2e-11ea-92f2-447563f72dcc.png)
Библиотеки,нужные для работы программы:
![image](https://user-images.githubusercontent.com/12465465/77245274-6363c600-6c2e-11ea-8729-7d494a073b66.png)
Как видно из примера, приложение полностью собрано.
## Qt Installer Framework
Второе нововведение, о котором стоит знать, это возможность из коробки формировать установщики QIF. Все, что нужно для нашего примера, это добавить в команду на упаковку опцию qif.
Пример использования.
```
andrei@HP:~/Hello/build$ cqtdeployer -bin Hello qif
```
Всего одна простая команда и программа получает презентабельный вид.
![image](https://user-images.githubusercontent.com/12465465/77245315-b3428d00-6c2e-11ea-9326-c23229020eb5.png)
Этот установщик поддерживает минимальную интеграцию Linux дистрибутивами и Windows. А именно: создание ярлыков, и регистрация приложения в OС.
Если по каким то причинам вас не устраивает внешний вид данного установщика, его можно изменить при помощи флага qifStyle . На момент версии 1.4 cqtdeployer поддерживает всего 2 стиля (native и quasar).
Пример стиля quasar:
![image](https://user-images.githubusercontent.com/12465465/77245334-d2d9b580-6c2e-11ea-9e55-e205499a9219.png)
Вы также можете использовать свою собственную таблицу стилей 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
```
![image](https://user-images.githubusercontent.com/12465465/77245346-00266380-6c2f-11ea-8426-42bf58038458.png)
Вот,собственно, и тёмная тема установщика.
## Разбиение на пакеты
И,наверное, последнее важное обновление, о котором стоит знать — это возможность разделять большой многобинарный проект на подпроекты.
Эта возможность самая сложная из всех перечисленных, так как требует много текста для ее использования. Так что я рекоммендую использовать файл конфигураций.
Для начала усложним наш проект, добавив в него ещё 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"]
]
```
![image](https://user-images.githubusercontent.com/12465465/77245542-534ce600-6c30-11ea-9323-72ec5e200f39.png)
Кака видно из скриншота, теперь у нас 2 пакета при установке.
## Новые алиасы
И последнее небольшое но приятное дополнение: теперь в cqtdeployer добавлены новые команды.
* сqt — бывстрый способ задеплоить ваше приложение. Он упрощает вызов развертывания.
* Пример:
**cqt myApp** — это тоже самое что и **cqtdeployer -bin myApp**.
* cqtdeployer.cqt — тоже что и cqt но для snap пакета.
* В windows-версии теперь не нужно добовлять знак % для вызова утилиты.
Теперь вызов выглядит так, как и в Linux. (cqtdeployer)

View File

@ -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
```

View File

@ -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
[![Загрузите из Snap Store](https://snapcraft.io/static/images/badges/ru/snap-store-black.svg)](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

View File

@ -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
- Исправлена ошибка развертывания плагинов
- Добавлена поддержка статической сборки

View File

@ -1,15 +0,0 @@
# Сравнение особенностей
Сравните особенности дистрибутивов CQtDeployer
| Название функции | Классическая версия linux (установщик) | Snap версия | Windows версия |
|---|---|---|----|
| Автоматические обновляется | Нет | Да | Нет |
| Онлайн-обновления | Да | Да | Да |
| Поддержка системных библиотек | Да | Да | Да |
| Поддержка создания установщиков | Да | Да | Да |
| Поддержка создания архивов | Да | Да | Да |
| Поддержка поиска библиотек и cmake из среды | Да | Нет | Да |
| Поддержка поиска qmake из RPATH | Да | Да | Нет
| Поддержка команды 'strip' | Да | Нет | Нет |
| Поддержка работы с qmake из системного репозитория ОС| Да| Нет | Нет |

View File

@ -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).

View File

@ -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
```

View File

@ -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

View File

@ -1,9 +0,0 @@
# Что такое CQtDeployer
CQtDeployer - это утилита для извлечения всех зависимых библиотек исполняемых файлов и создания сценария запуска для вашего приложения.
Основные отличия этой программы:
* Производительность - эта программа развертывает приложение в несколько раз быстрее (до 10 секунд)
* Гибкость - эта утилита имеет флаги, которые помогут вам настроить деплоинг под ваши нужды и нужды вашего проекта
* Crossdeploy - приложение поддерживает Windows и дистрибутивы Linux, это означает, что вы можете использовать его не только для развертывания проекта для вашей платформы, но и для развертывания проекта в Linux для Windows и наоборот.
* Упаковка - эта утилита может создавать установочные файлы и пакеты, для вашего приложения.

View File

@ -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
```

View File

@ -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
```

View File

@ -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.

View File

@ -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).

View File

@ -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
```
![Настройка CQtDeployer](https://user-images.githubusercontent.com/12465465/100077575-9280a600-2e53-11eb-8d9d-d184341cfa7c.png)
Выберите последнюю стабильную версию (1.4)
![Настройка CQtDeployer](https://user-images.githubusercontent.com/12465465/100077707-bb08a000-2e53-11eb-9838-6f896af33105.png)
Выполнено.
Если вы используете официальную сборку 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
```
![Снимок экрана от 2021-02-22 11-25-34](https://user-images.githubusercontent.com/12465465/108681955-c629a580-7500-11eb-8087-cedfa8134aae.png)
После установки буду созданы все необходимые ярлыки.
![Снимок экрана от 2021-02-22 11-27-11](https://user-images.githubusercontent.com/12465465/108682148-012bd900-7501-11eb-9f0b-f46fd79aef25.png)
![Снимок экрана от 2021-02-22 11-29-23](https://user-images.githubusercontent.com/12465465/108682391-48b26500-7501-11eb-8d81-b430ddf97d46.png)
## Интеграция с 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. Открываем панель управления проектом
![Снимок экрана от 2021-02-22 12-15-51](https://user-images.githubusercontent.com/12465465/108687472-d09b6d80-7507-11eb-9b56-8d09d42dac5e.png)
3. Выбираем релизную сборку.
![изображение](https://user-images.githubusercontent.com/12465465/108688147-a39b8a80-7508-11eb-81b9-9a24426a94a3.png)
3. Добавляем "Особый этап сборки"
![изображение](https://user-images.githubusercontent.com/12465465/108687640-02143900-7508-11eb-8d1c-532afd7f6ccb.png)
4. В поле "Make arguments" добавляем наш этап развертывания "Deploy"
![изображение](https://user-images.githubusercontent.com/12465465/108687800-35ef5e80-7508-11eb-8f69-aec090d4baa0.png)
5. Сохраняем
6. Запускаем сборку.
#### На выходе вы получите папку DistributionKit с установщиком вашего приложения.

View File

@ -1,26 +0,0 @@
# Добро пожаловать в "C Qt Deployer"!
# ![Логотип](https://user-images.githubusercontent.com/12465465/84260958-99289480-ab23-11ea-8aab-374368a545dc.png)
***************************
# Основные разделы
* [Описание 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)

View File

@ -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

View File

@ -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)

View File

@ -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
```

View File

@ -1,81 +0,0 @@
# Быстрый гайд
Как развернуть приложение с помощью CQtDeployer
1. Прежде всего вам нужно установить CQtDeployer на вашу платформу
* Snap (более 14 дистрибутивов Linux):
```
sudo snap install cqtdeployer
```
или
Установите из магазина snap и включите все необходимые приложению разрешения.
[![Download from Snap Store](https://snapcraft.io/static/images/badges/ru/snap-store-black.svg)](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

View File

@ -1,4 +0,0 @@
# Обзоры на релизы
* [Обзор v1.5](1_5.md)
* [Обзор v1.4 (Бинарный ящик)](1_4.md)

View File

@ -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
}
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

5
plug.pro Normal file
View File

@ -0,0 +1,5 @@
TEMPLATE = subdirs
QMAKE_EXTRA_TARGETS += \
test

View 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}")

View 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",
}

View 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@",
}

Some files were not shown because too many files have changed in this diff Show More