2013-05-13 90 views
0

我已經使用NSIS編寫了一個安裝程序腳本,並通過VIProductVersionVIAddVersionKey命令添加了版本信息。當我查看編譯文件的屬性時,版本信息就像我期望的一樣。使用C#獲取NSIS文件版本

我的問題是當我試圖通過C#命令FileVersionInfo.GetVersionInfo(fileName).FileVersion獲取版本信息時,它返回一個空字符串。

這裏是複製的快捷方式:

NSIS腳本

!include LogicLib.nsh 
!include FileFunc.nsh 

!define PRODUCT_NAME "Installer" 
!define PRODUCT_VERSION "1.0.0.2" 

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 

VIProductVersion "${PRODUCT_VERSION}" 
VIAddVersionKey ProductVersion "${PRODUCT_VERSION}" 

OutFile "Setup.exe" 

Section "Installer" 
SectionEnd 

C#代碼

class Program 
{ 
    static void Main(string[] args) 
    { 
     FileVersionInfo fvi = FileVersionInfo.GetVersionInfo("Setup.exe"); 

     if (fvi != null) 
     { 
      Console.WriteLine(string.Format("File Version: {0}", fvi.FileVersion)); 
     } 
     else 
     { 
      Console.WriteLine("Could not load file version info"); 
     } 

     Console.WriteLine("Press any key to continue..."); 

     Console.Read(); 
    } 
} 

這使輸出:

File Version: 
Press any key to continue... 

我需要閱讀FileVersion1.0.0.2

回答

0

我想出了我做錯了什麼。即使它在屬性對話框中看起來正確,但我在VIAddVersionKey中使用了錯誤的值。要讓它正確讀取,您應該使用VIAddVersionKey FileVersion "${PRODUCT_VERSION}"