CPack/NSIS: Add option to not display license page

Fixes: #22215
pipelines/240351
Johnny Jazeix 2021-08-01 18:27:49 +02:00
parent 0a6415ea1f
commit 795e406e3b
6 changed files with 30 additions and 1 deletions

View File

@ -201,3 +201,9 @@ on Windows Nullsoft Scriptable Install System.
.. versionadded:: 3.21
If set, specify the name of the NSIS executable. Default is ``makensis``.
.. variable:: CPACK_NSIS_IGNORE_LICENSE_PAGE
.. versionadded:: 3.22
If set, do not display the page containing the license during installation.

View File

@ -0,0 +1,6 @@
nsis_ignore_install_page
------------------------
* The :cpack_gen:`CPack NSIS Generator` gained a new variable
:variable:`CPACK_NSIS_IGNORE_LICENSE_PAGE` to ignore the
license page in the installer.

View File

@ -540,7 +540,7 @@ FunctionEnd
@CPACK_NSIS_INSTALLER_WELCOME_TITLE_3LINES_CODE@
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@"
@CPACK_NSIS_LICENSE_PAGE@
Page custom InstallOptionsPage
!insertmacro MUI_PAGE_DIRECTORY

View File

@ -235,6 +235,13 @@ int cmCPackNSISGenerator::PackageFiles()
brandingTextCode.c_str());
}
if (!this->IsSet("CPACK_NSIS_IGNORE_LICENSE_PAGE")) {
std::string licenceCode =
cmStrCat("!insertmacro MUI_PAGE_LICENSE \"",
this->GetOption("CPACK_RESOURCE_FILE_LICENSE"), "\"\n");
this->SetOptionIfNotSet("CPACK_NSIS_LICENSE_PAGE", licenceCode.c_str());
}
// Setup all of the component sections
if (this->Components.empty()) {
this->SetOptionIfNotSet("CPACK_NSIS_INSTALLATION_TYPES", "");

View File

@ -19,5 +19,6 @@ set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_MANIFEST_DPI_AWARE ON)
set(CPACK_NSIS_BRANDING_TEXT "CMake branding text")
set(CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION "RIGHT")
set(CPACK_NSIS_IGNORE_LICENSE_PAGE ON)
include(CPack)

View File

@ -60,3 +60,12 @@ if("${output_index}" EQUAL "-1")
else()
message(STATUS "Found BrandingText")
endif()
# license page should not be present
file(STRINGS "${project_file}" line REGEX "!insertmacro MUI_PAGE_LICENSE")
string(FIND "${line}" "MUI_PAGE_LICENSE" output_index)
if("${output_index}" EQUAL "-1")
message(STATUS "License not found in the project")
else()
message(FATAL_ERROR "License found in the project")
endif()