5

ビルドプロセス中に読み取ったファイル「releaseVersionNumber.txt」があります。現在、私のMacビルドで読み取られていますが、編集場所の数を減らすためにWindows NSISビルドで読み取りたいと思います(重複は悪です)...

だから私は置き換えようとしています:

!define VERSION 1.2.3

のようなもので

FileOpen $4 "..\releaseVersionNumber.txt" r
FileRead $4 $1
FileClose $4
!define VERSION ${1}

しかし、セクションまたは関数の外部で無効なエラーコマンドFileOpenが表示されます。関数でラップすると、セクションまたは関数の外部では無効なコマンド呼び出しが生成されるため、インストーラーのセットアップでは実行時にのみこれを実行できないようです。

私が求めていることを達成する方法はありますか?!

4

1 に答える 1

14

で始まるすべてのコマンド!コンパイル時コマンドであるため、プログラムが実行されるかなり前のコンパイル時に処理されます。

  • 定義の代わりに変数VERSIONとして宣言してみることができます。

    Var VERSION
    FileOpen $4 "..\releaseVersionNumber.txt" r
    FileRead $4 $VERSION
    FileClose $4
    
  • 定義する必要がある場合は、 !defineのパラメーターをVERSION試すことができます。/file

    !define /file VERSION "..\releaseVersionNumber.txt"
    
  • version.nshは定義だけのファイルが好きです:

    !define VERSION "2013-03-25:16:23:50"
    

    そして、私はそれを含めます:

    !include /NONFATAL version.nsh
    # Default value in case no version.nsh is present
    !ifndef VERSION
        !define /date VERSION "%Y-%m-%d %H:%M:%S"
    !endif
    
于 2013-03-26T09:07:41.657 に答える