summaryrefslogtreecommitdiffstats
path: root/Source/CPack/IFW/cmCPackIFWInstaller.h
blob: a031fc268b41911c00c162f8915a5eadc2ff261e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/* 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 <map>
#include <string>
#include <vector>

#include "cmCPackIFWCommon.h"

class cmCPackIFWPackage;
class cmCPackIFWRepository;

/** \class cmCPackIFWInstaller
 * \brief A binary installer to be created CPack IFW generator
 */
class cmCPackIFWInstaller : public cmCPackIFWCommon
{
public:
  // Types

  using PackagesMap = std::map<std::string, cmCPackIFWPackage*>;
  using RepositoriesVector = std::vector<cmCPackIFWRepository*>;

public:
  // Constructor

  /**
   * Construct installer
   */
  cmCPackIFWInstaller();

public:
  // Configuration

  /// Name of the product being installed
  std::string Name;

  /// Version number of the product being installed
  std::string Version;

  /// Name of the installer as displayed on the title bar
  std::string Title;

  /// Publisher of the software (as shown in the Windows Control Panel)
  std::string Publisher;

  /// URL to a page that contains product information on your web site
  std::string ProductUrl;

  /// Filename for a custom installer icon
  std::string InstallerApplicationIcon;

  /// Filename for a custom window icon
  std::string InstallerWindowIcon;

  /// Filename for a logo
  std::string Logo;

  /// Filename for a watermark
  std::string Watermark;

  /// Filename for a banner
  std::string Banner;

  /// Filename for a background
  std::string Background;

  /// Wizard style name
  std::string WizardStyle;

  /// Filename for a style sheet
  std::string StyleSheet;

  /// Wizard width
  std::string WizardDefaultWidth;

  /// Wizard height
  std::string WizardDefaultHeight;

  /// Set to false if the widget listing installer pages on the left side
  /// of the wizard should not be shown
  std::string WizardShowPageList;

  /// Title color
  std::string TitleColor;

  /// Name of the default program group in the Windows Start menu
  std::string StartMenuDir;

  /// Default target directory for installation
  std::string TargetDir;

  /// Default target directory for installation with administrator rights
  std::string AdminTargetDir;

  /// Filename of the generated maintenance tool
  std::string MaintenanceToolName;

  /// Filename for the configuration of the generated maintenance tool
  std::string MaintenanceToolIniFile;

  /// Set to true if the installation path can contain non-ASCII characters
  std::string AllowNonAsciiCharacters;

  /// Set to false if the target directory should not be deleted when
  /// uninstalling
  std::string RemoveTargetDir;

  /// Set to false if the installation path cannot contain space characters
  std::string AllowSpaceInPath;

  /// Filename for a custom installer control script
  std::string ControlScript;

  /// List of resources to include in the installer binary
  std::vector<std::string> Resources;

public:
  // Internal implementation

  void ConfigureFromOptions();

  void GenerateInstallerFile();

  void GeneratePackageFiles();

  PackagesMap Packages;
  RepositoriesVector RemoteRepositories;
  std::string Directory;

protected:
  void printSkippedOptionWarning(const std::string& optionName,
                                 const std::string& optionValue);
};