NSIS打包 判断安装目录是否有中文

3 篇文章 0 订阅

只需要添加下面一段代码即可,每句代码的意思已经备注在后面,应该挺清楚的。

Function .onVerifyInstDir
  StrCpy $0 $INSTDIR                    ;$0存放安装路径
  StrLen $1 $0                          ;获取$0的长度,存在$1里
  StrCpy $2 ''

  ; 每个中文会给strlen增加2,所以copy 1个字符时,会遇到不可显示字符,会被NSIS自动改成?
  ; 正好?本身是非法路径,所以可以用这个来判断路径是否非法
  ${Do}
    IntOp $1 $1 - 1                     ;开始循环,$1 = $1 - 1
    ${IfThen} $1 < 0 ${|}${ExitDo}${|}  ;遍历结束,退出
    StrCpy $2 $0 1 $1                   ;从第$1位开始,最多从$0中取1位,存在$2中
    ${IfThen} $2 == '?' ${|}${ExitDo}${|}   ;$2 为 '?' 退出循环
  ${Loop}

  ${If} $2  == '?'
    Abort                  ; 如果 $INSTDIR 含有中文等宽字节字符,则不让用户安装在这里
  ${EndIf}
FunctionEnd

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值