CPack/IFW: Add option to control deletion of the install directory

Added support for QT IFW "RemoveTargetDir" boolean option.  QTIFW
supports an option to prevent, or not, deletion of the installation
directory. This is a direct pass-through to that variable.
This commit is contained in:
Jean-Philippe Lebel
2016-11-22 17:56:18 -05:00
parent bd10c3cf82
commit 739ae1d090
4 changed files with 29 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
cpackifw-package-remove-target-dir
----------------------------------
* The :module:`CPackIFW` module gained new
:variable:`CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR` variable to control
if the target directory should not be deleted when uninstalling.

View File

@@ -191,6 +191,12 @@
#
# By default used QtIFW_ defaults (``maintenancetool``).
#
# .. variable:: CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR
#
# Set to ``OFF`` if the target directory should not be deleted when uninstalling.
#
# Is ``ON`` by default
#
# .. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE
#
# Filename for the configuration of the generated maintenance tool.

View File

@@ -93,6 +93,15 @@ void cmCPackIFWInstaller::ConfigureFromOptions()
}
}
// RemoveTargetDir
if (this->IsSetToOff("CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR")) {
this->RemoveTargetDir = "false";
} else if (this->IsOn("CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR")) {
this->RemoveTargetDir = "true";
} else {
this->RemoveTargetDir.clear();
}
// Logo
if (const char* option = this->GetOption("CPACK_IFW_PACKAGE_LOGO")) {
if (cmSystemTools::FileExists(option)) {
@@ -422,6 +431,10 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
xout.Element("MaintenanceToolIniFile", this->MaintenanceToolIniFile);
}
if (!this->RemoveTargetDir.empty()) {
xout.Element("RemoveTargetDir", this->RemoveTargetDir);
}
// Different allows
if (this->IsVersionLess("2.0")) {
// CPack IFW default policy

View File

@@ -99,6 +99,10 @@ public:
/// 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;