NSIS检测安装路径是否包含空格

NSIS检测安装路径是否包含空格

nsisfans
2022-01-15 / 0 评论 / 151 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年01月15日,已超过506天没有更新,若内容或图片失效,请留言反馈。

当选择的安装路径变更时,路径为空或包含空格,都不允许继续。路径为空时,NSIS 会自行判断。此示例未判断是否包含双字节字符。如有需要,请与 NSIS检测安装路径是否包含中文 配合使用。

Name "Path"
OutFile "Path.exe"

InstallDir "$PROGRAMFILES\Internet Explorer"

ShowInstDetails show
InstallColors /windows
XPStyle on

Page directory
Page instfiles

Section "Install"

SectionEnd

#
# 当选择的安装路径变更时,路径为空或包含空格,都不允许继续。
# 路径为空时,NSIS 会自行判断。
#
# 此示例未判断是否包含双字节字符。如有需要,请与示例二配合使用。
#
Function .onVerifyInstDir
    #
    # 检查安装路径是否包含空格,ANSI/Unicode 版本通用。
    #
    # 用 StrChr 在路径中查找空格字符
    # td 表示从 $INSTDIR 读取字符串 (详见 Docs\System\System.html)。
    # i0x20 中的 0x20 表示空格字符 ASCII 码。
    System::Call "shlwapi::StrChr(td,i0x20)p.R0"
    # 结果为 0 表示 $INSTDIR 中没找到空格字符。
    # 如果用 NSIS 3.x 这里可以用 IntPtrCmp 代替。
    IntCmp $R0 0 lbl_done
    Abort
lbl_done:
FunctionEnd
1

评论 (0)

取消