使用NSIS制作安装包(1)

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

转载于:https://www.cnblogs.com/yistudio/archive/2006/04/18/378541.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值