none
Obtener product name de msi powershell RRS feed

  • Pregunta

  • Buenas, estoy Trabajando En Un Proyecto de Instalación de Paquetes MSI con powershell.

    Tengo Una Base de Datos Donde almaceno el Ordenador y el Paquete msi instalado, pero lo que quiero es guardar es el verdadero nombre del paquete, es decir el "Product Name" 

    Despues de Mirar en bastantes sitios no me queda del claro del todo, y me gustaria que si supiese alguien como obtener el "Produt Name" me pudiese Ayudar.

    Muchas gracias!, Un saludo.

    jueves, 2 de mayo de 2013 10:54

Respuestas

  • Hola Maikel,

    Una opción desde PS para extraer la info del Product Name (o cualquier otro valor) de un MSI:

    function Get-MsiDatabaseVersion {
        param (
            [IO.FileInfo] $FilePath
        )
    
        try {
            $windowsInstaller = New-Object -com WindowsInstaller.Installer
    
            $database = $windowsInstaller.GetType().InvokeMember(
                    "OpenDatabase", "InvokeMethod", $Null, 
                    $windowsInstaller, @($FilePath.FullName, 0)
                )
    
            $q = "SELECT Value FROM Property WHERE Property = 'ProductName'"
            $View = $database.GetType().InvokeMember(
                    "OpenView", "InvokeMethod", $Null, $database, ($q)
                )
    
            $View.GetType().InvokeMember("Execute", "InvokeMethod", $Null, $View, $Null)
    
            $record = $View.GetType().InvokeMember(
                    "Fetch", "InvokeMethod", $Null, $View, $Null
                )
    
            $productVersion = $record.GetType().InvokeMember(
                    "StringData", "GetProperty", $Null, $record, 1
                )
    
            return $productVersion
    
        } catch {
            throw "Failed to get MSI file version the error was: {0}." -f $_
        }
    }
    
    Get-MsiDatabaseVersion <"Full Path MSI package">

    En la última linea introduce la información del path completo del MSI.

    Saludos

    Julio Rosua

    viernes, 3 de mayo de 2013 9:06