使用Inno Setup安装字体 - 替换被锁定的字体

3
我正在使用Inno Setup在Windows上为桌面应用程序安装Fontawesome字体。首次安装通常很顺利,因为字体尚未安装,但在后续安装中,我经常遇到锁定问题:

Inno Installer locked font file Dialog

为了安装我正在使用的字体:
Source: "FontAwesome.ttf"; DestDir: "{fonts}"; FontInstall: "FontAwesome";\
        Flags: uninsneveruninstall

现在我知道我可以使用Flags: onlyifdoesntexist仅在字体不存在时安装字体,这确实起作用。然而,偶尔需要由于版本更改和添加新字体而更新字体。

显然,只有当某些东西正在使用字体时才会出现错误。除了主安装的应用程序外,我还在使用Chrome并打开了使用FontAwesome的页面,显然这也锁定了安装的字体。

理想情况下,如果字体被锁定,下一次重新启动后或字体变为未锁定状态后将其替换。

看起来Inno似乎每次都尝试替换字体,即使字体版本相同。根据文档(文档底部),文件只应在安装版本较高时替换,但似乎字体每次都要安装。

如果正在使用的字体需要更新,是否有任何方法使Inno正确处理字体更新?


关于字体版本的编辑:那是一个新问题。它与锁定无关。 - Martin Prikryl
1个回答

2
您可以尝试将*.ttf添加到CloseApplicationsFilter中。
CloseApplicationsFilter=*.exe,*.dll,*.chm,*.ttf

应该让Inno Setup检查字体是否被锁定,并提示用户关闭Chrome(或其他应用程序)以允许替换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接