NSIS总脚本代码参考
来源:互联网 发布:百卓优采软件 编辑:程序博客网 时间:2024/05/17 17:42
NSIS总脚本代码参考
注:参考博客:http://blog.csdn.net/taiyang1987912/article/details/40506439Var MSGVar DialogVar BGImageVar MiddleImage Var ImageHandleVar Btn_NextVar Btn_CancelVar Btn_AgreementVar Bool_LicenseVar Txt_LicenseVar Btn_CloseVar WarningFormVar Ck_ShortCutVar Bool_ShortCutVar Lbl_ShortCutVar Ck_AutoRunVar Bool_AutoRunVar Lbl_AutoRunVar Ck_FinishPageVar Bool_FinishPageVar Lbl_FinishPageVar Btn_InstallVar Txt_BrowserVar Btn_BrowserVar Btn_DetailsPrintVar UDetailsPrint ;详细输入文字Var Txt_DetailsPrint ;详细文字框控件Var Bool_DetailsPrint ;记录是否显示详细信息文本框Var Lbl_SumaryVar PB_ProgressBarVar WebImg ;网页控件Var Ck_WeiboVar Bool_WeiboVar Lbl_WeiboVar Btn_Complete;---------------------------全局编译脚本预定义的常量-----------------------------------------------------!define EM_BrandingText "testtest"; MUI 预定义常量!define MUI_ABORTWARNING;安装图标的路径名字!define MUI_ICON "images\fav.ico";卸载图标的路径名字!define MUI_UNICON "images\fav.ico";产品协议书的路径名字;!define MUI_PAGE_LICENSE_RTY "license\license.rtf"!define EM_OUTFILE_NAME "test.exe";---------------------------设置软件压缩类型(也可以通过外面编译脚本控制)------------------------------------SetCompressor lzmaBrandingText "${EM_BrandingText}"SetCompress forceXPStyle on; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------!include "MUI2.nsh"!include "WinCore.nsh";引用文件函数头文件!include "FileFunc.nsh"!include "nsWindows.nsh"!include "LoadRTF.nsh"!include "WinMessages.nsh"!define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit;自定义页面Page custom WelcomePagePage custom InstallationPagePage custom LoadingPagePage custom CompletePage; 许可协议页面!define MUI_LICENSEPAGE_CHECKBOX; 安装目录选择页面!insertmacro MUI_PAGE_DIRECTORY; 安装过程页面!insertmacro MUI_PAGE_INSTFILES; 安装完成页面!insertmacro MUI_PAGE_FINISH; 安装卸载过程页面!insertmacro MUI_UNPAGE_INSTFILES; 安装界面包含的语言设置!insertmacro MUI_LANGUAGE "SimpChinese";------------------------------------------------------MUI 现代界面定义以及函数结束------------------------;应用程序显示名字Name "test";应用程序输出路径OutFile "${EM_OUTFILE_NAME}"InstallDir "$PROGRAMFILES\test"Function .onInit InitPluginsDir File `/ONAME=$PLUGINSDIR\bg.bmp` `images\bg.bmp` File `/ONAME=$PLUGINSDIR\quit.bmp` `images\quit.bmp` File `/ONAME=$PLUGINSDIR\select.bmp` `images\select.bmp` File `/ONAME=$PLUGINSDIR\welcome.bmp` `images\welcome.bmp` File `/ONAME=$PLUGINSDIR\btn_next.bmp` `images\btn_next.bmp` File `/oname=$PLUGINSDIR\btn_agreement1.bmp` `images\btn_agreement1.bmp` File `/oname=$PLUGINSDIR\btn_agreement2.bmp` `images\btn_agreement2.bmp` File `/oname=$PLUGINSDIR\license.rtf` `license\license.rtf` File `/oname=$PLUGINSDIR\btn_close.bmp` `images\btn_close.bmp` File `/oname=$PLUGINSDIR\btn_cancel.bmp` `images\btn_cancel.bmp` File `/oname=$PLUGINSDIR\checkbox1.bmp` `images\checkbox1.bmp` File `/oname=$PLUGINSDIR\checkbox2.bmp` `images\checkbox2.bmp` File `/oname=$PLUGINSDIR\btn_quit.bmp` `images\btn_quit.bmp` File `/oname=$PLUGINSDIR\btn_install.bmp` `images\btn_install.bmp` File `/oname=$PLUGINSDIR\btn_change.bmp` `images\btn_change.bmp` File `/oname=$PLUGINSDIR\index.htm` `images\index.htm` File `/oname=$PLUGINSDIR\loading_pic1.bmp` `images\loading_pic1.bmp` File `/oname=$PLUGINSDIR\loading_pic2.bmp` `images\loading_pic2.bmp` File `/oname=$PLUGINSDIR\loading_pic3.bmp` `images\loading_pic3.bmp` File `/oname=$PLUGINSDIR\loading_pic4.bmp` `images\loading_pic4.bmp` File `/oname=$PLUGINSDIR\installation.bmp` `images\installation.bmp` File `/oname=$PLUGINSDIR\loading1.bmp` `images\loading1.bmp` File `/oname=$PLUGINSDIR\loading2.bmp` `images\loading2.bmp` File `/oname=$PLUGINSDIR\btn_complete.bmp` `images\btn_complete.bmp` File `/oname=$PLUGINSDIR\success.bmp` `images\success.bmp` SkinBtn::Init "$PLUGINSDIR\btn_next.bmp" SkinBtn::Init "$PLUGINSDIR\btn_agreement1.bmp" SkinBtn::Init "$PLUGINSDIR\btn_agreement2.bmp" SkinBtn::Init "$PLUGINSDIR\btn_close.bmp" SkinBtn::Init "$PLUGINSDIR\btn_cancel.bmp" SkinBtn::Init "$PLUGINSDIR\checkbox1.bmp" SkinBtn::Init "$PLUGINSDIR\checkbox2.bmp" SkinBtn::Init "$PLUGINSDIR\btn_quit.bmp" SkinBtn::Init "$PLUGINSDIR\btn_install.bmp" SkinBtn::Init "$PLUGINSDIR\btn_change.bmp" SkinBtn::Init "$PLUGINSDIR\btn_complete.bmp"FunctionEndFunction onGUIInit ;消除边框 System::Call `user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0` ;隐藏一些既有控件 GetDlgItem $0 $HWNDPARENT 1034 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1035 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1036 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1037 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1038 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1039 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1256 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 1028 ShowWindow $0 ${SW_HIDE}FunctionEnd;处理无边框移动Function onGUICallback ${If} $MSG = ${WM_LBUTTONDOWN} SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0 ${EndIf}FunctionEndFunction onWarningGUICallback ${If} $MSG = ${WM_LBUTTONDOWN} SendMessage $WarningForm ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0 ${EndIf}FunctionEnd;协议按钮事件Function onClickAgreement ${IF} $Bool_License == 1 ShowWindow $Txt_License ${SW_HIDE} ShowWindow $MiddleImage ${SW_SHOW} IntOp $Bool_License $Bool_License - 1 StrCpy $1 $Btn_Agreement Call SkinBtn_Agreement1 ${ELSE} ShowWindow $Txt_License ${SW_SHOW} ShowWindow $MiddleImage ${SW_HIDE} IntOp $Bool_License $Bool_License + 1 StrCpy $1 $Btn_Agreement Call SkinBtn_Agreement2 ${EndIf}FunctionEnd;-----------------------------------------皮肤贴图方法----------------------------------------------------Function SkinBtn_Next SkinBtn::Set /IMGID=$PLUGINSDIR\btn_next.bmp $1FunctionEndFunction SkinBtn_Agreement1 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_agreement1.bmp $1FunctionEndFunction SkinBtn_Agreement2 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_agreement2.bmp $1FunctionEndFunction SkinBtn_Close SkinBtn::Set /IMGID=$PLUGINSDIR\btn_close.bmp $1FunctionEndFunction SkinBtn_Cancel SkinBtn::Set /IMGID=$PLUGINSDIR\btn_cancel.bmp $1FunctionEndFunction SkinBtn_Checked SkinBtn::Set /IMGID=$PLUGINSDIR\checkbox2.bmp $1FunctionEndFunction SkinBtn_UnChecked SkinBtn::Set /IMGID=$PLUGINSDIR\checkbox1.bmp $1FunctionEndFunction SkinBtn_Quit SkinBtn::Set /IMGID=$PLUGINSDIR\btn_quit.bmp $1FunctionEndFunction SkinBtn_Install SkinBtn::Set /IMGID=$PLUGINSDIR\btn_install.bmp $1FunctionEndFunction SkinBtn_Browser SkinBtn::Set /IMGID=$PLUGINSDIR\btn_change.bmp $1FunctionEndFunction SkinBtn_DetailsPrint1 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_installlist1.bmp $1FunctionEndFunction SkinBtn_DetailsPrint2 SkinBtn::Set /IMGID=$PLUGINSDIR\btn_installlist2.bmp $1FunctionEndFunction SkinBtn_Complete SkinBtn::Set /IMGID=$PLUGINSDIR\btn_complete.bmp $1FunctionEndFunction OnClickQuitOK Call onClickCloseFunctionEndFunction OnClick_CheckShortCut ${IF} $Bool_ShortCut == 1 IntOp $Bool_ShortCut $Bool_ShortCut - 1 StrCpy $1 $Ck_ShortCut Call SkinBtn_UnChecked ${ELSE} IntOp $Bool_ShortCut $Bool_ShortCut + 1 StrCpy $1 $Ck_ShortCut Call SkinBtn_Checked ${EndIf}FunctionEndFunction OnClick_CheckAutoRun ${IF} $Bool_AutoRun == 1 IntOp $Bool_AutoRun $Bool_AutoRun - 1 StrCpy $1 $Ck_AutoRun Call SkinBtn_UnChecked ${ELSE} IntOp $Bool_AutoRun $Bool_AutoRun + 1 StrCpy $1 $Ck_AutoRun Call SkinBtn_Checked ${EndIf}FunctionEndFunction OnClick_CheckFinishPage ${IF} $Bool_FinishPage == 1 IntOp $Bool_FinishPage $Bool_FinishPage - 1 StrCpy $1 $Ck_FinishPage Call SkinBtn_UnChecked ${ELSE} IntOp $Bool_FinishPage $Bool_FinishPage + 1 StrCpy $1 $Ck_FinishPage Call SkinBtn_Checked ${EndIf}FunctionEnd;点击右上角关闭按钮Function onClickClose FindProcDLL::FindProc "test.exe" Sleep 500 Pop $R0 ${If} $R0 != 0 KillProcDLL::KillProc "test.exe" ${EndIf}FunctionEnd;处理页面跳转的命令Function RelGotoPage IntCmp $R9 0 0 Move Move StrCmp $R9 "X" 0 Move StrCpy $R9 "120" Move: SendMessage $HWNDPARENT "0x408" "$R9" ""FunctionEnd;下一步按钮事件Function onClickNext StrCpy $R9 1 ;Goto the next page Call RelGotoPage AbortFunctionEnd;点击安装按钮Function OnClick_Install StrCpy $R9 1 ;Goto the next page Call RelGotoPageFunctionEndFunction OnClickQuitCancel ${NSW_DestroyWindow} $WarningForm EnableWindow $hwndparent 1 BringToFrontFunctionEndFunction onCancel IsWindow $WarningForm Create_End !define Style ${WS_VISIBLE}|${WS_OVERLAPPEDWINDOW} ${NSW_CreateWindowEx} $WarningForm $hwndparent ${ExStyle} ${Style} "" 1018 ${NSW_SetWindowSize} $WarningForm 349 184 EnableWindow $hwndparent 0 System::Call `user32::SetWindowLong(i$WarningForm,i${GWL_STYLE},0x9480084C)i.R0` ${NSW_CreateButton} 148 122 88 25 '' Pop $R0 StrCpy $1 $R0 Call SkinBtn_Quit ${NSW_OnClick} $R0 OnClickQuitOK ${NSW_CreateButton} 248 122 88 25 '' Pop $R0 StrCpy $1 $R0 Call SkinBtn_Cancel ${NSW_OnClick} $R0 OnClickQuitCancel ${NSW_CreateBitmap} 0 0 100% 100% "" Pop $BGImage ${NSW_SetImage} $BGImage $PLUGINSDIR\quit.bmp $ImageHandle GetFunctionAddress $0 onWarningGUICallback WndProc::onCallback $BGImage $0 ;处理无边框窗体移动 ${NSW_CenterWindow} $WarningForm $hwndparent ${NSW_Show} Create_End: ShowWindow $WarningForm ${SW_SHOW}FunctionEnd;更改目录事件Function OnChange_DirRequest ;Pop $0 ;System::Call "user32::GetWindowText($Txt_Browser,t.r0,i${NSIS_MAX_STRLEN})" ;StrCpy $INSTDIR $0FunctionEndFunction OnClick_BrowseButton Pop $0 Push $INSTDIR ; input string "C:\Program Files\ProgramName" Call GetParent Pop $R0 ; first part "C:\Program Files" Push $INSTDIR ; input string "C:\Program Files\ProgramName" Push "\" ; input chop char Call GetLastPart Pop $R1 ; last part "ProgramName" nsDialogs::SelectFolderDialog "请选择 $R0 安装的文件夹:" "$R0" Pop $0 ${If} $0 == "error" # returns 'error' if 'cancel' was pressed? Return ${EndIf} ${If} $0 != "" StrCpy $INSTDIR "$0\$R1" system::Call `user32::SetWindowText(i $Txt_Browser, t "$INSTDIR")` ${EndIf}FunctionEnd; Usage:; Push "C:\Program Files\Directory\Whatever"; Call GetParent; Pop $R0 ; $R0 equal "C:\Program Files\Directory";得到选中目录用于拼接安装程序名称Function GetParent Exch $R0 ; input string Push $R1 Push $R2 Push $R3 StrCpy $R1 0 StrLen $R2 $R0 loop: IntOp $R1 $R1 + 1 IntCmp $R1 $R2 get 0 get StrCpy $R3 $R0 1 -$R1 StrCmp $R3 "\" get Goto loop get: StrCpy $R0 $R0 -$R1 Pop $R3 Pop $R2 Pop $R1 Exch $R0 ; output stringFunctionEnd; Usage:; Push $INSTDIR ; input string "C:\Program Files\ProgramName"; Push "\" ; input chop char; Call GetLastPart; Pop $R1 ; last part "ProgramName";截取选中目录Function GetLastPart Exch $0 ; chop char Exch Exch $1 ; input string Push $2 Push $3 StrCpy $2 0 loop: IntOp $2 $2 - 1 StrCpy $3 $1 1 $2 StrCmp $3 "" 0 +3 StrCpy $0 "" Goto exit2 StrCmp $3 $0 exit1 Goto loop exit1: IntOp $2 $2 + 1 StrCpy $0 $1 "" $2 exit2: Pop $3 Pop $2 Pop $1 Exch $0 ; output stringFunctionEnd;详细安装事件Function onClickDetailsPrint ${IF} $Bool_DetailsPrint == 1 ShowWindow $WebImg ${SW_SHOW} ShowWindow $Txt_DetailsPrint ${SW_HIDE} IntOp $Bool_DetailsPrint $Bool_DetailsPrint - 1 StrCpy $1 $Btn_DetailsPrint Call SkinBtn_DetailsPrint1 ${ELSE} ShowWindow $WebImg ${SW_HIDE} ShowWindow $Txt_DetailsPrint ${SW_SHOW} IntOp $Bool_DetailsPrint $Bool_DetailsPrint + 1 StrCpy $1 $Btn_DetailsPrint Call SkinBtn_DetailsPrint2 ${EndIf}FunctionEndFunction NSD_TimerFun GetFunctionAddress $0 NSD_TimerFun nsDialogs::KillTimer $0 !if 1 ;是否在后台运行,1有效 GetFunctionAddress $0 InstallationMainFun BgWorker::CallAndWait !else Call InstallationMainFun !endifFunctionEndFunction OnClick_CheckWeibo ${IF} $Bool_Weibo == 1 IntOp $Bool_Weibo $Bool_Weibo - 1 StrCpy $1 $Ck_Weibo Call SkinBtn_UnChecked ${ELSE} IntOp $Bool_Weibo $Bool_Weibo + 1 StrCpy $1 $Ck_Weibo Call SkinBtn_Checked ${EndIf}FunctionEnd;点击最后完成Function onClickComplete ;判断是否添加桌面快捷方式 ${If} $Bool_ShortCut == 1 ;CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\test.exe" ${EndIf} ;判断是否开机运行程序 ${If} $Bool_AutoRun == 1 ;CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTE_NAME}" ;CreateShortCut "$SMSTARTUP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTE_NAME}" ${EndIf} ;判断是否打开网站 ${If} $Bool_FinishPage == 1 ExecShell open "http://www.pylife.net" ${EndIf} ;判断是否立即运行程序 ${If} $Bool_Weibo == 1 ExecShell open "http://weibo.com/pylife" ShowWindow $HWNDPARENT ${SW_HIDE} GetFunctionAddress $0 onClickClose BgWorker::CallAndWait ${ELSE} ShowWindow $HWNDPARENT ${SW_HIDE} Call onClickClose ${EndIf}FunctionEndFunction InstallationMainFun SendMessage $PB_ProgressBar ${PBM_SETRANGE32} 0 100 ;总步长为顶部定义值 SendMessage $PB_ProgressBar ${PBM_SETPOS} 10 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 20 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 30 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 40 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 50 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 60 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 70 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 80 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 90 0 Sleep 1000 SendMessage $PB_ProgressBar ${PBM_SETPOS} 100 0 ShowWindow $Btn_Next ${SW_SHOW} ShowWindow $Btn_Install ${SW_HIDE} EnableWindow $Btn_Cancel 0FunctionEndFunction WelcomePage GetDlgItem $0 $HWNDPARENT 1 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 2 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 3 ShowWindow $0 ${SW_HIDE} nsDialogs::Create 1044 Pop $0 ${If} $0 == error Abort ${EndIf} SetCtlColors $0 "" transparent ;背景设成透明 ${NSW_SetWindowSize} $HWNDPARENT 513 354 ;改变窗体大小 ${NSW_SetWindowSize} $0 513 354 ;改变Page大小 ;读取RTF的文本框 nsDialogs::CreateControl "RichEdit20A" \ ${ES_READONLY}|${WS_VISIBLE}|${WS_CHILD}|${WS_TABSTOP}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN} \ ${WS_EX_STATICEDGE} 5 35 501 216 '' Pop $Txt_License ${LoadRTF} '$PLUGINSDIR\license.rtf' $Txt_License ShowWindow $Txt_License ${SW_HIDE} ;下一步 ${NSD_CreateButton} 320 315 88 25 "" Pop $Btn_Next StrCpy $1 $Btn_Next Call SkinBtn_Next GetFunctionAddress $3 onClickNext SkinBtn::onClick $1 $3 ;取消 ${NSD_CreateButton} 417 315 88 25 "" Pop $Btn_Cancel StrCpy $1 $Btn_Cancel Call SkinBtn_Cancel GetFunctionAddress $3 onCancel SkinBtn::onClick $1 $3 ;关闭按钮 ${NSD_CreateButton} 490 8 15 15 "" Pop $Btn_Close StrCpy $1 $Btn_Close Call SkinBtn_Close GetFunctionAddress $3 onCancel SkinBtn::onClick $1 $3 ;用户协议 ${NSD_CreateButton} 181 273 95 15 "" Pop $Btn_Agreement StrCpy $1 $Btn_Agreement Call SkinBtn_Agreement1 GetFunctionAddress $3 onClickAgreement SkinBtn::onClick $1 $3 StrCpy $Bool_License 0 ;初始化值为0 ;贴小图 ${NSD_CreateBitmap} 1 31 511 226 "" Pop $MiddleImage ${NSD_SetImage} $MiddleImage $PLUGINSDIR\welcome.bmp $ImageHandle ;ShowWindow $MiddleImage ${SW_HIDE} ;贴背景大图 ${NSD_CreateBitmap} 0 0 100% 100% "" Pop $BGImage ${NSD_SetImage} $BGImage $PLUGINSDIR\bg.bmp $ImageHandle GetFunctionAddress $0 onGUICallback WndProc::onCallback $BGImage $0 ;处理无边框窗体移动 nsDialogs::Show ${NSD_FreeImage} $ImageHandleFunctionEndFunction InstallationPage GetDlgItem $0 $HWNDPARENT 1 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 2 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 3 ShowWindow $0 ${SW_HIDE} nsDialogs::Create 1044 Pop $0 ${If} $0 == error Abort ${EndIf} SetCtlColors $0 "" transparent ;背景设成透明 ${NSW_SetWindowSize} $HWNDPARENT 520 350 ;改变自定义窗体大小 ${NSW_SetWindowSize} $0 520 350 ;改变自定义Page大小 ;更改目录控件创建 ${NSD_CreateDirRequest} 26 79 358 25 "$INSTDIR" Pop $Txt_Browser ${NSD_OnChange} $Txt_Browser OnChange_DirRequest ${NSD_CreateBrowseButton} 400 79 88 25 "" Pop $Btn_Browser StrCpy $1 $Btn_Browser Call SkinBtn_Browser GetFunctionAddress $3 OnClick_BrowseButton SkinBtn::onClick $1 $3 ;CheckBox选中项 ${NSD_CreateButton} 26 150 15 15 "" Pop $Ck_ShortCut StrCpy $1 $Ck_ShortCut Call SkinBtn_Checked GetFunctionAddress $3 OnClick_CheckShortCut SkinBtn::onClick $1 $3 StrCpy $Bool_ShortCut 1 ${NSD_CreateLabel} 45 151 100 15 "添加桌面快捷方式" Pop $Lbl_ShortCut SetCtlColors $Lbl_ShortCut "" transparent ;背景设成透明 ${NSD_CreateButton} 26 180 15 15 "" Pop $Ck_AutoRun StrCpy $1 $Ck_AutoRun Call SkinBtn_Checked GetFunctionAddress $3 OnClick_CheckAutoRun SkinBtn::onClick $1 $3 StrCpy $Bool_AutoRun 1 ${NSD_CreateLabel} 45 181 175 15 "开机自动运行程序" Pop $Lbl_AutoRun SetCtlColors $Lbl_AutoRun "" transparent ;背景设成透明 ${NSD_CreateButton} 26 210 15 15 "" Pop $Ck_FinishPage StrCpy $1 $Ck_FinishPage Call SkinBtn_Checked GetFunctionAddress $3 OnClick_CheckFinishPage SkinBtn::onClick $1 $3 StrCpy $Bool_FinishPage 1 ${NSD_CreateLabel} 45 211 300 15 "安装完毕后打开烂菜的网站http://www.pylife.net" Pop $Lbl_FinishPage SetCtlColors $Lbl_FinishPage "" transparent ;背景设成透明 ;安装 ${NSD_CreateButton} 320 315 88 25 "" Pop $Btn_Install StrCpy $1 $Btn_Install Call SkinBtn_Install GetFunctionAddress $3 OnClick_Install SkinBtn::onClick $1 $3 ;取消 ${NSD_CreateButton} 417 315 88 25 "" Pop $Btn_Cancel StrCpy $1 $Btn_Cancel Call SkinBtn_Cancel GetFunctionAddress $3 onCancel SkinBtn::onClick $1 $3 ;关闭按钮 ${NSD_CreateButton} 490 8 15 15 "" Pop $Btn_Close StrCpy $1 $Btn_Close Call SkinBtn_Close GetFunctionAddress $3 onCancel SkinBtn::onClick $1 $3 ;贴背景大图 ${NSD_CreateBitmap} 0 0 100% 100% "" Pop $BGImage ${NSD_SetImage} $BGImage $PLUGINSDIR\select.bmp $ImageHandle GetFunctionAddress $0 onGUICallback WndProc::onCallback $BGImage $0 ;处理无边框窗体移动 nsDialogs::Show ${NSD_FreeImage} $ImageHandleFunctionEnd;安装进度页面Function LoadingPage GetDlgItem $0 $HWNDPARENT 1 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 2 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 3 ShowWindow $0 ${SW_HIDE} nsDialogs::Create 1044 Pop $0 ${If} $0 == error Abort ${EndIf} SetCtlColors $0 "" transparent ;背景设成透明 ${NSW_SetWindowSize} $HWNDPARENT 520 350 ;改变自定义窗体大小 ${NSW_SetWindowSize} $0 520 350 ;改变自定义Page大小 ;Details输出文本框 StrCpy $UDetailsPrint "开始执行安装$\r$\nhttp://www.eastmoney.com$\r$\n" nsDialogs::CreateControl EDIT "${__NSD_Text_STYLE}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}" "${__NSD_Text_EXSTYLE}" 10 44 500 200 $UDetailsPrint Pop $Txt_DetailsPrint ShowWindow $Txt_DetailsPrint ${SW_HIDE} StrCpy $Bool_DetailsPrint 0 ;创建简要说明 ${NSD_CreateLabel} 24 243 57 20 "正在安装" Pop $Lbl_Sumary SetCtlColors $Lbl_Sumary "" transparent ;背景设成透明 ${NSD_CreateProgressBar} 24 265 474 7 "" Pop $PB_ProgressBar SkinProgress::Set $PB_ProgressBar "$PLUGINSDIR\loading2.bmp" "$PLUGINSDIR\loading1.bmp" GetFunctionAddress $0 NSD_TimerFun nsDialogs::CreateTimer $0 1 ;下一步 ${NSD_CreateButton} 320 315 88 25 "" Pop $Btn_Next StrCpy $1 $Btn_Next Call SkinBtn_Next GetFunctionAddress $3 onClickNext SkinBtn::onClick $1 $3 ShowWindow $Btn_Next ${SW_HIDE} ;安装 ${NSD_CreateButton} 320 315 88 25 "" Pop $Btn_Install StrCpy $1 $Btn_Install Call SkinBtn_Install EnableWindow $Btn_Install 0 ;取消 ${NSD_CreateButton} 417 315 88 25 "" Pop $Btn_Cancel StrCpy $1 $Btn_Cancel Call SkinBtn_Cancel GetFunctionAddress $3 onCancel SkinBtn::onClick $1 $3 EnableWindow $Btn_Cancel 0 ;关闭按钮 ${NSD_CreateButton} 490 8 15 15 "" Pop $Btn_Close StrCpy $1 $Btn_Close Call SkinBtn_Close GetFunctionAddress $3 onCancel SkinBtn::onClick $1 $3 EnableWindow $Btn_Close 0 System::Call `*(i,i,i,i)i(1,34,518,200).R0` System::Call `user32::MapDialogRect(i$HWNDPARENT,iR0)` System::Call `*$R0(i.s,i.s,i.s,i.s)` System::Free $R0 FindWindow $R0 "#32770" "" $HWNDPARENT System::Call `user32::CreateWindowEx(i,t"STATIC",in,i${DEFAULT_STYLES}|${SS_BLACKRECT},i1,i34,i518,i200,iR0,i1100,in,in)i.R0` StrCpy $WebImg $R0 WebCtrl::ShowWebInCtrl $WebImg "$PLUGINSDIR/index.htm" ;贴背景大图 ${NSD_CreateBitmap} 0 0 100% 100% "" Pop $BGImage ${NSD_SetImage} $BGImage $PLUGINSDIR\installation.bmp $ImageHandle GetFunctionAddress $0 onGUICallback WndProc::onCallback $BGImage $0 ;处理无边框窗体移动 nsDialogs::Show ${NSD_FreeImage} $ImageHandleFunctionEndFunction CompletePage GetDlgItem $0 $HWNDPARENT 1 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 2 ShowWindow $0 ${SW_HIDE} GetDlgItem $0 $HWNDPARENT 3 ShowWindow $0 ${SW_HIDE} nsDialogs::Create 1044 Pop $0 ${If} $0 == error Abort ${EndIf} SetCtlColors $0 "" transparent ;背景设成透明 ${NSW_SetWindowSize} $HWNDPARENT 520 350 ;改变自定义窗体大小 ${NSW_SetWindowSize} $0 520 350 ;改变自定义Page大小 ${NSD_CreateButton} 255 163 15 15 "" Pop $Ck_Weibo StrCpy $1 $Ck_Weibo Call SkinBtn_Checked GetFunctionAddress $3 OnClick_CheckWeibo SkinBtn::onClick $1 $3 StrCpy $Bool_Weibo 1 ${NSD_CreateLabel} 273 163 300 15 "亲,粉一下呗,http://weibo.com/pylife" Pop $Lbl_Weibo SetCtlColors $Lbl_Weibo "" transparent ;背景设成透明 ;关闭按钮 ${NSD_CreateButton} 495 10 15 15 "" Pop $Btn_Close StrCpy $1 $Btn_Close Call SkinBtn_Close GetFunctionAddress $3 onClickComplete SkinBtn::onClick $1 $3 ;完成 ${NSD_CreateButton} 417 303 88 25 "" Pop $Btn_Complete StrCpy $1 $Btn_Complete Call SkinBtn_Complete GetFunctionAddress $2 onClickComplete SkinBtn::onClick $1 $2 ;贴背景大图 ${NSD_CreateBitmap} 0 0 100% 100% "" Pop $BGImage ${NSD_SetImage} $BGImage $PLUGINSDIR\success.bmp $ImageHandle GetFunctionAddress $0 onGUICallback WndProc::onCallback $BGImage $0 ;处理无边框窗体移动 nsDialogs::Show ${NSD_FreeImage} $ImageHandleFunctionEnd
0 0
- NSIS总脚本代码参考
- NSIS附加数据库,分离数据库脚本代码
- NSIS软件打包 脚本代码详解
- nsis 脚本
- NSIS 参考链接
- NSIS-plugins参考网址
- NSIS安装MSDE2000和NET2.0脚本代码
- 分享一个单机游戏的NSIS封装包脚本代码
- NSIS安装MSDE2000和NET2.0脚本代码
- NSIS脚本详解
- nsis打包脚本
- NSIS 脚本介绍
- 全方位掌握nsis脚本
- NSIS脚本详解
- NSIS 安装脚本
- NSIS安装脚本
- NSIS脚本详解
- 编写NSIS脚本注意事项
- sort()
- 中国剩余定理
- 表达式求值
- Httpclient发送http请求
- Angular开发者指南(一)入门介绍
- NSIS总脚本代码参考
- 《Head First JAVA》学习笔记(一)
- hdu5950
- JAVA设计模式之工厂模式
- 输出错误信息与调试信息
- iOS10 不自动弹出询问是否允许使用蜂窝数据的解决方法
- Android自定义控件系列(六)—优雅的实现广告轮播图
- Socket在Android开发中的应用
- 0305作业