4

Eclipse RCP アプリケーションを作成しています。

次の記事「Daily Builds are your friend」で Joel のアドバイスに従っています。

http://www.joelonsoftware.com/articles/fog0000000023.html

そこで、Eclipse RCP 製品を作成し、コードに対して単体テストを実行する、優れたビルド スクリプトを作成しました。次に、すべての結果が開発者のリストに配布されます (少し不平を言った後)。次のステップでは、inno セットアップ コンパイラを使用して通常は手動で作成するセットアップ パッケージを作成します。

問題は、このパッケージを自動的に作成する方法を教えてください。ant から inno セットアップ ファイルを自動的に生成し、コマンド ラインからコンパイラを呼び出すことができると思いますが、これが可能かどうかはわかりません。

このタスクのヒントはありますか? antから使用できる他のセットアップアプリケーションはありますか?

4

2 に答える 2

10

インストーラのビルドを自動化する際のもう 1 つの便利な方法は、GetFileVersionプリプロセッサ (ISPP) マクロを使用することです。そうすれば、(バイナリ)ファイルのバージョン番号をハードコードされた形式で複製する必要がなくなります(Tom's のようにsettings.txt)-インストーラーコンパイラは、ファイルのバージョンリソースからそのように単純に読み取ります。例えば:

#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)

[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup

/dさらに、コマンドライン スイッチを介してシンボルをコンパイラに転送できます。

iscc.exe /dSpecialEdition ...

後でこれらをifdefs で使用して、さまざまなタイプのインストーラーを作成します (愚かな例は次のとおりです)。

[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif
于 2008-11-14T13:55:48.967 に答える
7

確かに簡単です。Inno プロジェクトはプレーン テキスト ファイルなので、ant を使用して setupper スクリプトを簡単に編集することもできますが、スクリプトで別の小さなインクルード ファイルを作成することをお勧めします。セットアップの開始時に表示されるバージョン + ビルド番号などの「変数」をそこに保存できます。

次の行をセットアップパーに追加します。

#include "settings.txt"

そして、settings.txt を次のようにします。

#define myver=xxx.xxx
#define tags

これで、ビルド スクリプトから実際の setupper コードに触れる必要がなくなりました。

以下は、setupper をコンパイルするためのビルド スクリプトの抜粋です。次のように、ant からバッチ ファイルを実行する必要があります。

<exec dir="." executable="cmd" os="Windows NT">
  <arg line="/c build.bat"/>
</exec>

サンプル バッチ build.bat:

set isxpath="c:\program files\inno setup 5"
set isx=%isxpath%\iscc.exe
set iwz=myproj.iss
if not exist %isx% set errormsg=%isx% not found && goto errorhandler
%isx% "%iwz%" /O"%buildpath%" /F"MySetupper.exe" >>%logfile%
goto :eof
于 2008-10-07T12:36:38.190 に答える