| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #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, cmWIXPatch& patch) |
| { |
| BeginElement("Feature"); |
| AddAttribute("Id", "CM_G_" + group.Name); |
| |
| if (group.IsExpandedByDefault) { |
| AddAttribute("Display", "expand"); |
| } |
| |
| AddAttributeUnlessEmpty("Title", group.DisplayName); |
| AddAttributeUnlessEmpty("Description", group.Description); |
| |
| patch.ApplyFragment("CM_G_" + group.Name, *this); |
| |
| for (cmCPackComponentGroup* subgroup : group.Subgroups) { |
| EmitFeatureForComponentGroup(*subgroup, patch); |
| } |
| |
| for (cmCPackComponent* component : group.Components) { |
| EmitFeatureForComponent(*component, patch); |
| } |
| |
| EndElement("Feature"); |
| } |
| |
| void cmWIXFeaturesSourceWriter::EmitFeatureForComponent( |
| cmCPackComponent const& component, cmWIXPatch& patch) |
| { |
| 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"); |
| } |
| |
| patch.ApplyFragment("CM_C_" + component.Name, *this); |
| |
| EndElement("Feature"); |
| } |
| |
| void cmWIXFeaturesSourceWriter::EmitComponentRef(std::string const& id) |
| { |
| BeginElement("ComponentRef"); |
| AddAttribute("Id", id); |
| EndElement("ComponentRef"); |
| } |