/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2014 Kitware, Inc. Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #include "cmWIXDirectoriesSourceWriter.h" cmWIXDirectoriesSourceWriter::cmWIXDirectoriesSourceWriter( cmCPackLog* logger, std::string const& filename) : cmWIXSourceWriter(logger, filename) { } void cmWIXDirectoriesSourceWriter::EmitStartMenuFolder( std::string const& startMenuFolder) { BeginElement("Directory"); AddAttribute("Id", "ProgramMenuFolder"); BeginElement("Directory"); AddAttribute("Id", "PROGRAM_MENU_FOLDER"); AddAttribute("Name", startMenuFolder); EndElement("Directory"); EndElement("Directory"); } void cmWIXDirectoriesSourceWriter::EmitDesktopFolder() { BeginElement("Directory"); AddAttribute("Id", "DesktopFolder"); AddAttribute("Name", "Desktop"); EndElement("Directory"); } void cmWIXDirectoriesSourceWriter::EmitStartupFolder() { BeginElement("Directory"); AddAttribute("Id", "StartupFolder"); AddAttribute("Name", "Startup"); EndElement("Directory"); } size_t cmWIXDirectoriesSourceWriter::BeginInstallationPrefixDirectory( std::string const& programFilesFolderId, std::string const& installRootString) { BeginElement("Directory"); AddAttribute("Id", programFilesFolderId); std::vector installRoot; cmSystemTools::SplitPath(installRootString.c_str(), installRoot); if (!installRoot.empty() && installRoot.back().empty()) { installRoot.pop_back(); } for (size_t i = 1; i < installRoot.size(); ++i) { BeginElement("Directory"); if (i == installRoot.size() - 1) { AddAttribute("Id", "INSTALL_ROOT"); } else { std::stringstream tmp; tmp << "INSTALL_PREFIX_" << i; AddAttribute("Id", tmp.str()); } AddAttribute("Name", installRoot[i]); } return installRoot.size(); } void cmWIXDirectoriesSourceWriter::EndInstallationPrefixDirectory(size_t size) { for (size_t i = 0; i < size; ++i) { EndElement("Directory"); } }