Maven 如何在NSIS中使用字符串替换
我使用maven,我有一个版本为X.Y.Z-SNAPSHOT的maven项目,我使用。因为版本的格式是X.Y.Z-SNAPSHOT,所以我必须删除此后缀,并用0重新对其进行替换 maven插件生成一个project.nsh:Maven 如何在NSIS中使用字符串替换,maven,nsis,Maven,Nsis,我使用maven,我有一个版本为X.Y.Z-SNAPSHOT的maven项目,我使用。因为版本的格式是X.Y.Z-SNAPSHOT,所以我必须删除此后缀,并用0重新对其进行替换 maven插件生成一个project.nsh: !define PROJECT_VERSION "4.23.9-SNAPSHOT" 在my setup.nsi中使用的: !include target\project.nsh Section VersionReplace Push "${PROJECT_VER
!define PROJECT_VERSION "4.23.9-SNAPSHOT"
在my setup.nsi中使用的:
!include target\project.nsh
Section VersionReplace
Push "${PROJECT_VERSION}"
Push "-SNAPSHOT"
Push "0"
Call StrRep
Pop $0
!define VERSION_SHORT $0
SectionEnd
Name "Installer ${VERSION_SHORT}"
(...)
VIProductVersion ${VERSION_SHORT}
问题:在控制台中,我可以看到:
Name: "Installer $0"
(...)
VIAddVersionKey: "ProductVersion" "$0"
因此,0美元没有被替换我做错了什么?
使用的替换函数:名称
和VIProductVersion
是在编译时创建.exe时考虑的安装程序属性
当传递到节VersionReplace
时,将在运行时调用StrRep
函数,更改名称或VIProductVersion
将为时已晚
顺便说一句:如果您想在运行时定义一些值,比如在中!定义VERSION\u SHORT$0
语句,使用Var
语句创建变量并修改变量(使用StrCpy
)。A!define
是编译期间定义的不能更改的字符串替换。您实际编写的是VERSION\u SHORT
是$0
的别名,这可以使用在编译时运行的命令来完成
!searchreplace PROJECT_VERSION_SHORT ${PROJECT_VERSION} "-SNAPSHOT" ".0"
感谢您的提示,部分是在运行时执行的。然后我在文档中找到了这些信息。见其他答案。