diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2006-02-14 19:29:15 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2006-02-14 19:29:15 (GMT) |
commit | 21975ceda54ca51bcc4c86fe798d30f10297df82 (patch) | |
tree | 4fa32e6159c0166b45bd22ee780da45047349149 | |
parent | c9ecd782374f814a760fdb98db7218b612d9f310 (diff) | |
download | CMake-21975ceda54ca51bcc4c86fe798d30f10297df82.zip CMake-21975ceda54ca51bcc4c86fe798d30f10297df82.tar.gz CMake-21975ceda54ca51bcc4c86fe798d30f10297df82.tar.bz2 |
ENH: Better handling of executables on windows
-rw-r--r-- | Modules/NSIS.template.in | 6 | ||||
-rw-r--r-- | Source/CPack/cmCPackNSISGenerator.cxx | 28 |
2 files changed, 32 insertions, 2 deletions
diff --git a/Modules/NSIS.template.in b/Modules/NSIS.template.in index 5f56cda..41152d0 100644 --- a/Modules/NSIS.template.in +++ b/Modules/NSIS.template.in @@ -358,7 +358,8 @@ Section "Dummy Section" SecDummy ;Create shortcuts CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" - CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\@CPACK_PACKAGE_EXECUTABLE_LABEL@.lnk" "$INSTDIR\bin\@CPACK_PACKAGE_EXECUTABLE@.exe" +@CPACK_NSIS_CREATE_ICONS@ +@CPACK_NSIS_CREATE_EXTRA_ICONS@ CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" !insertmacro MUI_STARTMENU_WRITE_END @@ -414,7 +415,8 @@ Section "Uninstall" !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" - Delete "$SMPROGRAMS\$MUI_TEMP\@CPACK_PACKAGE_EXECUTABLE_LABEL@.lnk" +@CPACK_NSIS_DELETE_ICONS@ +@CPACK_NSIS_DELETE_EXTRA_ICONS@ ;Delete empty start menu parent diretories StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index fc69cf2..415129d 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -101,6 +101,34 @@ int cmCPackNSISGenerator::Initialize(const char* name, cmMakefile* mf) return 0; } this->SetOption("CPACK_INSTALLER_PROGRAM", nsisPath.c_str()); + + const char* cpackPackageExecutables = this->GetOption("CPACK_PACKAGE_EXECUTABLES"); + if ( cpackPackageExecutables ) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, "The cpackPackageExecutables: " << cpackPackageExecutables << "." << std::endl); + cmOStringStream str; + cmOStringStream deleteStr; + std::vector<std::string> cpackPackageExecutablesVector; + cmSystemTools::ExpandListArgument(cpackPackageExecutables,cpackPackageExecutablesVector); + if ( cpackPackageExecutablesVector.size() % 2 != 0 ) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, "CPACK_PACKAGE_EXECUTABLES should contain pairs of <executable> and <icon name>." << std::endl); + return 0; + } + std::vector<std::string>::iterator it; + for ( it = cpackPackageExecutablesVector.begin(); it != cpackPackageExecutablesVector.end(); + ++it ) + { + std::string execName = *it; + ++ it; + std::string linkName = *it; + str << " CreateShortCut \"$SMPROGRAMS\\$STARTMENU_FOLDER\\" << linkName << ".lnk\"" "\"$INSTDIR\\bin\\" << execName << ".exe\"" << std::endl; + deleteStr << " Delete \"$SMPROGRAMS\\$MUI_TEMP\\" << linkName << ".lnk\"" << std::endl; + } + this->SetOption("CPACK_NSIS_CREATE_ICONS", str.str().c_str()); + this->SetOption("CPACK_NSIS_DELETE_ICONS", deleteStr.str().c_str()); + } + return res; } |