#.rst:
# CPackWIX
# --------
#
# CPack WiX generator specific options
#
# Variables specific to CPack WiX generator
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#
# The following variables are specific to the installers built on
# Windows using WiX.
#
# .. variable:: CPACK_WIX_UPGRADE_GUID
#
#  Upgrade GUID (``Product/@UpgradeCode``)
#
#  Will be automatically generated unless explicitly provided.
#
#  It should be explicitly set to a constant generated gloabally unique
#  identifier (GUID) to allow your installers to replace existing
#  installations that use the same GUID.
#
#  You may for example explicitly set this variable in your
#  CMakeLists.txt to the value that has been generated per default.  You
#  should not use GUIDs that you did not generate yourself or which may
#  belong to other projects.
#
#  A GUID shall have the following fixed length syntax::
#
#   XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
#
#  (each X represents an uppercase hexadecimal digit)
#
# .. variable:: CPACK_WIX_PRODUCT_GUID
#
#  Product GUID (``Product/@Id``)
#
#  Will be automatically generated unless explicitly provided.
#
#  If explicitly provided this will set the Product Id of your installer.
#
#  The installer will abort if it detects a pre-existing installation that
#  uses the same GUID.
#
#  The GUID shall use the syntax described for CPACK_WIX_UPGRADE_GUID.
#
# .. variable:: CPACK_WIX_LICENSE_RTF
#
#  RTF License File
#
#  If CPACK_RESOURCE_FILE_LICENSE has an .rtf extension it is used as-is.
#
#  If CPACK_RESOURCE_FILE_LICENSE has an .txt extension it is implicitly
#  converted to RTF by the WiX Generator.
#  The expected encoding of the .txt file is UTF-8.
#
#  With CPACK_WIX_LICENSE_RTF you can override the license file used by the
#  WiX Generator in case CPACK_RESOURCE_FILE_LICENSE is in an unsupported
#  format or the .txt -> .rtf conversion does not work as expected.
#
# .. variable:: CPACK_WIX_PRODUCT_ICON
#
#  The Icon shown next to the program name in Add/Remove programs.
#
#  If set, this icon is used in place of the default icon.
#
# .. variable:: CPACK_WIX_UI_REF
#
#  This variable allows you to override the Id of the ``<UIRef>`` element
#  in the WiX template.
#
#  The default is ``WixUI_InstallDir`` in case no CPack components have
#  been defined and ``WixUI_FeatureTree`` otherwise.
#
# .. variable:: CPACK_WIX_UI_BANNER
#
#  The bitmap will appear at the top of all installer pages other than the
#  welcome and completion dialogs.
#
#  If set, this image will replace the default banner image.
#
#  This image must be 493 by 58 pixels.
#
# .. variable:: CPACK_WIX_UI_DIALOG
#
#  Background bitmap used on the welcome and completion dialogs.
#
#  If this variable is set, the installer will replace the default dialog
#  image.
#
#  This image must be 493 by 312 pixels.
#
# .. variable:: CPACK_WIX_PROGRAM_MENU_FOLDER
#
#  Start menu folder name for launcher.
#
#  If this variable is not set, it will be initialized with CPACK_PACKAGE_NAME
#
# .. variable:: CPACK_WIX_CULTURES
#
#  Language(s) of the installer
#
#  Languages are compiled into the WixUI extension library.  To use them,
#  simply provide the name of the culture.  If you specify more than one
#  culture identifier in a comma or semicolon delimited list, the first one
#  that is found will be used.  You can find a list of supported languages at:
#  http://wix.sourceforge.net/manual-wix3/WixUI_localization.htm
#
# .. variable:: CPACK_WIX_TEMPLATE
#
#  Template file for WiX generation
#
#  If this variable is set, the specified template will be used to generate
#  the WiX wxs file.  This should be used if further customization of the
#  output is required.
#
#  If this variable is not set, the default MSI template included with CMake
#  will be used.
#
# .. variable:: CPACK_WIX_PATCH_FILE
#
#  Optional XML file with fragments to be inserted into generated WiX sources
#
#  This optional variable can be used to specify an XML file that the
#  WiX generator will use to inject fragments into its generated
#  source files.
#
#  Patch files understood by the CPack WiX generator
#  roughly follow this RELAX NG compact schema:
#
#  .. code-block:: none
#
#     start = CPackWiXPatch
#
#     CPackWiXPatch = element CPackWiXPatch { CPackWiXFragment* }
#
#     CPackWiXFragment = element CPackWiXFragment
#     {
#         attribute Id { string },
#         fragmentContent*
#     }
#
#     fragmentContent = element * - CPackWiXFragment
#     {
#         (attribute * { text } | text | fragmentContent)*
#     }
#
#  Currently fragments can be injected into most
#  Component, File and Directory elements.
#
#  The following example illustrates how this works.
#
#  Given that the WiX generator creates the following XML element:
#
#  .. code-block:: xml
#
#     <Component Id="CM_CP_applications.bin.my_libapp.exe" Guid="*"/>
#
#  The following XML patch file may be used to inject an Environment element
#  into it:
#
#  .. code-block:: xml
#
#     <CPackWiXPatch>
#       <CPackWiXFragment Id="CM_CP_applications.bin.my_libapp.exe">
#         <Environment Id="MyEnvironment" Action="set"
#           Name="MyVariableName" Value="MyVariableValue"/>
#       </CPackWiXFragment>
#     </CPackWiXPatch>
#
# .. variable:: CPACK_WIX_EXTRA_SOURCES
#
#  Extra WiX source files
#
#  This variable provides an optional list of extra WiX source files (.wxs)
#  that should be compiled and linked.  The full path to source files is
#  required.
#
# .. variable:: CPACK_WIX_EXTRA_OBJECTS
#
#  Extra WiX object files or libraries
#
#  This variable provides an optional list of extra WiX object (.wixobj)
#  and/or WiX library (.wixlib) files.  The full path to objects and libraries
#  is required.
#
# .. variable:: CPACK_WIX_EXTENSIONS
#
#  This variable provides a list of additional extensions for the WiX
#  tools light and candle.
#
# .. variable:: CPACK_WIX_<TOOL>_EXTENSIONS
#
#  This is the tool specific version of CPACK_WIX_EXTENSIONS.
#  ``<TOOL>`` can be either LIGHT or CANDLE.
#
# .. variable:: CPACK_WIX_<TOOL>_EXTRA_FLAGS
#
#  This list variable allows you to pass additional
#  flags to the WiX tool ``<TOOL>``.
#
#  Use it at your own risk.
#  Future versions of CPack may generate flags which may be in conflict
#  with your own flags.
#
#  ``<TOOL>`` can be either LIGHT or CANDLE.
#
# .. variable:: CPACK_WIX_CMAKE_PACKAGE_REGISTRY
#
#  If this variable is set the generated installer will create
#  an entry in the windows registry key
#  ``HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<package>``
#  The value for ``<package>`` is provided by this variable.
#
#  Assuming you also install a CMake configuration file this will
#  allow other CMake projects to find your package with
#  the :command:`find_package` command.
#
# .. variable:: CPACK_WIX_PROPERTY_<PROPERTY>
#
#  This variable can be used to provide a value for
#  the Windows Installer property ``<PROPERTY>``
#
#  The follwing list contains some example properties that can be used to
#  customize information under
#  "Programs and Features" (also known as "Add or Remove Programs")
#
#  * ARPCOMMENTS - Comments
#  * ARPHELPLINK - Help and support information URL
#  * ARPURLINFOABOUT - General information URL
#  * URLUPDATEINFO - Update information URL
#  * ARPHELPTELEPHONE - Help and support telephone number
#  * ARPSIZE - Size (in kilobytes) of the application

#=============================================================================
# Copyright 2014 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
#  License text for the above reference.)

if(NOT CPACK_WIX_ROOT)
  file(TO_CMAKE_PATH "$ENV{WIX}" CPACK_WIX_ROOT)
endif()

find_program(CPACK_WIX_CANDLE_EXECUTABLE candle
  PATHS "${CPACK_WIX_ROOT}/bin")

if(NOT CPACK_WIX_CANDLE_EXECUTABLE)
  message(FATAL_ERROR "Could not find the WiX candle executable.")
endif()

find_program(CPACK_WIX_LIGHT_EXECUTABLE light
  PATHS "${CPACK_WIX_ROOT}/bin")

if(NOT CPACK_WIX_LIGHT_EXECUTABLE)
  message(FATAL_ERROR "Could not find the WiX light executable.")
endif()
