It looks like I spoke way too soon and jinxed myself. Thinking the script was ready to go, I headed into the office for some final checks and to make sure it cooperated with our benchmark tool. Frankly, I would have been surprised if it worked on the first try, and I was not surprised.
The first mistake I made was not compiling my AutoIt scripts into executable files. That's an easy fix. Try again and still nothing. For some reason the exe files aren’t running the way they should. So I tried running the AutoIt script just to make sure it works and I discovered a major problem, unrelated to the exe not working.
When I tested the scripts at home, I overlooked a major component. When someone installs an Autodesk application, that specific application is not the only thing installed. It will also install programs called “Autodesk Desktop App” and “Autodesk Genuine Service.” I didn’t think much of these because I have other Autodesk programs installed. The problem with this is these programs control the licensing and preferences of all Autodesk software. So when I created the Install/Uninstall scripts, I assumed the Deployment provided by Autodesk was taking care of the licensing, since it requires the serial number. However, that is only part of the licensing process. You also need to sign in to your account to verify that the serial number is correct. In the set up I had at home, I was already “signed in” so all I had to do was launch 3ds Max and everything just works.
Running that same installer on a fresh machine prompted me to accept the terms of service, then enter my email address and password. Once launched, 3ds Max has a welcome screen that needs to be cleared. None of these appeared for me at home because the other apps had saved my sign in and preference to not show the welcome screen at startup. Unfortunately, Autodesk chose to not use Windows API for any of these screens, so AutoIt doesn’t properly recognize them or any buttons or input fields. This will be annoying to deal with, but not impossible.
The worst part is uninstalling everything. There are a couple places our benchmarks get used. First is by us in Labs. If I don’t clean out all my files with a script, I can get them manually, or even not at all as they would not impact any other benchmarks. The second is when building a customer’s computer. Our goal is to run benchmarks tailored to the customer’s use so they can see exactly what they can expect from their computer. This is the place where I need 100% of the files to be removed before we send the computer to the customer. We don't want a bunch of unnecessary files crowding their hard drive, and we certainly don't want our license information going out to customers.
I had been using the uninstaller from the deployment. However, that only removes 3ds Max, not all the other stuff Autodesk installs. After uninstalling 3ds Max, I’ll then need to uninstall the other applications. I began researching how to do a clean uninstall, and found some very long instructions on Autodesk’s website. Files get written to several locations, so I’ll have to make a long list of folders to delete. The other very difficult process is the “Autodesk Genuine Service” that I mentioned. This validates any Autodesk software on the system, and so far, the only way I’ve been able to remove it is to uninstall all other Autodesk software, clear the left over files, then restart the system. If it detects any Autodesk software on the computer, it will not let you uninstall it. This is very difficult, if not impossible to do with a script.
I’m a bit stuck at the moment. We’ve reached out to Autodesk to see if they have a better work around or if I’m just missing something. If they don't have a solution, I’ll still be able to get benchmark results in labs, but we won't be able to use this in Production to give our customers the benchmarks we want to give them. Until we hear back from them, I’m still trying to cover as much as I can with scripts.
To make up for not having some benchmark results to discuss, I'll leave you with a picture of my boy Ludo.