antでinnoセットアップパッケージの作成を自動化することは可能ですか?

StackOverflow https://stackoverflow.com/questions/177611

  •  05-07-2019
  •  | 
  •  

質問

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

次の記事「デイリービルドはあなたの友達です」のジョエルのアドバイスに従っています:

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

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

質問は、このパッケージを自動的に作成するにはどうすればいいですか? antからinnoセットアップファイルを自動的に生成し、コマンドラインからコンパイラを起動できると思いますが、これが可能かどうかはわかりません。

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

役に立ちましたか?

解決

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

この行をセットアップ担当者に入力してください:

#include "settings.txt"

そしてsettings.txtにこのようなものを持たせます

#define myver=xxx.xxx
#define tags

ビルドスクリプトから実際のセットアップコードを変更する必要はありません。

belowは、セットアップスクリプトをコンパイルするためのビルドスクリプトのスニペットです。 次のように、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

他のヒント

インストーラのビルドを自動化するときのもう1つの便利な方法は、 GetFileVersion プリプロセッサ(ISPP)マクロを使用することです。そうすれば、(バイナリの)ファイルのバージョン番号をハードコードされた形式で複製する必要がなくなります(Tomの 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 ...

その後、これらを ifdef sで使用して、さまざまなタイプのインストーラーを作成します(愚かな例が続きます):

[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top