這是一些常用的NSIS代碼,少輕狂特意整理出來,方便大家隨時查看使用。不定期更新哦~~~
【轉自: http://www.flighty.cn/html/bushu/20120827_156.html】
2 |
ReadEnvStr
$R0 SYSTEMDRIVE |
4 |
CreateDirectory "$R0\log" |
|
2 |
FindWindow
$0 "shell_traywnd" |
3 |
SendMessage
$0 273 506 0 |
|
2 |
FindWindow
$0 "shell_traywnd" |
3 |
SendMessage
$0 273 503 0 |
|
2 |
System::Call 'Shell32::SHChangeNotify(i
0x8000000, i 0, i 0, i 0)' |
|
3 |
;-1
主題 0 壁紙 1 屏保 2 外觀 3 設置 |
4 |
Exec 'Rundll32.exe
shell32.dll,Control_RunDLL Desk.cpl,0,3' ;打開 "設置" |
|
2 |
System::Call 'kernel32::GetCurrentDirectory(i
1024,t .R1)' |
3 |
MessageBox
MB_OK '安裝程序所在目錄:$R1' |
5 |
MessageBox
MB_OK '文件名$EXEFILE,所在文件夾$EXEDIR,完整路徑$EXEPATH。' |
|
2 |
System::Call 'kernel32::GetCurrentProcessId()i
.R0' |
3 |
MessageBox
MB_OK '安裝程序進程PID:$R0' |
|
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' |
|
4 |
System::Call 'kernel32::SetVolumeLabelA(t
R0,t R1)' |
|
02 |
StrCpy
$R0 "C:\1.EXE" ;文件 |
04 |
System::Call 'kernel32::SetFileAttributesA(t
R0,i 0x100)' |
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,;臨時屬性(一般無效) |
|
3 |
CreateShortcut "$DESKTOP\記事本.lnk" "$WINDIR\notepad.exe" |
4 |
ExecShell
taskbarpin "$DESKTOP\記事本.lnk" |
|
1 |
;指定在
WIN7 下安裝程序需要的執行級別。 |
2 |
RequestExecutionLevel
admin |
|
1 |
;安裝結束後調用HTTP下載插件下載文件並運行 |
5 |
StrCmp
$R0 "success" +3 |
6 |
MessageBox
MB_OK "下載失敗,原因:
$R0" |
|
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" |
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" |
|
1 |
;調用
Windows API 來獲取運行時間 |
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) |
6 |
MessageBox
MB_OK "$R1年$R2月$R4日,星期$R3,$R5:$R6:$R7.$R8" |
|
1 |
;使用MiscButtonText修改按鈕文本 |
2 |
;分別對應[上一步]、[下一步]、[取消]、[關閉],如果留空參數,則使用默認值 |
3 |
MiscButtonText "" "" "" "完成(&G)" |
5 |
!insertmacro
MUI_PAGE_INSTFILES |
|
2 |
AccessControl::DisableFileInheritance "$INSTDIR" ;禁止繼承 |
3 |
AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess" ;設置Everyone權限 |
|
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" |
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" |
|
02 |
OutFile "判斷操作系統位寬.exe" |
|
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" |
09 |
SetFileAttributes "$SYSDIR\drivers\etc\hosts" READONLY
;加只讀屬性 |
|
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' |
|
01 |
;註冊apache服務器,
-n MyWebServer表示apache2註冊服務名爲MyWebServer,默認服務名爲Apache2 |
02 |
nsExec::ExecToLog 'cmd.exe
/c "$INSTDIR/apache2/bin/httpd.exe" -k install -n MyWebServer' |
04 |
;註冊MySQL服務器,
MyDBServer表示MySQL註冊服務名爲MyDBServer,默認服務名爲MySQL |
05 |
nsExec::ExecToLog 'cmd.exe
/c "$INSTDIR/mysql5/bin/mysqld-nt.exe" -install MyDBServer' |
08 |
nsExec::ExecToLog 'cmd.exe
/c "$INSTDIR/apache2/bin/httpd.exe" -k start -n MyWebServer' |
10 |
nsExec::ExecToLog 'cmd.exe
/c net start MyWebServer' |
11 |
nsExec::ExecToLog 'cmd.exe
/c net start MyDBServer' |
|
2 |
ReadRegStr
$0 HKLM "SYSTEM\CurrentControlSet\Control\Nls\Language" "Default" |
4 |
MessageBox
MB_OK "您的操作系統語言爲簡體中文。" |
6 |
MessageBox
MB_OK "您的操作系統語言爲繁體中文。" |
8 |
MessageBox
MB_OK "您的操作系統語言爲英文。" |
|