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

时间:2017-07-13 15:11:45

标签: inno-setup pascalscript

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

我查看了LengthPosCopyExtractFileDrive字符串函数,但鉴于路径和文件名的数量几乎无限,用户可以选择他们希望的任何安装路径,我正在努力找出一种方法来显示路径的最大可能长度,而不会截断文件名。

我想我需要一个像Pos这样的函数来返回它找到的每个\的匹配数和索引,这意味着我可以在每个索引之间使用Length来确定来自Copy的地方,但我无法找到任何方法。

2 个答案:

答案 0 :(得分:3)

MinimizePathName()函数可用于编写脚本,它需要一个字符串&一个字体并返回一个重新格式化的字符串,该字符串将适合给定字体中给定数量的像素。

答案 1 :(得分:2)

您可以使用MinimizePathName function

类似这样的东西:

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

(未经测试)