2009-02-09 50 views

回答

1

甜!這是可能的:看http://nsis.sourceforge.net/Invoking_NSIS_run-time_commands_on_compile-time

的基本思路是:

  1. 編譯一個單獨腳本,在你的主腳本生成可執行
  2. 運行可執行文件(通過!system,在編譯的時候) - 和這會產生一個文本文件(!define小號無論你需要)
  3. !include在主腳本的文本文件

and presto!你已經在編譯時在腳本中生成了一些東西。

2

你可以這樣做:

!system '"calculate_version.exe" "tempfile.tmp"' 
!searchparse /file "tempfile.tmp" `APP_VERSION=` APPVERSION 

這樣做什麼:調用calculate_version.exe(這可能是一個簡單的NSIS腳本調用你的函數)。這個可執行文件應該輸出版本號爲tempfile.tmp。版本的格式不重要;在這個例子中我選擇了「APP_VERSION = something」(這可以使用WriteINIStr來寫)。

在下一行中,我們打開臨時文件並搜索它所寫的行;那麼我們將$ {APPVERSION}設置爲我們在那裏找到的任何東西。

+0

我實際上更喜歡我引用的文章中的想法(與您的文章幾乎相同),因爲在關聯的腳本(寫入!定義等)中完成了艱苦的工作,而不是必須解析您需要的內容主要劇本。 – 2009-02-09 08:44:47