脚本:PPTV网络电视V2.4.3.0012
优质
小牛编辑
131浏览
2023-12-01
注:这个脚本不错,比较有借鉴意义。先来看几个图:
引用 PPTV.nsi 的内容:
SetCompressor lzma SetCompressorDictSize 32 !AddIncludeDir ".\" ;!define Project PPTV ;!include "Assoc.nsh" ;Ansifa的文件关联头文件 !include "MyUI.nsh" !define PRODUCT_NAME "PPTV网络电视" !define PRODUCT_VERSION "V2.4.3.0012" !define PAGE_BGCOLOR 0xFFFFFF Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" Caption "$(^Name) 安装 - by gfm688" OutFile "PPTV_Test.exe" Icon ".\Resource\Icon.ico" LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf" ReserveFile "${NSISDIR}\Plugins\ButtonEvent.dll" BrandingText "WWW.PPTV.COM" CheckBitmap ".\Resource\check.bmp" ComponentText "${PRODUCT_NAME}将与您的本地媒体文件建立关联,以便您用PPTV客户端打开本地文件" "勾选需要关联的文件格式:" ShowInstDetails nevershow InstallDir "$PROGRAMFILES\PPTV" DirText "“安装向导”将安装 $(^Name) 在下列文件夹。$\n$\n要安装到不同文件夹,单击 [浏览(B)] 并选择其他的文件夹。$\n$\n单击 [下一步(N)] 继续。" LicenseBkColor ${PAGE_BGCOLOR} !define WELCOMEPAGE_TEXT_TOP "${PRODUCT_NAME}是PPLive旗下全球最大的网络电视平台。$\n$\n\ 本向导将引导你完成${PRODUCT_NAME}客户端的安装。$\n\ 安装进程开始前,建议先关闭其他所有应用程序。这将允许“安装向导”更新相应的系统文件,而无需重新启动你的计算机。$\n$\n\ 单击 [下一步(N)] 继续。" !define WELCOMEPAGE_TEXT_BOTTOM "新版本特性:$\n\ 1.会员用户免广告、看专享频道,充值即享VIP尊贵体验$\n\ 2.关联本地文件,支持播放电脑中的视频文件$\n\ 3.广告策略调整,避免重复弹出,音量可以控制$\n\ 4.新增PPTV$\"一起看新鲜$\"屏保" !insertmacro MyWelcomePage PageEx license LicenseData ".\Resource\License.rtf" LicenseText "如果你接受协议中的条款,单击 [我接受(I)] 继续安装。如果你选定 [取消(C)] ,安装程序将会关闭。必须接受协议才能安装“$(^Name)”。" PageCallbacks "" LicenseShow PageExEnd Page directory "" DirShow Page instfiles "" InstShow Page components AssocPre AssocShow AssocLeave !define FINISHPAGE_TEXT_TOP "${PRODUCT_NAME} 已成功安装到你的计算机。" ;....这里定义6个函数,是在完成页面的离开函数判断CheckBox是否选中而执行的 !define FINISH_OPTION1 RunPPTVNow ;我只写了第1个测试一下,其它5个省略不写了 ;!define FINISH_OPTION2 XXXXXX ;............................. !insertmacro MyFinishPage Section ;ReserveFile /r /x ".\Resource\check.bmp" ".\Resource\*.bmp" DetailPrint "正在安装 ${PRODUCT_NAME} ..." Sleep 10 Sleep 100 Sleep 1000 SectionEnd InstType "全选" InstType "全不选" InstType "恢复默认" !macro InsertSection SEC Section "${SEC}" SEC${SEC} SectionIn 1 SectionEnd !macroend !macro DefaultSection SEC Section "${SEC}" SEC${SEC} SectionIn 1 3 SectionEnd !macroend SectionGroup /e "全部媒体文件格式" SectionGroup "Windows媒体文件" !insertmacro DefaultSection ".asf" !insertmacro DefaultSection ".wmv" !insertmacro InsertSection ".wma" SectionGroupEnd SectionGroup "Real媒体文件" !insertmacro InsertSection ".rm" !insertmacro InsertSection ".rmvb" !insertmacro InsertSection ".ra" SectionGroupEnd SectionGroup "MEEG4媒体文件" !insertmacro DefaultSection ".mp4" !insertmacro InsertSection ".m4v" !insertmacro InsertSection ".mpeg4" SectionGroupEnd SectionGroupEnd Function LicenseShow !insertmacro PAGEINIT_BASIC !insertmacro SET_PAGECTL_TEXT 1040 "按 [PgDn] 阅读“授权协议”的其余部分。" !insertmacro SET_PAGECTL_COLOR 1040 ${PAGE_TEXTCOLOR} ${PAGE_BGCOLOR} !insertmacro SET_HEADER_IMAGE "license_header.bmp" ".\Resource\license_header.bmp" !insertmacro SET_PAGECTL_COLOR 1006 0x0d839d ${PAGE_BGCOLOR} FunctionEnd Function DirShow !insertmacro PAGEINIT_BASIC !insertmacro SET_PAGECTL_COLOR 1020 ${PAGE_TEXTCOLOR} ${PAGE_BGCOLOR} !insertmacro SET_PAGECTL_COLOR 1023 ${PAGE_TEXTCOLOR} ${PAGE_BGCOLOR} !insertmacro SET_PAGECTL_COLOR 1024 ${PAGE_TEXTCOLOR} ${PAGE_BGCOLOR} !insertmacro SET_HEADER_IMAGE "directory_header.bmp" ".\Resource\directory_header.bmp" FunctionEnd Function InstShow !insertmacro PAGEINIT_BASIC !insertmacro SET_HEADER_IMAGE "instfiles_header.bmp" ".\Resource\instfiles_header.bmp" !insertmacro SET_INSTPAGE_IMAGE ".\Resource\newfeather.bmp" FunctionEnd Function AssocPre ${EnableSysMenuItem} ${SC_CLOSE} ${MF_DISABLED} GetDlgItem $0 $HWNDPARENT 2 EnableWindow $0 0 SetCurInstType 2 FunctionEnd Function AssocShow !insertmacro PAGEINIT_BASIC !insertmacro SET_PAGECTL_COLOR 1021 ${PAGE_TEXTCOLOR} ${PAGE_BGCOLOR} !insertmacro SET_HEADER_IMAGE "FileOption.bmp" ".\Resource\FileOption.bmp" !insertmacro SetButton 16002 SelectALL !insertmacro SetButton 16003 SelectNone !insertmacro SetButton 16004 SetDefault !insertmacro SET_PAGECTL_FONT 1006 "Tahoma" "9" "520" ;设置控件字体 !insertmacro SET_PAGECTL_FONT 1021 "Tahoma" "9" "520" !insertmacro SET_PAGECTL_FONT 1032 "Tahoma" "9" "520" FunctionEnd ;!define CBN_SELCHANGE 1 !macro CB_SETCURSEL item_index ;item_index: Specifies the zero-based index of the string to select. Push $R0 Push $R1 FindWindow $R0 "#32770" "" $HWNDPARENT GetDlgItem $R1 $R0 1017 SendMessage $R1 ${CB_SETCURSEL} ${item_index} 0 SendMessage $HWNDPARENT ${WM_COMMAND} 66553 $R1 ;66553 即低位是1017, 高位是CBN_SELCHANGE Pop $R1 Pop $R0 !macroend Function SelectALL !insertmacro CB_SETCURSEL 0 FunctionEnd Function SelectNone !insertmacro CB_SETCURSEL 1 FunctionEnd Function SetDefault !insertmacro CB_SETCURSEL 2 FunctionEnd !macro ExecSection_Assoc SEC_IDX EXT DESC ICO CONTENTTYPE CLSID Push $R0 SectionGetFlags ${SEC_IDX} $R0 IntOp $R0 $R0 & 1 ;第一位不变,其它位 置0 StrCmp $R0 0 +2 ;!insertmacro Assoc_Media ${ext} ${ext} ${desc} "$INSTDIR\pptv.exe" ${ico} ${ContentType} ${CLSID} MessageBox MB_ICONINFORMATION|MB_OK "${ext}" ;MessageBox测试用,实际不要的 Pop $R0 !macroend Function AssocLeave !insertmacro ExecSection_Assoc ${SEC.asf} "asf" "ASF 媒体文件" "懒得写了" "video/x-ms-asf" "{cd3afa8f-b84f-48f0-9393-7edc34128127}" !insertmacro ExecSection_Assoc ${SEC.wmv} "wmv" "懒得写了" "懒得写了" "懒得写了" "懒得写了" ;....这里放更多的ExecSection_Assoc ;System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)' !insertmacro UnsetButton 16002 !insertmacro UnsetButton 16003 !insertmacro UnsetButton 16004 FunctionEnd Function RunPPTVNow ${MessageBox2} "立即运行 PPTV网络电视......" "测试用的MsgBox" MB_ICONINFORMATION|MB_OK ;这里放运行PPTV网络电视的代码 FunctionEnd Function .onGUIInit ;InitPluginsDir SetCtlColors $HWNDPARENT "" 0xF3F8FC GetDlgItem $0 $HWNDPARENT 1044 SetCtlColors $0 "" ${PAGE_BGCOLOR} !insertmacro SHOW_PARENT_CTL 16002 0 !insertmacro SHOW_PARENT_CTL 16003 0 !insertmacro SHOW_PARENT_CTL 16004 0 GetDlgItem $0 $HWNDPARENT 1028 SetCtlColors $0 "" transparent BrandingURL::Set /NOUNLOAD "0" "114" "255" "http://www.pptv.com/" ;ButtonLinker::CreateLinker /NOUNLOAD $0 "http://www.pptv.com/" ;晕,Linker创建的链接改不了颜色 FunctionEnd Function .onGUIEnd ButtonEvent::Unload BrandingURL::Unload FunctionEnd Function .onUserAbort MessageBox MB_YESNO|MB_ICONEXCLAMATION "你确实要退出 “$(^Name)” 安装程序?" IDYES +2 Abort FunctionEnd
另存附件。