2016-04-06 54 views
1

我希望使用命令行構建我的Inno Setup腳本,並且我想傳入產品版本號作爲參數。我試圖像這樣實現它:將版本號傳遞給Inno Setup編譯器

[setup] 
VersionInfoVersion={param:version|0.0.0.0} 

但是編譯器通知我這個指令是無效的。我已閱讀this後如何在自定義參數傳遞的命令行和承擔我應該只能夠在像傳遞:

compil32 /cc "c:\isetup\samples\my script.iss" /version=1.0.0.0 

我也從this post嘗試了建議,並試着做以下幾點:

#define PathToMyBinary "C:\bin\x64\Release" 
#define ApplicationVersion GetFileVersion('#PathToMyBinary\MyBinary.dll') 

VersionInfoVersion={#ApplicationVersion} 

但它似乎沒有返回任何東西。這兩種方法對我來說似乎都是有效的,所以我希望有人能夠解釋我出錯的地方。

回答

3

假設你通過像預處理器變量定義版本:

[Setup] 
VersionInfoVersion={#ApplicationVersion} 

要設置一個命令行的版本,則必須使用ISCC.exe command-line compiler及其/D switch

ISCC.exe Example1.iss /DApplicationVersion=1.2.3.4 

要從二進制文件讀取版本,您正確使用了GetFileVersion pre-processor function

但是你的化妝路徑的語法是錯誤的。
正確的語法是PathToMyBinary + '\MyBinary.dll',如:

#define PathToMyBinary "C:\bin\x64\Release" 
#define ApplicationVersion GetFileVersion(PathToMyBinary + '\MyBinary.dll') 

Inno Setup Preprocessor: Expression Syntax

+0

我現在正在使用預處理函數GetFileVersion設置版本,現在它正在使用正確的語法,謝謝。 – JNH

相關問題