Maptitude 2020 Deployment via ECM (ConfigMgr) using PSADT

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.
  • 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.
  • 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.
  • Install Data
    • Use the DataInstaller.iss that was recorded; no modifications needed.
  • 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.
  • Now that the registry is setup, we can run InstantActivatorApp.exe.
    • Exit 0 does seem to mean that things worked, but I did get Exit 0 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.
  • 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
  • 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\
  • 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
  • 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. 

  1. I want to remember why I made certain decisions.
  2. 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.arrgets created if Edit your Preferences and uncheck the System Startup setting for Check for Updates on Startup.
  • softwarereg.arrgets 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.

Leave a Reply

Your email address will not be published. Required fields are marked *