summaryrefslogtreecommitdiff
path: root/Source/CPack
diff options
context:
space:
mode:
authorNils Gladitz <nilsgladitz@gmail.com>2015-12-10 17:38:18 +0100
committerNils Gladitz <nilsgladitz@gmail.com>2015-12-10 17:38:18 +0100
commitecdc77f14d7a37f9d173ea2ca4946bf51c6a43d0 (patch)
treed7bfccd51f93d9e8aa5b5743a6df4451dc249d38 /Source/CPack
parentfc6c5074e800fb7fe3f829564d7a7e284133cdd9 (diff)
downloadcmake-ecdc77f14d7a37f9d173ea2ca4946bf51c6a43d0.tar.gz
CPackWIX: Fix installed file property lookups when using components
The WIX generator incorrectly looked for installed file properties by relative paths that included the component specific staging directory prefix. Remove that prefix in installed file property lookups when generating packages with components.
Diffstat (limited to 'Source/CPack')
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.cxx23
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.h3
2 files changed, 22 insertions, 4 deletions
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index d5246db43d..da8b486c21 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -911,8 +911,9 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
relativeDirectoryPath = ".";
}
- cmInstalledFile const* directoryInstalledFile =
- this->GetInstalledFile(relativeDirectoryPath);
+ cmInstalledFile const* directoryInstalledFile = this->GetInstalledFile(
+ this->RelativePathWithoutComponentPrefix(relativeDirectoryPath)
+ );
bool emptyDirectory = dir.GetNumberOfFiles() == 2;
bool createDirectory = false;
@@ -980,8 +981,9 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
}
else
{
- cmInstalledFile const* installedFile =
- this->GetInstalledFile(relativePath);
+ cmInstalledFile const* installedFile = this->GetInstalledFile(
+ this->RelativePathWithoutComponentPrefix(relativePath)
+ );
if(installedFile)
{
@@ -1230,3 +1232,16 @@ void cmCPackWIXGenerator::AddCustomFlags(
stream << " " << QuotePath(*i);
}
}
+
+std::string cmCPackWIXGenerator::RelativePathWithoutComponentPrefix(
+ std::string const& path)
+{
+ if(this->Components.empty())
+ {
+ return path;
+ }
+
+ std::string::size_type pos = path.find('/');
+
+ return path.substr(pos + 1);
+}
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h b/Source/CPack/WiX/cmCPackWIXGenerator.h
index d501609537..3f66b2c023 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.h
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.h
@@ -168,6 +168,9 @@ private:
void AddCustomFlags(
std::string const& variableName, std::ostream& stream);
+ std::string RelativePathWithoutComponentPrefix(
+ std::string const& path);
+
std::vector<std::string> WixSources;
id_map_t PathToIdMap;
ambiguity_map_t IdAmbiguityCounter;