Merge topic 'nsis-headerimage'

ebfffc609e CPack/NSIS: Add option for setting MUI_HEADERIMAGE_BITMAP

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4157
This commit is contained in:
Kyle Edwards
2020-01-10 18:48:40 +00:00
committed by Kitware Robot
11 changed files with 111 additions and 4 deletions
+4
View File
@@ -149,3 +149,7 @@ on Windows Nullsoft Scriptable Install System.
.. variable:: CPACK_NSIS_FINISH_TITLE_3LINES
Display the title in the finish page on 3 lines instead of 2.
.. variable:: CPACK_NSIS_MUI_HEADERIMAGE
The image to display on the header of installers pages.
@@ -0,0 +1,7 @@
cpack-nsis-headerimage_var
--------------------------
* The :cpack_gen:`CPack NSIS Generator` gained a new variable
:variable:`CPACK_NSIS_MUI_HEADERIMAGE` to set the header image.
To not break existing setups, it still defaults to
:variable:`CPACK_PACKAGE_ICON` if the new variable is not set.
+9 -4
View File
@@ -139,10 +139,15 @@ int cmCPackNSISGenerator::PackageFiles()
this->SetOptionIfNotSet("CPACK_NSIS_INSTALLER_MUI_ICON_CODE",
installerIconCode.c_str());
}
if (this->IsSet("CPACK_PACKAGE_ICON")) {
std::string installerIconCode =
cmStrCat("!define MUI_HEADERIMAGE_BITMAP \"",
this->GetOption("CPACK_PACKAGE_ICON"), "\"\n");
std::string installerHeaderImage;
if (this->IsSet("CPACK_NSIS_MUI_HEADERIMAGE")) {
installerHeaderImage = this->GetOption("CPACK_NSIS_MUI_HEADERIMAGE");
} else if (this->IsSet("CPACK_PACKAGE_ICON")) {
installerHeaderImage = this->GetOption("CPACK_PACKAGE_ICON");
}
if (!installerHeaderImage.empty()) {
std::string installerIconCode = cmStrCat(
"!define MUI_HEADERIMAGE_BITMAP \"", installerHeaderImage, "\"\n");
this->SetOptionIfNotSet("CPACK_NSIS_INSTALLER_ICON_CODE",
installerIconCode.c_str());
}
+21
View File
@@ -989,6 +989,27 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH
endif()
endif()
# On Windows run the CPackNSISGenerator test
# if the nsis is available
if(WIN32 AND NSIS_MAKENSIS_EXECUTABLE)
add_test(CPackNSISGenerator ${CMAKE_CTEST_COMMAND}
-C \${CTEST_CONFIGURATION_TYPE}
--build-and-test
"${CMake_SOURCE_DIR}/Tests/CPackNSISGenerator"
"${CMake_BINARY_DIR}/Tests/CPackNSISGenerator"
${build_generator_args}
--build-project CPackNSISGenerator
--build-options
--test-command ${CMAKE_CMAKE_COMMAND}
"-DCPackNSISGenerator_BINARY_DIR:PATH=${CMake_BINARY_DIR}/Tests/CPackNSISGenerator"
"-Dconfig=\${CTEST_CONFIGURATION_TYPE}"
-P "${CMake_SOURCE_DIR}/Tests/CPackNSISGenerator/RunCPackVerifyResult.cmake")
set_property(TEST CPackNSISGenerator PROPERTY
ATTACHED_FILES_ON_FAIL
"${CMake_BINARY_DIR}/Tests/CPackNSISGenerator/_CPack_Packages/win32/NSIS/NSISOutput.log")
endif()
if(CTEST_TEST_CPACK)
add_test(CPackUseDefaultVersion ${CMAKE_CTEST_COMMAND}
--build-and-test
+20
View File
@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.16)
project(CPackNSISGenerator)
add_executable(hello main.cpp)
install(TARGETS hello
ARCHIVE DESTINATION .
RUNTIME DESTINATION .
LIBRARY DESTINATION .
BUNDLE DESTINATION .)
set(CPACK_NSIS_MUI_HEADERIMAGE "${PROJECT_SOURCE_DIR}\\\\header-image.bmp")
set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}\\\\header-icon.bmp")
set(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}\\\\install.ico")
set(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}\\\\uninstall.ico")
set(CPACK_GENERATOR "NSIS")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
include(CPack)
@@ -0,0 +1,46 @@
message(STATUS "=============================================================")
message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
message(STATUS "")
if(NOT CPackNSISGenerator_BINARY_DIR)
message(FATAL_ERROR "CPackNSISGenerator_BINARY_DIR not set")
endif()
message(STATUS "CMAKE_COMMAND: ${CMAKE_COMMAND}")
message(STATUS "CMAKE_CPACK_COMMAND: ${CMAKE_CPACK_COMMAND}")
message(STATUS "CPackNSISGenerator_BINARY_DIR: ${CPackNSISGenerator_BINARY_DIR}")
if(config)
set(_C_config -C ${config})
endif()
execute_process(COMMAND "${CMAKE_CPACK_COMMAND}"
${_C_config}
RESULT_VARIABLE CPack_result
OUTPUT_VARIABLE CPack_output
ERROR_VARIABLE CPack_error
WORKING_DIRECTORY "${CPackNSISGenerator_BINARY_DIR}")
if(CPack_result)
message(FATAL_ERROR "CPack execution went wrong!, CPack_output=${CPack_output}, CPack_error=${CPack_error}")
else ()
message(STATUS "CPack_output=${CPack_output}")
endif()
set(expected_file_mask "${CPackNSISGenerator_BINARY_DIR}/_CPack_Packages/win32/NSIS/*.nsi")
file(GLOB project_file "${expected_file_mask}")
message(STATUS "project_file='${project_file}'")
message(STATUS "expected_file_mask='${expected_file_mask}'")
if(NOT project_file)
message(FATAL_ERROR "project_file does not exist.")
endif()
# should match !define MUI_HEADERIMAGE_BITMAP "${PROJECT_SOURCE_DIR}\header-image.bmp"
file(STRINGS "${project_file}" line REGEX "^!define MUI_HEADERIMAGE_BITMAP")
string(FIND "${line}" "header-image.bmp" output_index)
message(STATUS "Found the bitmap at index ${output_index}")
if("${output_index}" EQUAL "-1")
message(FATAL_ERROR "MUI_HEADERIMAGE_BITMAP not found in the project")
endif()
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B

+4
View File
@@ -0,0 +1,4 @@
int main()
{
return 42;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B