Querying Current Software Version

Checking the current version of the application can be done in multiple manner depending fo the needs (without of without launching the software for example).

Checking Version via the executable

Substance Painter executable on Windows contains few informations that can be queried by external tools (such as Python).

Example in Python 3 (taken from here) :


import os

import imp

import pip

import win32api #pypiwin32





## Reader

def getFileProperties(fname):

 """

 Read all properties of the given file return them as a dictionary.

 """

 propNames = ('Comments', 'InternalName', 'ProductName',

  'CompanyName', 'LegalCopyright', 'ProductVersion',

  'FileDescription', 'LegalTrademarks', 'PrivateBuild',

  'FileVersion', 'OriginalFilename', 'SpecialBuild')



 props = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}



 try:

## backslash as parm returns dictionary of numeric info corresponding to VS_FIXEDFILEINFO struc

  fixedInfo = win32api.GetFileVersionInfo(fname, '\')

  props['FixedFileInfo'] = fixedInfo

  props['FileVersion'] = "%d.%d.%d.%d" % (fixedInfo['FileVersionMS'] / 65536,

   fixedInfo['FileVersionMS'] % 65536, fixedInfo['FileVersionLS'] / 65536,

   fixedInfo['FileVersionLS'] % 65536)



## VarFileInfoTranslation returns list of available (language, codepage)

## pairs that can be used to retreive string info. We are using only the first pair.

  lang, codepage = win32api.GetFileVersionInfo(fname, '\VarFileInfo\Translation')[0]



## any other must be of the form StringfileInfo%04X%04Xparm_name, middle

## two are language/codepage pair returned from above



  strInfo = {}

  for propName in propNames:

   strInfoPath = u'\StringFileInfo\%04X%04X\%s' % (lang, codepage, propName)

   ## print str_info

   strInfo[propName] = win32api.GetFileVersionInfo(fname, strInfoPath)



  props['StringFileInfo'] = strInfo

 except:

  pass



 return props





## Check exe

Path = "E:/Software/Painter/Substance Painter.exe"



FileInfo = getFileProperties(Path)



print( FileInfo )

Will output :


E:SoftwarePainter>query.py

{'FixedFileInfo': {'Signature': -17890115, 'StrucVersion': 65536, 'FileVersionMS': 132251649, 'FileVersionLS': 65536, 'ProductVersionMS': 132251649, 'ProductVersionLS': 65536, 'FileFlagsMask': 0, 'FileFlags': 0, 'FileOS': 0, 'FileType': 1, 'FileSubtype': 0, 'FileDate': None}, 'StringFileInfo': {'Comments': None, 'InternalName': 'Substance Painter', 'ProductName': 'Substance Painter', 'CompanyName': 'Allegorithmic', 'LegalCopyright': 'Copyright (C) 2017 Allegorithmic', 'ProductVersion': '2018.1.1', 'FileDescription': 'Substance Painter 2018.1.1', 'LegalTrademarks': None, 'PrivateBuild': None, 'FileVersion': '2018.1.1', 'OriginalFilename': 'Substance Painter.exe', 'SpecialBuild': None}, 'FileVersion': '2018.1.1.0'}

Checking Version via Command Line

You can use command line as following :  substance painter.exe  command_name [option]

To ask the version use –version, -v.

NOTE
Note that the command line actions of Substance Painter will output a window.

Checking Version via Scripting

The scripting API (available via the help menu) allow to query the current version of the application.

Take a look at the namespace “alg” for further details.

Example :


//Print current version in the log window (string)

alg.log.info( alg.version.painter );
recommendation-more-help
substance-3d-painter-help-guide