Add or Remove programs in Server Core

After playing around with Server Core for a while I’m beginning to wonder how to perform certain administrative tasks. Today I found myself wondering about software management after reading a post on the Microsoft TechNet forums and decided to put my thoughts on paper.

 

Executables and MSI packages

Basically there are two dominant ways to install software to a Windows installation. The first way is through running an executable with an occasional command line switch. The second way is using MSI packages in combination with msiexec. MSI packages offer advantages, but the drawback is not all software is available as a MSI package.

To me the real difference between exe and msi files in regards to Server Core is how the information to uninstall the software is stored afterwards.

 

Add or remove programs

Again there are two ways to get information on the software that is installed onto your Server Core installation in absence of the “Add or Remove programs” Control Panel applet. (also known as appwiz.cpl)

Registry

The first way is by checking the registry keys underneath the following key:

 

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

 

Luckily Server Core offers regedit.exe and regedt32.exe to digg deep into the registry of our Server Core box. Actually the “Add or Remove programs” Control Panel applet checks these registry keys at well. Since we all know how long it takes to get a complete list of all the software on your windows box it’s obvious this method takes a lot of time.

As this TechNet page points out the software packages that are listed underneath the Uninstall registry key all have a registry value associated with the UninstallString. You can use this value as a command to uninstall the software.

WMI

An easier way to check which software packages were installed is using the Windows Management Instrumentation Console:

wmic product

 

This returns the information on the packages installed using the MSI installer. This however might not be all the software installed on your box. It’s a fast way, but obviously not very thorough. The output represents the MSI packages. Using the MSI packages and the uninstall command line switch you can uninstall packages.

Drivers

When your specifically searching for drivers that are installed for your systems hardware you can use the following command line:

 

Sc query type= driver

 

Uninstalling a driver is not a very likely scenario, but you can uninstall drivers using:

 

pnputil -d -f package.inf

 

According to this TechNet page this will remove the package from the driver store. restarting the server will result in the same scenario before you actually added the driver to the system. (I can think of scenarios where this might be a good thing)

Windows Updates

Checking for Windows Updates on Server Core is a whole other ball game, for which I recommend using the following command line:

wmic qfe

 

Removing a Windows Update is easy as well, since the above command line outputs values that you can use in the following command line:

Wusa.exe patchname.msu

 

 

Concluding

There are two main ways of installing software on your Server Core box. There are also two ways of checking for installed software and removing them.

Digging through the registry might not be the most efficient way to check for installed software and find the removal strings.

I suspect the Server Core team might find it useful to supply us with some software removal option inside SCregEdit.wsf. Using a third party (freeware) tool like Revo Uninstaller or MyInstaller and their possible attack surfaces from my point of view should not be a part of the Server Core strategy.

Further reading

Windows Installer: Benefits and Implementation for System Administrators
WMIC – Take Command-line Control over WMI
Command-Line Switches for the Microsoft Windows Installer Tool
Windows Server 2008 – Uninstall or Reinstall a Device
Uninstall Registry Key (Windows)
MyUninstaller – alternative to Add or Remove Programs
Why did the Add or Remove Programs control panel try to guess all that information?
Remotely Deleting a Program Listed in Add/Remove Programs
(Add or) Remove Programs
Remove program from Add/Remove program lists
Remove Programs in Bulk with Absolute Uninstaller
The Brutal Inefficiency of MSIEXEC
MSI Gurus – Command-Lines
Executing MSI From Command Prompt

Disclaimer Beta Software

The information on this webpage applies to software from Microsoft that was in testing phase but utilizable by experienced users by the time the webpage was written. This software has not been released for sale, distribution or usage for the general public. The information on this webpage and the beta software are provided “as is” without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.

leave your comment