Add CPack NSIS MUI_FINISHPAGE_RUN support (#11144)

MUI_FINISHPAGE_RUN is frequently used with NSIS and provides a checkbox
on the finish page of an installer which specifies whether the specified
executable should be run when the installer exits. This commit adds support
for this setting in CPack.
This commit is contained in:
Mike McQuaid 2011-01-06 13:44:50 +00:00 committed by David Cole
parent 702c8f8ba7
commit bee514c361
3 changed files with 15 additions and 0 deletions

View File

@ -262,6 +262,9 @@
# For example, you would set this to 'exec' if your executables are # For example, you would set this to 'exec' if your executables are
# in an exec directory. # in an exec directory.
# #
# CPACK_NSIS_MUI_FINISHPAGE_RUN - Specify an executable to add an option
# to run on the finish page of the NSIS installer.
#
# The following variable is specific to installers build on Mac OS X # The following variable is specific to installers build on Mac OS X
# using PackageMaker: # using PackageMaker:
# #

View File

@ -540,6 +540,7 @@ FunctionEnd
@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@ @CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
@CPACK_NSIS_INSTALLER_ICON_CODE@ @CPACK_NSIS_INSTALLER_ICON_CODE@
@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@ @CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@
@CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE@
;-------------------------------- ;--------------------------------
;Pages ;Pages

View File

@ -156,6 +156,17 @@ int cmCPackNSISGenerator::PackageFiles()
installerIconCode.c_str()); installerIconCode.c_str());
} }
if(this->IsSet("CPACK_NSIS_MUI_FINISHPAGE_RUN"))
{
std::string installerRunCode = "!define MUI_FINISHPAGE_RUN \"$INSTDIR\\";
installerRunCode += this->GetOption("CPACK_NSIS_EXECUTABLES_DIRECTORY");
installerRunCode += "\\";
installerRunCode += this->GetOption("CPACK_NSIS_MUI_FINISHPAGE_RUN");
installerRunCode += "\"\n";
this->SetOptionIfNotSet("CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE",
installerRunCode.c_str());
}
// Setup all of the component sections // Setup all of the component sections
if (this->Components.empty()) if (this->Components.empty())
{ {