2011-01-20 25 views

Respuesta

10

creo que no se puede cambiar la ubicación de la carpeta de instalación, por lo que probablemente podría simplemente:

test-path "${Env:ProgramFiles(x86)}\Microsoft ASP.NET\ASP.NET MVC 3" 
3

Otra forma (por desgracia un poco más lento) es para consultar WMI:

$res = Get-WmiObject Win32_Product | Where {$_.Name -match 'ASP\.NET MVC 3'} 
if ($res -ne $null) { ... } 
+0

Recomiendo evitar el uso de Win32_Product. En primer lugar, es realmente, muy lento (esa consulta podría tomar minutos). En segundo lugar, * puede arruinar su sistema * porque la clase Win32_Product funciona al enumerar cada paquete MSI que está instalado, lo que da como resultado una reconfiguración y validación (y repara si la aplicación no es coherente con el MSI original) http://support.microsoft.com/kb/974524 – Jaykul

+0

Sí, noté que, de hecho, era increíblemente lento. Es bueno saber sobre los posibles problemas. Aún así, parece que debería haber una forma de WMI para determinar esto. Confiar en las claves o caminos de registro parece un poco frágil. –

2

Me puse curioso e hice una clase Win32_AddRemovePrograms http://poshcode.org/2470 ... que funciona, pero sinceramente, no necesita eso para verificar un producto específico, solo puede buscar el ID de ese producto en el registro.

test-path "hklm:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA}" 

Donde {DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA} es el identificador de producto para Asp.net MVC 3. Se podría corroborar asegurarse comprobando el nombre para mostrar que:

(Get-ItemProperty "hklm:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA}" DisplayName).DisplayName -eq "Microsoft ASP.NET MVC 3" 
+1

Y {D32EF103-4016-4C15-BCB0-700C0A7A2309} para la actualización de seguridad MVC 3. –

Cuestiones relacionadas