If you deploy Slack to Windows devices, you have probably already hit this. A while ago, Slack retired its machine-wide Microsoft Installer (MSI) package and replaced it with an MSIX package. The download links are gone, the old MSI is no longer supported, and the MSIX is now the only path Slack offers for deploying at scale on Windows.
For a lot of IT admins, that was not welcome news. The MSI had been the reliable way to push Slack through Microsoft Intune for years. It installed silently, it sat in the registry where every detection rule and patching tool expected to find it, and it uninstalled with a standard msiexec command. Swapping it for MSIX is not a like-for-like change.
Why the switch is more painful than it sounds
The first problem is that Slack does not give you a clean upgrade path. You cannot deploy the MSIX over the top of an existing MSI install. Slack’s own guidance is blunt about it: the existing MSI has to be removed before the MSIX will install. So every device already running the machine-wide MSI needs the old package uninstalled first, then the MSIX laid down after. On a fleet of a few thousand machines, that is two steps you have to get right, in the right order.
The second problem is that Slack left the changeover entirely up to you. Part of me hoped the retirement might be temporary, so I went searching to confirm the MSI really was gone and not quietly coming back. It was gone for good. Then I went looking for an easy way to move existing machines onto the MSIX, and that is where it fell apart: Slack had not provided a migration method. So I read through the community to see how everyone else was coping, and the complaint kept coming back to the same thing. The MSIX would not remove the old MSI for you. Everyone wanted the move to be one clean step, and nobody had found a way to make it one.
And MSIX behaves differently once it is on the device. It is provisioned rather than installed in the classic sense, its data lives in a virtualised per-user location instead of the usual paths, and the commands you use to deploy it are not the msiexec switches your existing scripts are built around.
New: Slack Machine-Wide MSIX now in Pckgr
We have had the user-context Slack MSIX in Pckgr for a while. The piece that was missing, and the piece most admins actually need, was the machine-wide version that provisions Slack for every user on the device. That is now live.
More to the point, our package handles the messy part of the migration for you. It does not assume a clean device. During install, it checks for the legacy machine-wide MSI and removes it before installing the MSIX, so you do not have to run a separate uninstall step or sequence two deployments.
How the migration works in Pckgr
The package is built on the PowerShell App Deployment Toolkit (PSADT), and the cleanup logic runs before anything is installed.
- It looks for the old MSI. The script scans the standard uninstall registry keys, both the 64-bit and
WOW6432Nodepaths, for the display nameSlack (Machine). That is the entry Slack’s machine-wide MSI leaves behind. - It runs Slack’s own uninstall string. If the entry is found, the script pulls the registered uninstall command and runs it silently with
/quietand/norestart, so there is no user prompt and no surprise reboot. - It checks the result properly. The standard MSI success codes (
0,3010for a pending reboot, and1605for “already gone”) are all treated as success. Anything else stops the install rather than layering an MSIX on top of a half-removed MSI. - It provisions the MSIX machine-wide. Running in system context, the package uses DISM (Deployment Image Servicing and Management) to provision the MSIX for all users, current and future, the same way Slack recommends for IT-controlled environments.
The cleanup itself is only a handful of lines. Find the registry entry, then hand its uninstall string back to msiexec with the silent switches added:
# Look for the legacy machine-wide MSI by its registry display name$targetDisplayName = 'Slack (Machine)'$registryPaths = @( 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*')$uninstallEntry = $nullforeach ($path in $registryPaths) { $uninstallEntry = Get-ItemProperty -Path $path -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -eq $targetDisplayName } | Select-Object -First 1 if ($uninstallEntry) { break }}if ($uninstallEntry -and $uninstallEntry.UninstallString) { $arguments = ($uninstallEntry.UninstallString -replace '(?i)msiexec.exe', '').Trim() if ($arguments -notmatch '(?i)/quiet|/qn') { $arguments += ' /quiet' } if ($arguments -notmatch '(?i)/norestart') { $arguments += ' /norestart' } $process = Start-Process msiexec.exe -ArgumentList $arguments -Wait -PassThru -NoNewWindow # 0 = success, 3010 = reboot pending, 1605 = already uninstalled if ($process.ExitCode -notin 0, 3010, 1605) { throw "Slack MSI uninstall failed with exit code $($process.ExitCode)." }}
Everything after that is the MSIX install, which the package handles for you.
Note: If a device never had the machine-wide MSI in the first place, the cleanup step finds nothing and moves straight on to the install. There is no harm in deploying it across a mixed fleet.
The result is a single deployment you can push from Intune to your whole Slack population. Devices on the old MSI get cleaned up and moved across. Devices that are already clean just get the MSIX. You do not have to split your fleet into “has the MSI” and “doesn’t” and run two separate campaigns.
Final notes
Slack’s MSI retirement is one of those changes that is easy to put off until a detection rule breaks or a new build fails. If you still have the machine-wide MSI out there, it is worth getting the MSIX migration done while it is on your terms, rather than after something stops working.
The Slack machine-wide MSIX, with the MSI cleanup built in, is in the Pckgr catalogue now. If you want to see how Pckgr packages, patches, and deploys apps like this across your Intune tenant, start a free trial at http://intunepckgr.com or book a quick demo: https://calendly.com/intunepckgr/pckgr-overview-30mins-clone.

Leave a comment