2011-02-15 27 views
8

¿Cómo extraer ProductCode del paquete msi? Quiero usarlo más adelante para desinstalar msi vía msiexec como se describe here¿Cómo extraer ProductCode del paquete msi?

+2

esto está en la secuencia de comandos VB, pero podría dar algunas ideas: http://leereid.wordpress.com/2008/08/20/vbscript-get-msi-productcode/ –

+1

Orca.exe es su amigo si lo desea para hacer esto manualmente –

+0

Ver también http://stackoverflow.com/questions/113542/how-can-i-uninstall-an-application-using-powershell –

Respuesta

4

Puedo pensar en docenas de maneras de hacerlo. ¿Qué lenguajes de programación usas actualmente y/o te sientes cómodo?

Tome un vistazo a

Execute SQL Statements

Usted podría utilizar WiRunSQL.vbs (proporcionada en el SDK de la plataforma) para ejecutar el comando:

cscript /nologo WiRunSQL.vbs FOO.msi "SELECT Value FROM Property WHERE Property = 'ProductCode'" 
+0

Quiero hacerlo desde la línea de comandos. La mejor manera es ejecutar alguna herramienta o al menos una secuencia de comandos VB que hará el trabajo. Herramienta autónoma es preferible. – ks1322

+1

Imaginemos que tenía GetProductCode.exe FOO.MSI ... ¿qué le gustaría que hiciera? Establecer una variable de entorno? Salida a la consola? Intento entender el panorama completo para poder sugerir algo. –

+0

Me gustaría que salga a la consola. Luego guardaría la salida y la pasaría a msiexec de esta manera: cmd/c msiexec/x {SOME_PRODUCT_CODE}/q no importa cómo. Solo necesito una forma fácil de obtener ProductCode. – ks1322

0

que podría lograr un efecto similar al hacerlo lo siguiente en PowerShell en función de los programas instalados:

Get-WmiObject -Class Win32_Product -Filter "Vendor LIKE 'The Company%' AND Name LIKE '%The Product%'" | %{ 
    Write-Host "Uninstalling $($_.IdentifyingNumber)" 
    $_.Uninstall() 
} 

(Obv, cuanto más ajustada sea la consulta, más rápido se ejecutará - el LIKE arriba es muy caro)

O podría aplicar the general technique in here en su pila.

+0

Las consultas de Win32_Product nunca se ejecutarán rápidamente porque, francamente, el proveedor de MSI WMI está horriblemente escrito. Esto también supone que el MSI que quiere que el ProductCode esté instalado en el sistema. –

+0

@ChristopherPainter Es suficiente. Para ser sincero, tengo dificultades para recordar dónde lo necesitaba y/o qué solución apliqué en realidad al final :) –

Cuestiones relacionadas