Merge topic 'cpack-nsis-changes'

bee514c Add CPack NSIS MUI_FINISHPAGE_RUN support (#11144)
702c8f8 Add CPACK_NSIS_EXECUTABLES_DIRECTORY (#7828)
fec3232 Allow NSIS package or uninstall icon (#11143)
This commit is contained in:
Brad King 2011-01-11 15:48:18 -05:00 committed by CMake Topic Stage
commit 7ebfa8218b
3 changed files with 41 additions and 9 deletions

View File

@ -257,6 +257,14 @@
# CPACK_NSIS_DELETE_ICONS_EXTRA -Additional NSIS commands to # CPACK_NSIS_DELETE_ICONS_EXTRA -Additional NSIS commands to
# uninstall start menu shortcuts. # uninstall start menu shortcuts.
# #
# CPACK_NSIS_EXECUTABLES_DIRECTORY - Creating NSIS start menu links
# assumes that they are in 'bin' unless this variable is set.
# For example, you would set this to 'exec' if your executables are
# 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

@ -129,14 +129,21 @@ int cmCPackNSISGenerator::PackageFiles()
cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Configure file: " << nsisInFileName cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Configure file: " << nsisInFileName
<< " to " << nsisFileName << std::endl); << " to " << nsisFileName << std::endl);
if(this->IsSet("CPACK_NSIS_MUI_ICON") if(this->IsSet("CPACK_NSIS_MUI_ICON")
&& this->IsSet("CPACK_NSIS_MUI_UNIICON")) || this->IsSet("CPACK_NSIS_MUI_UNIICON"))
{ {
std::string installerIconCode="!define MUI_ICON \""; std::string installerIconCode;
installerIconCode += this->GetOption("CPACK_NSIS_MUI_ICON"); if(this->IsSet("CPACK_NSIS_MUI_ICON"))
installerIconCode += "\"\n"; {
installerIconCode += "!define MUI_UNICON \""; installerIconCode += "!define MUI_ICON \"";
installerIconCode += this->GetOption("CPACK_NSIS_MUI_UNIICON"); installerIconCode += this->GetOption("CPACK_NSIS_MUI_ICON");
installerIconCode += "\"\n"; installerIconCode += "\"\n";
}
if(this->IsSet("CPACK_NSIS_MUI_UNIICON"))
{
installerIconCode += "!define MUI_UNICON \"";
installerIconCode += this->GetOption("CPACK_NSIS_MUI_UNIICON");
installerIconCode += "\"\n";
}
this->SetOptionIfNotSet("CPACK_NSIS_INSTALLER_MUI_ICON_CODE", this->SetOptionIfNotSet("CPACK_NSIS_INSTALLER_MUI_ICON_CODE",
installerIconCode.c_str()); installerIconCode.c_str());
} }
@ -149,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())
{ {
@ -414,10 +432,13 @@ int cmCPackNSISGenerator::InitializeInternal()
return 0; return 0;
} }
this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", nsisPath.c_str()); this->SetOptionIfNotSet("CPACK_INSTALLER_PROGRAM", nsisPath.c_str());
this->SetOptionIfNotSet("CPACK_NSIS_EXECUTABLES_DIRECTORY", "bin");
const char* cpackPackageExecutables const char* cpackPackageExecutables
= this->GetOption("CPACK_PACKAGE_EXECUTABLES"); = this->GetOption("CPACK_PACKAGE_EXECUTABLES");
const char* cpackPackageDeskTopLinks const char* cpackPackageDeskTopLinks
= this->GetOption("CPACK_CREATE_DESKTOP_LINKS"); = this->GetOption("CPACK_CREATE_DESKTOP_LINKS");
const char* cpackNsisExecutablesDirectory
= this->GetOption("CPACK_NSIS_EXECUTABLES_DIRECTORY");
std::vector<std::string> cpackPackageDesktopLinksVector; std::vector<std::string> cpackPackageDesktopLinksVector;
if(cpackPackageDeskTopLinks) if(cpackPackageDeskTopLinks)
{ {
@ -465,7 +486,8 @@ int cmCPackNSISGenerator::InitializeInternal()
++ it; ++ it;
std::string linkName = *it; std::string linkName = *it;
str << " CreateShortCut \"$SMPROGRAMS\\$STARTMENU_FOLDER\\" str << " CreateShortCut \"$SMPROGRAMS\\$STARTMENU_FOLDER\\"
<< linkName << ".lnk\" \"$INSTDIR\\bin\\" << execName << ".exe\"" << linkName << ".lnk\" \"$INSTDIR\\"
<< cpackNsisExecutablesDirectory << "\\" << execName << ".exe\""
<< std::endl; << std::endl;
deleteStr << " Delete \"$SMPROGRAMS\\$MUI_TEMP\\" << linkName deleteStr << " Delete \"$SMPROGRAMS\\$MUI_TEMP\\" << linkName
<< ".lnk\"" << std::endl; << ".lnk\"" << std::endl;
@ -479,7 +501,8 @@ int cmCPackNSISGenerator::InitializeInternal()
{ {
str << " StrCmp \"$INSTALL_DESKTOP\" \"1\" 0 +2\n"; str << " StrCmp \"$INSTALL_DESKTOP\" \"1\" 0 +2\n";
str << " CreateShortCut \"$DESKTOP\\" str << " CreateShortCut \"$DESKTOP\\"
<< linkName << ".lnk\" \"$INSTDIR\\bin\\" << execName << ".exe\"" << linkName << ".lnk\" \"$INSTDIR\\"
<< cpackNsisExecutablesDirectory << "\\" << execName << ".exe\""
<< std::endl; << std::endl;
deleteStr << " StrCmp \"$INSTALL_DESKTOP\" \"1\" 0 +2\n"; deleteStr << " StrCmp \"$INSTALL_DESKTOP\" \"1\" 0 +2\n";
deleteStr << " Delete \"$DESKTOP\\" << linkName deleteStr << " Delete \"$DESKTOP\\" << linkName