Verificação com script de um recurso específico de um instalador msi

1

Eu preciso verificar a instalação de um recurso específico de um instalador msi. Para o contexto, preciso verificar se o recurso "Cmdlets do Powershell" (TFPS da tabela de recursos no Orca) foi instalado a partir do instalador do Power Foundation Server 2010 Power Tools (tfpt.msi).

Eu sei como verificar a instalação do próprio produto usando o WMI win32_product e o código do produto {B6DC31D8-A303-4D14-9C88-59F183F55BEC}, mas o recurso TFPS nem sequer é instalado por padrão, por isso é bastante comum estar faltando.

Isso é possível?

    
por bwerks 16.06.2011 / 18:18

1 resposta

2

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

    
por 11.07.2011 / 06:31