CPackWIX: Enabled patching of WIX <Feature> tags

This commit is contained in:
Michael Stürmer 2016-09-09 10:53:26 +02:00 committed by Nils Gladitz
parent d62a5dfc86
commit c0bccc51df
5 changed files with 21 additions and 9 deletions

View File

@ -0,0 +1,5 @@
wix-feature-patch
-----------------
* The CPack WIX generator now supports
CPACK_WIX_PATCH_FILE fragments for Feature elements.

View File

@ -147,7 +147,7 @@
# }
#
# Currently fragments can be injected into most
# Component, File and Directory elements.
# Component, File, Directory and Feature elements.
#
# The following additional special Ids can be used:
#

View File

@ -628,7 +628,7 @@ bool cmCPackWIXGenerator::CreateFeatureHierarchy(
i != ComponentGroups.end(); ++i) {
cmCPackComponentGroup const& group = i->second;
if (group.ParentGroup == 0) {
featureDefinitions.EmitFeatureForComponentGroup(group);
featureDefinitions.EmitFeatureForComponentGroup(group, *this->Patch);
}
}
@ -638,7 +638,7 @@ bool cmCPackWIXGenerator::CreateFeatureHierarchy(
cmCPackComponent const& component = i->second;
if (!component.Group) {
featureDefinitions.EmitFeatureForComponent(component);
featureDefinitions.EmitFeatureForComponent(component, *this->Patch);
}
}

View File

@ -42,7 +42,7 @@ void cmWIXFeaturesSourceWriter::CreateCMakePackageRegistryEntry(
}
void cmWIXFeaturesSourceWriter::EmitFeatureForComponentGroup(
cmCPackComponentGroup const& group)
cmCPackComponentGroup const& group, cmWIXPatch& patch)
{
BeginElement("Feature");
AddAttribute("Id", "CM_G_" + group.Name);
@ -57,20 +57,22 @@ void cmWIXFeaturesSourceWriter::EmitFeatureForComponentGroup(
for (std::vector<cmCPackComponentGroup*>::const_iterator i =
group.Subgroups.begin();
i != group.Subgroups.end(); ++i) {
EmitFeatureForComponentGroup(**i);
EmitFeatureForComponentGroup(**i, patch);
}
for (std::vector<cmCPackComponent*>::const_iterator i =
group.Components.begin();
i != group.Components.end(); ++i) {
EmitFeatureForComponent(**i);
EmitFeatureForComponent(**i, patch);
}
patch.ApplyFragment("CM_G_" + group.Name, *this);
EndElement("Feature");
}
void cmWIXFeaturesSourceWriter::EmitFeatureForComponent(
cmCPackComponent const& component)
cmCPackComponent const& component, cmWIXPatch& patch)
{
BeginElement("Feature");
AddAttribute("Id", "CM_C_" + component.Name);
@ -90,6 +92,8 @@ void cmWIXFeaturesSourceWriter::EmitFeatureForComponent(
AddAttribute("Level", "2");
}
patch.ApplyFragment("CM_C_" + component.Name, *this);
EndElement("Feature");
}

View File

@ -13,6 +13,7 @@
#ifndef cmWIXFeaturesSourceWriter_h
#define cmWIXFeaturesSourceWriter_h
#include "cmWIXPatch.h"
#include "cmWIXSourceWriter.h"
#include <CPack/cmCPackGenerator.h>
@ -29,9 +30,11 @@ public:
void CreateCMakePackageRegistryEntry(std::string const& package,
std::string const& upgradeGuid);
void EmitFeatureForComponentGroup(const cmCPackComponentGroup& group);
void EmitFeatureForComponentGroup(const cmCPackComponentGroup& group,
cmWIXPatch& patch);
void EmitFeatureForComponent(const cmCPackComponent& component);
void EmitFeatureForComponent(const cmCPackComponent& component,
cmWIXPatch& patch);
void EmitComponentRef(std::string const& id);
};