2011-10-29 29 views
6

Tôi đang sử dụng dự án Thiết lập Visual Studio. Nếu tôi đi đến các thuộc tính của dự án thiết lập, nó cho phép tôi chọn yêu cầu trước đó là gì, tại thời điểm đó tôi chọn C++ Redistributable. Trên một số hệ thống, điều này hoạt động tốt - nhưng gần đây người dùng của tôi báo cáo rằng việc cài đặt không thành công vì "Phiên bản mới hơn của Microsoft Visual C++ 2010 Redistributable đã được phát hiện trên máy."Bao gồm C++ làm yêu cầu trước, nhưng nói "Đã có phiên bản mới"

Cách thích hợp để thực hiện việc này là gì? Phát hiện của Visual Studio có bị lỗi không và không thể phát hiện C++?

Trả lời

1

Mặc định Visual C++ 2010 Redistributable sử dụng Mã sản phẩm để phát hiện. Vì vậy, Visual C++ 2010 SP1 Redistributable không được phát hiện khi cài đặt. Đây là lý do tại sao gói cài đặt nó và không thành công.

Một giải pháp tốt là tạo điều kiện tiên quyết tùy chỉnh của riêng bạn sử dụng tiêu chí phát hiện tốt hơn. Đây là một bài viết có thể giúp bạn: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx

Dự án thiết lập Visual Studio không hỗ trợ tạo điều kiện tiên quyết tùy chỉnh. Tuy nhiên, nó có thể được thực hiện bằng cách tạo thủ công các tệp kê khai bắt buộc.

Bạn có thể tìm ra cấu trúc biểu hiện ở đây: http://msdn.microsoft.com/en-us/library/ms229223(VS.80).aspx

Những biểu hiện có thể được tạo ra tự động với công cụ Bootstrapper Manifest Generator.

Sau khi tạo ra các biểu hiện gói, bạn có thể thêm tất cả những tập tin này (bao gồm cả gói) trong một thư mục riêng biệt trong thư mục trực quan điều kiện tiên quyết Studio, ví dụ:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\ 

Bằng cách này Visual Studio sẽ hiển thị các điều kiện tiên quyết trong trang thuộc tính dự án thiết lập của bạn.

4

Yuck, điều này thật xấu. Tôi đã tự hỏi điều gì sẽ xảy ra sau khi Microsoft từ bỏ việc cài đặt các tệp DLL thời gian chạy cho VS2010. Dường như rõ ràng, các interwebs đầy lỗi cài đặt này. Nạn nhân lớn nhất dường như là chính Microsoft với Đường phố và Bản đồ không cài đặt được.

Tôi không biết bất kỳ bản vá bảo mật nào cho nó vì vậy tôi phải đoán rằng bạn chưa cập nhật lên SP1. Và khách hàng của bạn sử dụng sản phẩm của nhà cung cấp đã làm. Đây là một trận chiến mà bạn sẽ luôn mất đi một ngày nào đó. Hãy xem xét việc tận dụng triển khai ứng dụng cục bộ cho các tệp DLL, sao chép chúng trong cùng thư mục với EXE chính của bạn. Đơn giản chỉ cần sao chép chúng từ thư mục vc/redist trước khi đưa gói cài đặt lại với nhau, không cần đánh dấu điều kiện tiên quyết. Bạn sẽ cần:

  • msvcr100.dll và msvcp100.dll cho CRT thường xuyên
  • atl100.dll nếu bạn sử dụng ATL
  • mfc100.dll, mfc100u.dll, mfcm100.dll, mfc100u.dll nếu bạn sử dụng MFC (u = Unicode, m = managed)
  • mfc100xxx.dll trong đó xxx là mã 3 chữ cái nếu bạn sử dụng MFC trên máy không phải tiếng Anh
  • vcomp100.dll nếu bạn sử dụng OpenMP trong mã của mình .

Chỉ có nhược điểm là chúng sẽ không được cập nhật nếu có bản vá bảo mật. Đó cũng có thể là một lợi thế, tùy thuộc vào màu kính bạn đeo.Nếu bạn không thoải mái về nó thì hãy giữ cho máy tạo gói cài đặt được cập nhật, bao gồm kích hoạt Windows Update, là một yêu cầu quan trọng.

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