2011-01-20 49 views

Trả lời

10

Tôi nghĩ rằng bạn không thể thay đổi vị trí của thư mục cài đặt, do đó bạn có thể có lẽ chỉ:

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

Một cách khác (không may khá chậm hơn một chút) là để truy vấn WMI:

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

Tôi khuyên bạn nên tránh sử dụng Win32_Product. Đầu tiên, nó thực sự, rất chậm (truy vấn đó có thể mất vài phút). Thứ hai, * bạn có thể sửa hệ thống của bạn * vì lớp Win32_Product hoạt động bằng cách liệt kê mọi gói MSI được cài đặt, kết quả trong việc cấu hình lại và xác thực (và sửa chữa nếu ứng dụng được tìm thấy không phù hợp với MSI ban đầu) http://support.microsoft.com/kb/974524 – Jaykul

+0

Vâng, tôi nhận thấy nó thực sự rất chậm. Điều cần biết về các vấn đề tiềm ẩn. Tuy nhiên, có vẻ như có một cách WMI để xác định điều này. Dựa vào phím reg hoặc đường dẫn có vẻ hơi giòn. –

2

Tôi đã tò mò và tạo một lớp Win32_AddRemovePrograms http://poshcode.org/2470 ... hoạt động, nhưng thành thật mà nói, bạn không cần phải kiểm tra một sản phẩm cụ thể, bạn chỉ cần tìm ID của sản phẩm đó trong sổ đăng ký.

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

đâu {DCDEC776-Badd-48B9-8F9A-DFF513C3D7FA} là sản phẩm ID cho Asp.net MVC 3. Bạn có thể kiểm tra lại để đảm bảo bằng cách kiểm tra tên hiển thị cho nó:

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

Và {D32EF103-4016-4C15-BCB0-700C0A7A2309} để cập nhật bảo mật MVC 3. –

Các vấn đề liên quan