#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. приятно слышать, дайте мне знать, если вам понадобятся еще какие-нибудь полезные советы