JS 获取exe、dll、msi文件的版本信息

676 阅读1分钟

在exe、dll、msi的文件属性中,查看详细信息,可见其版本号。在文件上传时,前端如何获取版本号呢?参考vs-version-info-js,该仓库可以实现需求。

image.png

首先,复制仓库内index.jslib/*.js文件到自己的项目中。
projet
    - src
        - utils
            - vsVersionInfo
                - index.js
                - 其他复制的文件
       - components
       - main.js
       - 等等
在代码中应用
  1. 输入框选择文件
  2. 使用FileReader读取文件的ArrayBuffer
  3. 使用vsVersionInfo.parseBytes获取文件详细信息
import vsVersionInfo from '@/utils/vsVersionInfo'

export default {

  methods: {
    selectFile(file) {
      const reader = new FileReader()
      reader.readAsArrayBuffer(file)
      reader.onload = () => {
        if (reader.result) {
          try {
            const a = vsVersionInfo.parseBytes(reader.result)
            this.form.version = a[0].getVsVersionInfo().StringFileInfo['080404b0'].FileVersion
          } catch (error) {
            console.warn('获取版本号失败', this.form.version, error)
          }
        }
      }
      return false
    }
  }
}

FileVersion包含的文件的详细信息

{
    CompanyName: "TODO: <xiaomi>"
    FileDescription: "TODO: <Debug>"
    FileVersion: "22.08.01.1246"
    InternalName: "Mobile.dll"
    LegalCopyright: "Copyright (C) 2022"
    OriginalFilename: "Mobile.dll"
    ProductName: "TODO: <MCEAutomation>"
    ProductVersion: "2.0.0.0"
}

vs-version-info-js