IIS Express: what, why, how

What: cutdown, unloved (all official Microsoft documentation references seem to be 6 years older or more), small cousin of IIS. Designed to be used for developer try-outs, rather than any production use, as, for example, it is not designed to be run as a service. You can obviously write a service wrapper, but that doesn’t contradict my point.

Why: on my personal dev laptop, I choose to keep a largely Microsoft world. But as it is an old machine with an OK but small SSD, then those Microsoft things need to be lightweight. A small IIS fits that bill.

How: Download the MSI here. At less than 10MB, that’s what I want. Install.

Where is it? You’ll find no obvious sign of its presence. It’s here:

Now you can just double-click the icon…

which brings up this:

So where is this located, physically?

There is this file “C:\Program Files (x86)\IIS Express\AppServer\applicationhost.config”, which contains this, which seems pretty close:

If I now stick a basic index.html in the empty_wwwroot…

<!doctype html>
<h1>This is stuff</h1>


Right now, I cannot figure out how a no-argument execution of iisexpress.exe from explorer (x86 or 64bit) determines where to source its website values, e.g. Website1.

So the best path seems to be to execute iisexpress.exe, passing as arguments the full path to the config file, and the name of the site within the config file that you want to access. That def works:

PS C:\Program Files\IIS Express> .\iisexpress.exe /config:”C:\Program Files\IIS Express\config\templates\PersonalWebServer\applicationhost.config” /site:Website1

Little unrelated: PowerShell ref for IIS admin: https://technet.microsoft.com/en-us/library/ee790599.aspx


(more editing needed. For now, the screenshots…)





MsiExec: using PowerShell to list the GUIDs for uninstalling

I want to do a silent uninstall of an uninstalled program, but I don’t know its source .msi.

2 steps that seem to work: first…

Get-WmiObject win32_Product | ft identifyingnumber, name

Then if I see the GUID I want to uninstall then I do this:

MsiExec.exe /uninstall '{1690CE56-2231-4E59-9006-A0876D949EA8}' /quiet /log c:\temp.txt 

I can then restrict the set return like so, if I might want then to go onto delete my current IISExpress:

Get-WmiObject win32_Product | where {$_.name -like '*iis*'}

msiexec.exe /uninstall '{13FD7E30-D2F1-498D-ABC2-A4242DB6610E}' /log c:\scratch\ma.log

Ref the example above, if you fail to put in single quotes, then I found that it just silently fails. That might be related to PowerShell (unlikely but possible)… but I’m not going to spend time proving it either way.