2013-06-21 101 views
1

我想在章节描述中显示安装的可执行文件的版本号?获取已安装文件的版本

LangString DESC_SecSoftware ${LANG_ENGLISH} "Software PX" 
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 
!insertmacro MUI_DESCRIPTION_TEXT ${DescText} "Software test"  
!insertmacro MUI_FUNCTION_DESCRIPTION_END 

如何读取test.exe的文件版本?

它可以读取文件的版本是这样的:

${GetFileVersion} "C:\ftp\programm.exe" $ProgramVersion 

!include "FileFunc.nsh"

但必须使用绝对路径。我无法读取安装中包含的fileVersion。

回答

7

${GetFileVersion}宏将让你在机器上运行时你在哪里执行安装读取的文件版本,而该文件肯定是不存在的安装程序.EXE外

相反,你可以使用GetDllVersionLocal,在编译时执行,并从编程器主机上存在的原始.exe版本中获取版本。

!include "logiclib.nsh" 
ShowInstDetails show 
OutFile "exeversion.exe" 

!define exe_to_read "some.exe" 

Section 

    DetailPrint "getting version $EXEPATH" 
    GetDllVersionLocal "${exe_to_read}" $R0 $R1 ;the two values were read during compilation 

    IntOp $R2 $R0/0x00010000 
    IntOp $R3 $R0 & 0x0000FFFF 
    IntOp $R4 $R1/0x00010000 
    IntOp $R5 $R1 & 0x0000FFFF 
    StrCpy $0 "$R2.$R3.$R4.$R5" 
    DetailPrint "version read: $0" 

SectionEnd 
相关问题