[英]Is it possible to automate the creation of a inno setup package with ant?
我正在創建一個Eclipse RCP應用程序。
我在以下文章“Daily Builds是你的朋友”中遵循Joel的建議:
http://www.joelonsoftware.com/articles/fog0000000023.html
所以,我編寫了一個很好的構建腳本,它創建了一個Eclipse RCP產品,並對代碼運行單元測試。 然后將所有結果分發到開發人員列表中(在一些抱怨之后)。 現在我的下一步,我希望它創建我通常使用inno setup編譯器手動創建的安裝程序包。
問題是,如何自動創建此包? 我想我可以從ant自動生成inno安裝文件,然后從命令行調用編譯器,但我不知道這是否可行。
有關此任務的任何提示嗎? 也許任何其他可以從螞蟻使用的設置應用程序?
自動化安裝程序構建時的另一個好方法是使用GetFileVersion
預處理器(ISPP)宏。 這樣你就不必以硬編碼的形式復制你的(二進制)文件的版本號(比如在Tom的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
確保它很容易,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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.