杉宫竹苑工作室

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

仿百度云盘

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

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

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

x

  1. ;7Z打开空白
  2. !system '>blank set/p=MSCF<nul'
  3. !packhdr temp.dat 'cmd /c Copy /b temp.dat /b +blank&&del blank'

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

  6. Var BGImage  ;背景大图
  7. Var ImageHandle
  8. Var THImage   ;叹号
  9. Var BCSJ

  10. Var WarningForm

  11. Var btn_in
  12. Var btn_ins

  13. Var lbl_zhuye
  14. Var lbl_biaoti

  15. Var Txt_Browser
  16. Var btn_Browser

  17. Var Checkbox1
  18. Var Checkbox_State1
  19. Var Checkbox1_State

  20. Var Checkbox2
  21. Var Checkbox_State2
  22. Var Checkbox2_State

  23. Var Checkbox3
  24. Var Checkbox_State3
  25. Var Checkbox3_State

  26. Var Checkbox4
  27. Var Checkbox_State4
  28. Var Checkbox4_State

  29. ;---------------------------全局编译脚本预定义的常量-----------------------------------------------------
  30. !define PRODUCT_NAME "百度云同步盘"
  31. !define PRODUCT_DIR "BaiDuYun"
  32. !define PRODUCT_VERSION "3.7.0.0"
  33. !define PRODUCT_PUBLISHER "baidu.com, Inc."
  34. !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\DesktopHook64.exe" ;请自行修改
  35. !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
  36. !define PRODUCT_UNINST_ROOT_KEY "HKLM"

  37. ShowInstDetails nevershow ;设置是否显示安装详细信息。
  38. ShowUnInstDetails nevershow ;设置是否显示删除详细信息。

  39. ;应用程序显示名字
  40. Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
  41. ;应用程序输出文件名
  42. OutFile "${PRODUCT_NAME} ${PRODUCT_VERSION}.exe"
  43. ;默认安装目录
  44. InstallDir "$PROGRAMFILES\${PRODUCT_DIR}"
  45. InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"

  46. ; MUI 预定义常量
  47. ;!define MUI_ABORTWARNING ;退出提示
  48. ;安装图标的路径名字
  49. !define MUI_ICON "Icon\BaiduYun.ico"
  50. ;卸载图标的路径名字
  51. !define MUI_UNICON "Icon\BaiduYun.ico"
  52. ;使用的UI
  53. !define MUI_UI "UI\mod.exe"


  54. ;---------------------------设置软件压缩类型(也可以通过外面编译脚本控制)------------------------------------
  55. SetCompressor lzma
  56. SetCompress force
  57. XPStyle on
  58. ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
  59. !include "MUI2.nsh"
  60. !include "WinCore.nsh"
  61. !include "nsWindows.nsh"
  62. !include "LogicLib.nsh"
  63. !include "FileFunc.nsh"

  64. !define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit

  65. ;自定义页面
  66. Page custom Page.1

  67. Page custom Page.2 Page.2leave
  68. ; 许可协议页面
  69. ;!define MUI_LICENSEPAGE_CHECKBOX

  70. ; 安装目录选择页面

  71. ;!insertmacro MUI_PAGE_DIRECTORY
  72. ; 安装过程页面
  73. ;!define MUI_PAGE_CUSTOMFUNCTION_PRO InstFilesPagePRO
  74. !define MUI_PAGE_CUSTOMFUNCTION_SHOW InstFilesPageShow
  75. !insertmacro MUI_PAGE_INSTFILES

  76. Page custom Page.3

  77. Page custom Page.4
  78. ; 安装完成页面
  79. ;!insertmacro MUI_PAGE_FINISH
  80. ; 安装卸载过程页面
  81. UninstPage custom un.Page.5

  82. UninstPage instfiles un.InstFiles.PRO un.InstFiles.Show

  83. UninstPage custom un.Page.6

  84. UninstPage custom un.Page.7


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

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

  88. Function .onInit
  89.     InitPluginsDir
  90.     StrCpy $Checkbox1_State ${BST_CHECKED}
  91.     StrCpy $Checkbox2_State ${BST_CHECKED}
  92.     StrCpy $Checkbox3_State ${BST_CHECKED}
  93.     StrCpy $Checkbox4_State ${BST_CHECKED}
  94.    
  95.     File `/ONAME=$PLUGINSDIR\bg.bmp` `images\bdyun.bmp`
  96.     File `/oname=$PLUGINSDIR\mgbg.bmp` `images\Message.bmp`
  97.     File `/ONAME=$PLUGINSDIR\BeiJing.bmp` `images\BeiJing.bmp`
  98.     File `/oname=$PLUGINSDIR\btn_clos.bmp` `images\clos.bmp`
  99.     File `/oname=$PLUGINSDIR\btn_mini.bmp` `images\mini.bmp`
  100.     File `/oname=$PLUGINSDIR\btn_in.bmp` `images\in.bmp`
  101.     File `/oname=$PLUGINSDIR\btn_btn.bmp` `images\btn.bmp`
  102.     File `/oname=$PLUGINSDIR\TanHao.bmp` `images\TanHao.bmp`

  103.                 ;进度条皮肤
  104.           File `/oname=$PLUGINSDIR\Progress.bmp` `images\Progress.bmp`
  105.           File `/oname=$PLUGINSDIR\ProgressBar.bmp` `images\ProgressBar.bmp`

  106.     SkinBtn::Init "$PLUGINSDIR\btn_btn.bmp"
  107.     SkinBtn::Init "$PLUGINSDIR\btn_in.bmp"
  108.     SkinBtn::Init "$PLUGINSDIR\btn_mini.bmp"
  109.                 SkinBtn::Init "$PLUGINSDIR\btn_clos.bmp"
  110. FunctionEnd

  111. Function onGUIInit

  112.     ;消除边框
  113.     System::Call `user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0`
  114.     ;隐藏一些既有控件
  115.     GetDlgItem $0 $HWNDPARENT 1034
  116.     ShowWindow $0 ${SW_HIDE}
  117.     GetDlgItem $0 $HWNDPARENT 1035
  118.     ShowWindow $0 ${SW_HIDE}
  119.     GetDlgItem $0 $HWNDPARENT 1036
  120.     ShowWindow $0 ${SW_HIDE}
  121.     GetDlgItem $0 $HWNDPARENT 1037
  122.     ShowWindow $0 ${SW_HIDE}
  123.     GetDlgItem $0 $HWNDPARENT 1038
  124.     ShowWindow $0 ${SW_HIDE}
  125.     GetDlgItem $0 $HWNDPARENT 1039
  126.     ShowWindow $0 ${SW_HIDE}
  127.     GetDlgItem $0 $HWNDPARENT 1256
  128.     ShowWindow $0 ${SW_HIDE}
  129.     GetDlgItem $0 $HWNDPARENT 1028
  130.     ShowWindow $0 ${SW_HIDE}

  131.     ${NSW_SetWindowSize} $HWNDPARENT 498 373 ;改变主窗体大小
  132.     System::Call User32::GetDesktopWindow()i.R0
  133.     ;圆角
  134.     System::Alloc 16
  135.           System::Call user32::GetWindowRect(i$HWNDPARENT,isR0)
  136.           System::Call *$R0(i.R1,i.R2,i.R3,i.R4)
  137.           IntOp $R3 $R3 - $R1
  138.           IntOp $R4 $R4 - $R2
  139.           System::Call gdi32::CreateRoundRectRgn(i0,i0,iR3,iR4,i4,i4)i.r0
  140.           System::Call user32::SetWindowRgn(i$HWNDPARENT,ir0,i1)
  141.           System::Free $R0
  142.                 Call UninstallSoft
  143. FunctionEnd

  144. ;处理无边框移动
  145. Function onGUICallback
  146.   ${If} $MSG = ${WM_LBUTTONDOWN}
  147.     SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
  148.   ${EndIf}
  149. FunctionEnd
  150. ;弹出对话框移动
  151. Function onWarningGUICallback
  152.   ${If} $MSG = ${WM_LBUTTONDOWN}
  153.     SendMessage $WarningForm ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
  154.   ${EndIf}
  155. FunctionEnd


  156. Function Page.1

  157.     GetDlgItem $0 $HWNDPARENT 1
  158.     ShowWindow $0 ${SW_HIDE}
  159.     GetDlgItem $0 $HWNDPARENT 2
  160.     ShowWindow $0 ${SW_HIDE}
  161.     GetDlgItem $0 $HWNDPARENT 3
  162.     ShowWindow $0 ${SW_HIDE}
  163.     GetDlgItem $0 $HWNDPARENT 1990
  164.     ShowWindow $0 ${SW_HIDE}
  165.     GetDlgItem $0 $HWNDPARENT 1991
  166.     ShowWindow $0 ${SW_HIDE}
  167.     GetDlgItem $0 $HWNDPARENT 1992
  168.     ShowWindow $0 ${SW_HIDE}
  169.    
  170.     nsDialogs::Create 1044
  171.     Pop $0
  172.     ${If} $0 == error
  173.         Abort
  174.     ${EndIf}
  175.     SetCtlColors $0 ""  transparent ;背景设成透明

  176.     ${NSW_SetWindowSize} $0 498 373 ;改变Page大小

  177.                 ;XXX安装向导
  178.     ${NSD_CreateLabel} 1u 130u 493U 18u "欢迎使用${PRODUCT_NAME}安装向导"
  179.     Pop $lbl_zhuye
  180.     SetCtlColors $lbl_zhuye "" transparent ;背景设成透明
  181.     CreateFont $1 "宋体" "11" "800"
  182.     SendMessage $lbl_zhuye ${WM_SETFONT} $1 0
  183.     ${NSD_AddStyle} $lbl_zhuye ${ES_CENTER}

  184.                 ;标题文字
  185.     ${NSD_CreateLabel} 25u 8u 150u 9u "${PRODUCT_NAME} 安装"
  186.     Pop $lbl_biaoti
  187.     ;SetCtlColors $lbl_biaoti "" 0xFFFFFF ;蓝色
  188.     SetCtlColors $lbl_biaoti "666666"  transparent ;背景设成透明

  189.     ;自定义安装按钮
  190.     ${NSD_CreateButton} 120u 185u 136 32 "自定义安装"
  191.     Pop $btn_ins
  192.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_in.bmp $btn_ins
  193.     SetCtlColors $btn_ins "808080"  transparent ;背景设成透明
  194.     GetFunctionAddress $3 onClickins
  195.     SkinBtn::onClick $btn_ins $3

  196.     ;快速安装按钮
  197.     ${NSD_CreateButton} 120u 153u 136 32 "快速安装(推荐)"
  198.     Pop $btn_in
  199.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_in.bmp $btn_in
  200.     SetCtlColors $btn_in "808080"  transparent ;背景设成透明
  201.     GetFunctionAddress $3 onClickin
  202.     SkinBtn::onClick $btn_in $3


  203.                 ;标题文字
  204.     ${NSD_CreateLabel} 25u 8u 150u 9u "${PRODUCT_NAME} 安装"
  205.     Pop $lbl_biaoti
  206.     ;SetCtlColors $lbl_biaoti "" 0xFFFFFF ;蓝色
  207.     SetCtlColors $lbl_biaoti "666666"  transparent ;背景设成透明
  208.    
  209.     ;最小化按钮
  210.     ${NSD_CreateButton} 434 1 31 18 ""
  211.     Pop $0
  212.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $0
  213.     GetFunctionAddress $3 onClickmini
  214.     SkinBtn::onClick $0 $3

  215.     ;关闭按钮
  216.     ${NSD_CreateButton} 465 1 31 18 ""
  217.     Pop $0
  218.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $0
  219.     GetFunctionAddress $3 MessgesboxPage
  220.     SkinBtn::onClick $0 $3

  221.     ;贴背景大图
  222.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  223.     Pop $BGImage
  224.     ${NSD_SetImage} $BGImage $PLUGINSDIR\bg.bmp $ImageHandle

  225.     GetFunctionAddress $0 onGUICallback
  226.     WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  227.     nsDialogs::Show
  228.     ${NSD_FreeImage} $ImageHandle
  229. FunctionEnd

  230. Function Page.2

  231.     GetDlgItem $0 $HWNDPARENT 1
  232.     ShowWindow $0 ${SW_HIDE}
  233.     GetDlgItem $0 $HWNDPARENT 2
  234.     ShowWindow $0 ${SW_HIDE}
  235.     GetDlgItem $0 $HWNDPARENT 3
  236.     ShowWindow $0 ${SW_HIDE}
  237.     GetDlgItem $0 $HWNDPARENT 1990
  238.     ShowWindow $0 ${SW_HIDE}
  239.     GetDlgItem $0 $HWNDPARENT 1991
  240.     ShowWindow $0 ${SW_HIDE}
  241.     GetDlgItem $0 $HWNDPARENT 1992
  242.     ShowWindow $0 ${SW_HIDE}

  243.     nsDialogs::Create 1044
  244.     Pop $0
  245.     ${If} $0 == error
  246.         Abort
  247.     ${EndIf}
  248.     SetCtlColors $0 ""  transparent ;背景设成透明

  249.     ${NSW_SetWindowSize} $0 498 373 ;改变Page大小

  250.     ;安装按钮
  251.     ${NSD_CreateButton} 416U 339U 72U 24U "安装"
  252.     Pop $0
  253.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_BTN.bmp $0
  254.     GetFunctionAddress $3 onClickinst
  255.     SkinBtn::onClick $0 $3

  256.                 ;标题文字
  257.     ${NSD_CreateLabel} 25u 8u 150u 9u "${PRODUCT_NAME} 安装"
  258.     Pop $lbl_biaoti
  259.     ;SetCtlColors $lbl_biaoti "" 0xFFFFFF ;蓝色
  260.     SetCtlColors $lbl_biaoti "666666"  transparent ;背景设成透明


  261.                 ;路径选择
  262.     ${NSD_CreateLabel} 36 110u 130 13u "选择组件:"
  263.     Pop $0
  264.     SetCtlColors $0 ""  transparent ;背景设成透明
  265. ;    CreateFont $1 "宋体" "11" "800"
  266. ;    SendMessage $0 ${WM_SETFONT} $1 0

  267.                 ;路径选择
  268.     ${NSD_CreateLabel} 36 90 130u 12u "安装目录:"
  269.     Pop $0
  270.     SetCtlColors $0 ""  transparent ;背景设成透明
  271.    ; CreateFont $1 "宋体" "11" "800"
  272.    ; SendMessage $3 ${WM_SETFONT} $1 0

  273. #------------------------------------------
  274. #可选项1
  275. #------------------------------------------   
  276.     ${NSD_CreateCheckbox} 36 130u 12u 12u ""
  277.     Pop $Checkbox1
  278.     SetCtlColors $Checkbox1 "" "f7f7f7"
  279.                 ;${NSD_SetState} $Checkbox1 ${BST_CHECKED}


  280.                 ${NSD_CreateLabel} 36u 131u 100u 12u "可选项目一"
  281.                 Pop $Checkbox_State1
  282.     SetCtlColors $Checkbox_State1 ""  transparent ;前景色,背景设成透明
  283.     ${NSD_OnClick} $Checkbox_State1 onCheckbox1
  284. #------------------------------------------
  285. #可选项2
  286. #------------------------------------------
  287.     ${NSD_CreateCheckbox} 36 150u 12u 12u ""
  288.     Pop $Checkbox2
  289.                 SetCtlColors $Checkbox2 "" "f4f4f4"
  290.                 ${NSD_SetState} $Checkbox3 ${BST_CHECKED}
  291.                 ;ShowWindow $Checkbox2 ${SW_HIDE}
  292.                
  293.                 ${NSD_CreateLabel} 36u 151u 100u 12u "可选项目二"
  294.                 Pop $Checkbox_State2
  295.     SetCtlColors $Checkbox_State2 ""  transparent ;前景色,背景设成透明
  296.     ${NSD_OnClick} $Checkbox_State2 onCheckbox2
  297.     ;ShowWindow $Checkbox_State2 ${SW_HIDE}   ;当你不使用该选项时,可以隐藏
  298. #------------------------------------------
  299. #可选项3
  300. #------------------------------------------
  301.     ${NSD_CreateCheckbox} 36 170u 12u 12u ""
  302.     Pop $Checkbox3
  303.                 SetCtlColors $Checkbox3 "" "f5f5f5"
  304.                 ${NSD_SetState} $Checkbox3 ${BST_CHECKED}
  305.                 ;ShowWindow $Checkbox3 ${SW_HIDE}  ;当你不使用该选项时,可以隐藏

  306.                 ${NSD_CreateLabel} 36u 171u 100u 12u "可选项目三"
  307.                 Pop $Checkbox_State3
  308.     SetCtlColors $Checkbox_State3 ""  transparent ;前景色,背景设成透明
  309.     ${NSD_OnClick} $Checkbox_State3 onCheckbox3
  310.     ;ShowWindow $Checkbox_State3 ${SW_HIDE}  ;当你不使用该选项时,可以隐藏
  311. #------------------------------------------
  312. #可选项4
  313. #------------------------------------------
  314.     ${NSD_CreateCheckbox} 36 190u 12u 12u ""
  315.     Pop $Checkbox4
  316.                 SetCtlColors $Checkbox4 "" "f6f6f6"
  317.                 ${NSD_SetState} $Checkbox4 ${BST_CHECKED}
  318.                 ;ShowWindow $Checkbox4 ${SW_HIDE}  ;当你不使用该选项时,可以隐藏
  319.                
  320.                 ${NSD_CreateLabel} 36u 191u 100u 12u "可选项目四"
  321.                 Pop $Checkbox_State4
  322.     SetCtlColors $Checkbox_State4 ""  transparent ;前景色,背景设成透明
  323.     ${NSD_OnClick} $Checkbox_State4 onCheckbox4
  324.     ;ShowWindow $Checkbox_State4 ${SW_HIDE}  ;当你不使用该选项时,可以隐藏
  325.    
  326. #可选项完成!
  327. #------------------------------------------

  328.     ;最小化按钮
  329.     ${NSD_CreateButton} 434 1 31 18 ""
  330.     Pop $0
  331.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $0
  332.     GetFunctionAddress $3 onClickmini
  333.     SkinBtn::onClick $0 $3

  334.     ;关闭按钮
  335.     ${NSD_CreateButton} 465 1 31 18 ""
  336.     Pop $0
  337.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $0
  338.     GetFunctionAddress $3 MessgesboxPage
  339.     SkinBtn::onClick $0 $3
  340.    
  341.                 ;创建安装目录输入文本框
  342.           ${NSD_CreateText} 36 120 350 24 $INSTDIR
  343.                 Pop $Txt_Browser
  344.     CreateFont $1 "tahoma" "10" "500"
  345.     SendMessage $Txt_Browser ${WM_SETFONT} $1 1
  346.                 ;ShowWindow $Txt_Browser ${SW_HIDE}


  347.     ;创建更改路径文件夹按钮
  348.     ${NSD_CreateButton} 395U 120U 72U 16u  "浏览"
  349.                 Pop $btn_Browser
  350.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $btn_Browser
  351.                 GetFunctionAddress $3 onButtonClickSelectPath
  352.     SkinBtn::onClick $btn_Browser $3
  353.                 ;ShowWindow $btn_Browser ${SW_HIDE}
  354.    
  355.     ;贴背景大图
  356.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  357.     Pop $BGImage
  358.     ${NSD_SetImage} $BGImage $PLUGINSDIR\beijing.bmp $ImageHandle

  359.     GetFunctionAddress $0 onGUICallback
  360.     WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  361.     nsDialogs::Show
  362.     ${NSD_FreeImage} $ImageHandle
  363. FunctionEnd

  364. #----------------------------------------------
  365. #存储4个选项状态
  366. #----------------------------------------------
  367. Function Page.2leave
  368.    ${NSD_GetState} $Checkbox1 $Checkbox1_State
  369.    ${NSD_GetState} $Checkbox2 $Checkbox2_State
  370.    ${NSD_GetState} $Checkbox3 $Checkbox3_State
  371.    ${NSD_GetState} $Checkbox4 $Checkbox4_State
  372. FunctionEnd
  373. #----------------------------------------------
  374. #第2个页面完成
  375. #----------------------------------------------


  376. Function  InstFilesPageShow

  377.     FindWindow $R2 "#32770" "" $HWNDPARENT
  378.     GetDlgItem $0 $HWNDPARENT 1
  379.     ShowWindow $0 ${SW_HIDE}
  380.     GetDlgItem $0 $HWNDPARENT 2
  381.     ShowWindow $0 ${SW_HIDE}
  382.     GetDlgItem $0 $HWNDPARENT 3
  383.    
  384.     ShowWindow $0 ${SW_HIDE}
  385.     GetDlgItem $1 $R2 1027
  386.     ShowWindow $1 ${SW_HIDE}


  387.   File '/oname=$PLUGINSDIR\Slides.dat' 'nsisSlideShow\Slides.dat'
  388.   File '/oname=$PLUGINSDIR\Play1.png' 'nsisSlideShow\Play1.png'
  389.   File '/oname=$PLUGINSDIR\Play2.png' 'nsisSlideShow\Play2.png'
  390.   File '/oname=$PLUGINSDIR\Play3.png' 'nsisSlideShow\Play3.png'
  391.                 ;自定义进度条的颜色样式
  392.                 ;取消进度条windows 样式主题风格,改为用自已定义的颜色
  393. ;                GetDlgItem $2 $R2 1004
  394. ;                System::Call UxTheme::SetWindowTheme(i,w,w)i(r2, n, n)
  395.                 ;SendMessage $2 ${PBM_SETBARCOLOR} 0 0x339a00 ;设置进度条前景色
  396.                 ;SendMessage $2 ${PBM_SETBKCOLOR} 0 0xa4a4a4  ;设置进度条背景色

  397.     GetDlgItem $R0 $R2 1004  ;设置进度条位置
  398.     System::Call "user32::MoveWindow(i R0, i 30, i 100, i 440, i 12) i r2"


  399.     StrCpy $R0 $R2 ;改变页面大小,不然贴图不能全页
  400.     System::Call "user32::MoveWindow(i R0, i 0, i 0, i 498, i 373) i r2"
  401.     GetFunctionAddress $0 onGUICallback
  402.     WndProc::onCallback $R0 $0 ;处理无边框窗体移动
  403.    
  404.     GetDlgItem $R1 $R2 1006  ;获取1006控件设置颜色并改变位置
  405.     SetCtlColors $R1 ""  F6F6F6 ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠
  406.     System::Call "user32::MoveWindow(i R1, i 30, i 82, i 440, i 12) i r2"

  407.     GetDlgItem $R3 $R2 1990  ;获取1006控件设置颜色并改变位置
  408.     System::Call "user32::MoveWindow(i R3, i 434, i 1, i 31, i 18) i r2"
  409.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $R3
  410.                 GetFunctionAddress $3 onClickmini
  411.     SkinBtn::onClick $R3 $3
  412.     ;SetCtlColors $R1 ""  F6F6F6 ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠

  413.     GetDlgItem $R4 $R2 1991  ;获取1006控件设置颜色并改变位置
  414.     System::Call "user32::MoveWindow(i R4, i 465, i 1, i 31, i 18) i r2" ;改变位置465, 1, 31, 18
  415.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $R4
  416.                 GetFunctionAddress $3 onClickclos
  417.     SkinBtn::onClick $R4 $3
  418.     EnableWindow $R4 0  ;禁止0为禁止
  419.    
  420.     GetDlgItem $R5 $R2 1992  ;获取1006控件设置颜色并改变位置
  421.     System::Call "user32::MoveWindow(i R5, i 416, i 339, i 72, i 24) i r2"
  422.     ${NSD_SetText} $R5 "安装"
  423.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $R5
  424.                 ;GetFunctionAddress $3 onClickins
  425.     SkinBtn::onClick $R5 $3
  426.     EnableWindow $R5 0

  427.     GetDlgItem $R7 $R2 1993  ;获取1993控件设置颜色并改变位置
  428.     SetCtlColors $R7 "666666"  transparent ;
  429.     System::Call "user32::MoveWindow(i R7, i 38, i 12, i 150, i 12) i r2"
  430.     ${NSD_SetText} $R7 "${PRODUCT_NAME} 安装" ;设置某个控件的 text 文本


  431.     GetDlgItem $R8 $R2 1016  ;获取1006控件设置颜色并改变位置
  432.     SetCtlColors $R8 ""  F6F6F6 ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠
  433.     System::Call "user32::MoveWindow(i R8, i 30, i 120, i 440, i 180) i r2"
  434.    
  435.     FindWindow $R2 "#32770" "" $HWNDPARENT
  436.     GetDlgItem $R0 $R2 1995
  437.     System::Call "user32::MoveWindow(i R0, i 0, i 0, i 498, i 373) i r2"
  438.     ${NSD_SetImage} $R0 $PLUGINSDIR\beijing.bmp $ImageHandle

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

  443. FunctionEnd

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


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

  457.     ${NSW_SetWindowSize} $0 498 373 ;改变Page大小


  458.     ${NSD_CreateLabel} 10% 25% 250u 15u '"${PRODUCT_NAME}"安装完成!'
  459.     Pop $2
  460.     SetCtlColors $2 ""  transparent ;背景设成透明
  461.     CreateFont $1 "宋体" "11" "700"
  462.     SendMessage $2 ${WM_SETFONT} $1 0

  463.     ${NSD_CreateLabel} 10% 31% 250u 12u "${PRODUCT_NAME}已安装到您的电脑中,请单击【完成】。"
  464.     Pop $2
  465.     SetCtlColors $2 666666  transparent ;背景设成透明

  466.                 ;标题文字
  467.     ${NSD_CreateLabel} 25u 8u 150u 9u "${PRODUCT_NAME} 安装"
  468.     Pop $lbl_biaoti
  469.     ;SetCtlColors $lbl_biaoti "" 0xFFFFFF ;蓝色
  470.     SetCtlColors $lbl_biaoti "666666"  transparent ;背景设成透明


  471.     ;完成按钮
  472.     ${NSD_CreateButton} 416 339 72 24 "完成"
  473.     Pop $0
  474.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_BTN.bmp $0
  475.     GetFunctionAddress $3 onClickend
  476.     SkinBtn::onClick $0 $3

  477.     ;最小化按钮
  478.     ${NSD_CreateButton} 434 1 31 18 ""
  479.     Pop $0
  480.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $0
  481.     GetFunctionAddress $3 onClickmini
  482.     SkinBtn::onClick $0 $3

  483.     ;关闭按钮
  484.     ${NSD_CreateButton} 465 1 31 18 ""
  485.     Pop $0
  486.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $0
  487.     GetFunctionAddress $3 MessgesboxPage
  488.     SkinBtn::onClick $0 $3
  489.     EnableWindow $0 0

  490.     ;贴背景大图
  491.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  492.     Pop $BGImage
  493.     ${NSD_SetImage} $BGImage $PLUGINSDIR\beijing.bmp $ImageHandle


  494.     GetFunctionAddress $0 onGUICallback
  495.     WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  496.     nsDialogs::Show

  497.     ${NSD_FreeImage} $ImageHandle

  498. FunctionEnd


  499. Function Page.4

  500. FunctionEnd

  501. Function MessgesboxPage
  502.         IsWindow $WarningForm Create_End
  503.         !define Style ${WS_VISIBLE}|${WS_OVERLAPPEDWINDOW}
  504.         ${NSW_CreateWindowEx} $WarningForm $hwndparent ${ExStyle} ${Style} "" 1018

  505.         ;${NSW_SetWindowSize} $WarningForm 382 202
  506.         System::Call "user32::MoveWindow(i $WarningForm, i 0, i 0, i 382, i 202) i r2"
  507.         EnableWindow $hwndparent 0
  508.   ;SetCtlColors $hwndparent ""  transparent ;背景设成透明
  509.         System::Call `user32::SetWindowLong(i$WarningForm,i${GWL_STYLE},0x9480084C)i.R0`

  510.         ${NSW_CreateButton} 225 169 72 24 '确定'
  511.         Pop $1
  512.   SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $1
  513.   GetFunctionAddress $3 onClickclos
  514.   SkinBtn::onClick $1 $3

  515.         ${NSW_CreateButton} 303 169 72 24 '取消'
  516.         Pop $1
  517.   SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $1
  518.   GetFunctionAddress $3 OnClickQuitCancel
  519.   SkinBtn::onClick $1 $3

  520.   ;关闭按钮
  521.   ${NSW_CreateButton} 350 1 31 18 ""
  522.         Pop $1
  523.   SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $1
  524.   GetFunctionAddress $3 OnClickQuitCancel
  525.   SkinBtn::onClick $1 $3

  526.          ;退出提示
  527.   ${NSW_CreateLabel} 17% 95 170u 9u "确定要退出${PRODUCT_NAME}安装吗?"
  528.   Pop $R3
  529.   ;SetCtlColors $R2 "" 0xFFFFFF ;蓝色
  530.   SetCtlColors $R3 "636363"  transparent ;背景设成透明

  531.          ;左上角文字
  532.   ${NSW_CreateLabel} 25u 8u 150u 9u "${PRODUCT_NAME}"
  533.   Pop $R2
  534.   ;SetCtlColors $R2 "" 0xFFFFFF ;蓝色
  535.   SetCtlColors $R2 "666666"  transparent ;背景设成透明

  536.         ;叹号
  537.         ${NSW_CreateBitmap} 10% 93 16u 16u ""
  538.   Pop $THImage
  539.   ${NSW_SetImage} $THImage $PLUGINSDIR\TanHao.bmp $ImageHandle

  540.         ;背景图
  541.         ${NSW_CreateBitmap} 0 0 380u 202u ""
  542.   Pop $BGImage
  543.   ${NSW_SetImage} $BGImage $PLUGINSDIR\mgbg.bmp $ImageHandle

  544.         GetFunctionAddress $0 onWarningGUICallback
  545.         WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  546. ;        WndProc::onCallback $THImage $0
  547. ;        WndProc::onCallback $R2 $0
  548. ;        WndProc::onCallback $R3 $0

  549.   ${NSW_CenterWindow} $WarningForm $hwndparent
  550.         ${NSW_Show}
  551.         Create_End:
  552.   ShowWindow $WarningForm ${SW_SHOW}

  553. FunctionEnd

  554. Section MainSetup
  555. SetDetailsPrint textonly
  556. DetailPrint "正在安装${PRODUCT_NAME}..."
  557. SetDetailsPrint None ;不显示信息
  558. nsisSlideshow::Show /NOUNLOAD /auto=$PLUGINSDIR\Slides.dat
  559. SetOutPath $INSTDIR
  560. Sleep 50
  561. Sleep 50
  562. Sleep 50
  563. Sleep 500
  564. Sleep 50
  565. Sleep 50
  566. Sleep 50
  567. Sleep 50
  568. Sleep 50
  569. Sleep 50
  570. Sleep 50
  571. Sleep 50
  572. Sleep 50
  573. Sleep 500
  574. Sleep 50
  575. Sleep 50
  576. Sleep 50
  577. Sleep 50
  578. Sleep 50
  579. Sleep 50
  580. Sleep 50
  581. Sleep 500
  582. Sleep 50
  583. Sleep 50
  584. Sleep 50
  585. Sleep 50
  586. Sleep 50
  587. Sleep 50
  588. Sleep 50
  589. Sleep 500
  590. Sleep 50
  591. Sleep 50
  592. Sleep 50
  593. Sleep 50
  594. Sleep 50
  595. Sleep 50
  596. Sleep 50
  597. Sleep 50
  598. Sleep 50
  599. Sleep 50
  600.   ;${NSD_GetState} $Checkbox1_State $0
  601.     ${If} $Checkbox1_State == 1
  602.     DetailPrint "选中"
  603.     MessageBox MB_OK '选中'
  604.     ${EndIf}
  605. MessageBox MB_OK '选中项:$\r$\n$Checkbox1_State$\r$\n$Checkbox2_State$\r$\n$Checkbox3_State$\r$\n$Checkbox4_State$\r$\n安装目录:$INSTDIR'
  606. nsisSlideshow::Stop
  607. ExecShell "open" "http://item.taobao.com/item.htm?id=20321929386"
  608. SetAutoClose true
  609. SectionEnd

  610. #----------------------------------------------
  611. #创建控制面板卸载程序信息 ,下面的具体用法卡查看帮助  D.2 添加卸载信息到添加/删除程序面板  或者在帮助里搜索关键词,如:DisplayName
  612. #----------------------------------------------
  613. Section -Post
  614.   WriteUninstaller "$INSTDIR\uninst.exe" ;这个是生成卸载程序
  615.   WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\AppMainExe.exe" ;这些请自行修改成自己的程序
  616.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  617.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  618.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$INSTDIR\AppMainExe.exe" ;这些请自行修改成自己的程序
  619.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  620.   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
  621. SectionEnd


  622. ;处理页面跳转的命令
  623. Function RelGotoPage
  624.   IntCmp $R9 0 0 Move Move
  625.     StrCmp $R9 "X" 0 Move
  626.       StrCpy $R9 "120"
  627.   Move:
  628.   SendMessage $HWNDPARENT "0x408" "$R9" ""
  629. FunctionEnd

  630. Function onClickins
  631.   StrCpy $R9 1 ;Goto the next page
  632.   Call RelGotoPage
  633.   Abort
  634. FunctionEnd

  635. Function onClickin
  636. StrCpy $Checkbox1_State 0  ;这里,我直接把第二页的四个选项情况写出来了,请自己修改
  637. StrCpy $Checkbox2_State 0
  638. StrCpy $Checkbox3_State 1
  639. StrCpy $Checkbox4_State 1
  640.   StrCpy $R9 2 ;Goto the next page
  641.   Call RelGotoPage
  642.   Abort
  643. FunctionEnd

  644. Function onClickinst
  645.   ${NSD_GetText} $Txt_Browser  $R0  ;获得设置的安装路径

  646.   ;判断目录是否正确
  647.         ClearErrors
  648.         CreateDirectory "$R0"
  649.         IfErrors 0 +3
  650.   MessageBox MB_ICONINFORMATION|MB_OK "'$R0' 安装目录不存在,请重新设置。"
  651.   Return

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

  653.         ;跳到下一页, $R9是NavigationGotoPage 函数需要的跳转参数变量
  654.   StrCpy $R9 1
  655.   call RelGotoPage
  656. FunctionEnd
  657. #------------------------------------------
  658. #最小化代码
  659. #------------------------------------------
  660. Function onClickmini
  661. System::Call user32::CloseWindow(i$HWNDPARENT) ;最小化
  662. FunctionEnd

  663. #------------------------------------------
  664. #关闭代码
  665. #------------------------------------------
  666. Function onClickclos
  667. SendMessage $hwndparent ${WM_CLOSE} 0 0  ;关闭
  668. FunctionEnd

  669. Function OnClickQuitCancel
  670.   ${NSW_DestroyWindow} $WarningForm
  671.   EnableWindow $hwndparent 1
  672.   BringToFront
  673. FunctionEnd

  674. #--------------------------------------------------------
  675. # 路径选择按钮事件,打开Windows系统自带的目录选择对话框
  676. #--------------------------------------------------------
  677. Function onButtonClickSelectPath


  678.          ${NSD_GetText} $Txt_Browser  $0
  679.    nsDialogs::SelectFolderDialog  "请选择 ${PRODUCT_NAME} 安装目录:"  "$0"
  680.    Pop $0
  681.    ${IfNot} $0 == error
  682.                         ${NSD_SetText} $Txt_Browser  $0
  683.         ${EndIf}

  684. FunctionEnd

  685. #-------------------------------------------------
  686. # 第一个Lable点击,同步CheckBox状态处理函数
  687. #-------------------------------------------------
  688. Function onCheckbox1

  689.          ${NSD_GetState} $Checkbox1 $0

  690.    ${If} $0 == ${BST_CHECKED}
  691.                          ${NSD_SetState} $Checkbox1 ${BST_UNCHECKED}
  692.          ${Else}
  693.                          ${NSD_SetState} $Checkbox1 ${BST_CHECKED}
  694.          ${EndIf}

  695. FunctionEnd

  696. #-------------------------------------------------
  697. # 第二个Lable点击,同步CheckBox状态处理函数
  698. #-------------------------------------------------
  699. Function onCheckbox2

  700.          ${NSD_GetState} $Checkbox2 $0

  701.    ${If} $0 == ${BST_CHECKED}
  702.                          ${NSD_SetState} $Checkbox2 ${BST_UNCHECKED}
  703.          ${Else}
  704.                          ${NSD_SetState} $Checkbox2 ${BST_CHECKED}
  705.          ${EndIf}

  706. FunctionEnd

  707. #-------------------------------------------------
  708. # 第三个Lable点击,同步CheckBox状态处理函数
  709. #-------------------------------------------------
  710. Function onCheckbox3

  711.          ${NSD_GetState} $Checkbox3 $0

  712.    ${If} $0 == ${BST_CHECKED}
  713.                          ${NSD_SetState} $Checkbox3 ${BST_UNCHECKED}
  714.          ${Else}
  715.                          ${NSD_SetState} $Checkbox3 ${BST_CHECKED}
  716.          ${EndIf}

  717. FunctionEnd

  718. #-------------------------------------------------
  719. # 第四个Lable点击,同步CheckBox状态处理函数
  720. #-------------------------------------------------
  721. Function onCheckbox4

  722.          ${NSD_GetState} $Checkbox4 $0

  723.    ${If} $0 == ${BST_CHECKED}
  724.                          ${NSD_SetState} $Checkbox4 ${BST_UNCHECKED}
  725.          ${Else}
  726.                          ${NSD_SetState} $Checkbox4 ${BST_CHECKED}
  727.          ${EndIf}

  728. FunctionEnd


  729. ;完成页面完成按钮
  730. Function onClickend
  731. SendMessage $hwndparent ${WM_CLOSE} 0 0
  732. FunctionEnd

  733. #----------------------------------------------
  734. #执行卸载任务
  735. #----------------------------------------------
  736. Function UninstallSoft
  737.   ReadRegStr $R0 HKLM \
  738.   "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
  739.   "UninstallString"
  740.   ${GetParent} "$R0" $R1
  741.   StrCmp $R0 "" done
  742.   IfFileExists $R0 uninst
  743.         Goto done
  744. ;运行卸载程序
  745. uninst:
  746.   MessageBox MB_ICONQUESTION|MB_YESNO|MB_TOPMOST "系统已存在${PRODUCT_NAME},是否卸载?" IDYES +2
  747.   Goto done
  748.   ExecWait "$R0 /S _?=$R1" ;这里$R0为读取到的卸载程序名称, /S是静默卸载参数使用NSIS生成的卸载程序必须要加上 _? 才能等待卸载。$R1是软件位置
  749.   IfFileExists "$R1" dir ;如果 $R1软件位置 还有文件则跳转到 DIR: 删除里面的所有文件
  750.   Goto done
  751. dir: ;如果文件夹存在
  752.         ;Delete "$R1\*.*" ;即删除里面所有文件,请谨慎使用

  753. done:

  754. FunctionEnd

  755. /******************************
  756. *  以下是安装程序的卸载部分  *
  757. ******************************/

  758. Section Uninstall
  759. SetDetailsPrint textonly
  760. DetailPrint "正在卸载${PRODUCT_NAME}..."
  761.   Sleep 5000
  762.   Delete "$INSTDIR\uninst.exe"

  763.   RMDir "$INSTDIR"

  764.   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  765.   DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  766.   SetAutoClose true
  767. SectionEnd

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

  769. Function un.Page.5
  770.     GetDlgItem $0 $HWNDPARENT 1
  771.     ShowWindow $0 ${SW_HIDE}
  772.     GetDlgItem $0 $HWNDPARENT 2
  773.     ShowWindow $0 ${SW_HIDE}
  774.     GetDlgItem $0 $HWNDPARENT 3
  775.     ShowWindow $0 ${SW_HIDE}

  776.     nsDialogs::Create 1044
  777.     Pop $0
  778.     ${If} $0 == error
  779.         Abort
  780.     ${EndIf}
  781.     SetCtlColors $0 ""  transparent ;背景设成透明

  782.     ${NSW_SetWindowSize} $0 498 373 ;改变窗体大小


  783.     ${NSD_CreateLabel} 25u 8u 150u 9u "${PRODUCT_NAME} 卸载"
  784.     Pop $2
  785.     SetCtlColors $2 666666  transparent ;背景设成透明

  786.     ${NSD_CreateLabel} 10% 25% 250u 15u '"欢迎使用${PRODUCT_NAME}"卸载向导!'
  787.     Pop $2
  788.     SetCtlColors $2 ""  transparent ;背景设成透明
  789.     CreateFont $1 "宋体" "11" "700"
  790.     SendMessage $2 ${WM_SETFONT} $1 0

  791.     ${NSD_CreateLabel} 10% 31% 280u 25u "这个向导将指引你从计算机移除${PRODUCT_NAME}。单击【卸载】按钮开始卸载。"
  792.     Pop $2
  793.     SetCtlColors $2 "666666"  transparent ;背景设成透明

  794.     ;创建取消按钮
  795.     ${NSD_CreateButton} 416 339 72 24 "取消"
  796.     Pop $0
  797.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $0
  798.     GetFunctionAddress $3 un.onClickclos
  799.     SkinBtn::onClick $0 $3

  800.     ${NSD_CreateButton} 338 339 72 24 "卸载"
  801.     Pop $R0
  802.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $R0
  803.     GetFunctionAddress $3 un.onClickins
  804.     SkinBtn::onClick $R0 $3

  805.     ;最小化按钮
  806.     ${NSD_CreateButton} 434 1 31 18 ""
  807.     Pop $0
  808.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $0
  809.     GetFunctionAddress $3 un.onClickmini
  810.     SkinBtn::onClick $0 $3

  811.     ;关闭按钮
  812.     ${NSD_CreateButton} 465 1 31 18 ""
  813.     Pop $0
  814.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $0
  815.     GetFunctionAddress $3 un.onClickclos
  816.     SkinBtn::onClick $0 $3

  817.     ;贴背景大图
  818.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  819.     Pop $BGImage
  820.     ${NSD_SetImage} $BGImage $PLUGINSDIR\beijing.bmp $ImageHandle


  821.     GetFunctionAddress $0 un.onGUICallback
  822.     WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  823.     nsDialogs::Show

  824.     ${NSD_FreeImage} $ImageHandle
  825. FunctionEnd

  826. Function un.InstFiles.PRO

  827. FunctionEnd

  828. Function un.InstFiles.Show
  829.     FindWindow $BCSJ "#32770" "" $HWNDPARENT
  830.     GetDlgItem $0 $HWNDPARENT 1
  831.     ShowWindow $0 ${SW_HIDE}
  832.     GetDlgItem $0 $HWNDPARENT 2
  833.     ShowWindow $0 ${SW_HIDE}
  834.     GetDlgItem $0 $HWNDPARENT 3
  835.     ShowWindow $0 ${SW_HIDE}
  836.     GetDlgItem $1 $BCSJ 1027
  837.     ShowWindow $1 ${SW_HIDE}

  838.     GetDlgItem $R0 $BCSJ 1004  ;设置进度条位置
  839.     System::Call "user32::MoveWindow(i R0, i 30, i 100, i 440, i 12) i r2"


  840.     StrCpy $R0 $BCSJ ;改变页面大小,不然贴图不能全页
  841.     System::Call "user32::MoveWindow(i R0, i 0, i 0, i 498, i 373) i r2"
  842.     GetFunctionAddress $0 un.onGUICallback
  843.     WndProc::onCallback $R0 $0 ;处理无边框窗体移动

  844.     GetDlgItem $R1 $BCSJ 1006  ;获取1006控件设置颜色并改变位置
  845.     SetCtlColors $R1 ""  F6F6F6 ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠
  846.     System::Call "user32::MoveWindow(i R1, i 30, i 82, i 440, i 12) i r2"

  847.     GetDlgItem $R3 $BCSJ 1990  ;获取1006控件设置颜色并改变位置
  848.     System::Call "user32::MoveWindow(i R3, i 434, i 1, i 31, i 18) i r2"
  849.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $R3
  850.                 GetFunctionAddress $3 un.onClickmini
  851.     SkinBtn::onClick $R3 $3
  852.     ;SetCtlColors $R1 ""  F6F6F6 ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠

  853.     GetDlgItem $R4 $BCSJ 1991  ;获取1006控件设置颜色并改变位置
  854.     System::Call "user32::MoveWindow(i R4, i 465, i 1, i 31, i 18) i r2" ;改变位置465, 1, 31, 18
  855.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $R4
  856.                 GetFunctionAddress $3 un.onClickclos
  857.     SkinBtn::onClick $R4 $3
  858.     EnableWindow $R4 0  ;禁止0为禁止

  859.     GetDlgItem $R5 $BCSJ 1992  ;获取1006控件设置颜色并改变位置
  860.     System::Call "user32::MoveWindow(i R5, i 416, i 339, i 72, i 24) i r2"
  861.     ${NSD_SetText} $R5 "安装"
  862.                 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $R5
  863.                 ;GetFunctionAddress $3 un.onClickins
  864.     SkinBtn::onClick $R5 $3
  865.     EnableWindow $R5 0

  866.     GetDlgItem $R7 $BCSJ 1993  ;获取1993控件设置颜色并改变位置
  867.     SetCtlColors $R7 "666666"  transparent ;
  868.     System::Call "user32::MoveWindow(i R7, i 38, i 12, i 150, i 12) i r2"
  869.     ${NSD_SetText} $R7 "${PRODUCT_NAME} 安装" ;设置某个控件的 text 文本


  870.     GetDlgItem $R8 $BCSJ 1016  ;获取1006控件设置颜色并改变位置
  871.     SetCtlColors $R8 ""  F6F6F6 ;背景设成F6F6F6,注意颜色不能设为透明,否则重叠
  872.     System::Call "user32::MoveWindow(i R8, i 30, i 120, i 440, i 180) i r2"

  873.     FindWindow $R2 "#32770" "" $HWNDPARENT
  874.     GetDlgItem $R0 $R2 1995
  875.     System::Call "user32::MoveWindow(i R0, i 0, i 0, i 498, i 373) i r2"
  876.     ${NSD_SetImage} $R0 $PLUGINSDIR\beijing.bmp $ImageHandle

  877.                 ;这里是给进度条贴图
  878.     FindWindow $R2 "#32770" "" $HWNDPARENT
  879.     GetDlgItem $5 $R2 1004
  880.           SkinProgress::Set $5 "$PLUGINSDIR\Progress.bmp" "$PLUGINSDIR\ProgressBar.bmp"

  881. FunctionEnd

  882. Function un.Page.6
  883.     GetDlgItem $0 $HWNDPARENT 1
  884.     ShowWindow $0 ${SW_HIDE}
  885.     GetDlgItem $0 $HWNDPARENT 2
  886.     ShowWindow $0 ${SW_HIDE}
  887.     GetDlgItem $0 $HWNDPARENT 3
  888.     ShowWindow $0 ${SW_HIDE}
  889.    
  890.     nsDialogs::Create 1044
  891.     Pop $0
  892.     ${If} $0 == error
  893.         Abort
  894.     ${EndIf}
  895.     SetCtlColors $0 ""  transparent ;背景设成透明

  896.     ${NSW_SetWindowSize} $0 498 373 ;改变窗体大小

  897.     ${NSD_CreateLabel} 25u 8u 150u 9u "${PRODUCT_NAME} 卸载"
  898.     Pop $2
  899.     SetCtlColors $2 666666  transparent ;背景设成透明

  900.     ${NSD_CreateLabel} 10% 25% 250u 15u '"${PRODUCT_NAME}"卸载完成!'
  901.     Pop $2
  902.     SetCtlColors $2 ""  transparent ;背景设成透明
  903.     CreateFont $1 "宋体" "11" "700"
  904.     SendMessage $2 ${WM_SETFONT} $1 0

  905.     ${NSD_CreateLabel} 10% 31% 250u 12u "${PRODUCT_NAME}已从您的电脑中成功移除,请单击【完成】。"
  906.     Pop $2
  907.     SetCtlColors $2 666666  transparent ;背景设成透明

  908.     ;完成按钮
  909.     ${NSD_CreateButton} 416 339 72 24 "完成"
  910.     Pop $2
  911.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_btn.bmp $2
  912.     GetFunctionAddress $3 un.onClickend
  913.     SkinBtn::onClick $2 $3

  914.     ;最小化按钮
  915.     ${NSD_CreateButton} 434 1 31 18 ""
  916.     Pop $0
  917.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_mini.bmp $0
  918.     GetFunctionAddress $3 un.onClickmini
  919.     SkinBtn::onClick $0 $3

  920.     ;关闭按钮
  921.     ${NSD_CreateButton} 465 1 31 18 ""
  922.     Pop $0
  923.     SkinBtn::Set /IMGID=$PLUGINSDIR\btn_clos.bmp $0
  924.     GetFunctionAddress $3 un.onClickclos
  925.     SkinBtn::onClick $0 $3
  926.     EnableWindow $0 0

  927.     ;贴背景大图
  928.     ${NSD_CreateBitmap} 0 0 100% 100% ""
  929.     Pop $BGImage
  930.     ${NSD_SetImage} $BGImage $PLUGINSDIR\beijing.bmp $ImageHandle
  931.     GetFunctionAddress $0 un.onGUICallback
  932.     WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
  933.     nsDialogs::Show

  934. FunctionEnd


  935. Function un.Page.7

  936. FunctionEnd


  937. Function un.onInit
  938.     InitPluginsDir
  939.     File `/ONAME=$PLUGINSDIR\BeiJing.bmp` `images\BeiJing.bmp`
  940.     File `/oname=$PLUGINSDIR\btn_clos.bmp` `images\clos.bmp`
  941.     File `/oname=$PLUGINSDIR\btn_mini.bmp` `images\mini.bmp`
  942.     File `/oname=$PLUGINSDIR\btn_in.bmp` `images\in.bmp`
  943.     File `/oname=$PLUGINSDIR\btn_btn.bmp` `images\btn.bmp`

  944.                 ;进度条皮肤
  945.           File `/oname=$PLUGINSDIR\Progress.bmp` `images\Progress.bmp`
  946.           File `/oname=$PLUGINSDIR\ProgressBar.bmp` `images\ProgressBar.bmp`

  947.     SkinBtn::Init "$PLUGINSDIR\btn_btn.bmp"
  948.     SkinBtn::Init "$PLUGINSDIR\btn_in.bmp"
  949.     SkinBtn::Init "$PLUGINSDIR\btn_mini.bmp"
  950.                 SkinBtn::Init "$PLUGINSDIR\btn_clos.bmp"
  951. FunctionEnd

  952. Function un.onGUIInit
  953.     ;消除边框
  954.     System::Call `user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0`
  955.     ;隐藏一些既有控件
  956.     GetDlgItem $0 $HWNDPARENT 1034
  957.     ShowWindow $0 ${SW_HIDE}
  958.     GetDlgItem $0 $HWNDPARENT 1035
  959.     ShowWindow $0 ${SW_HIDE}
  960.     GetDlgItem $0 $HWNDPARENT 1036
  961.     ShowWindow $0 ${SW_HIDE}
  962.     GetDlgItem $0 $HWNDPARENT 1037
  963.     ShowWindow $0 ${SW_HIDE}
  964.     GetDlgItem $0 $HWNDPARENT 1038
  965.     ShowWindow $0 ${SW_HIDE}
  966.     GetDlgItem $0 $HWNDPARENT 1039
  967.     ShowWindow $0 ${SW_HIDE}
  968.     GetDlgItem $0 $HWNDPARENT 1256
  969.     ShowWindow $0 ${SW_HIDE}
  970.     GetDlgItem $0 $HWNDPARENT 1028
  971.     ShowWindow $0 ${SW_HIDE}

  972.     ${NSW_SetWindowSize} $HWNDPARENT 498 373 ;改变主窗体大小
  973.     System::Call User32::GetDesktopWindow()i.R0
  974.     ;圆角
  975.     System::Alloc 16
  976.           System::Call user32::GetWindowRect(i$HWNDPARENT,isR0)
  977.           System::Call *$R0(i.R1,i.R2,i.R3,i.R4)
  978.           IntOp $R3 $R3 - $R1
  979.           IntOp $R4 $R4 - $R2
  980.           System::Call gdi32::CreateRoundRectRgn(i0,i0,iR3,iR4,i4,i4)i.r0
  981.           System::Call user32::SetWindowRgn(i$HWNDPARENT,ir0,i1)
  982.           System::Free $R0

  983. FunctionEnd

  984. ;处理无边框移动
  985. Function un.onGUICallback
  986.   ${If} $MSG = ${WM_LBUTTONDOWN}
  987.     SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
  988.   ${EndIf}
  989. FunctionEnd

  990. #------------------------------------------
  991. #最小化代码
  992. #------------------------------------------
  993. Function un.onClickmini
  994. System::Call user32::CloseWindow(i$HWNDPARENT) ;最小化
  995. FunctionEnd

  996. #------------------------------------------
  997. #关闭代码
  998. #------------------------------------------
  999. Function un.onClickclos
  1000. SendMessage $hwndparent ${WM_CLOSE} 0 0  ;关闭
  1001. FunctionEnd

  1002. #------------------------------------------
  1003. #卸载完成页使用独立区段方便操作,如打开某个网页
  1004. #------------------------------------------
  1005. Function un.onClickend
  1006. SendMessage $hwndparent ${WM_CLOSE} 0 0
  1007. FunctionEnd

  1008. ;处理页面跳转的命令
  1009. Function un.RelGotoPage
  1010.   IntCmp $R9 0 0 Move Move
  1011.     StrCmp $R9 "X" 0 Move
  1012.       StrCpy $R9 "120"
  1013.   Move:
  1014.   SendMessage $HWNDPARENT "0x408" "$R9" ""
  1015. FunctionEnd

  1016. Function un.onClickins
  1017.   StrCpy $R9 1 ;Goto the next page
  1018.   Call un.RelGotoPage
  1019.   Abort
  1020. FunctionEnd

复制代码

全额附件下载
游客,本帖隐藏的内容需要积分高于 500 才可浏览,您当前积分为 0


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 15:39 , Processed in 0.116096 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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