Installation 如果安装程序中字体的版本高于已安装的版本,请使用Inno安装程序安装字体

Installation 如果安装程序中字体的版本高于已安装的版本,请使用Inno安装程序安装字体,installation,fonts,inno-setup,pascalscript,Installation,Fonts,Inno Setup,Pascalscript,我有一个随Inno安装程序一起安装的自定义字体,我只想在升级安装程序中的字体时覆盖现有字体 为了做到这一点,我尝试从我的字体文件中获取版本,但在函数中或在Inno Setup预处理器中获取版本。据我所知,这些函数只适用于exe或dll,但我可能错了 任何有助于我实现这一目标的线索都将不胜感激 谢谢 Olivier您可以使用以下代码提取TTF文件(可能是任何文件)版本: 函数GetShellItemVersion(路径:string):string; 变量 外壳,文件夹,项目,版本:变量; Fo

我有一个随Inno安装程序一起安装的自定义字体,我只想在升级安装程序中的字体时覆盖现有字体

为了做到这一点,我尝试从我的字体文件中获取版本,但在函数中或在Inno Setup预处理器中获取版本。据我所知,这些函数只适用于exe或dll,但我可能错了

任何有助于我实现这一目标的线索都将不胜感激

谢谢


Olivier

您可以使用以下代码提取TTF文件(可能是任何文件)版本:

函数GetShellItemVersion(路径:string):string; 变量 外壳,文件夹,项目,版本:变量; FolderPath:string; 开始 Shell:=CreateOleObject('Shell.Application'); FolderPath:=ExtractFilePath(路径); 文件夹:=Shell.NameSpace(FolderPath); 如果是VarIsClear(文件夹),则 开始 日志(格式('读取文件夹“%s”时出错,[FolderPath]); 结束 其他的 开始 Item:=Folder.ParseName(提取文件名(路径)); 如果变量为线性(项目),则 开始 日志(格式('访问“%s”时出错,[Path]); 结束 其他的 开始 版本:=文件夹.getDetailsSof(第166项); 如果是VarIsClear(版本),则 开始 日志(格式('读取“%s”的版本时出错,[Path]); 结束 其他的 开始 结果:=版本; 日志(格式(“%s”的版本为“%s”,[Path,Result]); 结束; 结束; 结束; 结束;
基于。

效果很好。非常感谢。