5

我有一个文件“releaseVersionNumber.txt”,我在构建过程中阅读了该文件;目前它为我的 Mac 版本读取,但我想在我的 Windows NSIS 版本中读取它以减少编辑位置的数量(重复是邪恶的)......

所以我试图替换:

!define VERSION 1.2.3

有类似的东西

FileOpen $4 "..\releaseVersionNumber.txt" r
FileRead $4 $1
FileClose $4
!define VERSION ${1}

但是我得到一个错误命令 FileOpen 在 Section 或 Function 之外无效。将它包装在一个函数中,我会在 Section 或 Function 之外生成无效的命令调用,因此我似乎无法在安装程序设置中执行此操作,只能在运行时执行此操作。

有没有办法实现我所追求的?!

4

1 回答 1

14

所有以compile time commands!开头的命令,因此它们在编译时处理,远在程序运行之前。

  • 您可以尝试声明VERSION变量而不是定义:

    Var VERSION
    FileOpen $4 "..\releaseVersionNumber.txt" r
    FileRead $4 $VERSION
    FileClose $4
    
  • 如果您需要VERSION定义,那么您可以尝试!define/file中的参数。

    !define /file VERSION "..\releaseVersionNumber.txt"
    
  • 我喜欢有一个version.nsh只有定义的文件:

    !define VERSION "2013-03-25:16:23:50"
    

    然后,我将其包括在内:

    !include /NONFATAL version.nsh
    # Default value in case no version.nsh is present
    !ifndef VERSION
        !define /date VERSION "%Y-%m-%d %H:%M:%S"
    !endif
    
于 2013-03-26T09:07:41.657 回答