我有一个文件'releaseVersionNumber.txt',我在构建过程中读到了该文件; 目前它为我的Mac版本读取,但我想在我的Windows NSIS版本中读取它以减少编辑位置的数量(复制是邪恶的)...
所以我试图替换:
!define VERSION 1.2.3
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
FileOpen $4 "..\releaseVersionNumber.txt" r
FileRead $4 $1
FileClose $4
!define VERSION ${1}
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误命令FileOpen在Section或Function之外无效.将它包装在函数中我生成的命令调用在Section或Function之外无效,所以我似乎无法在安装程序设置中执行此操作,仅在运行时.
有没有办法实现我追求的目标?!
Fra*_*o R 13
所有命令!都是编译时命令,所以它们在编译时处理,远在程序运行之前.
您可以尝试将其声明VERSION为变量而不是定义:
Var VERSION
FileOpen $4 "..\releaseVersionNumber.txt" r
FileRead $4 $VERSION
FileClose $4
Run Code Online (Sandbox Code Playgroud)如果您需要VERSION是一个定义,那么您可以尝试!define中的/file参数.
!define /file VERSION "..\releaseVersionNumber.txt"
Run Code Online (Sandbox Code Playgroud)我喜欢有一个version.nsh只有define 的文件:
!define VERSION "2013-03-25:16:23:50"
Run Code Online (Sandbox Code Playgroud)
然后,我把它包括在内:
!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
Run Code Online (Sandbox Code Playgroud)