2013-03-26 92 views
3

我有一個文件'releaseVersionNumber.txt',它是在我的構建過程中讀取的;目前其對我的Mac讀取建設,但我想在我的Windows NSIS讀它建造,以減少編輯位置(複製作惡)的數量...如何將文件的內容加載到NSIS中的變量/定義中?

所以我試圖取代:

!define VERSION 1.2.3 

喜歡的東西

FileOpen $4 "..\releaseVersionNumber.txt" r 
FileRead $4 $1 
FileClose $4 
!define VERSION ${1} 

但我得到一個錯誤命令的FileOpen無效外部分或功能。將其包裝在一個函數中我產生的命令調用在Section或Function之外無效,所以我似乎無法在安裝程序設置中執行此操作,只能在運行時執行此操作。

有沒有辦法實現我後??

+0

獲得另一個問題,現在使用後! define/file - 這不起作用:'VIProductVersion「$ {VERSION} .0」'給我_Error:無效的VIProductVersion格式,應該是XXXX_ .. 。 – Justin 2013-03-26 10:37:50

+0

原來變量未按預期設置 - !define/file正在加載「1.2?」 - 不知道怎麼回事,但在最後加入4/5空白修復它。 – Justin 2013-03-26 15:56:36

回答

10

!開始的所有命令都是compile time commands,因此在程序運行之前,它們會在編譯時進行處理。

  • 您可以嘗試聲明VERSION可變,而不是一個定義:

    Var VERSION 
    FileOpen $4 "..\releaseVersionNumber.txt" r 
    FileRead $4 $VERSION 
    FileClose $4 
    
  • 如果您需要VERSION是一個定義,那麼你可以嘗試在!define/file參數。

    !define /file VERSION "..\releaseVersionNumber.txt" 
    
  • 我想有一個version.nsh文件只用定義:

    !define VERSION "2013-03-25:16:23:50" 
    

    然後,我把它給:

    !include /NONFATAL version.nsh 
    # Default value in case no version.nsh is present 
    !ifndef VERSION 
        !define /date VERSION "%Y-%m-%d %H:%M:%S" 
    !endif 
    
+0

!define/file是我的一個! – Justin 2013-03-26 10:35:41

相關問題