原文 NSIS常用代码整理

这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用。不定期更新哦~~~

1 ;获取操作系统盘符
2 ReadEnvStr $R0 SYSTEMDRIVE
3 ;创建log文件夹
4 CreateDirectory "$R0\log"
5 ;递归删除log文件夹
6 RMDir /r "$R0\log"
1 ;弹出Windows关机框
2 FindWindow $0 "shell_traywnd"
3 SendMessage $0 273 506 0
1 ;请求Windows帮助
2 FindWindow $0 "shell_traywnd"
3 SendMessage $0 273 503 0
1 ;一句话刷新屏幕
2 System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
1 ;打开桌面属性
2 ;...cpl,0,3'中的3可以改为
3 ;-1 主题 0 壁纸 1 屏保 2 外观 3 设置
4 Exec 'Rundll32.exe shell32.dll,Control_RunDLL Desk.cpl,0,3'  ;打开"设置"
1 ;获得安装程序所在目录
2 System::Call 'kernel32::GetCurrentDirectory(i 1024,t .R1)'
3 MessageBox MB_OK '安装程序所在目录:$R1'
4 ;或者直接使用变量
5 MessageBox MB_OK '文件名$EXEFILE,所在文件夹$EXEDIR,完整路径$EXEPATH。'
1 ;获得当前安装程序进程PID
2 System::Call 'kernel32::GetCurrentProcessId()i .R0'
3 MessageBox MB_OK '安装程序进程PID:$R0'
1 ;获得磁盘卷标
2 StrCpy $R0 "C:\"
3 System::Call 'kernel32::GetVolumeInformationA(t R0,t .R1,i 100,i .R3,i .R4,i .R5,t .R6,i 100)'
4 MessageBox MB_OK '盘符:$R0$\n卷标:$R1$\n文件格式:$R6'
1 ;设置磁盘卷标
2 StrCpy $R0 "C:\" ;盘符
3 StrCpy $R1 "系统" ;卷标
4 System::Call 'kernel32::SetVolumeLabelA(t R0,t R1)'
01 ;设置文件属性
02 StrCpy $R0 "C:\1.EXE" ;文件
03 StrCpy $R1 0x20         ;属性
04 System::Call 'kernel32::SetFileAttributesA(t R0,i 0x100)'
05 ;属性表
06 ;0x20   FILE_ATTRIBUTE_ARCHIVE,存档
07 ;0x2 FILE_ATTRIBUTE_HIDDEN,隐藏
08 ;0x80 FILE_ATTRIBUTE_NORMAL,正常
09 ;0x2000 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,不索引
10 ;0x1000 FILE_ATTRIBUTE_OFFLINE,离线
11 ;0x1    FILE_ATTRIBUTE_READONLY,只读
12 ;0x4 FILE_ATTRIBUTE_SYSTEM,系统
13 ;0x100  FILE_ATTRIBUTE_TEMPORARY,;临时属性(一般无效)
1 ;在WIN7任务栏中增加图标链接
2 SetOutPath $WINDIR
3 CreateShortcut "$DESKTOP\记事本.lnk" "$WINDIR\notepad.exe"
4 ExecShell taskbarpin "$DESKTOP\记事本.lnk"
1 ;指定在 WIN7 下安装程序需要的执行级别。
2 RequestExecutionLevel admin
1 ;安装结束后调用HTTP下载插件下载文件并运行
2 Function .onGUIEnd
3 NSISdl::download "http://www.flighty.cn/服务器文件名.exe" "本地文件名.exe"
4 Pop $R0 ;获取返回值
5   StrCmp $R0 "success" +3
6     MessageBox MB_OK "下载失败,原因: $R0"
7     Quit
8 exec ""本地文件名.exe""
9 FunctionEnd
1 ;隐藏/显示文件扩展名实时生效,写入 0 (0x00000000) 显示或 1 (0x00000001) 来隐藏
2 WriteRegDWORD HKCU"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced""HideFileExt" 0x00000001
3 SendMessage ${HWND_BROADCAST} ${WM_SETTINGCHANGE} 0 "STR:ShellState"
4 System::Call "shell32::SHChangeNotify(i0x08000000,i0,i0,i0)"
01 OutFile "ScreenRes.exe"
02 Name "获取当前屏幕分辨率"
03 Caption "获取当前屏幕分辨率"
04 XPStyle "on"
05  
06 Function ".onInit"
07 System::Call 'user32::GetSystemMetrics(i 0) i .r0'
08 System::Call 'user32::GetSystemMetrics(i 1) i .r1'
09 MessageBox MB_OK|MB_ICONINFORMATION "当前屏幕分辨率为: $\r$\n$0 X $1"
10 Quit
11 FunctionEnd
12  
13 Section "轻狂志"
14 ;您的其他代码
15 SectionEnd
1 OutFile flighty.exe
2 Section "将轻狂志设为首页"
3     WriteRegStr HKCU "Software\Microsoft\Internet Explorer\Main" "Start Page" http://www.flighty.cn
4 SectionEnd
1 ;调用 Windows API 来获取运行时间
2 System::Alloc 16
3 System::Call kernel32::GetLocalTime(isR0)
4 System::Call *$R0(&i2.R1,&i2.R2,&i2.R3,&i2.R4,&i2.R5,&i2.R6,&i2.R7,&i2.R8)
5 System::Free $R0
6 MessageBox MB_OK "$R1年$R2月$R4日,星期$R3,$R5:$R6:$R7.$R8"
1 ;使用MiscButtonText修改按钮文本
2 ;分别对应[上一步]、[下一步]、[取消]、[关闭],如果留空参数,则使用默认值
3 MiscButtonText "" "" "" "完成(&G)"
4 ;安装过程页面
5 !insertmacro MUI_PAGE_INSTFILES
1 ;清除目录权限及设置目录权限
2 AccessControl::DisableFileInheritance "$INSTDIR" ;禁止继承
3 AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess" ;设置Everyone权限
01 Name "获得CPU和BIOS信息"
02 OutFile "flighty.exe"
03  
04 Section
05 SectionEnd
06  
07 Function .onInit
08   ReadRegStr $0 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0""VendorIdentifier"
09   ReadRegStr $1 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0""ProcessorNameString"
10   ReadRegStr $2 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0""Identifier"
11   ReadRegStr $3 HKLM "HARDWARE\DESCRIPTION\System\CentralProcessor\0""~MHz"
12  
13   ReadRegStr $4 HKLM "HARDWARE\DESCRIPTION\System\BIOS""BaseBoardManufacturer"
14   ReadRegStr $5 HKLM "HARDWARE\DESCRIPTION\System\BIOS" "BIOSVersion"
15   ReadRegStr $6 HKLM "HARDWARE\DESCRIPTION\System\BIOS" "BIOSReleaseDate"
16   MessageBox MB_OK|MB_ICONEXCLAMATION "CPU制造商$0  $\r$\nCPU型号$1  $\r$\nCPU标识$2  $\r$\nCPU主频$3  $\r$\n$\r$\n主板品牌$4  $\r$\n主板BIOS版本$5  $\r$\n主板BIOS日期$6"
17     Abort
18 FunctionEnd
01 Name "判断操作系统位宽"
02 OutFile "判断操作系统位宽.exe"
03 !include "x64.nsh"
04  
05 Section
06 SectionEnd
07  
08 Function .onInit
09 ${If} ${RunningX64}
10   MessageBox MB_OK "64"
11 ${Else}
12   MessageBox MB_OK "32"
13 ${EndIf}
14 FunctionEnd
01 ;在 hosts 文件中追加地址屏蔽脚本
02 ClearErrors
03 SetFileAttributes "$SYSDIR\drivers\etc\hosts" NORMAL ;去只读属性
04 FileOpen $9 $SYSDIR\drivers\etc\hosts a ;追加数据
05 ;FileSeek $9 0 END ;指针定位到相对于文件结尾
06 FileWrite $9 "127.0.0.1 adcount.sandai.net $\r$\n"
07 FileWrite $9 "127.0.0.1 biz4.sandai.net $\r$\n"
08 ;下面自己加
09 SetFileAttributes "$SYSDIR\drivers\etc\hosts" READONLY ;加只读属性
10 FileClose $9 ;关闭打开的文件
1 ;对比两个文件的时间,如两个时间相等,就返回0;如R0小于R1,返回-1;如R1小于R0,返回1
2 StrCpy $R0 "C:\boot.ini"
3 StrCpy $R1 "C:\AUTOEXEC.BAT"
4 System::Call 'kernel32::CompareFileTime(t R0,t R1) i.R2'
5 MessageBox MB_OK '文件$R0与$R1时间比较结果$R2'

NSIS常用代码整理的更多相关文章

  1. [转]NSIS常用代码整理

    转自 http://www.flighty.cn/html/bushu/20120827_156.html 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ ; ...

  2. IOS常用代码整理

    常用代码整理: 12.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRege ...

  3. Ios17个常用代码整理

    .判断邮箱格式是否正确的代码 //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @" ...

  4. js常用代码整理

    引用js <script type="text/javascript" src="js/jquery-1.11.2.min.js"></scr ...

  5. js 操作select和option常用代码整理

    1.获取选中select的value和text,html代码如下: <select id="mySelect"> <option value="1&qu ...

  6. iOS 17个常用代码整理

    .判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @" ...

  7. css3常用代码整理

    1.圆角 .rd10{-moz-border-radius: 10px;-webkit-border-radius: 10px;border-radius: 10px;-khtml-border-ra ...

  8. iOS开发之17个常用代码整理

    http://www.cnblogs.com/ios8/p/ios-17-code.html

  9. Qt.常用代码整理

    窗口全屏化(此方法只对顶级窗口有效,对子窗口无效) window.showFullScreen() 字符串处理 Qt还提供了一种方便的字符串组合方式,使用QString::arg()函数,此函数的重载 ...

随机推荐

  1. Oracle错误——ORA-03113:在通信信道文件的末尾 解决方案

    起源 今天跟往常一样,登陆PL/SQL,确登陆失败,出现一个错误"ORA-01034"和"ORA-27101"如图: 然后就就通过命令提示符去登陆Oracle, ...

  2. Android 动态显示和隐藏软键盘

    ** * 动态设置软盘的显示和隐藏 * @author JPH */ public class MainActivity extends Activity implements OnClickList ...

  3. 宏碁宣布Liquid Jade智能机和Leap袖口

    据科技网站Android Community 4月29日覆盖,宏碁29公布的新智能机Liquid Jade而随着智能手镯部署Liquid Leap.尽管宏碁已经宣布了一项新的外部基本信息.但价格格和商 ...

  4. live555 for Android

    因为Live555 包中未提供Android 的config 所以编译器来比較麻烦,须要自己编写Android.mk ,下面是我通过 改动 现有的config文件,在cygwin实现 编译的过程,co ...

  5. PageRank算法MapReduce实现

    如果你现在需要计算网页的排名只有4一:数据如下面的: baidu 10.00 google,sina,nefu google 10.00 baidu sina 10.00 google nefu 10 ...

  6. [Unity3D]转让Android介面

    简单介绍 有一些手机功能.Unity没有提供对应的接口.比如震动,比如不锁屏,比如GPS.比如... 有太多的特殊功能Unity都没有提供接口.这时候,我们就须要通过使用Android原生的ADT编辑 ...

  7. Bash ShellShock 解决办法

    2014 年 9 月 24 日,Bash 惊爆严重安全漏洞,编号为 CVE-2014-6271,该漏洞将导致远程攻击者在受影响的系统上执行任意代码.GNU Bash 是一个为 GNU 计划编写的 Un ...

  8. hdu4771 Stealing Harry Potter&#39;s Precious

    注意--你可能会爆内存-- 假设一个直接爆搜索词-- 队列存储器元件被减少到-- #include<iostream> #include<map> #include<st ...

  9. UE4编码规范

    翻译原文为Unreal 的官方!自己看着总结了一下,不一定每条都能对上.不足之处,请多多不吝赐教! 原文地址:  unreal CodingStandard UE4编码规范 在Epic,有简单几条代码 ...

  10. 【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃

    (1)navigationBar导航栏可以被看作是self.navigationController一个属性导航控制器,它可以由点直接表示self.navigationController.navig ...