首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSIS获取的EXE文件版本是UPX压缩的

NSIS获取的EXE文件版本是UPX压缩的
EN

Stack Overflow用户
提问于 2015-05-22 17:29:01
回答 1查看 289关注 0票数 0

几年来,我一直使用一个小NSIS脚本来获取EXE的版本,这样我就可以在安装程序欢迎文本中显示它。

我在这里找到了脚本:compile-time

代码语言:javascript
复制
!define File "C:\MyFile.exe"

OutFile "GetVersion.exe"
SilentInstall silent

Section

 ## Get file version
 GetDllVersion "${File}" $R0 $R1
  IntOp $R2 $R0 / 0x00010000
  IntOp $R3 $R0 & 0x0000FFFF
  IntOp $R4 $R1 / 0x00010000
  IntOp $R5 $R1 & 0x0000FFFF
  StrCpy $R1 "$R2.$R3.$R4.$R5"

 ## Write it to a !define for use in main script
 FileOpen $R0 "$EXEDIR\Version.txt" w
  FileWrite $R0 '!define Version "$R1"'
 FileClose $R0

SectionEnd

最近,我开始使用UPX压缩应用程序的EXE。

现在它已经被UPX压缩了,文件版本脚本不再工作了,我猜是因为非标准的头布局。

如何从UPX压缩EXE读取文件版本?

更新:现在关闭了,但我后来发现,这可能与某种提升的权限问题和在映射驱动器上运行命令有关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-22 17:51:22

即使在使用UPX --ultra-brute test.exe时,当我尝试时,版本信息块也没有被压缩。你用的是特殊的UPX开关吗?你试过--keep-resource=%resourceid%吗?

如果您正在使用NSIS v3,您可以使用!getdllversion在编译时获得版本,而不必使用!system

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30402624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档