[CMake] CPack and WIX: Preselected components

Micha Renner Micha.Renner at t-online.de
Thu Jan 17 13:28:08 EST 2019


With the NSIS generator I can create a dialog with a drop_down list
with two elements default and developer. Default is selected by default
when the dialog starts, so the default parts of the package are
installed. Selecting developer the devlop parts are installed and the
default files not. 

How can I do the same with the WiX generator?

With code below the WiX generator installs the complete package. 
What I want is that the user can selected the develop part if he wants
it.


_______________________________________________________________
Example as it works with NSIS. There is nothing specific for NSIS.

ADD_LIBRARY(mylib mylib.c)

ADD_EXECUTABLE(myapp myapp.c mylib.h)
TARGET_LINK_LIBRARIES(myapp mylib)

INSTALL(TARGETS mylib ARCHIVE DESTINATION lib COMPONENT libraries)
INSTALL(TARGETS myapp RUNTIME DESTINATION bin COMPONENT applications)
INSTALL(FILES mylib.h DESTINATION include COMPONENT headers)
INSTALL(FILES free.txt DESTINATION doc COMPONENT dokumentation)

# WIX specific
SET(CPACK_WIX_UPGRADE_GUID 939B61C9-8E66-4876-A425-F7CDD7E6A6B2)
SET(CPACK_GENERATOR WIX)

INCLUDE(CPackComponent)

cpack_add_install_type(Default DISPLAY_NAME Default)
cpack_add_install_type(Developer)

cpack_add_component(applications DISPLAY_NAME "App" DESCRIPTION
"Application only"
    GROUP "Runtime" INSTALL_TYPES Default)

cpack_add_component(dokumentation DISPLAY_NAME "Doc" DESCRIPTION "Doc
for the app"
    GROUP "Runtime" INSTALL_TYPES Default)
	
cpack_add_component(libraries DISPLAY_NAME "lib" DESCRIPTION "For
devloper only"
	GROUP "Development" INSTALL_TYPES Developer)

cpack_add_component(headers DISPLAY_NAME "C++ Headers" DESCRIPTION
"C/C++ header files for use with MyLib"
    DEPENDS libraries INSTALL_TYPES Developer GROUP "Development")

cpack_add_component_group(Runtime)
cpack_add_component_group(Development DESCRIPTION "All you need for
development")

SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_PARENT_GROUP "Runtime")

INCLUDE(CPack)



More information about the CMake mailing list