Merge topic 'fix-wixobj-filenames'
2e16aff1
CPackWIX: Fix .wixobj output locations and filenames.b0852ebc
CPackWIX: Support patching of root <Feature> elements.
This commit is contained in:
commit
6f28bc6b51
|
@ -148,8 +148,10 @@
|
|||
# Currently fragments can be injected into most
|
||||
# Component, File and Directory elements.
|
||||
#
|
||||
# The special Id ``#PRODUCT`` can be used to inject content
|
||||
# into the ``<Product>`` element.
|
||||
# The following additional special Ids can be used:
|
||||
#
|
||||
# * ``#PRODUCT`` for the ``<Product>`` element.
|
||||
# * ``#PRODUCTFEATURE`` for the root ``<Feature>`` element.
|
||||
#
|
||||
# The following example illustrates how this works.
|
||||
#
|
||||
|
|
|
@ -265,13 +265,30 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
|
|||
|
||||
AppendUserSuppliedExtraSources();
|
||||
|
||||
std::set<std::string> usedBaseNames;
|
||||
|
||||
std::stringstream objectFiles;
|
||||
for(size_t i = 0; i < this->WixSources.size(); ++i)
|
||||
{
|
||||
std::string const& sourceFilename = this->WixSources[i];
|
||||
|
||||
std::string baseName =
|
||||
cmSystemTools::GetFilenameWithoutLastExtension(sourceFilename);
|
||||
|
||||
unsigned int counter = 0;
|
||||
std::string uniqueBaseName = baseName;
|
||||
|
||||
while(usedBaseNames.find(uniqueBaseName) != usedBaseNames.end())
|
||||
{
|
||||
std::stringstream tmp;
|
||||
tmp << baseName << ++counter;
|
||||
uniqueBaseName = tmp.str();
|
||||
}
|
||||
|
||||
usedBaseNames.insert(uniqueBaseName);
|
||||
|
||||
std::string objectFilename =
|
||||
cmSystemTools::GetFilenameWithoutExtension(sourceFilename) + ".wixobj";
|
||||
this->CPackTopLevel + "/" + uniqueBaseName + ".wixobj";
|
||||
|
||||
if(!RunCandleCommand(sourceFilename, objectFilename))
|
||||
{
|
||||
|
@ -474,6 +491,7 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
|
|||
|
||||
featureDefinitions.AddAttribute("Title", cpackPackageName);
|
||||
featureDefinitions.AddAttribute("Level", "1");
|
||||
this->Patch->ApplyFragment("#PRODUCTFEATURE", featureDefinitions);
|
||||
|
||||
const char* package = GetOption("CPACK_WIX_CMAKE_PACKAGE_REGISTRY");
|
||||
if(package)
|
||||
|
|
Loading…
Reference in New Issue