inno setup禁止中文安装路径

来源:互联网 发布:起死 鲁迅 知乎 编辑:程序博客网 时间:2024/06/04 17:46

在有些时候,一些安装的程序不能在中文路径下运行,所以要禁止用户选择中文路径。

我通过inno setup调用dll插件实现这个功能。简单的写了一个DLL,调用正则匹配文本,如果包含中文,返回true

效果如图



实现方法

首先要了解inno setup 的事件,inno setup可以绑定其中组件的事件。我们要添加的功能是,用户点击浏览按钮,如果选择的目录有中文,则还原默认的路径,提示有中文

1引入dll文件,将IsChineseStr.dll,放入脚本根目录tmp文件夹里面。当然,目录可以自己定。

[Files]Source: tmp\*; DestDir: {tmp}; Flags: dontcopy solidbreak ; Attribs: hidden system
引入文件后,调用本函数(以下代码都在[code]字段里面实现)

[code]function  IsChineseStr(Text:string) :boolean; external 'IsChineseStr@files:IsChineseStr.dll stdcall';
定义了函数名称以后,就可以使用这个函数了。我们创建一个过程,来实现inno setup的安装目录文本框文本被改变事件。

varsDir:string;//声明一个变量存放默认路径procedure DirDirEditOnChange(Sender: TObject);begin         if IsChineseStr(WizardForm.DirEdit.text)=true then         begin         WizardForm.DirEdit.text:=sDir;         MsgBox('路径不能为中文', MBInformation, MB_OK);                  endend;
上面这个过程就是,如果inno setup的目录文本框的内容被改变了,那么就判断是否有中文字符,如果有,提示不能为中文,还原这个默认的安装路径。其中变量sDir内容是在初始化安装包的时候获取。

下面给绑定事件,放在初始化安装包代码里面

procedure InitializeWizard();begin          sDir:=WizardForm.DirEdit.text;          WizardForm.DirEdit.OnChange:=@DirDirEditOnChange;end;
综上,所有功能全部实现。核心是文本框内容被改变事件。

需要脚本的朋友可以在这儿下:http://download.csdn.net/download/applek_case/10010098






原创粉丝点击