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