[英]How to use String Replace in NSIS
我使用maven,我有一个版本为XYZ-SNAPSHOT的maven项目,并且使用了maven-nsis-plugin 。 因为版本的格式为XYZ-SNAPSHOT,所以我必须删除此后缀并将其替换为0。
Maven插件maven-nsis-plugin生成一个project.nsh:
!define PROJECT_VERSION "4.23.9-SNAPSHOT"
这是在我的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。 我究竟做错了什么?
使用的替换功能: StrRep
这可以使用!searchreplace命令来完成,该命令在编译时运行
!searchreplace PROJECT_VERSION_SHORT ${PROJECT_VERSION} "-SNAPSHOT" ".0"
Name
和VIProductVersion
是安装程序属性,在创建.exe时会在编译时将其考虑在内
传递到VersionReplace
部分时,将在运行时调用StrRep
函数,现在更改Name
或VIProductVersion
为时已晚。
顺便说一句:如果您想在运行时定义一些值,例如在!define VERSION_SHORT $0
语句中,请使用Var
语句创建一个变量并修改该变量(使用StrCpy
)。 !define
是在编译期间!define
的字符串替换,不能更改。 您实际写的是VERSION_SHORT
是$0
的别名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.