inno setup设个软件很好用,但是感觉关于这它的博客好少,一个检测安装路径的方法找了半天没找着,看到一篇【inno setup禁止中文安装路径】,并下载作者的dll和脚本,结果可能是inno setup版本不同,本人直接编译下载的脚本,安装却没有作者编译好的那个exe文件那样可以检测中文的效果。
后面了解到inno setup的[code]部分使用Pascal语法,然后写了一个可以检测中的Pascal方法,逻辑很简单,代码如下
// 检测字符串中是否存在中文
function IsChineseStr(txt: String): Boolean;
var
val: Integer;
len: Integer;
i: Integer;
begin
Result := false;
len := length(txt);
for i := 1 to len - 1 do
begin
// 将字符转成ascii值
val := ord(txt[i]);
// 根据字符的ascii码值判断字符是否为中文
if (val > 19968) and (val < 40869) then
begin
Result := true;
end;
end;
end;
// 下一步按钮触发事件,返回false则不会跳到下一步
function NextButtonClick(CurPageID:Integer):Boolean;
var
hasChinese:Boolean;
begin
Result := True;
hasChinese := IsChineseStr(WizardDirValue);
if (CurPageID = wpSelectDir) and (hasChinese) then
begin
Result := False;
MsgBox(ExpandConstant('{cm:ForbiddenChinese}'), mbError, MB_OK);
end;
end;