O uso do MsiQueryFeatureState deve fazer isso. Você pode fazer isso em C ++ ou em outros idiomas. No VBScript seria algo como isto (note que isto é para um MSI diferente, por favor atualize o GUID do produto e o nome do recurso para se adequar ao seu propósito):
dim installer, state
' Connect to Windows Installer object
set installer = CreateObject("WindowsInstaller.Installer")
state = installer.featurestate ("{4F41AD68-89F2-4262-A32C-2F70B01FCE9E}","PhotoStory")
If ( state = -2 ) then
MsgBox "INSTALLSTATE_INVALIDARG"
elseif (state = -1) then
MsgBox "INSTALLSTATE_UNKNOWN"
elseif (state = 2) then
MsgBox "INSTALLSTATE_ABSENT"
elseif (state = 2) then
MsgBox "INSTALLSTATE_ADVERTISED"
elseif (state = 3) then
MsgBox "INSTALLSTATE_LOCAL"
elseif (state = 4) then
MsgBox "INSTALLSTATE_SOURCE"
End If
O estado interessante é o INSTALLSTATE_LOCAL. Isso significa que o recurso está instalado localmente no disco local.
Aqui está mais informações sobre a chamada win32 ao estilo C no fio: link