[Cmake-commits] CMake branch, next, updated. v3.0.2-5480-g44adbd2
Nils Gladitz
nilsgladitz at gmail.com
Sat Sep 27 11:35:33 EDT 2014
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via 44adbd2e2f25af0f7fbc3a49dfc6d8ccd9dae724 (commit)
via d48c781fc2e637fd9605775f44f4360bec6a59d9 (commit)
via 58dc05de9e8e130b0fc188ff510826d649d62aff (commit)
from 1a34c8ef1819f16065c0f2df7e1d78b365da65b3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44adbd2e2f25af0f7fbc3a49dfc6d8ccd9dae724
commit 44adbd2e2f25af0f7fbc3a49dfc6d8ccd9dae724
Merge: 1a34c8e d48c781
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Sat Sep 27 11:35:32 2014 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Sat Sep 27 11:35:32 2014 -0400
Merge topic 'wix-directory-permissions' into next
d48c781f CPackWiX: Extend CPACK_WIX_ACL to support directories
58dc05de CMake Nightly Date Stamp
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d48c781fc2e637fd9605775f44f4360bec6a59d9
commit d48c781fc2e637fd9605775f44f4360bec6a59d9
Author: Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Sat Sep 27 17:34:39 2014 +0200
Commit: Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Sat Sep 27 17:34:39 2014 +0200
CPackWiX: Extend CPACK_WIX_ACL to support directories
diff --git a/Help/prop_inst/CPACK_WIX_ACL.rst b/Help/prop_inst/CPACK_WIX_ACL.rst
index e7d526a..ee42666 100644
--- a/Help/prop_inst/CPACK_WIX_ACL.rst
+++ b/Help/prop_inst/CPACK_WIX_ACL.rst
@@ -1,7 +1,8 @@
CPACK_WIX_ACL
-------------
-Specifies access permissions for files installed by a WiX installer.
+Specifies access permissions for files or directories
+installed by a WiX installer.
The property can contain multiple list entries,
each of which has to match the following format.
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index b221ab4..744280a 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -847,13 +847,37 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
cmsys::Directory dir;
dir.Load(topdir.c_str());
- if(dir.GetNumberOfFiles() == 2)
+ std::string relativeDirectoryPath =
+ cmSystemTools::RelativePath(toplevel.c_str(), topdir.c_str());
+
+ cmInstalledFile const* directoryInstalledFile =
+ this->GetInstalledFile(relativeDirectoryPath);
+
+ bool emptyDirectory = dir.GetNumberOfFiles() == 2;
+ bool createDirectory = false;
+
+ if(emptyDirectory)
{
- std::string componentId = fileDefinitions.EmitComponentCreateFolder(
- directoryId, GenerateGUID());
+ createDirectory = true;
+ }
+
+ if(directoryInstalledFile)
+ {
+ if(directoryInstalledFile->HasProperty("CPACK_WIX_ACL"))
+ {
+ createDirectory = true;
+ }
+ }
+ if(createDirectory)
+ {
+ std::string componentId = fileDefinitions.EmitComponentCreateFolder(
+ directoryId, GenerateGUID(), directoryInstalledFile);
featureDefinitions.EmitComponentRef(componentId);
+ }
+ if(emptyDirectory)
+ {
return;
}
diff --git a/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx b/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx
index 0ad5d0c..1adb06a 100644
--- a/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx
+++ b/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx
@@ -113,7 +113,9 @@ void cmWIXFilesSourceWriter::EmitUninstallShortcut(
}
std::string cmWIXFilesSourceWriter::EmitComponentCreateFolder(
- std::string const& directoryId, std::string const& guid)
+ std::string const& directoryId,
+ std::string const& guid,
+ cmInstalledFile const* installedFile)
{
std::string componentId =
std::string("CM_C_EMPTY_") + directoryId;
@@ -127,6 +129,12 @@ std::string cmWIXFilesSourceWriter::EmitComponentCreateFolder(
BeginElement("CreateFolder");
+ if(installedFile)
+ {
+ cmWIXAccessControlList acl(Logger, *installedFile, *this);
+ acl.Apply();
+ }
+
EndElement("CreateFolder");
EndElement("Component");
EndElement("DirectoryRef");
diff --git a/Source/CPack/WiX/cmWIXFilesSourceWriter.h b/Source/CPack/WiX/cmWIXFilesSourceWriter.h
index 23ef561..b0a4af8 100644
--- a/Source/CPack/WiX/cmWIXFilesSourceWriter.h
+++ b/Source/CPack/WiX/cmWIXFilesSourceWriter.h
@@ -47,7 +47,8 @@ public:
std::string EmitComponentCreateFolder(
std::string const& directoryId,
- std::string const& guid);
+ std::string const& guid,
+ cmInstalledFile const* installedFile);
std::string EmitComponentFile(
std::string const& directoryId,
diff --git a/Source/cmInstalledFile.cxx b/Source/cmInstalledFile.cxx
index 3483ecc..4b53752 100644
--- a/Source/cmInstalledFile.cxx
+++ b/Source/cmInstalledFile.cxx
@@ -77,6 +77,13 @@ void cmInstalledFile::AppendProperty(cmMakefile const* mf,
}
//----------------------------------------------------------------------------
+bool cmInstalledFile::HasProperty(
+ const std::string& prop) const
+{
+ return this->Properties.find(prop) != this->Properties.end();
+}
+
+//----------------------------------------------------------------------------
bool cmInstalledFile::GetProperty(
const std::string& prop, std::string& value) const
{
diff --git a/Source/cmInstalledFile.h b/Source/cmInstalledFile.h
index 0292cd1..7134a4e 100644
--- a/Source/cmInstalledFile.h
+++ b/Source/cmInstalledFile.h
@@ -62,6 +62,8 @@ public:
void AppendProperty(cmMakefile const* mf,
const std::string& prop, const char* value,bool asString=false);
+ bool HasProperty(const std::string& prop) const;
+
bool GetProperty(const std::string& prop, std::string& value) const;
bool GetPropertyAsBool(const std::string& prop) const;
-----------------------------------------------------------------------
Summary of changes:
Help/prop_inst/CPACK_WIX_ACL.rst | 3 ++-
Source/CMakeVersion.cmake | 2 +-
Source/CPack/WiX/cmCPackWIXGenerator.cxx | 30 ++++++++++++++++++++++++---
Source/CPack/WiX/cmWIXFilesSourceWriter.cxx | 10 ++++++++-
Source/CPack/WiX/cmWIXFilesSourceWriter.h | 3 ++-
Source/cmInstalledFile.cxx | 7 +++++++
Source/cmInstalledFile.h | 2 ++
7 files changed, 50 insertions(+), 7 deletions(-)
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list