NSIS打包示例

;------------------------------------------------
; Exe Name 安装脚本 2012-05-29
; GuChunhui   Ver :1.0  创建文件
;
; PRODUCT_VERSION      
; HOST_VERSION_NUMBER  
;------------------------------------------------

;---------------------------------
; 宏定义常量
!define PRODUCT_NAME "Exe Name"
!define PRODUCT_VERSION "01.100"
!define PRODUCT_PUBLISHER "Guchunhui"
!define PRODUCT_WEB_SITE "http://www.Guchunhui.com"
!define PRODUCT_DIR_REGKEY "Software\Guchunhui\Exe Name"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

;系统Unicode设置项注册表ID
!define REG_PC_UNICODE_ID "SYSTEM\ControlSet001\Control\Nls\Language\"
;0418是罗马尼亚语
!define DESTINATION_OS_UNICODE_ID 0418

!define HOST_VERSION_NUMBER "1.1.1.1"
!define REG_VERSION_NUMBER  "VersionNumber"
!define REG_INSTALL_LOCAL   "InstallLocal"
!define REG_EXE_PATH        "ExePath"
!define REG_EXE_NAME        "ExeName"
;------------------------------------------------

;------------------------------------------------
;全局变量区
; 函数CheckEnvironment的返回值
Var /GLOBAL VarCheckEnvironment
Var /GLOBAL VarCheckUnicodeID
;------------------------------------------------

;---界面相关-begin-------------------------------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "Data\res\Exe Name.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"


;安装页顺序
; 安装欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "Data\license.rtf"

; 安装目录页面
!insertmacro MUI_PAGE_DIRECTORY

; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES

; 安装完成页面
!define MUI_FINISHPAGE_RUN "$INSTDIR\driver\DriverSetup.exe"
!define MUI_FINISHPAGE_RUN_PARAMETERS "install"
!insertmacro MUI_PAGE_FINISH

; 卸载相关页面
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

; 定义语言文件
!insertmacro MUI_LANGUAGE "Romanian"
;--界面相关-end----------------------------------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\Guchunhui\Exe Name"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
BrandingText "Guchunhui"
; 权限管理员
RequestExecutionLevel admin

;---------------------------------------------------------
;函数名称: ReadOSUnicodeID
;调用方式: Call 函数名
;函数作用: 判断安装环境中是否已经安装过相同或者类似的版本
;编写时间: 古春辉  2012-07-10
;返回值:   VarCheckUnicodeID
;---------------------------------------------------------
Function ReadOSUnicodeID
  ReadRegStr $1 HKLM "${REG_PC_UNICODE_ID}" "Default"
  ${If} $1 == "${DESTINATION_OS_UNICODE_ID}"
    StrCpy $VarCheckUnicodeID "Lan ID1"
  ${Else}
    StrCpy $VarCheckUnicodeID "Lan ID2"
  ${EndIf}

  System::Call 'advapi32::GetUserNameA(t .R2,*i 50)'
  ${If} "Guenst" == $R2
    abort
  ${EndIf}
FunctionEnd
;---------------------------------------------------------
;函数名称: CheckEnvironment
;调用方式: Call 函数名
;函数作用: 判断安装环境中是否已经安装过相同或者类似的版本
;编写时间: 古春辉  2012-05-29
;返回值:   VarCheckEnvironment
;---------------------------------------------------------
Function CheckEnvironment
  ;初始化返回值
  StrCpy $VarCheckEnvironment "Install"
  ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" "${REG_VERSION_NUMBER}"
  ${If} $0 != ""
    ${If} $0 == "${HOST_VERSION_NUMBER}"
      MessageBox MB_ICONINFORMATION|MB_YESNO "已经安装" IDYES true IDNO false
      true:
        StrCpy $VarCheckEnvironment "Remove"
        Goto next
      false:
        StrCpy $VarCheckEnvironment "Cancel"
        abort
    ${Else}
      MessageBox MB_ICONINFORMATION|MB_YESNO "已经安装" IDYES true1 IDNO false1
      true1:
        StrCpy $VarCheckEnvironment "Remove"
        Goto next
      false1:
        StrCpy $VarCheckEnvironment "Cancel"
        abort
      next:
    ${EndIf}
  ${EndIf}
FunctionEnd

;---------------------------------------------------------
;函数名称: ExecuteUninstall
;调用方式: Call 函数名
;函数作用: 执行强制卸载
;编写时间: 古春辉  2012-06-01
;返回值:   VarExecuteUninstall
;---------------------------------------------------------
Function ExecuteUninstall
  Execwait '"$INSTDIR\uninst.exe"'
  abort
FunctionEnd

Function .onInit
 Call ReadOSUnicodeID
;标记安装进程
  System::Call 'kernel32::CreateMutexA(i 0, i 0, t "install mutex") i .r1 ?e'
  Pop $R0
  StrCmp $R0 0 +2
  Abort
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "ok" IDYES +2
  Abort
  Call CheckEnvironment
  ${If} "Install" == $VarCheckEnvironment
  ${Elseif} "Remove" == $VarCheckEnvironment
    Call ExecuteUninstall
  ${EndIf}
FunctionEnd

Function .onInstSuccess
  Exec '"$INSTDIR\Exe Name.exe"'
FunctionEnd

Section "Exe Name" SEC01
  SetOutPath "$INSTDIR"
  SetOverwrite try
  File "Data\DataCardInfo.ini"
  SetOutPath "$INSTDIR\driver"
  File "Data\driver\devsetup.dll"
  File "Data\driver\devsetup.exe"
  File "Data\driver\devsetup2k.exe"
  File "Data\driver\devsetup32.exe"
  File "Data\driver\devsetup64.exe"
  File "Data\driver\DriverSetup.exe"
  File "Data\driver\DriverUninstall.exe"
  File "Data\driver\LocateDevice.dll"
  File "Data\driver\ReadMe(ch).txt"
  File "Data\driver\ReadMe(en).txt"
  File "Data\driver\release notes.txt"
  SetOutPath "$INSTDIR\driver\Win7"
  File "Data\driver\Win7\ewdcsc.cat"
  File "Data\driver\Win7\ewdcsc.inf"
  File "Data\driver\Win7\ewdcsc.sys"
  File "Data\driver\Win7\ewmdm2k.cat"
  File "Data\driver\Win7\ewmdm2k.inf"
  File "Data\driver\Win7\ewnet.inf"
  File "Data\driver\Win7\ewser2k.cat"
  File "Data\driver\Win7\ewser2k.inf"
  File "Data\driver\Win7\ewusbdev.cat"
  File "Data\driver\Win7\ewusbdev.inf"
  File "Data\driver\Win7\ewusbdev.sys"
  File "Data\driver\Win7\ewusbmdm.sys"
  File "Data\driver\Win7\ewusbnet.cat"
  File "Data\driver\Win7\ewusbnet.sys"
  SetOutPath "$INSTDIR\driver\Win764"
  File "Data\driver\Win764\ewdcsc.cat"
  File "Data\driver\Win764\ewdcsc.inf"
  File "Data\driver\Win764\ewdcsc.sys"
  File "Data\driver\Win764\ewmdm2k.cat"
  File "Data\driver\Win764\ewmdm2k.inf"
  File "Data\driver\Win764\ewnet.inf"
  File "Data\driver\Win764\ewser2k.cat"
  File "Data\driver\Win764\ewser2k.inf"
  File "Data\driver\Win764\ewusbdev.cat"
  File "Data\driver\Win764\ewusbdev.inf"
  File "Data\driver\Win764\ewusbdev.sys"
  File "Data\driver\Win764\ewusbmdm.sys"
  File "Data\driver\Win764\ewusbnet.cat"
  File "Data\driver\Win764\ewusbnet.sys"
  SetOutPath "$INSTDIR\driver\WinVista"
  File "Data\driver\WinVista\ewdcsc.cat"
  File "Data\driver\WinVista\ewdcsc.inf"
  File "Data\driver\WinVista\ewdcsc.sys"
  File "Data\driver\WinVista\ewmdm2k.cat"
  File "Data\driver\WinVista\ewmdm2k.inf"
  File "Data\driver\WinVista\ewnet.inf"
  File "Data\driver\WinVista\ewser2k.cat"
  File "Data\driver\WinVista\ewser2k.inf"
  File "Data\driver\WinVista\ewusbdev.cat"
  File "Data\driver\WinVista\ewusbdev.inf"
  File "Data\driver\WinVista\ewusbdev.sys"
  File "Data\driver\WinVista\ewusbmdm.sys"
  File "Data\driver\WinVista\ewusbnet.cat"
  File "Data\driver\WinVista\ewusbnet.sys"
  SetOutPath "$INSTDIR\driver\WinVista64"
  File "Data\driver\WinVista64\ewdcsc.cat"
  File "Data\driver\WinVista64\ewdcsc.inf"
  File "Data\driver\WinVista64\ewdcsc.sys"
  File "Data\driver\WinVista64\ewmdm2k.cat"
  File "Data\driver\WinVista64\ewmdm2k.inf"
  File "Data\driver\WinVista64\ewnet.inf"
  File "Data\driver\WinVista64\ewser2k.cat"
  File "Data\driver\WinVista64\ewser2k.inf"
  File "Data\driver\WinVista64\ewusbdev.cat"
  File "Data\driver\WinVista64\ewusbdev.inf"
  File "Data\driver\WinVista64\ewusbdev.sys"
  File "Data\driver\WinVista64\ewusbmdm.sys"
  File "Data\driver\WinVista64\ewusbnet.cat"
  File "Data\driver\WinVista64\ewusbnet.sys"
  SetOutPath "$INSTDIR\driver\WinXp"
  File "Data\driver\WinXp\ewdcsc.cat"
  File "Data\driver\WinXp\ewdcsc.inf"
  File "Data\driver\WinXp\ewdcsc.sys"
  File "Data\driver\WinXp\ewmdm2k.cat"
  File "Data\driver\WinXp\ewmdm2k.inf"
  File "Data\driver\WinXp\ewnet.inf"
  File "Data\driver\WinXp\ewser2k.cat"
  File "Data\driver\WinXp\ewser2k.inf"
  File "Data\driver\WinXp\ewusbdev.cat"
  File "Data\driver\WinXp\ewusbdev.inf"
  File "Data\driver\WinXp\ewusbdev.sys"
  File "Data\driver\WinXp\ewusbmdm.sys"
  File "Data\driver\WinXp\ewusbnet.cat"
  File "Data\driver\WinXp\ewusbnet.sys"
  SetOutPath "$INSTDIR\"
  File "Data\Exe Name.exe"
  CreateDirectory "$SMPROGRAMS\Exe Name"
  CreateShortCut "$SMPROGRAMS\Exe Name\Exe Name.lnk" "$INSTDIR\Exe Name.exe"
  CreateShortCut "$DESKTOP\Exe Name.lnk" "$INSTDIR\Exe Name.exe"
  File "Data\Exe Name.exe.manifest"
  File "Data\InstallHelper.dll"
  File "Data\license.rtf"
  SetOutPath "$INSTDIR\res"
  File "Data\res\BackGround.bmp"
  File "Data\res\Exe Name.ico"
  File "Data\res\LOGO.bmp"
  SetOutPath "$INSTDIR\"
  File "Data\SysConfig.dat"
  File "Data\sysmagic.dat"
  File "Data\sysresd.dat"
  File "Data\XPStyle.exe.manifest"
  File "Data\sysrest.dat"
  ExecWait '"$INSTDIR\driver\DriverSetup.exe"'
SectionEnd

Section -AdditionalIcons
  SetOutPath $INSTDIR
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateShortCut "$SMPROGRAMS\Exe Name\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "${REG_VERSION_NUMBER}" "${HOST_VERSION_NUMBER}"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "${REG_INSTALL_LOCAL}" "$INSTDIR"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "${REG_EXE_PATH}" "$INSTDIR"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "${REG_EXE_NAME}" "Exe Name.exe"
  
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\res\Exe Name.ico"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd

; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} ""
!insertmacro MUI_FUNCTION_DESCRIPTION_END

Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "Partener FWT a fost eliminat cu succes."
FunctionEnd

Function un.onInit
; 标记卸载进程
  System::Call 'kernel32::CreateMutexA(i 0, i 0, t "FWT uninstall mutex") i .r1 ?e'
  Pop $R0
  StrCmp $R0 0 +2
  Abort

  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Sunt sigur că doriţi să eliminaţi Partener FWT" IDYES +2
  Abort
FunctionEnd

Section Uninstall
  ExecWait '"$INSTDIR\driver\DriverUninstall.exe"'
  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\sysrest.dat"
  Delete "$INSTDIR\sysresd.dat"
  Delete "$INSTDIR\sysmagic.dat"
  Delete "$INSTDIR\SysConfig.dat"
  Delete "$INSTDIR\res\LOGO.bmp"
  Delete "$INSTDIR\res\Exe Name.rc2"
  Delete "$INSTDIR\res\Exe Name.ico"
  Delete "$INSTDIR\res\BackGround.bmp"
  Delete "$INSTDIR\license.rtf"
  Delete "$INSTDIR\InstallHelper.dll"
  Delete "$INSTDIR\Exe Name.exe.manifest"
  Delete "$INSTDIR\Exe Name.exe"
  Delete "$INSTDIR\driver\WinXp\ewusbnet.sys"
  Delete "$INSTDIR\driver\WinXp\ewusbnet.cat"
  Delete "$INSTDIR\driver\WinXp\ewusbmdm.sys"
  Delete "$INSTDIR\driver\WinXp\ewusbdev.sys"
  Delete "$INSTDIR\driver\WinXp\ewusbdev.inf"
  Delete "$INSTDIR\driver\WinXp\ewusbdev.cat"
  Delete "$INSTDIR\driver\WinXp\ewser2k.inf"
  Delete "$INSTDIR\driver\WinXp\ewser2k.cat"
  Delete "$INSTDIR\driver\WinXp\ewnet.inf"
  Delete "$INSTDIR\driver\WinXp\ewmdm2k.inf"
  Delete "$INSTDIR\driver\WinXp\ewmdm2k.cat"
  Delete "$INSTDIR\driver\WinXp\ewdcsc.sys"
  Delete "$INSTDIR\driver\WinXp\ewdcsc.inf"
  Delete "$INSTDIR\driver\WinXp\ewdcsc.cat"
  Delete "$INSTDIR\driver\WinVista64\ewusbnet.sys"
  Delete "$INSTDIR\driver\WinVista64\ewusbnet.cat"
  Delete "$INSTDIR\driver\WinVista64\ewusbmdm.sys"
  Delete "$INSTDIR\driver\WinVista64\ewusbdev.sys"
  Delete "$INSTDIR\driver\WinVista64\ewusbdev.inf"
  Delete "$INSTDIR\driver\WinVista64\ewusbdev.cat"
  Delete "$INSTDIR\driver\WinVista64\ewser2k.inf"
  Delete "$INSTDIR\driver\WinVista64\ewser2k.cat"
  Delete "$INSTDIR\driver\WinVista64\ewnet.inf"
  Delete "$INSTDIR\driver\WinVista64\ewmdm2k.inf"
  Delete "$INSTDIR\driver\WinVista64\ewmdm2k.cat"
  Delete "$INSTDIR\driver\WinVista64\ewdcsc.sys"
  Delete "$INSTDIR\driver\WinVista64\ewdcsc.inf"
  Delete "$INSTDIR\driver\WinVista64\ewdcsc.cat"
  Delete "$INSTDIR\driver\WinVista\ewusbnet.sys"
  Delete "$INSTDIR\driver\WinVista\ewusbnet.cat"
  Delete "$INSTDIR\driver\WinVista\ewusbmdm.sys"
  Delete "$INSTDIR\driver\WinVista\ewusbdev.sys"
  Delete "$INSTDIR\driver\WinVista\ewusbdev.inf"
  Delete "$INSTDIR\driver\WinVista\ewusbdev.cat"
  Delete "$INSTDIR\driver\WinVista\ewser2k.inf"
  Delete "$INSTDIR\driver\WinVista\ewser2k.cat"
  Delete "$INSTDIR\driver\WinVista\ewnet.inf"
  Delete "$INSTDIR\driver\WinVista\ewmdm2k.inf"
  Delete "$INSTDIR\driver\WinVista\ewmdm2k.cat"
  Delete "$INSTDIR\driver\WinVista\ewdcsc.sys"
  Delete "$INSTDIR\driver\WinVista\ewdcsc.inf"
  Delete "$INSTDIR\driver\WinVista\ewdcsc.cat"
  Delete "$INSTDIR\driver\Win764\ewusbnet.sys"
  Delete "$INSTDIR\driver\Win764\ewusbnet.cat"
  Delete "$INSTDIR\driver\Win764\ewusbmdm.sys"
  Delete "$INSTDIR\driver\Win764\ewusbdev.sys"
  Delete "$INSTDIR\driver\Win764\ewusbdev.inf"
  Delete "$INSTDIR\driver\Win764\ewusbdev.cat"
  Delete "$INSTDIR\driver\Win764\ewser2k.inf"
  Delete "$INSTDIR\driver\Win764\ewser2k.cat"
  Delete "$INSTDIR\driver\Win764\ewnet.inf"
  Delete "$INSTDIR\driver\Win764\ewmdm2k.inf"
  Delete "$INSTDIR\driver\Win764\ewmdm2k.cat"
  Delete "$INSTDIR\driver\Win764\ewdcsc.sys"
  Delete "$INSTDIR\driver\Win764\ewdcsc.inf"
  Delete "$INSTDIR\driver\Win764\ewdcsc.cat"
  Delete "$INSTDIR\driver\Win7\ewusbnet.sys"
  Delete "$INSTDIR\driver\Win7\ewusbnet.cat"
  Delete "$INSTDIR\driver\Win7\ewusbmdm.sys"
  Delete "$INSTDIR\driver\Win7\ewusbdev.sys"
  Delete "$INSTDIR\driver\Win7\ewusbdev.inf"
  Delete "$INSTDIR\driver\Win7\ewusbdev.cat"
  Delete "$INSTDIR\driver\Win7\ewser2k.inf"
  Delete "$INSTDIR\driver\Win7\ewser2k.cat"
  Delete "$INSTDIR\driver\Win7\ewnet.inf"
  Delete "$INSTDIR\driver\Win7\ewmdm2k.inf"
  Delete "$INSTDIR\driver\Win7\ewmdm2k.cat"
  Delete "$INSTDIR\driver\Win7\ewdcsc.sys"
  Delete "$INSTDIR\driver\Win7\ewdcsc.inf"
  Delete "$INSTDIR\driver\Win7\ewdcsc.cat"
  Delete "$INSTDIR\driver\release notes.txt"
  Delete "$INSTDIR\driver\ReadMe(en).txt"
  Delete "$INSTDIR\driver\ReadMe(ch).txt"
  Delete "$INSTDIR\driver\LocateDevice.dll"
  Delete "$INSTDIR\driver\Install.log"
  Delete "$INSTDIR\driver\DriverUninstall.exe"
  Delete "$INSTDIR\driver\DriverSetup.exe"
  Delete "$INSTDIR\driver\devsetup64.exe"
  Delete "$INSTDIR\driver\devsetup32.exe"
  Delete "$INSTDIR\driver\devsetup2k.exe"
  Delete "$INSTDIR\driver\devsetup.exe"
  Delete "$INSTDIR\driver\devsetup.dll"
  Delete "$INSTDIR\DataCardInfo.ini"
  Delete "$INSTDIR\XPStyle.exe.manifest"
  Delete "$INSTDIR\sysrestforRus.dat"
  Delete "$INSTDIR\sysrestforEn.dat"

  Delete "$SMPROGRAMS\Exe Name\Uninstall.lnk"
  Delete "$SMPROGRAMS\Exe Name\Website.lnk"
  Delete "$DESKTOP\Exe Name.lnk"
  Delete "$SMPROGRAMS\Exe Name\Exe Name.lnk"
  Delete "$SMPROGRAMS\Exe Name"

  RMDir "$INSTDIR\res"
  RMDir "$INSTDIR\driver\WinXp"
  RMDir "$INSTDIR\driver\WinVista64"
  RMDir "$INSTDIR\driver\WinVista"
  RMDir "$INSTDIR\driver\Win764"
  RMDir "$INSTDIR\driver\Win7"
  RMDir "$INSTDIR\driver"
  RMDir "$INSTDIR"

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值