I got to tackle a Maptitude 2020 Deployment via ECM (ConfigMgr) using PSADT for a deployment across a couple of our labs. Overall, it wasn’t too bad. However, it was challenging enough that I thought I put some notes in a blog and share the end result.
We used to use an in-house framework for doing installs, but we’ve recently decided to give PSADT another shot. So this one was built with PSADT. I won’t discuss my dislikes for their methodology in this post; maybe another day. We use ECM for our deployment needs.
I’ll start with the fact that I was very happy to see that Caliper supplied some basic documentation for deploying their software. The /BypassActivation
switch is key for getting passed the licensing wizard during the install, but there’s still some desire to be had around deploying the MS Access component silently; which would require unpacking of the installer and deploying separately, as far as I can tell. However, once you’ve bypassed activation, you now have to license the software. Despite the title of this doc being “Activating Your Maptitude License Automatically,” it is referring to the wizard, not doing it silently. After a lot of self-discovery, and working with their extremely helpful support team, I have a workable solution. I was also to happy to hear that they are working on improving their documentation. In part, I wrote this blog to share with my experience with Caliper.
The Maptitude 2020 deployment was for build 4720. I did put a cleaned version of my work on GitHub/UNT-CAS/Maptitude for public consumption. Obviously, I’m not going to put our real registration details, computer names, serial numbers, or the installation binaries on that repo.
Installation
I assume you know how to read PowerShell and just need help with this Maptitude 2020 deployment. I’m just going to give you a quick outline, and then I’ll link you to the code:
- Licenses are good for one computer.
- Even though the deployments are restricted to a collection, we are using a
settings.json
file to define which computer gets which license key. - If the computer is not in the
settings.json
, we throw an error.
- Even though the deployments are restricted to a collection, we are using a
- Create
Setup.iss
file for silent installation.- This is built from the one recorded during test installation, named it
MaptitudeInstallation.iss
. - Registration information and license key are injected into the
Setup.iss
.
- This is built from the one recorded during test installation, named it
- Install Visual C++ Redist
- Required by the Access DB Engine
- Install Access 2016 DB Engine
- Install Maptitude
- Use the
Setup.iss
. - Use the
/BypassActivation
switch.
- Use the
- Install Data
- Use the
DataInstaller.iss
that was recorded; no modifications needed.
- Use the
- Fix the registry because the
/BypassActivation
prevents Serial Number prompt in ISS.- That means putting the serial number in the
Setup.iss
is pointless, but it was already coded. I didn’t want to re-record the ISS file. - Just need to write the serial number to two spots in the registry:
- 64-bit location for Maptitude.
- 32-bit location for License Activation.
- That means putting the serial number in the
- Now that the registry is setup, we can run
InstantActivatorApp.exe
.- Exit
0
does seem to mean that things worked, but I did get Exit0
at least once when things didn’t work. I wish I could tell you the exact cause, but I won’t rely on the Exit code for a status; see the next step for a status.
- Exit
- Validate licensing worked.
- Simplest way I found to validate installation was to attach to the
InstantActivator.dll
and ask it to start a status evaluation. Hopefully we get back this status:- KeyStatus:
SCCP_ACTIVATED
- KeyHasSerialNumber:
$true
- KeyStatus:
- Simplest way I found to validate installation was to attach to the
- Extract
AppData.zip
to Default Users’s AppData; this mostly just puts in place a couple of settings.- Turn off Registration Prompt (doesn’t appear to work)
- Turn off Software Updates
- Extract
AppData.zip
to each Users AppData; this puts in place the same settings as Default User’s AppData did in the previous step.- Contents of AppData.zip
- Collected From:
%AppData%\Caliper\Maptitude 2020\
- Extracted To:
C:\Users\Default\AppData\Roaming\Caliper\Maptitude 2020\
- Collected From:
- Contents of AppData.zip
- Delete icon from the All User’s Desktop.
That’s all the pseudocode for you. There’s a simplified version of the install script on our GitHub for you to sift through and use.
For those using PSADT, the rest of that repo is setup to show you how to use PSADT the way I did. I don’t include the install binaries or the PSADT files. You’ll have to get those from Caliper or PSADT respectively.
Detection
So we’re done with the installation of our Maptitude 2020 deployment, but that’s just a piece of the puzzle in a self-service ConfigMgr Application. Even though this software will be a required installation, we need to properly detect installation.
I’m pretty detail-oriented. So, when I write an installation step in ConfigMgr, I like to detect that that step was completed successfully. Here are my detection questions/steps:
-
Get the install directory from registry.
- Fail detection as quick as possible.
- Is Maptitude installed?
- Is it the correct version?
- Is Data installed?
- Is Access DB Engine installed?
- Is the License valid?
- KeyStatus:
SCCP_ACTIVATED
- KeyHasSerialNumber:
$true
- KeyStatus:
- Does Default Users’s AppData have some files?
- Note: I decided to not evaluate each user profile for the AppData folder.
- Is the icon removed from the All User’s Desktop?
That’s all the pseudocode for you. The detect script that I will use in the ConfigMgr Application is on our GitHub for you to sift through and use.
You probably noticed that I didn’t detect if the license was allowed to be on the computer or not. This was deliberate. My logic says that I should know the install-state of Maptitude regardless of whether it is allowed to be installed or not.
Uninstallation
Now we need to consider uninstallation in our Maptitude 2020 deployment. Even though this software will be a required installation, we need to be able properly uninstall. This is because the license is tied to the computer, and it needs to be deactivated from the computer before moving it to another computer. If you don’t do it properly, you’ll need contact support to get them to release your licenses.
The outline for this should be pretty straight forward:
- Deactivate the license
- Uninstall Data
- Uninstall Maptitude
- Remove Default User’s AppData
- Remove each User AppData
- Remove
C:\Program Files\Maptitude 2020
That’s all the pseudocode you get for uninstallation. I chose not to remove the Visual C Redistributables or the Access DB Engine as part of uninstallation; you never know if something else has picked any of that up as a dependency. There’s a simplified version of the uninstall script on our GitHub for you to sift through and use.
Notes
Overall, this wasn’t the most challenging completely silent installation that I’ve dealt with. It was certainly better than the recent Adobe CC Licensing changes we had to deal with. I don’t want this section to sound like I’m complaining about Caliper’s installer. I am just putting notes down here for two reasons.
- I want to remember why I made certain decisions.
- I want Caliper’s Technical Support to someday see this, and make improvements based on honest, open notes.
Configuring User Experience
The configuration of the user experience still leaves a lot to be desired. I really only wanted to not prompt users for updates and registration when they started up Maptitude. In order to do that, I was told by Caliper’s Technical Support that I really cared about the following two files:
checkupdate.arr
:gets created if Edit your Preferences and uncheck the System Startup setting for Check for Updates on Startup.
softwarereg.arr
:gets created if check the “Don’t show this message again” when prompted for Online Registration.
Unfortunately, the softwarereg.arr
doesn’t appear to affect anything despite being created when checking that box. Clearly there’s another part to this, but I went ahead and took the entire AppData folder thinking it had to be somewhere in there. Despite that, the Online Registration prompt still appeared. It also seems that without the rest of the AppData folder, checkupdate.arr
wouldn’t have worked either.
I would really prefer a registry setting under HKLM somewhere for both of these. A configuration item in HKLM should also grey-out the ability for a user to recheck the Check for Updates on Startup preference. Hopefully, Caliper can improve this.
New Release Notifications
I know I just finished explaining that I can disable the New Release notification, but when I do get it, like on my test machine, the download links should actually work.
When I click the links, MaptitudeDownloadManager4.exe
gets downloaded. When I run that, I am prompted for my serial number. When I enter my serial number, I get a prompt that reads, “Your educational download link has expired.” Basically, it’s telling me that I don’t actually have an update available.
I feel like this is a decision made by the sales team, but the New Release notification should be smart enough to not prompt when I don’t actually have an update available.
Artifacts Left Behind Post-Uninstallation
Uninstallation leaves artifacts. There are licensing files still in C:\Program Files\Maptitude 2020
, specifically SSCProt.exe
, ActivateLicense\DEACTIVATION_LOG.txt
, ActivateLicense\InstantActivator.dll
, and ActivateLicense\Interop.SSCProt.dll
.