| 1035 | } |
| 1036 | |
| 1037 | void cmCPackWIXGenerator::AddDirectoryAndFileDefinitions( |
| 1038 | std::string const& topdir, std::string const& directoryId, |
| 1039 | cmWIXDirectoriesSourceWriter& directoryDefinitions, |
| 1040 | cmWIXFilesSourceWriter& fileDefinitions, |
| 1041 | cmWIXFeaturesSourceWriter& featureDefinitions, |
| 1042 | std::vector<std::string> const& packageExecutables, |
| 1043 | std::vector<std::string> const& desktopExecutables, |
| 1044 | cmWIXShortcuts& shortcuts, int diskId) |
| 1045 | { |
| 1046 | cmsys::Directory dir; |
| 1047 | dir.Load(topdir.c_str()); |
| 1048 | |
| 1049 | std::string relativeDirectoryPath = |
| 1050 | cmSystemTools::RelativePath(toplevel.c_str(), topdir.c_str()); |
| 1051 | |
| 1052 | if (relativeDirectoryPath.empty()) { |
| 1053 | relativeDirectoryPath = "."; |
| 1054 | } |
| 1055 | |
| 1056 | cmInstalledFile const* directoryInstalledFile = this->GetInstalledFile( |
| 1057 | this->RelativePathWithoutComponentPrefix(relativeDirectoryPath)); |
| 1058 | |
| 1059 | bool emptyDirectory = dir.GetNumberOfFiles() == 2; |
| 1060 | bool createDirectory = false; |
| 1061 | |
| 1062 | if (emptyDirectory) { |
| 1063 | createDirectory = true; |
| 1064 | |
| 1065 | if (directoryId == "INSTALL_ROOT") { |
| 1066 | return; |
| 1067 | } |
| 1068 | } |
| 1069 | |
| 1070 | if (directoryInstalledFile) { |
| 1071 | if (directoryInstalledFile->HasProperty("CPACK_WIX_ACL")) { |
| 1072 | createDirectory = true; |
| 1073 | } |
| 1074 | } |
| 1075 | |
| 1076 | if (createDirectory) { |
| 1077 | std::string componentId = fileDefinitions.EmitComponentCreateFolder( |
| 1078 | directoryId, GenerateGUID(), directoryInstalledFile); |
| 1079 | featureDefinitions.EmitComponentRef(componentId); |
| 1080 | } |
| 1081 | |
| 1082 | if (emptyDirectory) { |
| 1083 | return; |
| 1084 | } |
| 1085 | |
| 1086 | for (size_t i = 0; i < dir.GetNumberOfFiles(); ++i) { |
| 1087 | std::string fileName = dir.GetFile(static_cast<unsigned long>(i)); |
| 1088 | |
| 1089 | if (fileName == "."_s || fileName == ".."_s) { |
| 1090 | continue; |
| 1091 | } |
| 1092 | |
| 1093 | std::string fullPath = cmStrCat(topdir, '/', fileName); |
| 1094 |
nothing calls this directly
no test coverage detected