通过NSIS读取文件名中的数字

时间:2017-01-17 09:36:32

标签: nsis

我必须在NSIS安装程序中将文件解压缩到输出文件夹。该文件的名称包含其版本号。我需要一种方法来读取以我的文件名写的数字。

示例文件名:

MyFile_4.3_runtime_80968_x64.exe

我使用以下代码自动读取它:

Var Version
Section
    ${GetFileVersion} "F:\FilesToBeInstalled\MyFile_4.3_runtime_?????_x64.exe" $Version
    MessageBox MB_OK "Version: $Version"
SectionEnd
早些时候它曾经为我工作过。但突然间它停止了工作。如果我写了正确的数字而不是写?????那么它就可以了。例如,以下代码适用于我:

Var Version
Section
    ${GetFileVersion} "F:\FilesToBeInstalled\MyFile_4.3_runtime_80698_x64.exe" $Version
    MessageBox MB_OK "Version: $Version"
SectionEnd

1 个答案:

答案 0 :(得分:1)

GetFileVersion读取文件的version-information,它不解析文件名。它以前的工作可能是巧合。

您可以使用WordFind2x在两个分隔符之间进行搜索:

!include "WordFunc.nsh"

Var Version
Var File

Section

    # find instances of MyFile_4.3_runtime*
    FindFirst $0 $File "F:\FilesToBeInstalled\MyFile_4.3_runtime*.exe"
    loop:
      StrCmp $File "" done

      # parse hit for version string
      ${WordFind2X} $File "MyFile_4.3_runtime_" ".exe" "-1" $Version
      DetailPrint "$File contains version $Version"

      FindNext $0 $File
      Goto loop
    done:
    FindClose $0

SectionEnd