/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying1file LICENSE.rst or https://cmake.org/licensing for details. */2#pragma once34#include "cmConfigure.h" // IWYU pragma: keep56#include <map>7#include <string>8#include <vector>910#include "cmCPackIFWCommon.h"1112class cmCPackIFWPackage;13class cmCPackIFWRepository;1415/** \class cmCPackIFWInstaller16* \brief A binary installer to be created CPack IFW generator17*/18class cmCPackIFWInstaller : public cmCPackIFWCommon19{20public:21// Types2223using PackagesMap = std::map<std::string, cmCPackIFWPackage*>;24using RepositoriesVector = std::vector<cmCPackIFWRepository*>;2526public:27// Constructor2829/**30* Construct installer31*/32cmCPackIFWInstaller();3334public:35// Configuration3637/// Name of the product being installed38std::string Name;3940/// Version number of the product being installed41std::string Version;4243/// Name of the installer as displayed on the title bar44std::string Title;4546/// Publisher of the software (as shown in the Windows Control Panel)47std::string Publisher;4849/// URL to a page that contains product information on your web site50std::string ProductUrl;5152/// Filename for a custom installer icon53std::string InstallerApplicationIcon;5455/// Filename for a custom window icon56std::string InstallerWindowIcon;5758/// Filename for a logo59std::string Logo;6061/// Filename for a watermark62std::string Watermark;6364/// Filename for a banner65std::string Banner;6667/// Filename for a background68std::string Background;6970/// Wizard style name71std::string WizardStyle;7273/// Filename for a style sheet74std::string StyleSheet;7576/// Wizard width77std::string WizardDefaultWidth;7879/// Wizard height80std::string WizardDefaultHeight;8182/// Set to false if the widget listing installer pages on the left side83/// of the wizard should not be shown84std::string WizardShowPageList;8586/// Title color87std::string TitleColor;8889/// Name of the default program group in the Windows Start menu90std::string StartMenuDir;9192/// Default target directory for installation93std::string TargetDir;9495/// Default target directory for installation with administrator rights96std::string AdminTargetDir;9798/// Filename of the generated maintenance tool99std::string MaintenanceToolName;100101/// Filename for the configuration of the generated maintenance tool102std::string MaintenanceToolIniFile;103104/// Set to true if the installation path can contain non-ASCII characters105std::string AllowNonAsciiCharacters;106107/// Set to false if the target directory should not be deleted when108/// uninstalling109std::string RemoveTargetDir;110111/// Set to true if command line interface features should be disabled112std::string DisableCommandLineInterface;113114/// Set to false if the installation path cannot contain space characters115std::string AllowSpaceInPath;116117/// Filename for a custom installer control script118std::string ControlScript;119120/// List of resources to include in the installer binary121std::vector<std::string> Resources;122123/// A list of images to be shown on PerformInstallationPage.124std::vector<std::string> ProductImages;125126/// A list of associated URLs linked to images to be shown on127/// PerformInstallationPage.128std::vector<std::string> ProductImageUrls;129130/// Command executed after the installer is done if the user accepts the131/// action132std::string RunProgram;133134/// Arguments passed to the program specified in <RunProgram>135std::vector<std::string> RunProgramArguments;136137/// Text shown next to the check box for running the program after the138/// installation139std::string RunProgramDescription;140141#ifdef __APPLE__142/// Code signing identity for signing the generated app bundle143std::string SigningIdentity;144#endif145146public:147// Internal implementation148149void ConfigureFromOptions();150151void GenerateInstallerFile();152153void GeneratePackageFiles();154155PackagesMap Packages;156RepositoriesVector RemoteRepositories;157std::string Directory;158159protected:160void printSkippedOptionWarning(std::string const& optionName,161std::string const& optionValue);162};163164165