2008-10-07 68 views
3

我正在創建一個Eclipse RCP應用程序。是否可以使用ant自動創建inno安裝程序包?

我下面喬爾的以下文章中建議「每日構建是你的朋友」:

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

所以,我已經寫了創建一個Eclipse RCP產品一個很好的構建腳本並運行單元測試代碼。然後將所有結果分發給開發者列表(在一些抱怨之後)。現在我的下一步,我希望它創建我通常使用inno setup編譯器手動創建的安裝程序包。

問題是,我將如何解決自動創建該軟件包?我想我可以從ant自動生成inno安裝文件,然後從命令行調用編譯器,但我不知道這是否可行。

此任務的任何提示?也許可以從螞蟻使用任何其他設置應用程序?

回答

7

確保其簡單,創新科技項目是一個純文本文件,所以你甚至可以通過螞蟻輕鬆編輯setupper劇本,但我會建議建立一個獨立的小文件,包括您的腳本。您可以在那裏存儲「變量」,例如您在安裝開始時顯示的版本+內部版本號。

,就把這行到你的setupper:

#include "settings.txt" 

,並SETTINGS.TXT有這樣的事情

#define myver=xxx.xxx 
#define tags 

現在你不需要從構建腳本觸及實際setupper代碼。

下面

是從我的構建腳本片斷編譯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 
+0

謝謝!偉大的迴應。我做了谷歌它,但我發現沒有簡單的方法馬上做到這一點。我對如何進行了一個想法,但我不是100%肯定的。包含文件的建議非常簡潔,因爲我可以從其他構建選項中生成該文件。 – 2008-10-07 12:49:29

+0

很高興聽到,讓我知道如果你需要另一個INNO提示 – Tom 2008-10-08 07:56:42

10

另一個不錯的技巧時自動安裝的建築是使用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 s到創建不同類型的安裝的(笨示例如下圖):

[Registry] 
#ifdef SpecialEdition 
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ... 
#endif 
相關問題