2

私は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

4

2 に答える 2

1

これは、コンパイル時に実行される!searchreplaceコマンドを使用して実行できます。

!searchreplace PROJECT_VERSION_SHORT ${PROJECT_VERSION} "-SNAPSHOT" ".0"
于 2012-11-22T12:33:17.173 に答える
0

NameおよびVIProductVersionは、.exeの作成時にコンパイル時に考慮されるインストーラー属性です。

関数はStrRep実行時にセクションに渡されるときに呼び出され、またはVersionReplaceを変更するには遅すぎます。NameVIProductVersion

ところで:ステートメントのように実行時に値を定義する場合は、!define VERSION_SHORT $0ステートメントを使用して変数を作成し、変数をVar変更します(を使用してStrCpy)。A!defineは、コンパイル中に定義された文字列置換であり、変更できません。あなたが実際に書いたのは、それVERSION_SHORTがのエイリアスです$0

于 2012-11-22T12:13:56.723 に答える