2010-12-13 38 views
7

Tôi đang cố gắng tìm ra cách hiệu quả nhất để xác định xem Windows Installer 4.5 có được cài đặt trên máy không.Sử dụng C# Cách phát hiện nếu Windows Installer 4.5 được cài đặt

Tôi có một ứng dụng 2.0 (không thể chuyển đổi tại thời điểm này thành 3.5) và chúng tôi đang nâng cấp từ MSDE lên SQL 2008 Express. Một trong những yêu cầu của 2008 Express là Windows Installer 4.5 được cài đặt trên máy. Ứng dụng này được triển khai trên toàn cầu cho các máy tính cả trong và ngoài mạng nội bộ.

Tôi muốn chạy tệp lô hoặc mã C# để xác định phiên bản trình cài đặt.

Vui lòng cho tôi biết các phương pháp được đề xuất của bạn và cung cấp một số mã (hoặc liên kết đến mã).

Cảm ơn!

Trả lời

10

Bạn có thể đọc các tập tin phiên bản của thư viện msi.dll trong thư mục hệ thống:

using System.Diagnostics; 
using System.IO; 

public bool IsWindowsInstaller45Installed() 
{ 
    FileVersionInfo info; 
    string fileName = Path.Combine(Environment.SystemDirectory, "msi.dll"); 
    try { 
     info = FileVersionInfo.GetVersionInfo(fileName); 
    } catch (FileNotFoundException) { 
     return false; 
    } 

    return (info.FileMajorPart > 4 
      || info.FileMajorPart == 4 && info.FileMinorPart >= 5); 
} 
+0

Tôi đánh giá cao phản hồi nhanh. Cảm ơn bạn! – tc44

1

Giống như Ho1 nói, bạn có thể đi bằng các phiên bản của Msi.dll trong System32 nhưng bạn không cần phải P/Gọi bạn có thể sử dụng lớp FileVersionInfo tìm thấy trong System.Diagnostics.

+0

Mặc dù nếu bạn lấy đi các pinvoke, bạn đang lấy đi hầu hết những niềm vui :) –

+1

Không, Frederic đã lấy đi tất cả những niềm vui bằng cách cho OP một bản sao và dán câu trả lời. Tôi thích trả lời các câu hỏi không làm bài tập về nhà. –

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