Windows 10 NSIS脚本版本字符串操作

时间:2015-11-12 19:22:11

标签: nsis

我正在尝试让我的NSIS安装程序需要设置以下项目。但是,版本号必须采用X.X.X.X格式(不允许使用短划线)。我的版本号目前以X.X.X-rXXXX的形式传递给我,我如何将X.X.X-rXXXX形式的版本号转换为nsis所需的X.X.X.X格式?

VIProductVersion "3.6.0.rXXXXX" 
VIAddVersionKey "ProductName?" "Witchcraft" 
VIAddVersionKey "CompanyName?" "Witchcraft, LLC" 
VIAddVersionKey "LegalCopyright?" "Copyright (c) 2015 Witchcraft, LLC" 
VIAddVersionKey "FileDescription?" "Witchcraft" 
VIAddVersionKey "FileVersion?" "3.6.0.0" 
VIAddVersionKey "ProductVersion?" "3.6.0.0" 

1 个答案:

答案 0 :(得分:2)

首先,我将解释X.X.X.X限制的来源。 VIProductVersion属性在版本信息资源中的VS_FIXEDFILEINFO块中设置版本号,并且必须是4个16位数字。

VIAddVersionKey添加一个字符串,名称和值可以是您想要的任何内容,但Microsoft可能希望包含一些名称(它们列在NSIS帮助文件中)。

您可以使用!searchreplace!searchparse预处理器指令在编译时修改字符串:

!define VERSION "3.6.0-r12345" # This could be passed in with 'makensis /DVERSION=3.6.0-r12345 setup.nsi' etc

!searchreplace /ignorecase VERSION_NUMBERSONLY "${VERSION}" "r" ""
!searchreplace /ignorecase VERSION_NUMBERSONLY "${VERSION_NUMBERSONLY}" "-" "."

VIProductVersion "${VERSION_NUMBERSONLY}"
VIAddVersionKey "FileVersion" "${VERSION}" 
VIAddVersionKey "ProductVersion" "${VERSION}"