NSIS是一個基于腳本語言的制作安裝包的免費工具,它使用起來也很方便,下面是制作安裝.NET框架和語言包的腳本。
NSIS的編譯器和腳本編輯工具可以到nsis.sf.net上下載
!include WordFunc.nsh
!insertmacro VersionCompare
!include LogicLib.nsh
Name ".NET運行庫"
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運行庫時出現一個嚴重的錯誤,安裝.NET運行庫失敗!"
??? 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版本,此函數在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運行庫..."
??? nsExec::ExecToStack '"dotnetfx.exe" /q /c:"install.exe /noaspupgrade /q"'
??? ;pop $DOTNETFX_RETURN_CODE
??? Banner::destroy
FunctionEnd
;安裝語言包
Function InstallDotNetLang
??? push $DOTNETLang_RETURN_CODE
??? StrCpy $DOTNETLang_RETURN_CODE "0"
??? SetOutPath "$PLUGINSDIR"
??? File /r "langpack.exe"
??? Banner::show /NOUNLOAD "正在安裝.NET運行庫中文語言包..."
??? nsExec::ExecToStack '"langpack.exe" /q /c:"install.exe /noaspupgrade /q"'
??? ;pop $DOTNETLang_RETURN_CODE
??? Banner::destroy
FunctionEnd
Section
SectionEnd
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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