簡體   English   中英

是否可以使用ant自動創建一個inno安裝包?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM