Можно ли автоматизировать создание пакета установки inno с помощью ant?
-
05-07-2019 - |
Вопрос
Я создаю приложение Eclipse RCP.
Я следую совету Джоэла в следующей статье "Daily Builds - ваш друг":
http://www.joelonsoftware.com/articles/fog0000000023.html р>
Итак, я написал хороший сценарий сборки, который создает продукт Eclipse RCP и запускает модульные тесты кода. Все результаты затем распространяются в списке разработчиков (после некоторого ворчания). Теперь мой следующий шаг, я хочу создать установочный пакет, который я обычно создаю вручную, используя компилятор inno setup.
Вопрос в том, как мне создать этот пакет автоматически? Я думаю, я могу сгенерировать файл установки inno автоматически из ant, а затем вызвать компилятор из командной строки, но я не знаю, возможно ли это.
Какие-нибудь советы для этой задачи? Может быть, любое другое приложение установки, которое можно использовать из муравья?
Решение
Конечно, проект 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
Другие советы
Еще одна приятная уловка при автоматизации сборки установщика заключается в использовании макроса препроцессора 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 ...
, а затем позже используйте их в ifdef
для создания различных типов установщика (следующий глупый пример):
[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif