[英]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.