/*============================================================================ CMake - Cross Platform Makefile Generator 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. ============================================================================*/ #include "cmWIXFeaturesSourceWriter.h" cmWIXFeaturesSourceWriter::cmWIXFeaturesSourceWriter( cmCPackLog* logger, std::string const& filename, GuidType componentGuidType) : cmWIXSourceWriter(logger, filename, componentGuidType) { } void cmWIXFeaturesSourceWriter::CreateCMakePackageRegistryEntry( std::string const& package, std::string const& upgradeGuid) { BeginElement("Component"); AddAttribute("Id", "CM_PACKAGE_REGISTRY"); AddAttribute("Directory", "TARGETDIR"); AddAttribute("Guid", CreateGuidFromComponentId("CM_PACKAGE_REGISTRY")); std::string registryKey = std::string("Software\\Kitware\\CMake\\Packages\\") + package; BeginElement("RegistryValue"); AddAttribute("Root", "HKLM"); AddAttribute("Key", registryKey); AddAttribute("Name", upgradeGuid); AddAttribute("Type", "string"); AddAttribute("Value", "[INSTALL_ROOT]"); AddAttribute("KeyPath", "yes"); EndElement("RegistryValue"); EndElement("Component"); } void cmWIXFeaturesSourceWriter::EmitFeatureForComponentGroup( cmCPackComponentGroup const& group) { BeginElement("Feature"); AddAttribute("Id", "CM_G_" + group.Name); if (group.IsExpandedByDefault) { AddAttribute("Display", "expand"); } AddAttributeUnlessEmpty("Title", group.DisplayName); AddAttributeUnlessEmpty("Description", group.Description); for (std::vector::const_iterator i = group.Subgroups.begin(); i != group.Subgroups.end(); ++i) { EmitFeatureForComponentGroup(**i); } for (std::vector::const_iterator i = group.Components.begin(); i != group.Components.end(); ++i) { EmitFeatureForComponent(**i); } EndElement("Feature"); } void cmWIXFeaturesSourceWriter::EmitFeatureForComponent( cmCPackComponent const& component) { BeginElement("Feature"); AddAttribute("Id", "CM_C_" + component.Name); AddAttributeUnlessEmpty("Title", component.DisplayName); AddAttributeUnlessEmpty("Description", component.Description); if (component.IsRequired) { AddAttribute("Absent", "disallow"); } if (component.IsHidden) { AddAttribute("Display", "hidden"); } if (component.IsDisabledByDefault) { AddAttribute("Level", "2"); } EndElement("Feature"); } void cmWIXFeaturesSourceWriter::EmitComponentRef(std::string const& id) { BeginElement("ComponentRef"); AddAttribute("Id", id); EndElement("ComponentRef"); }