Re: [CMake] custom nsis template- Install targets not working
2014-03-27 7:08 GMT+01:00 Lloyd lloydkl.t...@gmail.com: Hi, My CMake file contains the install comands like this install(TARGETS MyExe RUNTIME DESTINATION .) When I use the standard NSIS template, the installer is created with MyExe. But our project needs a custom NSIS template so I have written one, and it is generating an installer *without* MyExe. So I made a comparison between my nsis template and the standard one. The one big difference I found is the presence of @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@ @CPACK_NSIS_FULL_INSTALL@ after the SetOutPath $INSTDIR command. These above two variables seems to be undocumented. From the source code one can see that CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS is empty unless the user provide some value for it. CPACK_NSIS_FULL_INSTALL is populated with File /r \${INST_DIR}\\*.*\ unless the user provide another value. When the standard nsis template is processed, these lines are changed to File /r ${INST_DIR}\*.* which corresponds to the source code default behavior. I am struck at this point, how can I make my install targets command work? Any hint or documentation would be greatly appreciated. I am no NSIS expert so I can't imagine why 'File /r ${INST_DIR}\*.*' could possibly do ??? So I guess that if your template does not contain such command you either need it (and should use CPACK_NSIS_FULL_INSTALL in your template) or replace it with something more appropriate to you case. Now on the semantic, CPACK_NSIS_FULL_INSTALL probably means full install of all components you will find other CPACK_NSIS_*_COMPONENTS* var CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC CPACK_NSIS_PAGE_COMPONENTS CPACK_NSIS_COMPONENT_SECTIONS CPACK_NSIS_COMPONENT_SECTION_LIST ... See http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack for some explanation about component vs full/monolithic install with CPack. -- Erk L'élection n'est pas la démocratie -- http://www.le-message.org -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
Re: [CMake] custom nsis template- Install targets not working
I am no NSIS expert so I can't imagine why 'File /r ${INST_DIR}\*.*' could possibly do ??? About the file command the NSIS documentation says this: Adds file(s) to be extracted to the current output path ($OUTDIR). If the /r switch is used, files and directories are added recursively. That is, the File command copies the files (all files as it is *.*) specified in the path ${INST_DIR}\*.* recursively to the current set output directory of the NSIS. The value of the INST_DIR variable is the directory which the user has selected at install time. So I guess that if your template does not contain such command you either need it I tried adding @CPACK_NSIS_FULL_INSTALL@, and it generated File /r ${INST_DIR}\*.* but this causes NSIS an error. Now I am in the assumption that CMake copies all the files hierarchically to some temp directory and from that location it does the copy (this is only a wild guess). (and should use CPACK_NSIS_FULL_INSTALL in your template) or replace it with something more appropriate to you case. What I don't understand is, what happens to the install targets commands in the CMake file on windows platform -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
Re: [CMake] custom nsis template- Install targets not working
Solved the problem. Further verification revealed that, when I build PACKAGE, it generates a install_manifest.txt file in my build directory. It contains absolute paths to copy of install files I mentioned using install targets command. This temporary directory and its files are also created when we build the PACKAGE target. What caused all these problem is, I misread the INSTDIR in SetOutPath command and INST_DIR in File command as the *same* SetOutPath $INSTDIR File /r ${INST_DIR}\*.* tracing the INST_DIR value revealed that, it is defined in the template as !define INST_DIR @CPACK_TEMPORARY_DIRECTORY@ Thanks a lot, Lloyd On Thu, Mar 27, 2014 at 2:05 PM, Lloyd lloydkl.t...@gmail.com wrote: I am no NSIS expert so I can't imagine why 'File /r ${INST_DIR}\*.*' could possibly do ??? About the file command the NSIS documentation says this: Adds file(s) to be extracted to the current output path ($OUTDIR). If the /r switch is used, files and directories are added recursively. That is, the File command copies the files (all files as it is *.*) specified in the path ${INST_DIR}\*.* recursively to the current set output directory of the NSIS. The value of the INST_DIR variable is the directory which the user has selected at install time. So I guess that if your template does not contain such command you either need it I tried adding @CPACK_NSIS_FULL_INSTALL@, and it generated File /r ${INST_DIR}\*.* but this causes NSIS an error. Now I am in the assumption that CMake copies all the files hierarchically to some temp directory and from that location it does the copy (this is only a wild guess). (and should use CPACK_NSIS_FULL_INSTALL in your template) or replace it with something more appropriate to you case. What I don't understand is, what happens to the install targets commands in the CMake file on windows platform -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake