代码之家  ›  专栏  ›  技术社区  ›  Xinus

如何使用NSIS复制文件?

  •  2
  • Xinus  · 技术社区  · 15 年前

    !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
    

    没有脚本错误,但war文件没有复制到 c

    抱歉,如果问题太明显,我对NSIS还很陌生。。

    1 回复  |  直到 14 年前
        1
  •  5
  •   YOU    15 年前

    尝试

    File /oname=c:\DataSubmissionToolFinal.war DataSubmissionToolFinal.war