NSIS安裝包製做軟件的常用小技巧

原文鏈接:http://blog.sina.com.cn/s/blog_4b44e1c00100rdy3.html

用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章