3
回答
NSIS如何设置文件的写入方式
百度AI开发者大赛带你边学边开发,赢100万奖金,加群:418589053   

使用NSIS如何设置文件的写入方式,因为用NSIS制作的是程序的升级包,需要将新的文件如:JSP页面。用安装包中的新文件替换掉旧文件。现在的问题是不能替换文件,新页面不会替换掉旧文件

举报
Chaos_heart
发帖于6年前 3回/1K+阅
共有3个答案 最后回答: 6年前
; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME "杜曲升级包"
!define PRODUCT_VERSION "1.0"

SetCompressor lzma

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"

; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH

; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"

; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "D:\ESCSoftware"
!define SerMysql  "ESCMySQL"
!define SerTomcat "ESCTomcat"
ShowInstDetails show

Section "MainSection" SEC01
  Call ServiceStop
  Call DeleteWork
  SetOutPath "$INSTDIR"
  SetOverwrite ifnewer
  File /r "ESCSoftware\*.*"
  Call ServiceStart
SectionEnd

Section -Post
SectionEnd

Function ServiceStart
    #启动服务
    ExecWait "net start ${SerTomcat}" $0
    Sleep 1000
    DetailPrint "$0"
    ExecWait "net start ${SerMysql}" $0
    Sleep 1000
    DetailPrint "$0"
FunctionEnd

Function ServiceStop
    #停止服务
    ExecWait "net stop ${SerTomcat}" $0
    Sleep 1000
    DetailPrint "$0"
    ExecWait "net stop ${SerMysql}" $0
    Sleep 1000
    DetailPrint "$0"
FunctionEnd

Function DeleteWork
    #删除缓存
    RMDir /r "D:\ESCSoftware\tomcat\work\Standalone\localhost\_"
FunctionEnd

为什么不使用批处理来完成呢?看看maven的思想就行了,使用Python也是不错的选择。
--- 共有 1 条评论 ---
Chaos_heart因为所有的东西目前都是用NSIS打包安装。另外那个我以为会了 6年前 回复
顶部