Просмотр исходного кода

Merge topic 'nsis_ignore_license_page'

795e406e3b CPack/NSIS: Add option to not display license page

Acked-by: Kitware Robot <[email protected]>
Merge-request: !6422
Brad King 4 лет назад
Родитель
Сommit
a3ddcdb911

+ 6 - 0
Help/cpack_gen/nsis.rst

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

+ 6 - 0
Help/release/dev/nsis_ignore_install_page.rst

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

+ 1 - 1
Modules/Internal/CPack/NSIS.template.in

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

+ 7 - 0
Source/CPack/cmCPackNSISGenerator.cxx

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

+ 1 - 0
Tests/CPackNSISGenerator/CMakeLists.txt

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

+ 9 - 0
Tests/CPackNSISGenerator/RunCPackVerifyResult.cmake

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