NSIS是一個(gè)基于腳本語(yǔ)言的制作安裝包的免費(fèi)工具,它使用起來(lái)也很方便,下面是制作安裝.NET框架和語(yǔ)言包的腳本。
NSIS的編譯器和腳本編輯工具可以到nsis.sf.net上下載
!include WordFunc.nsh
!insertmacro VersionCompare
!include LogicLib.nsh
Name ".NET運(yùn)行庫(kù)"
OutFile "DotNetSetup.exe"
var "DOTNETFX_RETURN_CODE"
var "DOTNETLang_RETURN_CODE"
var "ERROR_DOTNET_FATAL"
var "INSTALL_SUCCESS"
Function .onInit
??? StrCpy $ERROR_DOTNET_FATAL "在安裝.NET運(yùn)行庫(kù)時(shí)出現(xiàn)一個(gè)嚴(yán)重的錯(cuò)誤,安裝.NET運(yùn)行庫(kù)失敗!"
??? StrCpy $INSTALL_SUCCESS "安裝成功!"
???
??? Call GetDotNETVersion
??? pop $0
??? ${If} $0 == "not found"
??????? Call InstallDotNetFx
??????? pop $DOTNETFX_RETURN_CODE
??????? ${If} $DOTNETFX_RETURN_CODE <> 0
??????????? MessageBox MB_OK|MB_ICONSTOP $ERROR_DOTNET_FATAL
??????????? Abort
??????? ${EndIf}
???????
??????? Call InstallDotNetLang
??????? pop $DOTNETLang_RETURN_CODE
??????? ${If} $DOTNETLang_RETURN_CODE <> 0
??????????? MessageBox MB_OK|MB_ICONINFORMATION $INSTALL_SUCCESS
??????????? Abort
??????? ${EndIf}
??? ${EndIf}
??? StrCpy $0 $0 "" 1 # skip "v"
??? ${VersionCompare} $0 "2.0" $1
??? ${If} $1 == 2
??????? Call InstallDotNetFx
??????? pop $DOTNETFX_RETURN_CODE
??????? ${If} $DOTNETFX_RETURN_CODE <> 0
??????????? MessageBox MB_OK|MB_ICONSTOP $ERROR_DOTNET_FATAL
??????????? Abort
??????? ${EndIf}
??????? Call InstallDotNetLang
??????? pop $DOTNETLang_RETURN_CODE
??????? ${If} $DOTNETLang_RETURN_CODE <> 0
??????????? MessageBox MB_OK|MB_ICONINFORMATION $INSTALL_SUCCESS
??????????? Abort
??????? ${EndIf}
??? ${EndIf}
FunctionEnd
;獲取.NET版本,此函數(shù)在nsis.sf.net中有
Function GetDotNETVersion
??? Push $0
??? Push $1
??? System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1"
??? StrCmp $1 "error" 0 +2
??? StrCpy $0 "not found"
??? Pop $1
??? Exch $0
FunctionEnd
;安裝.NET框架
Function InstallDotNetFx
??? push $DOTNETFX_RETURN_CODE
??? StrCpy $DOTNETFX_RETURN_CODE "0"
??? SetOutPath "$PLUGINSDIR"
??? File /r "dotnetfx.exe"
??? Banner::show /NOUNLOAD "正在安裝.NET運(yùn)行庫(kù)..."
??? nsExec::ExecToStack '"dotnetfx.exe" /q /c:"install.exe /noaspupgrade /q"'
??? ;pop $DOTNETFX_RETURN_CODE
??? Banner::destroy
FunctionEnd
;安裝語(yǔ)言包
Function InstallDotNetLang
??? push $DOTNETLang_RETURN_CODE
??? StrCpy $DOTNETLang_RETURN_CODE "0"
??? SetOutPath "$PLUGINSDIR"
??? File /r "langpack.exe"
??? Banner::show /NOUNLOAD "正在安裝.NET運(yùn)行庫(kù)中文語(yǔ)言包..."
??? nsExec::ExecToStack '"langpack.exe" /q /c:"install.exe /noaspupgrade /q"'
??? ;pop $DOTNETLang_RETURN_CODE
??? Banner::destroy
FunctionEnd
Section
SectionEnd
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
