杉宫竹苑工作室

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

仿QQ音乐

[复制链接]
发表于 2018-8-12 20:07:44 | 显示全部楼层 |阅读模式

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

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

x

  1. !packhdr temp.dat 'cmd /c Copy /B temp.dat /B +mefcl.taobao.com.rar temp.dat' ;可去除

  2. !addincludedir "include"

  3. Var MSG     ;MSG变量必须定义,而且在最前面,否则WndProc::onCallback不工作,插件中需要这个消息变量,用于记录消息信息
  4. Var Dialog  ;Dialog变量也需要定义,他可能是NSIS默认的对话框变量用于保存窗体中控件的信息

  5. Var BGImage  ;背景大图
  6. Var ImageHandle

  7. Var BGImage1  ;背景大图
  8. Var ImageHandle1

  9. ;Var BGImage2  ;背景大图
  10. ;Var ImageHandle2
  11. ;Var STATE

  12. ;Var WarningForm

  13. Var Txt_Browser
  14. Var btn_Browser

  15. Var btn_in
  16. Var btn_ins
  17. Var btn_back
  18. Var btn_Close
  19. Var btn_instetup
  20. Var btn_instend
  21. Var btn_instend1
  22. Var btn_Licenseback
  23. Var btn_Gracenoteback

  24. Var Txt_Xllicense
  25. Var Rtf_license
  26. Var Txt_Gracenote
  27. Var Rtf_Gracenote
  28. Var Txt_ji

  29. Var Ckbox0
  30. Var Ckbox1
  31. Var Ckbox1_State
  32. Var Ckbox2
  33. Var Ckbox2_State
  34. Var Ckbox3
  35. Var Ckbox3_State
  36. Var ckbox4
  37. Var ckbox5

  38. ;---------------------------全局编译脚本预定义的常量-----------------------------------------------------
  39. !define PRODUCT_NAME "QQMusic"
  40. !define PRODUCT_VERSION "2013.0.0.0"
  41. !define PRODUCT_PUBLISHER "Tencent"
  42. !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
  43. !define PRODUCT_UNINST_ROOT_KEY "HKLM"


  44. ;---------------------------设置软件压缩类型(也可以通过外面编译脚本控制)------------------------------------
  45. SetCompressor lzma
  46. SetCompress force


  47. ;应用程序显示名字
  48. Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
  49. ;应用程序输出文件名
  50. OutFile "${PRODUCT_NAME} ${PRODUCT_VERSION}.exe"
  51. ;安装路径
  52. !define DIR "$PROGRAMFILES\Tencent\QQMusic" ;请在这里定义路径
  53. InstallDir "${DIR}"
  54. InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
  55. ShowInstDetails nevershow ;设置是否显示安装详细信息。
  56. ShowUnInstDetails nevershow ;设置是否显示删除详细信息。

  57. ; MUI 预定义常量
  58. ;!define MUI_ABORTWARNING ;退出提示

  59. ;!define MUI_CUSTOMFUNCTION_ABORT ABORT
  60. ;MUI_CUSTOMFUNCTION_ABORT

  61. ;安装图标的路径名字
  62. !define MUI_ICON "Icon\QQMusic_Setup.ico"
  63. ;卸载图标的路径名字
  64. !define MUI_UNICON "Icon\Uninstall.ico"
  65. ;使用的UI
  66. !define MUI_UI "UI\mod.exe"

  67. ;使用ReserveFile是加快安装包展开速度,具体请看帮助
  68. ReserveFile "images\bg.bmp"
  69. ReserveFile "images\bg2.bmp"
  70. ReserveFile "images\bg3.bmp"
  71. ReserveFile "images\browse.bmp"
  72. ReserveFile "images\close.bmp"
  73. ReserveFile "images\custom.bmp"
  74. ReserveFile "images\empty_bg.bmp"
  75. ReserveFile "images\express.bmp"
  76. ReserveFile "images\finish.bmp"
  77. ReserveFile "images\full_bg.bmp"
  78. ReserveFile "images\onekey.bmp"
  79. ReserveFile "images\strongbtn.bmp"
  80. ReserveFile "images\weakbtn.bmp"
  81. ;轮展数据
  82. ReserveFile "images\Slides.dat"
  83. ReserveFile "images\InstallingBG01.png"
  84. ReserveFile "images\InstallingBG02.png"
  85. ReserveFile "images\InstallingBG03.png"
  86. ReserveFile "images\InstallingBG04.png"
  87. ;DLL
  88. ReserveFile `${NSISDIR}\Plugins\nsDialogs.dll`
  89. ReserveFile `${NSISDIR}\Plugins\nsWindows.dll`
  90. ReserveFile `${NSISDIR}\Plugins\SkinBtn.dll`
  91. ReserveFile `${NSISDIR}\Plugins\SkinProgress.dll`
  92. ReserveFile `${NSISDIR}\Plugins\System.dll`
  93. ReserveFile `${NSISDIR}\Plugins\WndProc.dll`
  94. ReserveFile `${NSISDIR}\Plugins\nsisSlideshow.dll`
  95. ReserveFile `${NSISDIR}\Plugins\FindProcDLL.dll`


  96. ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
  97. !include "MUI.nsh"
  98. !include "WinCore.nsh"
  99. !include "nsWindows.nsh"
  100. !include "LogicLib.nsh"
  101. !include "WinMessages.nsh"
  102. !include "LoadRTF.nsh"

  103. !define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit

  104. ;自定义页面
  105. Page custom Page.1 Page.1leave
  106. ; 许可协议页面
  107. ;!define MUI_LICENSEPAGE_CHECKBOX

  108. ; 安装目录选择页面

  109. ;!insertmacro MUI_PAGE_DIRECTORY
  110. ; 安装过程页面

  111. !define MUI_PAGE_CUSTOMFUNCTION_SHOW InstFilesPageShow
  112. !insertmacro MUI_PAGE_INSTFILES
  113. ; 安装完成页面
  114. Page custom Page.3
  115. ;这个不要删除,否则自动跳转出问题
  116. Page custom Page.4

  117. ; 安装卸载过程页面
  118. !insertmacro MUI_UNPAGE_CONFIRM
  119. !insertmacro MUI_UNPAGE_INSTFILES
  120. !insertmacro MUI_UNPAGE_FINISH

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

  123. VIProductVersion "0.0.0.0"           ;←↓版本啦
  124. VIAddVersionKey /LANG=2052 "ProductName" "${PRODUCT_NAME}"
  125. VIAddVersionKey /LANG=2052 "Comments" "http://www.Tencent.com/" ;请自己修改
  126. VIAddVersionKey /LANG=2052 "CompanyName" "Tencent"
  127. VIAddVersionKey /LANG=2052 "LegalCopyright" "Copyright (c) Tencent"
  128. VIAddVersionKey /LANG=2052 "FileDescription" "${PRODUCT_NAME}"
  129. VIAddVersionKey /LANG=2052 "FileVersion" "${PRODUCT_VERSION}"

  130. ;------------------------------------------------------MUI 现代界面定义以及函数结束------------------------

  131. Function .onInit
  132.     InitPluginsDir ;初始化插件
  133.    
  134.     StrCpy $Ckbox1_State ${BST_CHECKED}
  135.     StrCpy $Ckbox2_State ${BST_CHECKED}
  136.     StrCpy $Ckbox3_State ${BST_CHECKED}
  137.    
  138.     File `/ONAME=$PLUGINSDIR\bg.bmp` `images\bg.bmp` ;第一大背景
  139.     File `/oname=$PLUGINSDIR\bg2.bmp` `images\bg2.bmp` ;第二大背景
  140.     File `/oname=$PLUGINSDIR\bg3.bmp` `images\bg3.bmp` ;完成页背景
  141.    
  142.     File `/oname=$PLUGINSDIR\btn_onekey.bmp` `images\onekey.bmp`  ;快速安装
  143.     File `/oname=$PLUGINSDIR\btn_custom.bmp` `images\custom.bmp`  ;自定义安装
  144.     File `/oname=$PLUGINSDIR\btn_browse.bmp` `images\browse.bmp` ;浏览按钮
  145.     File `/oname=$PLUGINSDIR\btn_strongbtn.bmp` `images\strongbtn.bmp` ;立即安装
  146.     File `/oname=$PLUGINSDIR\btn_finish.bmp` `images\finish.bmp` ;安装完成
  147.     File `/oname=$PLUGINSDIR\btn_weakbtn.bmp` `images\weakbtn.bmp` ;返回
  148.     File `/oname=$PLUGINSDIR\btn_express.bmp` `images\express.bmp` ;立即体验
  149.     File `/oname=$PLUGINSDIR\btn_Close.bmp` `images\Close.bmp` ;关闭
  150.    
  151.                 ;进度条皮肤
  152.           File `/oname=$PLUGINSDIR\Progress.bmp` `images\empty_bg.bmp`
  153.           File `/oname=$PLUGINSDIR\ProgressBar.bmp` `images\full_bg.bmp`
  154.           ;协议
  155.           File `/oname=$PLUGINSDIR\license.rtf` `rtf\license.rtf`
  156.           File `/oname=$PLUGINSDIR\Gracenote.rtf` `rtf\Gracenote.rtf`
  157.          
  158.                 ;初始化
  159.     SkinBtn::Init "$PLUGINSDIR\btn_onekey.bmp"
  160.     SkinBtn::Init "$PLUGINSDIR\btn_custom.bmp"
  161.     SkinBtn::Init "$PLUGINSDIR\btn_browse.bmp"
  162.     SkinBtn::Init "$PLUGINSDIR\btn_strongbtn.bmp"
  163.     SkinBtn::Init "$PLUGINSDIR\btn_finish.bmp"
  164.     SkinBtn::Init "$PLUGINSDIR\btn_weakbtn.bmp"
  165.     SkinBtn::Init "$PLUGINSDIR\btn_express.bmp"
  166.     SkinBtn::Init "$PLUGINSDIR\btn_Close.bmp"
  167.    
  168. FunctionEnd

  169. Function onGUIInit
  170.         ;检查重复运行
  171.   System::Call 'kernel32::CreateMutexA(i 0, i 0, t "QQMusic") i .r1 ?e'
  172.   Pop $R1                                                                                                                                                                                                                                                                                 ;;;;$$安装程序已经运行
  173.   StrCmp $R1 0 +3
  174.   MessageBox MB_OK|MB_ICONINFORMATION|MB_TOPMOST "程序已经在运行。"
  175.   Abort

  176.   ;检测是否正在运行
  177.   RETRY:
  178.   FindProcDLL::FindProc "QQMusic.exe" ;检测的运行进程名称
  179.   StrCmp $R0 1 0 +3
  180.   MessageBox MB_RETRYCANCEL|MB_ICONINFORMATION|MB_TOPMOST '检测到 "${PRODUCT_NAME}" 正在运行,请先关闭后重试,或者点击"取消"退出!' IDRETRY RETRY
  181.         Quit
  182.   
  183.     ;消除边框
  184.     System::Call `user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0`
  185.     ;隐藏一些既有控件
  186.     GetDlgItem $0 $HWNDPARENT 1034
  187.     ShowWindow $0 ${SW_HIDE}
  188.     GetDlgItem $0 $HWNDPARENT 1035
  189.     ShowWindow $0 ${SW_HIDE}
  190.     GetDlgItem $0 $HWNDPARENT 1036
  191.     ShowWindow $0 ${SW_HIDE}
  192.     GetDlgItem $0 $HWNDPARENT 1037
  193.     ShowWindow $0 ${SW_HIDE}
  194.     GetDlgItem $0 $HWNDPARENT 1038
  195.     ShowWindow $0 ${SW_HIDE}
  196.     GetDlgItem $0 $HWNDPARENT 1039
  197.     ShowWindow $0 ${SW_HIDE}
  198.     GetDlgItem $0 $HWNDPARENT 1256
  199.     ShowWindow $0 ${SW_HIDE}
  200.     GetDlgItem $0 $HWNDPARENT 1028
  201.     ShowWindow $0 ${SW_HIDE}

  202.     ${NSW_SetWindowSize} $HWNDPARENT 589 439 ;改变主窗体大小
  203.     System::Call User32::GetDesktopWindow()i.R0

  204.     ;圆角
  205.     System::Alloc 16
  206.           System::Call user32::GetWindowRect(i$HWNDPARENT,isR0)
  207.           System::Call *$R0(i.R1,i.R2,i.R3,i.R4)
  208.           IntOp $R3 $R3 - $R1
  209.           IntOp $R4 $R4 - $R2
  210.           System::Call gdi32::CreateRoundRectRgn(i0,i0,iR3,iR4,i4,i4)i.r0
  211.           System::Call user32::SetWindowRgn(i$HWNDPARENT,ir0,i1)
  212.           System::Free $R0
  213.          
  214. ;    GetDlgItem $R0 $HWNDPARENT 1044
  215. ;    System::Call "user32::MoveWindow(i R0, i 0, i 0, i 374, i 153) i r2"
  216. FunctionEnd

  217. ;处理无边框移动
  218. Function onGUICallback
  219.   ${If} $MSG = ${WM_LBUTTONDOWN}
  220.     SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
  221.   ${EndIf}
  222. FunctionEnd

  223. Function Page.1

  224.     GetDlgItem $0 $HWNDPARENT 1
  225.     ShowWindow $0 ${SW_HIDE}
  226.     GetDlgItem $0 $HWNDPARENT 2
  227.     ShowWindow $0 ${SW_HIDE}
  228.     GetDlgItem $0 $HWNDPARENT 3
  229.     ShowWindow $0 ${SW_HIDE}
  230.     GetDlgItem $0 $HWNDPARENT 1990
  231.     ShowWindow $0 ${SW_HIDE}
  232.     GetDlgItem $0 $HWNDPARENT 1991
  233.     ShowWindow $0 ${SW_HIDE}
  234.     GetDlgItem $0 $HWNDPARENT 1992
  235.     ShowWindow $0 ${SW_HIDE}
  236.    
  237.     nsDialogs::Create 1044
  238.     Pop $0
  239.     ${If} $0 == error
  240.         Abort
  241.     ${EndIf}
  242.     SetCtlColors $0 ""  transparent ;背景设成透明

  243.     ${NSW_SetWindowSize} $0 588 438 ;改变Page大小
  244.    
  245.     ;读取RTF的文本框
  246.                 nsDialogs::CreateControl "RichEdit20A" \
  247.     ${ES_READONLY}|${WS_VISIBLE}|${WS_CHILD}|${WS_TABSTOP}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN} \
  248.                 ${WS_EX_STATICEDGE}  16u 28u 360u 229u ''
  249.     Pop $rtf_License
  250.                 ${LoadRTF} '$PLUGINSDIR\license.rtf' $rtf_License
  251.     ShowWindow $rtf_License ${SW_HIDE}

  252.                 nsDialogs::CreateControl "RichEdit20A" \
  253.     ${ES_READONLY}|${WS_VISIBLE}|${WS_CHILD}|${WS_TABSTOP}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN} \
  254.                 ${WS_EX_STATICEDGE}  16u 28u 360u 229u ''
  255.     Pop $Rtf_Gracenote
  256.                 ${LoadRTF} '$PLUGINSDIR\Gracenote.rtf' $Rtf_Gracenote
  257.     ShowWindow $Rtf_Gracenote ${SW_HIDE}
  258.    
  259.     ;协议确定按钮
  260.     ${NSD_CreateButton} 180u 263u 55 30 "确定"
  261.     Pop $btn_Licenseback
  262.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_weakbtn.bmp $btn_Licenseback
  263.     GetFunctionAddress $3 Licenseback
  264.     SkinBtn::onClick $btn_Licenseback $3
  265.     SetCtlColors $btn_Licenseback 7F7F7F transparent
  266.     ShowWindow $btn_Licenseback ${SW_HIDE}

  267.     ;第三方协议确定按钮
  268.     ${NSD_CreateButton} 310u 263u 55 30 "确定"
  269.     Pop $btn_Gracenoteback
  270.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_weakbtn.bmp $btn_Gracenoteback
  271.     GetFunctionAddress $3 Gracenoteback
  272.     SkinBtn::onClick $btn_Gracenoteback $3
  273.     SetCtlColors $btn_Gracenoteback 7F7F7F transparent
  274.     ShowWindow $btn_Gracenoteback ${SW_HIDE}
  275.    
  276.     ;自定义安装按钮
  277.     ${NSD_CreateButton} 310u 263u 98 17 ""
  278.     Pop $btn_ins
  279.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_custom.bmp $btn_ins
  280.     GetFunctionAddress $3 onClickint
  281.     SkinBtn::onClick $btn_ins $3
  282.    
  283.     ;快速安装
  284.     ${NSD_CreateButton} 126u 204u 252 64 ""
  285.     Pop $btn_in
  286.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_onekey.bmp $btn_in
  287.     GetFunctionAddress $3 onClickins
  288.     SkinBtn::onClick $btn_in $3

  289.     ;最小化按钮
  290. ;    ${NSD_CreateButton} 350u 3u 22 22 ""
  291. ;    Pop $btn_mini
  292. ;    SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $btn_mini
  293. ;    GetFunctionAddress $3 onClickmini
  294. ;    SkinBtn::onClick $btn_mini $3

  295.     ;关闭按钮
  296.     ${NSD_CreateButton} 372u 8u 24 20 ""
  297.     Pop $btn_Close
  298.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_Close.bmp $btn_Close
  299.     GetFunctionAddress $3 ABORT
  300.     SkinBtn::onClick $btn_Close $3

  301.     ;立即安装
  302.     ${NSD_CreateButton} 284u 260u 82 26 "立即安装"
  303.     Pop $btn_instetup
  304.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_strongbtn.bmp $btn_instetup
  305.     GetFunctionAddress $3 onClickins
  306.     SkinBtn::onClick $btn_instetup $3
  307.     SetCtlColors $btn_instetup FFFFFF transparent
  308.     ShowWindow $btn_instetup ${SW_HIDE}

  309.     ;返回
  310.     ${NSD_CreateButton} 344u 260u 56 26 "返回"
  311.     Pop $btn_back
  312.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_weakbtn.bmp $btn_back
  313.     GetFunctionAddress $3 onClickBack
  314.     SkinBtn::onClick $btn_back $3
  315.     SetCtlColors $btn_back 7F7F7F transparent
  316.     ShowWindow $btn_back ${SW_HIDE}
  317.    
  318. #------------------------------------------
  319. #许可协议
  320. #------------------------------------------
  321.     ${NSD_CreateCheckbox} 17u 265u 63u 12u "同意QQ音乐的"
  322.     Pop $Ckbox0
  323.     SetCtlColors $Ckbox0 "" FFFFFF
  324.     ${NSD_Check} $Ckbox0
  325.     ${NSD_OnClick} $Ckbox0 Chklicense
  326.    
  327.     ${NSD_CreateLabel} 130u 267u 10u 12u "及"
  328.     Pop $txt_ji
  329.     SetCtlColors $txt_ji ""  FFFFFF ;前景色,背景设成透明

  330.     ${NSD_CreateLink} 80u 267u 48u 10u "用户许可协议"
  331.     Pop $Txt_Xllicense
  332.     SetCtlColors $Txt_Xllicense 5ba900 FFFFFF
  333.     ${NSD_OnClick} $Txt_Xllicense xllicense
  334.    
  335.     ${NSD_CreateLink} 140u 267u 60u 10u "第三方用户协议"
  336.     Pop $Txt_Gracenote
  337.     SetCtlColors $Txt_Gracenote 5ba900 FFFFFF
  338.     ${NSD_OnClick} $Txt_Gracenote Gracenote
  339.                

  340. #------------------------------------------
  341. #可选项1
  342. #------------------------------------------
  343.     ${NSD_CreateCheckbox} 17u 216u 80u 12u "创建桌面图标"
  344.     Pop $Ckbox1
  345.     SetCtlColors $Ckbox1 ""  FFFFFF ;前景色,背景设成透明
  346.                 ShowWindow $Ckbox1 ${SW_HIDE}
  347.                 ${NSD_Check} $Ckbox1
  348.                
  349. #------------------------------------------
  350. #可选项2
  351. #------------------------------------------
  352.     ${NSD_CreateCheckbox} 130u 216u 80u 12u "添加到快速启动栏"
  353.     Pop $Ckbox2
  354.     SetCtlColors $Ckbox2 ""  FFFFFF ;前景色,背景设成透明
  355.                 ShowWindow $Ckbox2 ${SW_HIDE}
  356.                 ${NSD_Check} $Ckbox2

  357. #------------------------------------------
  358. #可选项3
  359. #------------------------------------------
  360.     ${NSD_CreateCheckbox} 240u 216u 90u 12u "设为默认音乐播放器"
  361.     Pop $Ckbox3
  362.     SetCtlColors $Ckbox3 ""  FFFFFF ;前景色,背景设成透明
  363.     ShowWindow $Ckbox3 ${SW_HIDE}
  364.                 ;${NSD_SetState} $Checkbox1 ${BST_CHECKED}

  365.                 ;创建安装目录输入文本框
  366.           ${NSD_CreateText} 21u 183u 290u 22u "${DIR}"
  367.                 Pop $Txt_Browser
  368.                 SetCtlColors $Txt_Browser ""  FFFFFF ;背景设成透明
  369.                 ;${NSD_AddExStyle} $Txt_Browser ${WS_EX_WINDOWEDGE}
  370.     CreateFont $1 "tahoma" "10" "500"
  371.     SendMessage $Txt_Browser ${WM_SETFONT} $1 1
  372.                 ShowWindow $Txt_Browser ${SW_HIDE}


  373.     ;创建更改路径文件夹按钮
  374.     ${NSD_CreateButton} 312u 273U 76 36  "浏览..."
  375.                 Pop $btn_Browser
  376.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_browse.bmp $btn_Browser
  377.                 GetFunctionAddress $3 onClickSelectPath
  378.     SkinBtn::onClick $btn_Browser $3
  379.     SetCtlColors $btn_Browser 7F7F7F transparent ;前景色,背景设成透明
  380.     ShowWindow $btn_Browser ${SW_HIDE}


  381.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  382.     Pop $BGImage1
  383.     ${NSD_SetImage} $BGImage1 $PLUGINSDIR\bg2.bmp $ImageHandle1
  384.     ShowWindow $BGImage1 ${SW_HIDE}

  385.     ;贴背景大图
  386.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  387.     Pop $BGImage
  388.     ${NSD_SetImage} $BGImage $PLUGINSDIR\bg.bmp $ImageHandle

  389.     GetFunctionAddress $0 onGUICallback
  390.     WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  391.     WndProc::onCallback $BGImage1 $0 ;处理无边框窗体移动

  392.     nsDialogs::Show
  393.     ${NSD_FreeImage} $ImageHandle
  394.     ${NSD_FreeImage} $ImageHandle1
  395. FunctionEnd

  396. Function Page.1leave
  397. ${NSD_GetState} $Ckbox1 $Ckbox1_State
  398. ${NSD_GetState} $Ckbox2 $Ckbox2_State
  399. ${NSD_GetState} $Ckbox3 $Ckbox3_State
  400. FunctionEnd

  401. ;Function InstFilesPagePRO
  402. ;    GetDlgItem $0 $HWNDPARENT 1
  403. ;    ShowWindow $0 ${SW_HIDE}
  404. ;    GetDlgItem $0 $HWNDPARENT 2
  405. ;    ShowWindow $0 ${SW_HIDE}
  406. ;    GetDlgItem $0 $HWNDPARENT 3
  407. ;FunctionEnd

  408. Function  InstFilesPageShow
  409.     FindWindow $R2 "#32770" "" $HWNDPARENT

  410.     ShowWindow $0 ${SW_HIDE}
  411.     GetDlgItem $1 $R2 1027
  412.     ShowWindow $1 ${SW_HIDE}

  413.                 ;存入轮展图片
  414.     File '/oname=$PLUGINSDIR\Slides.dat' 'images\Slides.dat'
  415.     File '/oname=$PLUGINSDIR\InstallingBG01.png' 'images\InstallingBG01.png'
  416.     File '/oname=$PLUGINSDIR\InstallingBG02.png' 'images\InstallingBG02.png'
  417.     File '/oname=$PLUGINSDIR\InstallingBG03.png' 'images\InstallingBG03.png'
  418.     File '/oname=$PLUGINSDIR\InstallingBG04.png' 'images\InstallingBG04.png'
  419.   
  420.     StrCpy $R0 $R2 ;改变页面大小,不然贴图不能全页
  421.     System::Call "user32::MoveWindow(i R0, i 0, i 0, i 588, i 438) i r2"
  422.     GetFunctionAddress $0 onGUICallback
  423.     WndProc::onCallback $R0 $0 ;处理无边框窗体移动
  424.    
  425.     GetDlgItem $R0 $R2 1004  ;设置进度条位置
  426.     System::Call "user32::MoveWindow(i R0, i 30, i 302, i 537, i 12) i r2"

  427.     GetDlgItem $R1 $R2 1006  ;进度条上面的标签
  428.     SetCtlColors $R1 ""  FFFFFF ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠
  429.     System::Call "user32::MoveWindow(i R1, i 30, i 275, i 290, i 12) i r2"

  430.     GetDlgItem $R8 $R2 1016
  431.     ;SetCtlColors $R8 ""  F6F6F6 ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠
  432.     System::Call "user32::MoveWindow(i R8, i 0, i 0, i 588, i 216) i r2"
  433.    
  434.     FindWindow $R2 "#32770" "" $HWNDPARENT  ;获取1995并设置图片
  435.     GetDlgItem $R0 $R2 1995
  436.     System::Call "user32::MoveWindow(i R0, i 0, i 0, i 498, i 373) i r2"
  437.     ${NSD_SetImage} $R0 $PLUGINSDIR\bg2.bmp $ImageHandle

  438.                 ;这里是给进度条贴图
  439.     FindWindow $R2 "#32770" "" $HWNDPARENT
  440.     GetDlgItem $5 $R2 1004
  441.           SkinProgress::Set $5 "$PLUGINSDIR\ProgressBar.bmp" "$PLUGINSDIR\Progress.bmp"

  442. FunctionEnd


  443. Function Page.3
  444.     GetDlgItem $0 $HWNDPARENT 1
  445.     ShowWindow $0 ${SW_HIDE}
  446.     GetDlgItem $0 $HWNDPARENT 2
  447.     ShowWindow $0 ${SW_HIDE}
  448.     GetDlgItem $0 $HWNDPARENT 3
  449.     ShowWindow $0 ${SW_HIDE}


  450.     nsDialogs::Create 1044
  451.     Pop $0
  452.     ${If} $0 == error
  453.         Abort
  454.     ${EndIf}
  455.     SetCtlColors $0 ""  transparent ;背景设成透明

  456.     ${NSW_SetWindowSize} $0 588 438 ;改变Page大小

  457.     ${NSD_CreateCheckbox} 20u 160u 66u 10u "开机自动启动"
  458.     Pop $Ckbox4
  459.     SetCtlColors $Ckbox4 "" FFFFFF
  460.                 ;ShowWindow $Ckbox4 ${SW_HIDE} ;如果不需要可以使用这行隐藏
  461.                 ;${NSD_Check} $Ckbox4 ;默认勾选
  462.    
  463.     ${NSD_CreateCheckbox} 20u 180u 200u 10u "推荐您安装QQ游戏,全球最大在线休闲游戏平台"
  464.                 Pop $ckbox5
  465.                 SetCtlColors $ckbox5 "" FFFFFF
  466.                 ;ShowWindow $ckbox5 ${SW_HIDE} ;如果不需要可以使用这行隐藏
  467.                 ;${NSD_Check} $ckbox5 ;默认勾选
  468.                
  469.     ${NSD_CreateLink} 245u 122u 56u 10u "QQ音乐官网下载"
  470.                 Pop $1
  471.     SetCtlColors $1 5ba900 FFFFFF
  472.     ${NSD_OnClick} $1 onClickmusic


  473.     ;立即体验
  474.     ${NSD_CreateButton} 86u 226u 160 54 ""
  475.     Pop $btn_instend
  476.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_express.bmp $btn_instend
  477.     GetFunctionAddress $3 onClickexpress
  478.     SkinBtn::onClick $btn_instend $3

  479.     ;安装完成
  480.     ${NSD_CreateButton} 200u 226u 160 54 ""
  481.     Pop $btn_instend1
  482.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_finish.bmp $btn_instend1
  483.     GetFunctionAddress $3 onClickend
  484.     SkinBtn::onClick $btn_instend1 $3

  485.     ;贴背景大图
  486.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  487.     Pop $BGImage
  488.     ${NSD_SetImage} $BGImage $PLUGINSDIR\bg3.bmp $ImageHandle

  489.     GetFunctionAddress $0 onGUICallback
  490.     WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  491.     nsDialogs::Show

  492.     ${NSD_FreeImage} $ImageHandle

  493. FunctionEnd


  494. Function Page.4

  495. FunctionEnd

  496. Section MainSetup
  497. DetailPrint "正在安装..."
  498. Sleep 1000
  499. SetDetailsPrint None ;不显示信息
  500. nsisSlideshow::Show /NOUNLOAD /auto=$PLUGINSDIR\Slides.dat
  501. Sleep 500 ;在安装程序里暂停执行 "休眠时间(单位为:ms)" 毫秒。"休眠时间(单位为:ms)" 可以是一个变量, 例如 "$0" 或一个数字,例如 "666"。
  502. SetOutPath $INSTDIR
  503. ;File /r "Thunder Network\*.*"
  504. Sleep 50
  505. Sleep 50
  506. Sleep 50
  507. Sleep 500
  508. Sleep 50
  509. Sleep 50
  510. Sleep 50
  511. Sleep 50
  512. Sleep 50
  513. Sleep 50
  514. Sleep 50
  515. Sleep 50
  516. Sleep 50
  517. Sleep 500
  518. Sleep 50
  519. Sleep 50
  520. Sleep 50
  521. Sleep 50
  522. Sleep 50
  523. Sleep 50
  524. Sleep 50
  525. Sleep 500
  526. Sleep 50
  527. Sleep 50
  528. Sleep 50
  529. Sleep 50
  530. Sleep 50
  531. Sleep 50
  532. Sleep 50
  533. Sleep 500
  534. Sleep 50
  535. Sleep 50
  536. Sleep 50
  537. Sleep 50
  538. Sleep 50
  539. Sleep 50
  540. Sleep 50
  541. Sleep 50
  542. Sleep 50
  543. Sleep 50
  544. /*
  545.     ${If} $Ckbox1_State == 1
  546.     DetailPrint "现在是选中状态,这里可以写代码"
  547.     ${EndIf}
  548. */
  549. MessageBox MB_OK '判断选中项,选中为1,否则0:$\r$\n创建桌面图标:$Ckbox1_State$\r$\n添加到快速启动栏:$Ckbox2_State$\r$\n设为默认音乐播放器:$Ckbox3_State$\r$\n安装目录:$INSTDIR'
  550. nsisSlideshow::Stop
  551. SetAutoClose true
  552. SectionEnd

  553. Section -Post
  554.   WriteUninstaller "$INSTDIR\uninst.exe" ;生成卸载文件
  555.   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\qqmusic.exe"
  556.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
  557.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  558.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\qqmusic.exe"
  559.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  560.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
  561.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "http://www.qqmusic.com" ;这些信息需要自己修改
  562.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "http://mefcl.blog.163.com/" ;这些信息需要自己修改
  563. SectionEnd

  564. #----------------------------------------------
  565. #创建控制面板卸载程序信息
  566. #----------------------------------------------

  567. Section -Post
  568.   ;WriteUninstaller "$INSTDIR\uninst.exe" ;这个是生成卸载程序,对于迅雷,我们可以使用原版的卸载程序,所以不要这个了
  569.   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Program\Thunder.exe"
  570.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  571.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" ;这里建议自己修改.这里是卸载程序的路径和文件名。
  572.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\uninst.exe"      ;显示在你的应用程序名称旁边的图标的路径,文件名和索引。
  573.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  574.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
  575. SectionEnd

  576. Function ABORT
  577. MessageBox MB_ICONQUESTION|MB_YESNO|MB_ICONSTOP '您确定要退出"QQ音乐2013"安装程序?' IDNO CANCEL
  578. SendMessage $hwndparent ${WM_CLOSE} 0 0
  579. CANCEL:
  580. Abort
  581. FunctionEnd

  582. ;处理页面跳转的命令
  583. Function RelGotoPage
  584.   IntCmp $R9 0 0 Move Move
  585.     StrCmp $R9 "X" 0 Move
  586.       StrCpy $R9 "120"
  587.   Move:
  588.   SendMessage $HWNDPARENT "0x408" "$R9" ""
  589. FunctionEnd

  590. Function onClickins

  591.         ${NSD_GetText} $Txt_Browser  $R0  ;获得设置的安装路径

  592.    ;判断目录是否正确
  593.         ClearErrors
  594.         CreateDirectory "$R0"
  595.         IfErrors 0 +3
  596.   MessageBox MB_ICONINFORMATION|MB_OK "'$R0' 安装目录不存在,请重新设置。"
  597.   Return

  598.         StrCpy $INSTDIR  $R0  ;保存安装路径

  599.   StrCpy $R9 1 ;Goto the next page
  600.   Call RelGotoPage
  601.   Abort
  602. FunctionEnd

  603. ;当单击自定义安装后隐藏和显示一部分控件
  604. Function onClickint
  605. ShowWindow $BGImage ${SW_HIDE}
  606. ShowWindow $Ckbox0 ${SW_HIDE}
  607. ShowWindow $Txt_Xllicense ${SW_HIDE}
  608. ShowWindow $Txt_Gracenote ${SW_HIDE}
  609. ShowWindow $Txt_ji ${SW_HIDE}


  610. ShowWindow $btn_in ${SW_HIDE}
  611. ShowWindow $btn_ins ${SW_HIDE}


  612. ShowWindow $BGImage1 ${SW_SHOW}
  613. ShowWindow $btn_instetup ${SW_SHOW}
  614. ShowWindow $btn_back ${SW_SHOW}
  615. ShowWindow $Ckbox1 ${SW_SHOW}
  616. ShowWindow $Ckbox2 ${SW_SHOW}
  617. ShowWindow $Ckbox3 ${SW_SHOW}
  618. ShowWindow $btn_Browser ${SW_SHOW}
  619. ShowWindow $Txt_Browser ${SW_SHOW}

  620. FunctionEnd

  621. ;点击返回时隐藏显示部分控件
  622. Function onClickBack
  623. ShowWindow $BGImage1 ${SW_HIDE}

  624. ShowWindow $BGImage ${SW_SHOW}

  625. ShowWindow $Ckbox0 ${SW_SHOW}
  626. ShowWindow $Txt_Xllicense ${SW_SHOW}
  627. ShowWindow $Txt_Gracenote ${SW_SHOW}
  628. ShowWindow $Txt_ji ${SW_SHOW}
  629. ShowWindow $btn_in ${SW_HIDE}
  630. ShowWindow $btn_ins ${SW_HIDE}
  631. ShowWindow $btn_in ${SW_SHOW}
  632. ShowWindow $btn_ins ${SW_SHOW}


  633. ShowWindow $BGImage1 ${SW_HIDE}
  634. ShowWindow $btn_instetup ${SW_HIDE}
  635. ShowWindow $btn_back ${SW_HIDE}
  636. ShowWindow $Ckbox1 ${SW_HIDE}
  637. ShowWindow $Ckbox2 ${SW_HIDE}
  638. ShowWindow $Ckbox3 ${SW_HIDE}
  639. ShowWindow $btn_Browser ${SW_HIDE}
  640. ShowWindow $Txt_Browser ${SW_HIDE}
  641. FunctionEnd

  642. #------------------------------------------
  643. #许可协议
  644. #------------------------------------------
  645. Function xllicense
  646. ShowWindow $Ckbox0 ${SW_HIDE}
  647. ShowWindow $Txt_Xllicense ${SW_HIDE}
  648. ShowWindow $Txt_Gracenote ${SW_HIDE}
  649. ShowWindow $Txt_ji ${SW_HIDE}
  650. ShowWindow $btn_in ${SW_HIDE}
  651. ShowWindow $btn_ins ${SW_HIDE}
  652. ShowWindow $rtf_License ${SW_SHOW}
  653. ShowWindow $btn_Licenseback ${SW_SHOW}

  654. ShowWindow $rtf_License ${SW_SHOW}

  655. FunctionEnd

  656. ;点击协议下方的按钮执行
  657. Function Licenseback
  658. ShowWindow $Ckbox0 ${SW_SHOW}
  659. ShowWindow $Txt_Xllicense ${SW_SHOW}
  660. ShowWindow $Txt_Gracenote ${SW_SHOW}
  661. ShowWindow $Txt_ji ${SW_SHOW}
  662. ShowWindow $btn_in ${SW_SHOW}
  663. ShowWindow $btn_ins ${SW_SHOW}
  664. ShowWindow $btn_ins ${SW_SHOW}
  665. ShowWindow $btn_Licenseback ${SW_HIDE}
  666. ShowWindow $rtf_License ${SW_HIDE}
  667. ShowWindow $Rtf_Gracenote ${SW_HIDE}

  668. FunctionEnd

  669. Function Gracenote
  670. ShowWindow $Ckbox0 ${SW_HIDE}
  671. ShowWindow $Txt_Xllicense ${SW_HIDE}
  672. ShowWindow $Txt_Gracenote ${SW_HIDE}
  673. ShowWindow $rtf_License ${SW_HIDE}
  674. ShowWindow $Txt_ji ${SW_HIDE}
  675. ShowWindow $btn_in ${SW_HIDE}
  676. ShowWindow $btn_ins ${SW_HIDE}
  677. ShowWindow $btn_Licenseback ${SW_SHOW}
  678. ShowWindow $rtf_Gracenote ${SW_SHOW}
  679. FunctionEnd

  680. ;点击第三方协议下的确定按钮执行
  681. Function Gracenoteback
  682. ShowWindow $rtf_License ${SW_HIDE}
  683. ShowWindow $Rtf_Gracenote ${SW_HIDE}
  684. ShowWindow $btn_Gracenoteback ${SW_HIDE}
  685. ShowWindow $Ckbox0 ${SW_SHOW}
  686. ShowWindow $Txt_Xllicense ${SW_SHOW}
  687. ShowWindow $Txt_Gracenote ${SW_SHOW}
  688. ShowWindow $Txt_ji ${SW_SHOW}
  689. ShowWindow $btn_in ${SW_SHOW}
  690. ShowWindow $btn_ins ${SW_SHOW}
  691. ShowWindow $btn_ins ${SW_SHOW}
  692. FunctionEnd

  693. Function onClickmusic
  694. ExecShell "open" "http://y.qq.com/#type=down&p=phone"
  695. FunctionEnd
  696. #------------------------------------------
  697. #是否选中许可协议判断
  698. #------------------------------------------
  699. Function Chklicense
  700.   Pop $Ckbox0
  701.   ${NSD_GetState} $Ckbox0 $0
  702.   ${If} $0 == 1
  703.     EnableWindow $btn_ins 1 ;对指定的窗口或控件是否允许键入0禁止
  704.     EnableWindow $btn_in 1
  705.   ${Else}
  706.     EnableWindow $btn_ins 0 ;对指定的窗口或控件是否允许键入0禁止
  707.     EnableWindow $btn_in 0
  708.   ${EndIf}
  709. FunctionEnd


  710. #--------------------------------------------------------
  711. # 路径选择按钮事件,打开Windows系统自带的目录选择对话框
  712. #--------------------------------------------------------
  713. Function onClickSelectPath


  714.          ${NSD_GetText} $Txt_Browser  $0
  715.    nsDialogs::SelectFolderDialog  "请选择 ${PRODUCT_NAME} 安装目录:"  "$0"
  716.    Pop $0
  717.    ${IfNot} $0 == error
  718.                         ${NSD_SetText} $Txt_Browser  $0
  719.         ${EndIf}

  720. FunctionEnd

  721. ;立即体验检测
  722. Function onClickexpress
  723. ${NSD_GetState} $Ckbox4 $0
  724.     ${If} $0 == 1
  725.           MessageBox MB_OK '选中:开机自动启动' ;判断选中时的操作,实际代码需要自己修改
  726.   ${EndIf}
  727. ${NSD_GetState} $Ckbox5 $0
  728.   ${if} $0 = 1
  729.   MessageBox MB_OK '选中:推荐安装QQ游戏' ;判断选中时的操作,实际代码需要自己修改
  730.   ${EndIf}
  731. ;Exec "$INSTDIR\qqmusic.exe" ;这个不需要选中也操作,即运行QQ音乐
  732. MessageBox MB_OK '运行QQ音乐'
  733. ExecShell "open" "http://mefcl.taobao.com"
  734. SendMessage $hwndparent ${WM_CLOSE} 0 0
  735. FunctionEnd

  736. ;完成页面完成按钮
  737. Function onClickend
  738. ${NSD_GetState} $Ckbox4 $0
  739.     ${If} $0 == 1
  740.           MessageBox MB_OK '选中:开机自动启动' ;判断选中时的操作,实际代码需要自己修改
  741.   ${EndIf}
  742. ${NSD_GetState} $Ckbox5 $0
  743.   ${if} $0 = 1
  744.   MessageBox MB_OK '选中:推荐安装QQ游戏' ;判断选中时的操作,实际代码需要自己修改
  745.   ${EndIf}
  746. ExecShell "open" "http://www.nsisfans.com/"
  747. SendMessage $hwndparent ${WM_CLOSE} 0 0
  748. FunctionEnd

  749. Section Uninstall
  750. DetailPrint "正在卸载${PRODUCT_NAME}..."
  751.   SetDetailsPrint None
  752.   Delete "$INSTDIR\uninst.exe"
  753.   RMDir "$INSTDIR"
  754.   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  755.   SetAutoClose true
  756. SectionEnd
复制代码
全额附件下载
游客,本帖隐藏的内容需要积分高于 500 才可浏览,您当前积分为 0


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 15:45 , Processed in 0.101968 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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