用NSIS軟件製作安裝包時總會用到那麼幾個常用的代碼,正因爲常用到,自己腦袋又不好記不住,所以就一一記錄下來,時間一長自然也就成好多條了,貼出來與大家分享一下吧。
1.如何運行一個批處理文件 .bat
注:xiaojian.bat爲你的文件名
ExecWait "xiaojian.bat"
不顯示黑框框
nsExec::Exec "xiaojian.bat"
2.如何運行一個VBS文件 .vbs
注:xiaojian.vbs爲你的文件名
ExecWait '"$SYSDIR\cscript.exe" "xiaojian.vbs"'
不顯示黑框框
nsExec::Exec '"$SYSDIR\cscript.exe" "xiaojian.vbs"'
3.如何運行一個註冊表文件 .reg
注:xiaojian.reg爲你的文件名
ExecWait "regedit.exe /s xiaojian.reg"
另外直接寫入註冊表
WriteRegStr
WriteRegExpandStr
WriteRegDWORD
WriteRegBin
比如:WriteRegDWORD HKCU "Software\ES-Computing\xiaojian\Install" "eula" '0x00000001"
請看NSIS詳細說明
4.如何運行一個安裝文件 .inf
注:xiaojian.inf 爲你的文件名
ExecWait "RunDll32 advpack.dll,LaunchINFSection xiaojian.inf,DefaultInstall"
5.如何運行一個安裝文件 .msi
注:xiaojian.msi爲你的文件名
Execwait `msiexec /qn /i "xiaojian.msi"`
6.關聯文件圖標後,圖標沒變化。
刷新圖標
'System::Call shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)'
7.安裝窗體變窄了。
SetFont /LANG=2052 "tahoma" 8
XP特殊文件夾的位置:
HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
安裝硬盤上的字體(代碼插入Function,Section內):
StrCpy $0 "D:\Fonts\Chs\經典空趣體繁.ttf"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "經典空趣體繁(TrueType)" "$0"
System::Call "GDI32::AddFontResource(t) i ('$0') .s"
在經典模式下使用中文界面(代碼插入文件頭):
LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf"
LangString Name 2052 "Simplified Chinese"
#-- 根據 NSIS 腳本編輯規則,所有 Function 區段必須放置在 Section 區段之後編寫,以避免安裝程序出現未可預知的問題。--#
;卸載程序之前
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你確實要完全移除 $(^Name) ,及其所有的組件?" IDYES +2
Abort
;運行批處理文件
ExecShell Open "$INSTDIR\rege\UnregUAC.bat" "" SW_HIDE
;ExecShell Open "sdbinst /u *.sdb" "" SW_HIDE
FunctionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地從你的計算機移除。"
FunctionEnd
;安裝結束後,運行批處理文件
Function .onInstSuccess
;ExecShell Open "$INSTDIR\rege\RegUAC.bat" "" SW_HIDE
;ExecShell Open "sdbinst /q *.sdb" "" SW_HIDE
;ExecWait "sdbinst /q *.sdb"
;ExecShell Open 'cmd' '/c "sdbinst /q *.sdb"' SW_HIDE
ExecShell Open 'cmd' '/k "sdbinst /q *.sdb"' SW_SHOWNORMAL
functionend