EnglishРусский  

   ..

   fileversion.g

The project is closed! You can look at a new scripting language. It is available on GitHub.
Also, try our open source cross-platform automation software.

Ads

Installer and installation software
Commercial and Freeware installers.

source\lib\windows\fileversion.g
 1 /******************************************************************************
 2 *
 3 * Copyright (C) 2009, The Gentee Group. All rights reserved. 
 4 * This file is part of the Gentee open source project - http://www.gentee.com. 
 5 * 
 6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT"). 
 7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS 
 8 * ACCEPTANCE OF THE AGREEMENT.
 9 *
10 * Author: Alexey Krivonogov ( gentee )
11 *
12 ******************************************************************************/
13 
14 import "version.dll"
15 {
16    uint GetFileVersionInfoSizeA( uint, uint ) -> GetFileVersionInfoSize
17    uint GetFileVersionInfoA( uint, uint, uint, uint ) -> GetFileVersionInfo
18    uint VerQueryValueA( uint, uint, uint, uint ) -> VerQueryValue 
19 }
20 
21 type VS_FIXEDFILEINFO { 
22    uint dwSignature 
23    uint dwStrucVersion 
24    uint dwFileVersionMS 
25    uint dwFileVersionLS 
26    uint dwProductVersionMS 
27    uint dwProductVersionLS 
28    uint dwFileFlagsMask 
29    uint dwFileFlags 
30    uint dwFileOS 
31    uint dwFileType 
32    uint dwFileSubtype 
33    uint dwFileDateMS 
34    uint dwFileDateLS 
35 } 
36 
37 func uint getfversion( str filename, uint phiver plowver )
38 {
39    buf  data
40    uint off get pvs
41    
42    off = GetFileVersionInfoSize( filename.ptr(), &get )
43    
44    data.expand( off + 1 )
45    if off && GetFileVersionInfo( filename.ptr(), 0, off, data.ptr() )
46    {
47 //      "\\StringFileInfo\\040904E4\\ProductVersion"
48       if VerQueryValue( data.ptr(), "\\".ptr(), &pvs, &get )
49       {
50          phiver->uint = pvs->VS_FIXEDFILEINFO.dwProductVersionMS
51          plowver->uint = pvs->VS_FIXEDFILEINFO.dwProductVersionLS
52          return 1
53       }
54    }
55    return 0
56 }
57 
58 method str str.fversion( uint hiver lowver )
59 {
60    return this = "\( hiver >> 16 ).\( hiver & 0xFFFF ).\( lowver >> 16 ).\( lowver & 0xFFFF )"
61    return this
62 }