わかりました。これはInnoSetupで実行できます。
#define AppVer "0.0.11"
次に、次のように使用します
[Setup]
AppVerName={#AppVer}
VERSION
ここで、内容が「0.0.11」という名前のファイルがあるとします。
どういうわけか、ファイルの内容をVERSION
Inno Setupプリプロセッサ変数に入れる方法はありますか?
わかりました。これはInnoSetupで実行できます。
#define AppVer "0.0.11"
次に、次のように使用します
[Setup]
AppVerName={#AppVer}
VERSION
ここで、内容が「0.0.11」という名前のファイルがあるとします。
どういうわけか、ファイルの内容をVERSION
Inno Setupプリプロセッサ変数に入れる方法はありますか?
ISPPのGetFileVersion
機能を使用することをお勧めします(結局、インストーラーのバージョンはアプリケーションのバージョンと一致する必要があるため)。したがって、これが実際にやりたかったことである場合は、jachguateの回答を受け入れる必要があります。
実行可能ファイルからではなくテキストファイルからバージョンを本当に読みたい場合は、次の2つの可能性があります。
1つ目:ファイルの内部形式を変更できる場合は、INIファイルのように見せることで大幅に簡素化できます。
[Version]
Ver=0.0.11
これを前提として、ISPPのReadIni
関数を使用してバージョンを取得できます。
#define AppVer ReadIni("ver.ini", "Version", "Ver", "unknown")
2番目の方法は、ファイル形式を変更できない場合、、、およびISPP関数を使用することですFileOpen
。FileRead
例FileClose
:
#define VerFile FileOpen("ver.txt")
#define AppVer FileRead(VerFile)
#expr FileClose(VerFile)
#undef VerFile
ただし、繰り返しますが、代わりに実行可能ファイル自体からアプリのバージョンを取得することをお勧めします。これは、1つには、すべてが一致することを保証するのに役立ちます。
Inno Setup Pre Proccessor(ISPP)GetFileVersion
関数を使用して、次のように実行可能ファイルから直接バージョンを取得できます。
[Setup]
#define AppVersion GetFileVersion("MyFile.exe")
#define AppName "My App name"
AppName={#AppName}
AppVerName={#AppName} {#AppVersion}
VersionInfoVersion={#AppVersion}
; etc
定義を使用している場合は、すでにISPPを使用しています。
インストーラーの実行時にこれを実行したい場合(@jachguateの回答は他の可能性をカバーしており、おそらくあなたが探しているものです-ある時点で他の人を助ける場合に備えてこれを残しておきます)、これを行うには、Pascalスクリプトを使用します。このようなものが機能するはずです:
[Setup]
AppVer={code:MyVersion}
[Files]
// Other files
Source: "YourVersionFile.txt"; DestDir: "{app}"
[Code]
function MyVersion(Param: String): String;
var
VersionValue: string;
VersionFile: string;
begin
// Default to some predefined value.
Result := '0.0.0';
VersionFile := '{app}\YourVersionFile.txt';
if LoadStringFromFile(VersionFile, VersionValue) then
Result := VersionValue;
end;
サポートされている組み込み関数のリストなど、詳細については、ヘルプファイルのトピック「Pascalスクリプティング」を参照してください。
差出人:http ://www.jrsoftware.org/ishelp/
Cのような#includeディレクティブがサポートされています。これは、別のファイルから#includeディレクティブの位置にあるスクリプトに行をプルします。構文は次のとおりです。
#include "filename.txt"
#include
ファイル名が完全に修飾されていない場合、コンパイラはディレクティブを含むファイルと同じディレクトリでファイル名を探します。ファイル名の前に。を付けることができますcompiler:
。その場合、Compilerディレクトリでファイルを検索します。