【已解决,虽然不彻底】FileGetVersion 文件版本 BUG !
本帖最后由 chishingchan 于 2022-7-28 19:04 编辑搜索帖子,最早是 2009 年就有人提问!可能是碰巧,文件版本与产品版本相同就没有下文被结贴了!
一直到如今,这个 BUG 其实仍然存在!不用不知道,用到这个函数时就发现出问题了!
在 XP 时,文件属性显示有公司名称,在 7 时就没有了,看下图:
在编辑 Inno Setup 脚本时往往需要获取三项文件信息,看下面代码及下图:
所以就写了这个 FileInfo.au3
Local $Width = 480
Local $Height = 100
GUICreate("可执行文件版本信息", $Width, $Height, @DesktopWidth - $Width - 8, 4, -1, BitOR(16+8, 256+8))
Local $InputBrowse = GUICtrlCreateButton("浏览(&B)", 8, 10, 52, 20)
$InputFile = GUICtrlCreateInput("", 70, 12, 400, 16)
GUICtrlSetState(-1, 8)
GUICtrlCreateLabel("合法版权", 10, 34)
$LegalCopyright = GUICtrlCreateInput("", 70, 32, 400, 16)
GUICtrlCreateLabel("公司名称", 10, 54)
$CompanyName = GUICtrlCreateInput("", 70, 52, 400, 16)
GUICtrlCreateLabel("文件版本", 10, 74)
$FileVersion = GUICtrlCreateInput("", 70, 72, 400, 16)
GUISetState(@SW_SHOW)
While 1
If FileExists(GUICtrlRead($InputFile)) Then
GUICtrlSetData($LegalCopyright, FileGetVersion(GUICtrlRead($InputFile), "LegalCopyright"))
GUICtrlSetData($CompanyName, FileGetVersion(GUICtrlRead($InputFile), "CompanyName"))
GUICtrlSetData($FileVersion, FileGetVersion(GUICtrlRead($InputFile), "FileVersion"))
Local $IS = "AppCopyright=" & GUICtrlRead($LegalCopyright) & @CRLF & "AppPublisher=" & GUICtrlRead($CompanyName) & @CRLF & "VersionInfoVersion=" & GUICtrlRead($FileVersion)
ClipPut($IS)
EndIf
Switch GUIGetMsg()
Case -3
ExitLoop
Case $InputBrowse
GUICtrlSetData($InputFile, FileOpenDialog("请选择一个可执行文件。", @WindowsDir & "\", "可执行文件 (*.exe)", 1))
EndSwitch
WEnd
这个 文件版本 的结果是不对的,其实是 产品版本!这个 BUG 官网一直到现在也不管吗?!
本帖最后由 chishingchan 于 2022-7-25 20:30 编辑
除了上述的 Bug,估计还有,看图:
获取的信息是完全空白!
注:此文件不方便为附件!
用 _WinAPI_VerQueryValue 试试 afan 发表于 2022-7-25 20:47
用 _WinAPI_VerQueryValue 试试
好像也不行!第4列与第10列是相同的!
chishingchan 发表于 2022-7-25 21:29
好像也不行!第4列与第10列是相同的!
可能exe文件本身设置版本信息有问题。
不过,系统的属性版本信息与au3获取的方式肯定还是有差异 afan 发表于 2022-7-25 21:40
可能exe文件本身设置版本信息有问题。
不过,系统的属性版本信息与au3获取的方式肯定还是有差异
譬如:人要适应于社会,社会不懂得适应于人。
同理:Windows 这平台就比如是社会,AutoIt3 就是个人。
获取的方式也好、什么也好,总得要适用于 Windows。
这个问题如果 a 大也没法解决,那我就断定这是一个 BUG!
谁会提交 BUG,让官方去解决吧!谢谢! 上次不是说过了么?不要加参数就行了
GUICtrlSetData($FileVersion, FileGetVersion(GUICtrlRead($InputFile)) ) lin6051 发表于 2022-7-27 12:28
上次不是说过了么?不要加参数就行了
GUICtrlSetData($FileVersion, FileGetVersion(GUICtrlRead($InputFil ...
确实如此,不加参数可以获取正常数值。但这与 FileVersion 参数获取的不同就说不过去了,让人疑问,以哪个为准……
页:
[1]