How to copy file using NSIS ?

Posted by Xinus on Stack Overflow See other posts from Stack Overflow or by Xinus
Published on 2010-04-05T12:46:58Z Indexed on 2010/04/05 12:53 UTC
Read the original article Hit count: 589

Filed under:
|

I want to copy war file to tomcat web-app directory using NSIS setup. I have successfully installed tomcat and jdk using following script

!define PRODUCT_NAME "App Deploy"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "ZippySoft"

SetCompressor lzma

;!include "UserManagement.nsh"


; MUI 1.67 compatible ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
;!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Components page
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH

; Language files
!insertmacro MUI_LANGUAGE "English"

; Reserve files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "AppDeploy.exe"
InstallDir "$PROGRAMFILES\App Deploy"
ShowInstDetails show

;Section -SETTINGS
;  SetOutPath "$INSTDIR"
;  SetOverwrite ifnewer
;SectionEnd

;Section "JDK" SEC01
;  File "Prerequisites\jdk-1_5_0_15-windows-i586-p.exe"
;  ExecWait "$INSTDIR\jdk-1_5_0_15-windows-i586-p.exe"
;SectionEnd

;System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("name", "value").r0'
;StrCmp $0 0 error
; ExecWait ProgThatReadsEnv.exe
;  Goto done
;error:
;  MessageBox MB_OK "Can't set environment variable"
;done:

;Section "Tomcat" SEC02
;  File "Prerequisites\apache-tomcat-6.0.16.exe"
;  ExecWait "$INSTDIR\apache-tomcat-6.0.16.exe"
;SectionEnd

Section "Data Submission Tool" SEC03
    File "Prerequisites\DataSubmissionToolFinal.war"
    CopyFiles `$INSTDIR\DataSubmissionToolFinal.war` `c:\DataSubmissionToolFinal.war`
    StrCpy $0 "$INSTDIR\DataSubmissionToolFinal.war" ;Path of copy file from
    StrCpy $1 "c:\DataSubmissionToolFinal.war"   ;Path of copy file to
    StrCpy $2 1 ; only 0 or 1, set 0 to overwrite file if it already exists
    System::Call 'kernel32::CopyFile(t r0, t r1, b r2) l'
    Pop $0 ; pops a bool.  if overwrite is off and there is a file then error will be 1
SectionEnd

There are no script errors but war file is not getting copied to c drive . How to do it? Also is it possible to identify path to JDK and Tomcat installation using NSIS ?

Sorry if the question is too obvious, I am quite new to NSIS..

© Stack Overflow or respective owner

Related posts about nsis

Related posts about copy-file