Author Topic: WkSBSUpdatDir - Free exe to update a project to the lastest Substance version  (Read 1152 times)


When a new release of Substance Designer comes out and modifies the structure of the .sbs file format you get a popup message every time you open a Substance file in Substance Designer that has not yet been saved with this version. This becomes pretty annoying when working with big libraries.

Thanks to WkSBSUpdateDir it is now very simple and fast to update a whole project in one time!

This simple exe is free for non-commercial use (= you can use it in production but not sell it) and open source.

Hope that helps


Thanks a lot for sharing this!
But... It's not working for me.
I keep getting the error message: 'System can't find the given directory'
I've attached my log, though errors are in Dutch, but al of them translate to what I just said.
I tried copying my files to a different location and running the script there, but get the same error.

I'm gonna give it a guess and say it's because I'm using the steam version and therefore don't have the default install location for designer. The location is different and the install folder is still called "susbtance designer 6", despite the fact that I'm using 2012.2.5

I decided to root around in your code to see what's going on.
I'm not a programmer so I don't know how to fix it, but this bit of code seems to get ignored

Code: [Select]
# check for Substance Designer
lSDPathStr = "C:\\Program Files\\Allegorithmic\\Substance Designer\\"
if os.path.isdir(lSDPathStr):
    print("An instance of Substance Designer has been found here:")
    print("   \"" + lSDPathStr + "\"")
    userInputStr = input("Do you want to use this instance to update a project? Y/N: ")
    if not("Y" == userInputStr or "y"== userInputStr):
        lSDPathStr = None

# ask for another Substance Designer installation folder
if None == lSDPathStr:
    lSDPathStr = input("Enter the path of the instance of Substance Designer you want to update to or press Q to quit:\n")
    if "Q" == lSDPathStr or "q" == lSDPathStr:
        lSDUpdaterPathStr = lSDPathStr + "\\" + sbsUpdaterName
        if not os.path.isfile(lSDUpdaterPathStr):
            lbKeepAsking = True
            while lbKeepAsking:
                print("File \"sbsupdate.exe\" not found in \"" + lSDUpdaterPathStr + "\"")
                lSDPathStr = input("Please enter Substance Designer path again or press Q to quit:\n")
                if "Q" == lSDPathStr or "q" == lSDPathStr:
                    lSDUpdaterPathStr = lSDPathStr + "\\" + sbsUpdaterName
                    lbKeepAsking = not os.path.isfile(lSDUpdaterPathStr)

I don't get a question about my install directory, as you can see.

Hi Eggfruit,

I do apologize for my late answer.

Indeed there is a case in the code where the question of the version of SD is not asked. I guess you found it because your instance of SD in not in this directory.
I did a fix in version 1.2 and put it on my website (
Can you tell me if it solves your issue?

Thank you very much,


Thanks a lot for updating it, it work great now!

By the way, I noticed it also automatically updates sub-folders. In my case this was useful, but I can imagine some people would like the option to disable this, like you have for the autosave folders. Just a suggestion of course :)


Glad it works :)

Thanks for the suggestion, I can integrate that in the next release.