Можно ли автоматизировать создание пакета установки inno с помощью ant? - PullRequest
3 голосов
/ 07 октября 2008

Я создаю приложение Eclipse RCP.

Я следую совету Джоэла в следующей статье «Ежедневные сборки - твой друг»:

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

Итак, я написал хороший скрипт для сборки, который создает продукт Eclipse RCP и запускает модульные тесты кода. Все результаты затем распространяются в списке разработчиков (после некоторого ворчания). Теперь мой следующий шаг, я хочу создать установочный пакет, который я обычно создаю вручную, используя компилятор inno setup.

Вопрос в том, как мне обойтись созданием этого пакета автоматически? Я думаю, что я могу сгенерировать файл установки inno автоматически из ant, а затем вызвать компилятор из командной строки, но я не знаю, возможно ли это.

Какие-нибудь советы для этой задачи? Может быть, любое другое приложение установки, которое можно использовать из ant?

Ответы [ 2 ]

10 голосов
/ 14 ноября 2008

Еще один приятный трюк при автоматизации сборки установщика - использование макроса препроцессора GetFileVersion (ISPP). Таким образом, вам не нужно будет дублировать номера версий ваших (двоичных) файлов в жестко запрограммированной форме (как в settings.txt Тома) - компилятор установщика просто прочитает его из ресурсов версий файлов. E.g.:

#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
7 голосов
/ 07 октября 2008

Конечно, это просто, проект Inno представляет собой простой текстовый файл, так что вы даже можете легко редактировать скрипт setupper с помощью ant, однако я бы порекомендовал создать отдельный небольшой включаемый файл вашим скриптом. Вы можете хранить там «переменные», такие как версия + номер сборки, которые вы показываете в начале установки.

поместите эту строку в ваш установщик:

#include "settings.txt"

и сделайте settings.txt как-то так

#define myver=xxx.xxx
#define tags

теперь вам не нужно прикасаться к самому коду setupper из скрипта сборки.

ниже приведен фрагмент моего скрипта сборки для компиляции настроек. вам нужно выполнить командный файл из муравья следующим образом:

<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
...