杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1923|回复: 0

NSIS 使用记录

[复制链接]
发表于 2016-9-2 17:00:34 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

  2. ; 安装程序初始定义常量
  3. !define PRODUCT_NAME ""
  4. !define PRODUCT_VERSION "1.0"
  5. !define PRODUCT_PUBLISHER " Inc."
  6. !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
  7. !define PRODUCT_UNINST_ROOT_KEY "HKLM"

  8. SetCompressor lzma

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

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

  15. ; 语言选择窗口常量设置
  16. !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
  17. !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
  18. !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"

  19. ; 欢迎页面
  20. !insertmacro MUI_PAGE_WELCOME
  21. ; 许可协议页面
  22. ;!insertmacro MUI_PAGE_LICENSE "Licence.txt"
  23. ; 安装过程页面
  24. !insertmacro MUI_PAGE_INSTFILES
  25. ; 安装完成页面
  26. !define MUI_FINISHPAGE_RUN "$INSTDIR\WPF.exe"
  27. !insertmacro MUI_PAGE_FINISH

  28. ; 安装卸载过程页面
  29. !insertmacro MUI_UNPAGE_INSTFILES

  30. ; 安装界面包含的语言设置
  31. !insertmacro MUI_LANGUAGE "English"
  32. !insertmacro MUI_LANGUAGE "SimpChinese"

  33. ; 安装预释放文件
  34. !insertmacro MUI_RESERVEFILE_LANGDLL
  35. !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
  36. ; ------ MUI 现代界面定义结束 ------

  37. Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
  38. OutFile "Lane.exe"
  39. InstallDir "$PROGRAMFILES\Lane"
  40. ShowInstDetails show
  41. ShowUnInstDetails show
  42. BrandingText " "

  43. Section "MainSection" SEC01
  44.   SetOutPath "$INSTDIR"
  45.   SetOverwrite ifnewer
  46.   File /r "Release\*.*"
  47.   SetOutPath "$INSTDIR\configs"
  48.      ${If} $LANGUAGE == '2052'
  49.       File "configs\zh-CN\app-config.xml"
  50.     ${Else}
  51.       File "configs\en-US\app-config.xml"
  52.   ${EndIf}

  53.   CreateDirectory "$SMPROGRAMS\Lane" /*所有程序文件夹*/
  54.   CreateShortCut "$SMPROGRAMS\Lane\Lane.lnk" "$INSTDIR\WPF.exe" /*所有程序--快捷方式*/
  55.   CreateShortCut "$DESKTOP\Lane.lnk" "$INSTDIR\WPF.exe" /*桌面--快捷方式*/
  56.   CreateShortCut "$SMSTARTUP\Lane.lnk" "$INSTDIR\WPF.exe" /*自启动--快捷方式*/
  57.   Call GetNetFrameworkVersion
  58.     Pop $R1
  59.   ${If} $R1 < '2.0.50727'
  60.   SetDetailsPrint textonly
  61.   DetailPrint "正在安装 .NET Framework 2.0 SP2..."
  62.   SetDetailsPrint listonly

  63.   SetOutPath "$INSTDIR"
  64.   SetOverwrite on
  65.   File "Framwork2.0\dotnetfx.exe"
  66.   ExecWait '"$INSTDIR\dotnetfx.exe"'
  67.   Delete "$INSTDIR\dotnetfx.exe"
  68.   ${ElseIf} $R1 < '3.0'
  69.   File "Framwork2.0\dotnetfx.exe"
  70.   ExecWait '"$INSTDIR\dotnetfx.exe"'
  71.   Delete "$INSTDIR\dotnetfx.exe"
  72.   ${ElseIf} $R1 < '3.5'
  73.   File "Framwork2.0\dotnetfx.exe"
  74.   ExecWait '"$INSTDIR\dotnetfx.exe"'
  75.   Delete "$INSTDIR\dotnetfx.exe"
  76.   ${ElseIf} $R1 < '4.0'
  77.   File "Framwork2.0\dotnetfx.exe"
  78.   ExecWait '"$INSTDIR\dotnetfx.exe"'
  79.   Delete "$INSTDIR\dotnetfx.exe"
  80.   ${ElseIf} $R1 < '4.5'
  81.   File "Framwork2.0\dotnetfx.exe"
  82.   ExecWait '"$INSTDIR\dotnetfx.exe"'
  83.   Delete "$INSTDIR\dotnetfx.exe"
  84.   ${EndIf}
  85. SectionEnd

  86. Section -AdditionalIcons
  87.   CreateShortCut "$SMPROGRAMS\Lane\Uninstall.lnk" "$INSTDIR\uninst.exe"
  88. SectionEnd

  89. Section -Post
  90.   WriteUninstaller "$INSTDIR\uninst.exe"
  91.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  92.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  93.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  94.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
  95. SectionEnd

  96. #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#

  97. Function GetNetFrameworkVersion
  98.     ;获取.Net Framework版本,支持
  99.     Push $1
  100.     Push $0

  101.     ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Install"
  102.     ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Version"
  103.     StrCmp $0 1 KnowNetFrameworkVersion +1

  104.     ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client" "Install"
  105.     ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client" "Version"
  106.     StrCmp $0 1 KnowNetFrameworkVersion +1

  107.     ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Install"
  108.     ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Version"
  109.     StrCmp $0 1 KnowNetFrameworkVersion +1

  110.     ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess"
  111.     ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version"
  112.     StrCmp $0 1 KnowNetFrameworkVersion +1

  113.     ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"
  114.     ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version"
  115.     StrCmp $1 "" +1 +2
  116.     StrCpy $1 "2.0.50727.832"
  117.     StrCmp $0 1 KnowNetFrameworkVersion +1

  118.     ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Install"
  119.     ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Version"
  120.     StrCmp $1 "" +1 +2
  121.     StrCpy $1 "1.1.4322.573"
  122.     StrCmp $0 1 KnowNetFrameworkVersion +1

  123.     ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Install"
  124.     ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Version"
  125.     StrCmp $1 "" +1 +2
  126.     StrCpy $1 "1.0.3705.0"
  127.     StrCmp $0 1 KnowNetFrameworkVersion +1

  128.     StrCpy $1 "not .NetFramework"
  129.     KnowNetFrameworkVersion:
  130.     Pop $0
  131.     Exch $1
  132. FunctionEnd

  133. Function .onInit
  134.   !insertmacro MUI_LANGDLL_DISPLAY

  135. FunctionEnd

  136. /******************************
  137. *  以下是安装程序的卸载部分  *
  138. ******************************/

  139. Section Uninstall
  140.   Delete "$INSTDIR\uninst.exe"

  141.   Delete "$SMPROGRAMS\Lane\Uninstall.lnk"
  142.   Delete "$DESKTOP\Lane.lnk"
  143.   Delete "$SMPROGRAMS\Lane\Lane.lnk"
  144.   Delete "$SMSTARTUP\Lane.lnk"
  145.   RMDir "$SMPROGRAMS\Lane"
  146.   RMDir /r "$INSTDIR\zh-Hant"
  147.   RMDir /r "$INSTDIR\zh-Hans"
  148.   RMDir /r "$INSTDIR\Logs"
  149.   RMDir /r "$INSTDIR\ko"
  150.   RMDir /r "$INSTDIR\ja"
  151.   RMDir /r "$INSTDIR\it"
  152.   RMDir /r "$INSTDIR\fr"
  153.   RMDir /r "$INSTDIR\es"
  154.   RMDir /r "$INSTDIR\en"
  155.   RMDir /r "$INSTDIR\de"
  156.   RMDir /r "$INSTDIR\configs"
  157.   RMDir /r "$INSTDIR"
  158.   RMDir "$INSTDIR"

  159.   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  160.   SetAutoClose true
  161. SectionEnd

  162. #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#

  163. Function un.onInit
  164. !insertmacro MUI_UNGETLANGUAGE
  165.   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
  166.   Abort
  167. FunctionEnd

  168. Function un.onUninstSuccess
  169.   HideWindow
  170.   MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
  171. FunctionEnd
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 15:33 , Processed in 0.111754 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表