Hi there, it’s the same faces, but in a new location!

Welcome to moof IT, the new home of my colleagues and I. I’ll be continuing to submit blogs on anything and everything that I feel will help out other Apple Admins as I’ve done previously. Right, enough waffle, lets get to it.

In this blog post, we’ll explain how we went about managing Microsoft Visual Studio Code for Mac.

 

Microsoft Visual Studio for Mac

Released back in March 2016, Visual Studio is Microsoft’s own offering for Code editing, for Windows, Mac and Linux.

Recently we were asked to package and deploy this piece of software for a UK university. Managing Microsoft Visual Studio Code for Mac turns out to be a bit of a pain.  Especially working out how to include a number of custom extensions (once myself or one of my colleagues gets our notes square, we’ll try and share our methods).

One of the extra tasks, as you’d expect in many locations, is the ability to control and manage the release of updates to client devices. As part of this, we were required to suppress the automatic checking for updates, for two key reasons:

  1. It allows us to both control the ‘current’ level of patching for the application, as well as proceed with a phased ‘dev’ -> ‘testing’ -> ‘live’ rollout strategy.
  2. It should reduce the pop up messages disabled to users as they launch the run the application.

After a lot of digging I found the information I required, here.

Oh, it’s a JSON file. In the User’s home area. And in a nested directory within Application Support. That’s gonna rule out using profiles. sigh

 

It’s Scriptin’ Time

Ok, on another blog I wrote about dumping a web shortcut file (a web-lock file) on the currently logged in user’s desktop. I’ve taken the majority of that script, and turned it into this one.

So what’s it doing eh?

  • Line 23 – This is the name of the file we need
  • Line 30 – This is the path to the directory the file sits in
  • Lines 38-47 – This checks if the logged in user is either ‘root’ or blank, and bails
  • Lines 52-69 – This will check for the parent directories and create them if required
  • Lines 61-69 – This will create the file with the required contents and permission it as expected.

 

Gotcha’s

Some gotcha’s about this script in it’s current usage:

  1. If a user already has launched Visual Studio, they’d almost certainly already have a populated settings file, and…well…this script will wipe it clean, before applying what we want, so I’d suggest having this script run at login, once per user.
  2. Managing Microsoft Visual Studio Code for Mac requires that you write to a text file. It is possible for the user to undo these changes. If you wish to be able to manage this setting in an Apple supported manner, perhaps with the use of a configuration profile (much like the Office for Mac suite), I’d suggest getting in touch with the developers, perhaps via the Community Pages
  3. If the script detects the root user account, or no user account, it will exit without doing any work. These two scenarios tend to mean the device is sitting at the login window, or some other strangeness that would stop the script completing fine anyway.
  4. I’ve only tested this scripted solution on 10.12.x and 10.13.x.

 

How do I use the script?

I’d suggest using this as a Jamf Pro (formally Casper Suite) login policy, or using one of the outsetlogin triggers.

 

Summary

And there we go, I’ve detailed the solution we used for managing Microsoft Visual Studio Code for Mac, specifically to suppress the app’s auto-update checks (and prompts). Hopefully that’ll help some of you out! As always, if you have any questions, queries or comments, let us know below (or @daz_wallace on Mac Admins Slack) and I’ll try to respond to and delve into as many as I can.

 

The usual disclaimer:

While the author has taken care to provide our readers with accurate information, please use your discretion before acting upon information based on the blog post. I will not compensate you in any way whatsoever if you ever happen to suffer a loss/inconvenience/damage because of/while making use of information in this blog.