当前位置: 首页 > 教程资源 > Inno Setup 教程 > 正文
如何让 Inno setup 检测安装路径是否包含中文

如何让 Inno setup 检测安装路径是否包含中文

作者:大眼仔~旭 日期:4年前 (2021-04-18) 评论:3 条

摘要:在安装软件的时候我们一般都会允许用户选择自定义目录,这样不仅可以更好的去管理安装文件,也可以实现高度的用户自由。而有时候我们在安装软件时不想允许用户安装到中文目录或者英文目录下如何操作呢?今天大眼仔旭(www.dayanzai.me)就和大家分享如何通过 Inno Setup 工具在安装的时候不允许用户安装到中文或者英…

在安装软件的时候我们一般都会允许用户选择自定义目录,这样不仅可以更好的去管理安装文件,也可以实现高度的用户自由。而有时候我们在安装软件时不想允许用户安装到中文目录或者英文目录下如何操作呢?今天大眼仔旭(www.dayanzai.me)就和大家分享如何通过 Inno Setup 工具在安装的时候不允许用户安装到中文或者英文路径中。

有些应用程序可能因为编码问题在使用中文路径时会出现问题,而通过 Inno Setup 在安装时进行检测,可以有效的避免该问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[Code]

// 检查安装路径是否是英文
function IsEnglishStr(file: String): Boolean;
var
  value: Integer;
  len: Integer;
  i: Integer;
begin
  Result := true;
  len := length(file);
for i := 1 to len do
  begin
  // 将字符转成ascii值
  value := ord(file[i]);
  // 根据字符的ascii码值判断字符是否为中文
  if (value < 41) or (value > 122) then
    begin
      Result := false;
    end;
  end;
end;

// 选择安装路径下一步按钮触发事件,返回 false 则不会跳到下一步
function NextButtonClick(CurPageID:Integer):Boolean;
begin
  Result := True;
  if (CurPageID = wpSelectDir) then
    begin
    if(IsEnglishStr(WizardDirValue) = false) then
      begin
      Result := False;
      MsgBox('Install folder is invalid !', mbError, MB_OK);
      end;
    end;
end;

通过以上代码就可以达到 Inno Setup 在安装时限制中文或英文目录安装的目的。当然,以上的代码仅仅是示例,您可以灵活运用用来限制其它字符路径。

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《如何让 Inno setup 检测安装路径是否包含中文
文章固定链接:https://www.dayanzai.me/inno-setup-check-path.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (3条)
  1. QPH2022-04-17 09:49 回复
    空格会被识别为无效的安装路径
  2. QPH2022-04-17 10:45 回复
    第17行,改成:if (value 126) then,就可以包含空格了。 这个范围包含了双引号、?、*、""、/、\等非法的路径字符,但是不用担心,非法字符会被Windows阻止。 我们的目的只要限定在32~126之间就够了。
  3. 最帅气质男2024-03-28 17:49 回复
    //去除空格应修改为 function IsEnglishStr(file: String): Boolean; var value: Integer; len: Integer; i: Integer; begin Result := true; len := length(file); for i := 1 to len do begin value := ord(file[i]); if (value 32) then begin if (value 122) then begin Result := false; end; end; end end;

发表评论

返回顶部