4

我正在创建一个 Eclipse RCP 应用程序。

我在以下文章“每日构建是你的朋友”中遵循 Joel 的建议:

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

因此,我编写了一个很好的构建脚本,它创建了一个 Eclipse RCP 产品并在代码上运行单元测试。然后将所有结果分发到开发人员的列表中(经过一些抱怨)。现在我的下一步,我希望它创建我通常使用 inno setup 编译器手动创建的安装包。

问题是,我将如何绕过自动创建这个包?我想我可以从ant自动生成inno setup文件,然后从命令行调用编译器,但我不知道这是否可能。

这个任务有什么提示吗?也许任何其他可以从 ant 使用的设置应用程序?

4

2 回答 2

10

自动化安装程序构建时的另一个好技巧是使用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

现在您不需要从构建脚本中接触实际的安装程序代码。

下面是我的构建脚本中用于编译安装程序的片段。你需要像这样从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 回答