Можно ли автоматизировать создание пакета установки inno с помощью ant?

#java #eclipse #inno-setup #rcp

Вопрос:

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

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

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

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

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

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

Ответ №1:

Еще один приятный трюк при автоматизации создания установщика-использовать GetFileVersion макрос препроцессора (ISPP). Таким образом, вам не придется дублировать номера версий ваших (двоичных) файлов в жестко закодированном виде (как у Тома 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: SoftwareMyCompanyMyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif
 

Комментарии:

1. Где ты возьмешь ISPP.exe? Я не вижу инструмента препроцессора в своей папке, и я получаю ошибки при компиляции.

2. самый простой способ получить его-загрузить пакет быстрого запуска с домашней страницы InnoSetup. Это включает в себя компилятор, препроцессор и несколько других улучшений.

Ответ №2:

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

поместите эту строку в свой сетуппер:

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

образец пакетной сборки.bat:

 set isxpath="c:program filesinno setup 5"
set isx=%isxpath%iscc.exe
set iwz=myproj.iss
if not exist %isx% set errormsg=%isx% not found amp;amp; goto errorhandler
%isx% "%iwz%" /O"%buildpath%" /F"MySetupper.exe" >>%logfile%
goto :eof
 

Комментарии:

1. Спасибо! Отличный отклик. Я погуглил его, но не нашел простого способа сделать это сразу. У меня была идея, как действовать дальше, но я не был уверен на 100%. Предложение включить файл действительно аккуратно, так как я могу сгенерировать его из других вариантов сборки.

2. приятно слышать, дайте мне знать, если вам понадобятся еще какие-нибудь полезные советы