Inno Setup 缩短文件路径字符串以适应 FilenameLabel

Inno Setup shorten file path string to fit FilenameLabel

WizardForm.InstallingPage上,WizardForm.FilenameLabel会自动截断包含文件路径的字符串,以包括开头的驱动器号,然后是最大可显示路径,从顶级截断路径,以适合标签的大小,以便始终显示文件名,例如C:\...\LongFilePathNameWithMultipleSubDirectories\Filename.ext

我查看了 LengthPosCopyExtractFileDrive 字符串函数,但考虑到路径和文件名的可能性几乎是无限的,因为用户可以选择他们想要的任何安装路径,所以我正在努力寻找一种方法来显示路径的最大可能长度,而不截断文件名。

我想我需要一个像 Pos 这样的函数,它 returns 匹配的数量和它找到的每个 \ 的索引,这意味着我可以使用 Length 在每个索引之间确定从哪里 Copy,但我还没有找到任何方法来做到这一点。

MinimizePathName() 函数可用于脚本编写,它需要一个字符串和一种字体以及 returns 一个重新格式化的字符串,该字符串将适合给定字体的给定像素数。

您可以使用 MinimizePathName function.

像这样:

YourLabelControl.Caption :=
   MinimizePathName(
     'C:\First Folder\Second Folder\Third Folder\Filename.ext',
     YourLabelControl.Font, YourLabelControl.Width);

(未经测试)