杉宫竹苑工作室

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

安装过程中如何取消安装

[复制链接]
发表于 2017-2-23 21:33:07 | 显示全部楼层 |阅读模式

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

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

x
  1. !include "MUI2.nsh"
  2. !include "LogicLib.nsh"

  3. outfile "test.exe"
  4. ShowInstDetails show
  5. Caption  "取消安装测试"
  6. !define MUI_ABORTWARNING_TEXT "你确定终止安装?"

  7. Var CompletedText
  8. CompletedText $CompletedText

  9. !insertmacro MUI_PAGE_WELCOME

  10. !define MUI_FINISHPAGE_NOAUTOCLOSE
  11. !define MUI_PAGE_CUSTOMFUNCTION_PRE InstFilesPre
  12. !define MUI_PAGE_CUSTOMFUNCTION_SHOW InstFilesShow
  13. !define MUI_PAGE_CUSTOMFUNCTION_LEAVE InstFilesLeave
  14. Var MUI_HeaderText
  15. Var MUI_HeaderSubText
  16. !define MUI_INSTFILESPAGE_FINISHHEADER_TEXT "$MUI_HeaderText"
  17. !define MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT "$MUI_HeaderSubText"
  18. !insertmacro MUI_PAGE_INSTFILES

  19. !insertmacro MUI_PAGE_WELCOME
  20. !insertmacro MUI_PAGE_FINISH

  21. Var CurrentPage
  22. Var UserIsMakingAbortDecision
  23. Var UserAborted
  24. Var SectionAborted

  25. Function PauseIfUserIsMakingAbortDecision
  26.   ${DoWhile} $UserIsMakingAbortDecision == "yes"
  27.     Sleep 500
  28.   ${Loop}
  29. FunctionEnd
  30. !define PauseIfUserIsMakingAbortDecision `Call PauseIfUserIsMakingAbortDecision`

  31. !macro CheckUserAborted
  32.   ${PauseIfUserIsMakingAbortDecision}
  33.   ${If} $UserAborted == "yes"
  34.     goto _userabort_aborted
  35.   ${EndIf}
  36. !macroend
  37. !define CheckUserAborted `!insertmacro CheckUserAborted`

  38. !macro EndUserAborted
  39.   ${CheckUserAborted}
  40.   goto _useraborted_end
  41.   _userabort_aborted:
  42.     ${If} $SectionAborted == ""
  43.       StrCpy $SectionAborted "${__SECTION__}"
  44.       DetailPrint "${__SECTION__} 安装被中断"
  45.     ${ElseIf} $SectionAborted != "${__SECTION__}"
  46.       DetailPrint "  ${__SECTION__} 安装跳过。"
  47.     ${EndIf}

  48.   _useraborted_end:
  49. !macroend
  50. !define EndUserAborted `!insertmacro EndUserAborted`

  51. Function InstFilesPre
  52.   StrCpy $CurrentPage "InstFiles"
  53.   StrCpy $UserAborted "no"
  54. FunctionEnd

  55. Function InstFilesShow
  56.   GetDlgItem $0 $HWNDPARENT 2
  57.   EnableWindow $0 1
  58. FunctionEnd

  59. Section "Part One"
  60.   DetailPrint "安装 ${__SECTION__} A"
  61.   Sleep 1000
  62.   ${CheckUserAborted}
  63.   DetailPrint "安装 ${__SECTION__} B"
  64.   Sleep 1000
  65.   ${CheckUserAborted}
  66.   DetailPrint "安装 ${__SECTION__} C"
  67.   Sleep 1000
  68.   ${EndUserAborted}
  69. SectionEnd

  70. Section "Part Two"
  71.   ${CheckUserAborted}
  72.   DetailPrint "安装 ${__SECTION__} D"
  73.   Sleep 1000
  74.   ${EndUserAborted}
  75. SectionEnd

  76. Section -"Post"
  77.   ${If} $UserAborted == "yes"
  78.     StrCpy $CompletedText "安装已中止。"
  79.     StrCpy $MUI_HeaderText "安装失败"
  80.     StrCpy $MUI_HeaderSubText "安装程序中止。"
  81.   ${Else}
  82.     StrCpy $CompletedText "已完成"
  83.     StrCpy $MUI_HeaderText "安装完成"
  84.     StrCpy $MUI_HeaderSubText "安装成功完成。"
  85.   ${EndIf}
  86. SectionEnd

  87. Function InstFilesLeave
  88.   StrCpy $CurrentPage ""
  89. FunctionEnd

  90. !define MUI_CUSTOMFUNCTION_ABORT onUserAbort
  91. Function onUserAbort
  92.   StrCpy $UserIsMakingAbortDecision "yes"
  93.   ${If} ${Cmd} `MessageBox MB_YESNO|MB_DEFBUTTON2 "${MUI_ABORTWARNING_TEXT}" IDYES`
  94.     ${If} $CurrentPage == "InstFiles"
  95.       StrCpy $UserAborted "yes"
  96.       MessageBox MB_OK "安装期间被终止。"
  97.       StrCpy $UserIsMakingAbortDecision "no"
  98.       Abort
  99.     ${Else}
  100.       MessageBox MB_OK "其它安装界面终止"
  101.       StrCpy $UserIsMakingAbortDecision "no"
  102.     ${EndIf}
  103.   ${Else}
  104.     StrCpy $UserIsMakingAbortDecision "no"
  105.     Abort
  106.   ${EndIf}
  107. FunctionEnd

  108. !insertmacro MUI_LANGUAGE "SimpChinese"
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 13:49 , Processed in 0.116009 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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