当前位置:   article > 正文

NSIS 自定义安装部署实例_nsis getroot

nsis getroot


;安装目录
Var LoadFileLabrary
#自定义页面中的变量
;var txt_LicensePage
;界面上半部分的图片
Var TopImage
;界面的背景图片
Var BGImage
Var ImageHandle
;界面上立即安装的按钮
Var Btn_Install
;Var Bool_Install ;定义的一个Bool值,用于是否显示
;界面关闭按钮
Var Btn_Close


#安装路径的变量
Var Btn_LoadPath
;创建checkBox
Var Ck_AgreeLicense ;界面上同意协议check框
Var Bool_AgreeLicense ;界面上同意协议check框的bool判定
Var Lbl_AgreeLicense ;界面上同意协议lbl文字


;正在安装的界面
#正在安装
;进度条变量
Var PB_ProgressBar
;正在安装的变量
var Lbl_Sumary
;网页控件
Var WebImg 
;背景图片
Var BGInstallImage
Var Btn_LoadingPage_Close ;关闭安装界面
Var Lbl_ProgressPercent   ;1%
Var ProgressPercent ;进度条中间值
Var txt_ImgPage ;动态图片显示在txt框中


#更改目录的界面
;文本框
Var Txt_Browser
;按钮
Var Btn_Browser
;返回前一页的按钮
Var Btn_BackPath
Var Btn_PathPage_Close ;关闭按钮


#安装完成的界面
Var Bg_FinishImage
Var Btn_Finish ;完成的按钮
Var Btn_FinishPage_Close ;关闭界面的按钮
Var Lbl_DesktopShortCut  ;桌面的快捷方式文本
Var Ck_DesktopShortCut   ;桌面的快捷方式checkbox
Var Lbl_taskbarpin       ;任务栏的快捷方式文本
Var Ck_taskbarpin        ;任务栏的快捷方式checkbox
Var Bool_DesktopShortCut ;桌面的快捷方式的bool值判定
Var Bool_taskbarpin      ;任务栏的快捷方式的bool值判定




Var J3
Var PRODUCT_NAME
Var PRODUCT_NAMEEXE
Var PRODUCT_INSTALL_KEY
Var PRODUCT_UNINST_KEY
Var PRODUCT_VERSION_NAME
Var PRODUCT_VERSION_NO
Var PRODUCT_OUTFILE_MAIN7z








; 该脚本使用 HM VNISEdit 脚本编辑器向导产生
; 安装程序初始定义常量
!define PRODUCT_NAME "pkpm"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "My company, Inc."
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_INSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Install\${PRODUCT_NAME}"


!define PRODUCT_UNINST_ROOT_KEY "HKLM"




SetCompressor lzma
;BrandingText "${EM_BrandingText}"
SetCompress force
XPStyle on


; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------


!include "MUI.nsh"
!include "MUI2.nsh"
!include "WinCore.nsh"
;引用文件函数头文件
!include "FileFunc.nsh"
!include "nsWindows.nsh"
!include "LoadRTF.nsh"
!include "WinMessages.nsh"
;循环语句需要的头文件操作
!include "LogicLib.nsh"


; MUI 预定义常量
!define MUI_ABORTWARNING
;安装图标的路径名字
!define MUI_ICON "images\fav.ico"
;卸载图标的路径名字
!define MUI_UNICON "images\fav.ico"


;自定义初始化
!define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit
;自定义欢迎页面
Page custom WelcomePage
;自定义修改安装路径的页面
Page custom PathPage
;自定义安装进度页面
Page custom LoadingPage
;自定义安装完成页面
Page custom FinishPage




; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
;许可协议页面
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "aa.txt"
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH






; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------


Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "pkpm.exe"
;InstallDir "$PROGRAMFILES\pkpm"
;InstallDir "$INSTDIR\pkpm"
ShowInstDetails show
ShowUnInstDetails show


!define /math PBM_SETRANGE32 ${WM_USER} + 6 #定义nsis未包含的进度条相关常量
#编写:水晶石
InstallDir  "C:\pkpm"
!define PRODUCT_OUTFILE_MAIN "Main.7z"   #对应主程序压缩包名称
/*
该属性让安装程序去检测一注册表里的一个字串,
如果该字串可用那么把它用来作为安装目录。
如果预置了该属性,当指定的注册表键可用时它会越过 InstallDir 指定的字串,
否则使用默认的 InstallDir 指定值。查询注册表时,该命令将自动截去引号
*/
;!define PRODUCT_INSTALL_KEY "SOFTWARE\PKPM\Electron"
;InstallDirRegKey HKLM Software\NSIS "" 根键 子键 键名
;InstallDirRegKey HKLM "$PRODUCT_INSTALL_KEY" "C:\pkpm"


Section MainSetup
SectionEnd


#检测程序是否正在运行
Function IsProgramRunning
    FindProcDLL::FindProc "Electron.exe"
    Pop $R0
    IntCmp $R0 1 0 no_run
    MessageBox MB_ICONSTOP "安装程序检测到 Electron.exe 正在运行,请退出程序后重试"
    Quit
    no_run:
FunctionEnd


#检查程序的版本号
Function CompareVersion
ReadRegStr $0 HKLM ${PRODUCT_INSTALL_KEY} "Version"   ;PRODUCT_VERSION      ;用户变量(输出) 根键 子键 项
${IF} $0 != ""
 IntCmp ${PRODUCT_VERSION} $0 0 Old New
  MessageBox MB_YESNO  "安装程序检测到 $PRODUCT_NAME 已经安装,是否覆盖安装" IDYES Y IDNO N
N:   
Quit
 Old:
   MessageBox MB_ICONSTOP "安装程序检测到 $PRODUCT_NAME 已经安装了更新版本"
   Quit
 New:
   MessageBox MB_ICONSTOP "安装程序检测到 $PRODUCT_NAME 已经安装了旧版本,继续更新安装"
${ENDIF}
Y:
FunctionEnd


Function DefineReadINI
  SetOutPath $TEMP
SetOverwrite on
  File "setup.ini"
  ReadINIStr $PRODUCT_NAME $TEMP\setup.ini SETUP_define PRODUCT_NAME
  ReadINIStr $PRODUCT_NAMEEXE $TEMP\setup.ini SETUP_define PRODUCT_NAMEEXE
  ReadINIStr $PRODUCT_INSTALL_KEY $TEMP\setup.ini SETUP_define PRODUCT_INSTALL_KEY
  ReadINIStr $PRODUCT_UNINST_KEY $TEMP\setup.ini SETUP_define PRODUCT_UNINST_KEY
  ReadINIStr $PRODUCT_VERSION_NAME $TEMP\setup.ini SETUP_define PRODUCT_VERSION_NAME
  ReadINIStr $PRODUCT_VERSION_NO $TEMP\setup.ini SETUP_define PRODUCT_VERSION_NO
  ReadINIStr $PRODUCT_OUTFILE_MAIN7z $TEMP\setup.ini SETUP_define PRODUCT_OUTFILE_MAIN7z
FunctionEnd


;初始化必须要调用的组件
Function .onInit
InitPluginsDir
Call IsProgramRunning   #检测程序是否正在运行
  Call CompareVersion     #检查程序的版本号

;显示动态的图片
    File `/oname=$PLUGINSDIR\index.html` `images\index.html`
File `/oname=$PLUGINSDIR\loading_pic1.bmp` `images\loading_pic1.bmp`
    File `/oname=$PLUGINSDIR\loading_pic2.bmp` `images\loading_pic2.bmp`
    File `/oname=$PLUGINSDIR\loading_pic3.bmp` `images\loading_pic3.bmp`
    File `/oname=$PLUGINSDIR\loading_pic4.bmp` `images\loading_pic4.bmp`
File `/oname=$PLUGINSDIR\license.rtf` `license\license.rtf`
File `/oname=$PLUGINSDIR\License.html` `images\License.html`
;背景图片
File `/ONAME=$PLUGINSDIR\bg.bmp` `images\bg.bmp`
    ;顶部图片
File `/ONAME=$PLUGINSDIR\welcome.bmp` `images\welcome.bmp`
File `/ONAME=$PLUGINSDIR\a.png` `images\a.png`
;关闭按钮
File `/oname=$PLUGINSDIR\btn_close.bmp` `images\btn_close.bmp`
;立即安装的图片
File `/oname=$PLUGINSDIR\btn_install.bmp` `images\btn_install.bmp`
;退出的背景图片
File `/ONAME=$PLUGINSDIR\quit.bmp` `images\quit.bmp`
    ;改变路径的按钮图片
    File `/oname=$PLUGINSDIR\btn_agreement1.bmp` `images\btn_agreement1.bmp`
    File `/oname=$PLUGINSDIR\btn_agreement2.bmp` `images\btn_agreement2.bmp`
    File `/oname=$PLUGINSDIR\checkbox1.bmp` `images\checkbox1.bmp`
    File `/oname=
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号