CPackWiX: added new CPACK_WIX_CMAKE_PACKAGE_REGISTRY variable
Allows automatic registration of installed packages with the cmake package registry.
This commit is contained in:
parent
855e8759fd
commit
92c4d4039e
|
@ -205,6 +205,17 @@
|
|||
#
|
||||
# ``<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.
|
||||
#
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2013 Kitware, Inc.
|
||||
|
|
|
@ -437,7 +437,15 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
|
|||
|
||||
featureDefinitions.AddAttribute("Level", "1");
|
||||
|
||||
CreateFeatureHierarchy(featureDefinitions);
|
||||
if(!CreateCMakePackageRegistryEntry(featureDefinitions))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!CreateFeatureHierarchy(featureDefinitions))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
featureDefinitions.EndElement("Feature");
|
||||
|
||||
|
@ -564,6 +572,39 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
|
|||
return true;
|
||||
}
|
||||
|
||||
bool cmCPackWIXGenerator::CreateCMakePackageRegistryEntry(
|
||||
cmWIXSourceWriter& featureDefinitions)
|
||||
{
|
||||
const char* package = GetOption("CPACK_WIX_CMAKE_PACKAGE_REGISTRY");
|
||||
if(!package)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
featureDefinitions.BeginElement("Component");
|
||||
featureDefinitions.AddAttribute("Id", "CM_PACKAGE_REGISTRY");
|
||||
featureDefinitions.AddAttribute("Directory", "TARGETDIR");
|
||||
featureDefinitions.AddAttribute("Guid", "*");
|
||||
|
||||
std::string registryKey =
|
||||
std::string("Software\\Kitware\\CMake\\Packages\\") + package;
|
||||
|
||||
std::string upgradeGuid = GetOption("CPACK_WIX_UPGRADE_GUID");
|
||||
|
||||
featureDefinitions.BeginElement("RegistryValue");
|
||||
featureDefinitions.AddAttribute("Root", "HKLM");
|
||||
featureDefinitions.AddAttribute("Key", registryKey);
|
||||
featureDefinitions.AddAttribute("Name", upgradeGuid);
|
||||
featureDefinitions.AddAttribute("Type", "string");
|
||||
featureDefinitions.AddAttribute("Value", "[INSTALL_ROOT]");
|
||||
featureDefinitions.AddAttribute("KeyPath", "yes");
|
||||
featureDefinitions.EndElement("RegistryValue");
|
||||
|
||||
featureDefinitions.EndElement("Component");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cmCPackWIXGenerator::CreateFeatureHierarchy(
|
||||
cmWIXSourceWriter& featureDefinitions)
|
||||
{
|
||||
|
|
|
@ -81,6 +81,9 @@ private:
|
|||
|
||||
bool CreateWiXSourceFiles();
|
||||
|
||||
bool CreateCMakePackageRegistryEntry(
|
||||
cmWIXSourceWriter& featureDefinitions);
|
||||
|
||||
bool CreateFeatureHierarchy(
|
||||
cmWIXSourceWriter& featureDefinitions);
|
||||
|
||||
|
|
Loading…
Reference in New Issue