/*============================================================================ 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): cmWIXSourceWriter(logger, filename) { } void cmWIXFeaturesSourceWriter::CreateCMakePackageRegistryEntry( std::string const& package, std::string const& upgradeGuid) { BeginElement("Component"); AddAttribute("Id", "CM_PACKAGE_REGISTRY"); AddAttribute("Directory", "TARGETDIR"); AddAttribute("Guid", "*"); 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"); } EndElement("Feature"); } void cmWIXFeaturesSourceWriter::EmitComponentRef(std::string const& id) { BeginElement("ComponentRef"); AddAttribute("Id", id); EndElement("ComponentRef"); }