nsis访问php,NSIS学习笔记
NSIS学习笔记
1:定义常量
!ifndef LIEYAN_DLL
!define LIEYAN_DLL "LieYan.dll"
!endif
2:定义变量
Var CHANNEL ;渠道号
3:静默安装、卸载
SilentUninstall silent(normal)
SilentInstall silent(normal)
4:MUI_PAGE_DIRECTORY自定义文字
!insertmacro MUI_PAGE_DIRECTORY
DirText "安装程序将安装 $(^NameDA) 在下列文件夹。要安装到不同文件夹,单击 [浏览(B)] 并选择其他的文件夹。 $_CLICK"
5:Finish page运行程序
; Finish page
!define MUI_FINISHPAGE_RUN_TEXT "运行游戏"
!define MUI_FINISHPAGE_RUN "$INSTDIR\Logger.exe" "$INSTDIR\LieYan.dll" 2
!define MUI_FINISHPAGE_RUN_FUNCTION .gamestarts
!insertmacro MUI_PAGE_FINISH #都是完成页面,但写法不同
6:获取安装程序的文件名
!insertmacro GetExeName ;获取安装程序的文件名
${GetExeName} $ExeAddr
Push "$ExeAddr"
7:往目标文件中写入字段
WriteINIStr "$INSTDIR\logger.ini" "Option" "Exename" "$ExeAddr"
8:从目标文件中读出字段
ReadINIStr "$ExeAddr" "$INSTDIR\logger.ini" "Option" "Exename"
9:获取系统时间
System::Alloc 16
System::Call kernel32::GetLocalTime(isR0)
System::Call *$R0(&i2.R1,&i2.R2,&i2,&i2.R4,&i2.R5,&i2.R6,&i2.R7,&i2.R8)
System::Free $R0
WriteINIStr "$INSTDIR\logger.ini" "Option" "Installtime" "$R1/$R2/$R4/$R5:$R6:$R7"
inetc::post "Uninstalltime=$R1/$R2/$R4/$R5:$R6:$R7"\
"http://www.9377.com/api/client_data_receive.php?Uninstalltime=$R1/$R2/$R4/$R5:$R6:$R7" \
"$INSTDIR\logger.htm"
11:字段获取保存
${GetExeName} $ExeAddr
Push "$ExeAddr"
StrCpy $CHANNEL $ExeAddr "4" "-8" #获取字段后面八个字符的前4个字符
Push "$CHANNEL"
12:创建互斥防止重复运行
InitPluginsDir
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "WinSnap_installer") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION|MB_OK "$(^Name) 安装程序已经在运行!"
Abort
13:判断文件是否已经存在,并相应作出处理
IfFileExists "$INSTDIR\uninstall.exe" 0 +4
MessageBox MB_OK "系统检测到您已经安装了烈焰,现会对原版本进行静默卸载,请点击确定后再运行安装程序。"
ExecWait '"$INSTDIR\uninstall.exe" /S '
Quit
Goto End
End:
14:程序正在运行
Function un.onInit
FindProcDLL::FindProc "$INSTDIR\logger.exe"
Pop $0
IntCmp $0 1 0 no_run
MessageBox MB_ICONSTOP "${RES_NAME}正在运行,请先关闭程序!"
Quit
no_run:
FunctionEnd
15:获取ip地址
Section
Call fip
WriteINIStr "$INSTDIR\logger.ini" "Option" "IP" "$findip"
SectionEnd
Function fip
inetc::get /SILENT "http://iframe.ip138.com/ic.asp" "$PLUGINSDIR\ip.txt"
${LineFind} "$PLUGINSDIR\ip.txt" "$PLUGINSDIR\ip.txt" "-1:-1" "getip"
FunctionEnd
Function getip
${WordFind2X} $R9 "[" "]" "-1" $R9
DetailPrint $R9
StrCpy $findip $R9
FunctionEnd
16:获取MAC
Section
Call .GetMacAddress
WriteINIStr "$INSTDIR\logger.ini" "Option" "MAC" "$MacAddress"
SectionEnd
Function .GetMacAddress
System::Call Iphlpapi::GetAdaptersInfo(i,*i.r0)
System::Alloc $0
Pop $1
System::Call Iphlpapi::GetAdaptersInfo(ir1r2,*ir0)i.r0
StrCmp $0 0 0 finish
loop:
StrCmp $2 0 finish
System::Call '*$2(i.r2,i,&t260.s,&t132.s,i.r5)i.r0'
IntOp $3 403 + $5
StrCpy $6 ""
${For} $4 404 $3
IntOp $7 $0 + $4
System::Call '*$7(&i1.r7)'
IntFmt $7 "%02X" $7
StrCpy $6 "$6$7"
StrCmp $4 $3 +2
StrCpy $6 "$6-"
${Next}
StrCpy $MacAddress $6
Goto loop
finish:
System::Free $1
FunctionEnd
17:安装完成,运行程序,刷新图标
Function .onInstSuccess
Exec '"$INSTDIR\Logger.exe" "$INSTDIR\LieYan.dll"' #注意引号
${RefreshShellIcons}
FunctionEnd
18:桌面lnk,exe加dll运行的情况,注意引号和参数
CreateShortCut "$DESKTOP\${RES_NAME}.lnk" "$INSTDIR\logger.exe" '"$INSTDIR\${LIEYAN_DLL}"' "$INSTDIR\${LIEYAN_DLL}" 0
19:卸载程序卸载不完全问题
注意卸载的先后顺序,合理使用sleep
Delete "$DESKTOP\${RES_NAME}.lnk" #桌面图标动画效果,需先删除才能删除exe和dll
Sleep 1000 #注意sleep,待删除完成再执行下一步动作
RMDir /r "$SMPROGRAMS\${RES_NAME}"
Delete "$SMPROGRAMS\${RES_NAME}\*.*"
Sleep 1000
Delete "$INSTDIR\*.*"
RMDir /r "$INSTDIR"
20:开始菜单启动图标
CreateShortCut "$SMPROGRAMS\${RES_NAME}\${RES_NAME}.lnk" "$INSTDIR\logger.exe" '"$INSTDIR\${LIEYAN_DLL}"' "$INSTDIR\${LIEYAN_DLL}" 0 #注意路径设置,否则无法实现功能
21:静默运行程序
ExecWait '"$INSTDIR\uninstall.exe" /S ' #/S #Exec
nsis访问php,NSIS学习笔记相关推荐
- unity3D-游戏/AR/VR在线就业班 C#入门访问修饰符学习笔记
unity3D-游戏/AR/VR在线就业班 C#入门访问修饰符学习笔记 点击观看视频学习:http://edu.csdn.NET/lecturer/107 访问修饰符 public --公共的,在哪里 ...
- android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...
Android学习笔记-保存文件(Saving Files) Android设备有两种文件存储区域: 内部存储和外部存储 ("internal" and "externa ...
- c语言普通变量间接访问,C语言学习笔记-指针
野指针问题 野指针是没有指向地址的指针,也就是该指针指向的地址是随机的. 因为指针的指向地址是随机的,所以很有可能指向不可访问的弟子,导致程序崩溃,或者访问了不该访问的地址,导致影响其他功能使用 为了 ...
- nginx 访问图片404_Nginx学习笔记(二、Nginx配置文件详解) - 被猪附身的人
nginx的启停控制 1.Nginx信号控制: nginx中可以通过发送信号的方式来控制服务器的启停等,但要达成这些操作首先要知道nginx的PID. 获取pid的方式有两种: 利用linux的ps命 ...
- 高并发访问请求合并学习笔记
用户请求 -- 网关 -- 微服务 -- db 这样的方式对高并发的请求的线程快速的相应,因为数据库的每秒执行的事务数有限,很容易出现慢查询,此时数据库就成为了第一个瓶颈 为了解决这个问题,有两种策略 ...
- 【信息安全案例】——身份与访问安全(学习笔记)
- 方舟编译器学习笔记分类与导读
方舟学习笔记系列,从方舟开源到现在,已经写了50多篇,保证了每天一篇的更新频率.篇数增加之后,文章的分类以及文章之间的关系,逐渐变得复杂起来.本文将对已发表的学习笔记系列进行分类和导读,方便读者更好的 ...
- NSIS学习笔记(转)
转自:http://blog.csdn.net/lee353086/article/details/45919901 NSIS学习笔记 Date:2015-05-20 Author:kagula En ...
- nsis 学习笔记(2)
nsis 学习笔记(2) 空间 Delete "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk" Delete "$SMPROGRAMS\裝箱大師企業版 ...
最新文章
- Android性能优化面试题,与性能优化相关面试题 - 与IPC机制相关面试题 - 《Android面试宝典》 - 书栈网 · BookStack...
- 【每日邮报】利物浦对阵阿森纳能走出牢狱要谢天谢地谢Peter
- GitHub如何下载单个文件夹
- Linux设备驱动之UART驱动结构
- 2015.5.28 面试题1:赋值运算符函数
- sudo rosdep init ERROR: cannot download default sources list from: https://raw.githubusercontent.com
- python中的类属性和实例属性
- 李善兰如何用汉字写公式 | 晚清高数课本长什么样?
- 二叉树遍历之先序遍历算法(非递归、递归)入门详解
- react小书没读完的记录
- 按键精灵手机助手之实战篇(三)通用方法
- 程序员的百宝箱:提升工作效率的七大神器
- 使用ImageIO压缩图片
- r语言html乱码,R语言:读入txt文件中文文本出现乱码解决方案
- vue调用手机扫描二维码
- web常见的屏幕尺寸
- Win32多线程之被激发的对象(Signaled Objects)
- Python报错:ImportError: attempted relative import with no known parent package
- 超级马里奥游戏开发一(游戏基本界面)
- char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p
热门文章
- Linux查看系统日志
- 学习股票知识应该怎样开始
- influxdb时序数据库修改数据保存时间
- 爬取新浪微博用户信息及微博内容并进行可视化分析
- 重定向sendredirect(URL)和请求转发requestDispatcher(servlet).forword(req,resp)
- java的深浅拷贝_Java 深浅拷贝
- Java中inputStream转字符串
- 都市霓虹灯设计欣赏图鉴。
- 二级联动省市mysql数据库_「zxfy」jQuery+php+mysql,轻松实现ajax无刷新省市二级联动 - seo实验室...
- jquery validate 校验