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.
|
# ``<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.
|
# Copyright 2013 Kitware, Inc.
|
||||||
|
|
|
@ -437,7 +437,15 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
|
||||||
|
|
||||||
featureDefinitions.AddAttribute("Level", "1");
|
featureDefinitions.AddAttribute("Level", "1");
|
||||||
|
|
||||||
CreateFeatureHierarchy(featureDefinitions);
|
if(!CreateCMakePackageRegistryEntry(featureDefinitions))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!CreateFeatureHierarchy(featureDefinitions))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
featureDefinitions.EndElement("Feature");
|
featureDefinitions.EndElement("Feature");
|
||||||
|
|
||||||
|
@ -564,6 +572,39 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
|
||||||
return true;
|
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(
|
bool cmCPackWIXGenerator::CreateFeatureHierarchy(
|
||||||
cmWIXSourceWriter& featureDefinitions)
|
cmWIXSourceWriter& featureDefinitions)
|
||||||
{
|
{
|
||||||
|
|
|
@ -81,6 +81,9 @@ private:
|
||||||
|
|
||||||
bool CreateWiXSourceFiles();
|
bool CreateWiXSourceFiles();
|
||||||
|
|
||||||
|
bool CreateCMakePackageRegistryEntry(
|
||||||
|
cmWIXSourceWriter& featureDefinitions);
|
||||||
|
|
||||||
bool CreateFeatureHierarchy(
|
bool CreateFeatureHierarchy(
|
||||||
cmWIXSourceWriter& featureDefinitions);
|
cmWIXSourceWriter& featureDefinitions);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue