/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #include "cmCPackIFWCommon.h" class cmCPackComponent; class cmCPackComponentGroup; class cmCPackIFWInstaller; /** \class cmCPackIFWPackage * \brief A single component to be installed by CPack IFW generator */ class cmCPackIFWPackage : public cmCPackIFWCommon { public: // Types enum CompareTypes { CompareNone = 0x0, CompareEqual = 0x1, CompareLess = 0x2, CompareLessOrEqual = 0x3, CompareGreater = 0x4, CompareGreaterOrEqual = 0x5 }; struct CompareStruct { CompareStruct(); unsigned int Type; std::string Value; }; struct DependenceStruct { DependenceStruct(); explicit DependenceStruct(const std::string& dependence); std::string Name; CompareStruct Compare; std::string NameWithCompare() const; bool operator<(const DependenceStruct& other) const { return this->Name < other.Name; } }; public: // [Con|De]structor /** * Construct package */ cmCPackIFWPackage(); public: // Configuration /// Human-readable name of the component std::map DisplayName; /// Human-readable description of the component std::map Description; /// Version number of the component std::string Version; /// Date when this component version was released std::string ReleaseDate; /// Domain-like identification for this component std::string Name; /// File name of a script being loaded std::string Script; /// List of license agreements to be accepted by the installing user std::vector Licenses; /// List of pages to load std::vector UserInterfaces; /// List of translation files to load std::vector Translations; /// Priority of the component in the tree std::string SortingPriority; /// Description added to the component description std::string UpdateText; /// Set to true to preselect the component in the installer std::string Default; /// Marks the package as essential to force a restart of the MaintenanceTool std::string Essential; /// Set to true to hide the component from the installer std::string Virtual; /// Determines that the package must always be installed std::string ForcedInstallation; /// List of components to replace std::vector Replaces; /// Package needs to be installed with elevated permissions std::string RequiresAdminRights; /// Set to false if you want to hide the checkbox for an item std::string Checkable; public: // Internal implementation std::string GetComponentName(cmCPackComponent* component); void DefaultConfiguration(); int ConfigureFromOptions(); int ConfigureFromComponent(cmCPackComponent* component); int ConfigureFromGroup(cmCPackComponentGroup* group); int ConfigureFromGroup(const std::string& groupName); int ConfigureFromPrefix(const std::string& prefix); void GeneratePackageFile(); // Pointer to installer cmCPackIFWInstaller* Installer; // Collection of dependencies std::set Dependencies; // Collection of unresolved dependencies std::set AlienDependencies; // Collection of unresolved automatic dependency on std::set AlienAutoDependOn; // Patch to package directory std::string Directory; };