Add CPACK_NSIS_EXECUTABLES_DIRECTORY (#7828)

NSIS installers default to assuming the executables exist in a
directory named "bin" under the installation directory. As this
isn't usual for Windows programs, the addition of this variable
allows the customization of this directory and links still to be
created correctly.
This commit is contained in:
Mike McQuaid 2011-01-06 12:48:47 +00:00 committed by David Cole
parent fec32328b1
commit 702c8f8ba7
2 changed files with 12 additions and 2 deletions

View File

@ -257,6 +257,11 @@
# 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.
#
# 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

@ -421,10 +421,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)
{ {
@ -472,7 +475,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;
@ -486,7 +490,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