Re: [CMake] custom nsis template- Install targets not working

2014-03-27 Thread Eric Noulard
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

2014-03-27 Thread Lloyd

 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

2014-03-27 Thread Lloyd
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