2015-09-15 33 views
7

Tôi đang cố gắng đánh giá Visual Studio 2015 Enterprise, nhưng đã gặp phải một số sự cố trong quá trình cài đặt. Dưới đây là những gì tôi đã làm:Visual Studio 2015 Enterprise Installation Installation Fails

  1. Tải xuống cài đặt hoàn chỉnh bằng cách sử dụng công tắc /layout.
  2. Khởi chạy cài đặt với công tắc /NoWeb.

Tôi đang sử dụng máy ảo Windows 8.1 sạch cho mục đích này, để không làm hỏng hệ thống lưu trữ của tôi. Máy ảo không được kết nối với mạng.

Quá trình cài đặt không thành công với các mục sau trong nhật ký:

MUX: ExecuteError: Package (VSSecondaryInstaller_box) failed: Error Message Id: 1603 ErrorMessage: Visual Studio Extensibility Item Templates with Assembly References in Nuget Packages : This product did not download successfully: Unable to download 'http://go.microsoft.com/fwlink/?LinkId=558768'. Web downloads are not allowed when the /NoWeb switch is used. 
MUX: ExecuteError: Package (VSSecondaryInstaller_box) failed: Error Message Id: 1603 ErrorMessage: GitHub Extension for Visual Studio : This product did not download successfully: Unable to download 'http://go.microsoft.com/fwlink/?LinkId=616986'. Web downloads are not allowed when the /NoWeb switch is used. 
MUX: ExecuteError: Package (VSSecondaryInstaller_box) failed: Error Message Id: 1603 ErrorMessage: PowerShell Tools for Visual Studio : This product did not download successfully: Unable to download 'http://go.microsoft.com/fwlink/?LinkID=616995'. Web downloads are not allowed when the /NoWeb switch is used. 

tôi đã nhận thấy rằng đây là những gói VSIX chỉ trong trình cài đặt. Tôi có thể, tất nhiên, cài đặt các gói thủ công, nhưng tôi muốn hiểu lý do cho lỗi này.

Bất kỳ ý tưởng nào?

+0

Chỉ cần lưu ý: Vấn đề tương tự đã xảy ra trong khi cài đặt Visual Studio 2017 cài đặt ngoại tuyến, nhưng bộ nhớ cache ngoại tuyến cũng có chứng chỉ được yêu cầu trong thư mục 'chứng chỉ'. Chỉ cần nhập chúng và khởi động lại cài đặt và tất cả đều ổn. – Vijay

Trả lời

8

Giới thiệu

Vâng, một tuần sau, tôi đã tìm ra và tôi có giải pháp. Hãy nhớ rằng đây là một chút hacky và có thể thất bại nếu và khi Microsoft quyết định cập nhật trình cài đặt của họ.

Nhưng trước hết, chúng ta phải hiểu nguồn gốc của vấn đề.

Vấn đề

Như tôi đã đề cập trong câu hỏi, các tiểu bang log cài đặt mà nó thất bại trong việc tải về các gói VSIX vì /noweb switch. Một câu hỏi hợp lý tại thời điểm này là lý do tại sao trình cài đặt đang cố tải xuống chúng ngay từ đầu.

Để trả lời điều đó, chúng tôi phải tìm trong nhật ký Trình cài đặt phụ (dd_vs_enterprise_<timestamp>_SecondaryInstaller_UX.log, bên trong thư mục %temp%). Như tôi đã hiểu, Trình cài đặt phụ chịu trách nhiệm cài đặt tất cả các gói bổ sung đi kèm với Visual Studio. Nhật ký này làm rõ hình ảnh một chút.

DownloadManager Information: 0 : Using cached file at C:\ProgramData\Microsoft\VisualStudioSecondaryInstaller\14.0\installers\VS_Extensibility_TemplatesV1\en\0\Microsoft.Vsix.TemplatesPackage.vsix instead of downloading from http://go.microsoft.com/fwlink/?LinkId=558768 
DownloadManager Error: 0 : Signature verification failed on downloaded file. URL: http://go.microsoft.com/fwlink/?LinkId=558768. File location: C:\ProgramData\Microsoft\VisualStudioSecondaryInstaller\14.0\installers\VS_Extensibility_TemplatesV1\en\0\Microsoft.Vsix.TemplatesPackage.vsix. File size: 3965 kb 
DownloadManager Error: 0 : BITS download failed. Exception: System.NullReferenceException: Object reference not set to an instance of an object. 
    at Microsoft.Web.PlatformInstaller.InstallManager.BITSDownloadInstallerFile(InstallerContext currentInstall, String& failureReason, String& failureErrorCode, Boolean& downloadNotAllowed, Boolean setFinalReturnState) 
DownloadManager Warning: 0 : BITS failure: BITS download failed. BITS service may have been disabled on the machine.. Retrying download for 'Visual Studio Extensibility Item Templates with Assembly References in Nuget Packages' 
DownloadManager Warning: 0 : WinInet failure: Unable to download 'http://go.microsoft.com/fwlink/?LinkId=558768'. Web downloads are not allowed when the /NoWeb switch is used.. Retrying download for 'Visual Studio Extensibility Item Templates with Assembly References in Nuget Packages' 
DownloadManager Information: 0 : WebClient downloading file 'http://go.microsoft.com/fwlink/?LinkId=558768' to: C:\Users\John Gallegos\AppData\Local\Temp\evlyeg3i.fmr 
DownloadManager Error: 0 : WebClient error while downloading file 'http://go.microsoft.com/fwlink/?LinkId=558768'. Exception: System.Net.WebException: The remote name could not be resolved: 'go.microsoft.com' 
    at System.Net.WebClient.OpenRead(Uri address) 
    at Microsoft.Web.PlatformInstaller.InstallManager.WebClientDownloadInstallerFile(InstallerContext currentInstall, String& errorMessage, Boolean setFinalReturnState) 
DownloadManager Warning: 0 : WebClient failure: The remote name could not be resolved: 'go.microsoft.com'. Retrying download for 'Visual Studio Extensibility Item Templates with Assembly References in Nuget Packages' 
DownloadManager Warning: 0 : WinInet failure: Unable to download 'http://go.microsoft.com/fwlink/?LinkId=558768'. Web downloads are not allowed when the /NoWeb switch is used.. Retrying download for 'Visual Studio Extensibility Item Templates with Assembly References in Nuget Packages' 
DownloadManager Error: 0 : BITS failure: Unable to download 'http://go.microsoft.com/fwlink/?LinkId=558768'. Web downloads are not allowed when the /NoWeb switch is used.. Download failure for Visual Studio Extensibility Item Templates with Assembly References in Nuget Packages. 

Điều đó giống như vậy! Bây giờ chúng tôi biết lý do thực sự cho sự thất bại là xác minh chữ ký trên VSIX! Bây giờ chúng ta có thể tái tạo lại chuỗi sự kiện:

  1. Trình cài đặt cố gắng xác minh chữ ký trên VSIX và không thành công.
  2. Trình cài đặt tiếp tục tải xuống gói VSIX từ Internet. Lý do ở đây có lẽ là việc xác minh chữ ký không thành công vì VSIX đã lưu trong bộ nhớ cache bị hỏng, vì vậy việc tải xuống lại nó là giải pháp duy nhất.
  3. Trình cài đặt, tất nhiên, không thành công nữa vì chúng tôi không cho phép tất cả tải xuống.

Nhưng điều thú vị là trên máy được kết nối với Internet, điều này không xảy ra chút nào! Ngay cả khi công tắc /noweb được chỉ định!

Tìm kiếm câu trả lời

Tại sao cài đặt thành công trên máy được nối mạng, ngay cả khi tất cả tải xuống đều không được phép? Có vẻ như thành phần xác minh tin cậy của hệ điều hành sẽ chuyển sang Internet khi nó không thể xác minh sự tin tưởng bằng cách sử dụng chứng chỉ mà nó đã có sẵn cục bộ.

Microsoft có bài viết cơ sở kiến ​​thức về các vấn đề đã biết của VS 2015 và lỗi cố định (ngay here), dường như hỗ trợ lý thuyết của tôi. Đây là những gì bài báo nói rằng:

Nếu bạn không thiết lập các tùy chọn Windows Update để tự động cập nhật các chứng chỉ gốc, và bạn chọn cài đặt các thành phần tùy chọn, bạn nhận được Visual cảnh báo thiết lập Studio sau khi kết thúc quá trình:

PowerShell Tools for Visual Studio: This product did not download successfully: Signature verification failed on downloaded file.

Nếu bản cập nhật tự động bị tắt, máy tính của bạn sẽ không có chứng chỉ gốc mới nhất. Do đó, thiết lập Visual Studio sẽ không nhận dạng được chứng chỉ được sử dụng để ký các tệp VSIX dưới dạng chứng chỉ hợp lệ và sẽ không cài đặt các thành phần.

Lúc đầu, tôi nghĩ tôi đã tìm thấy những gì tôi đang tìm kiếm. Tất cả những gì chúng tôi phải làm là có được chứng chỉ phù hợp và được thực hiện với nó! Nhưng làm thế nào để bạn làm điều đó?

Sự khác biệt của chứng chỉ được cài đặt (sử dụng certmgr.msc) trước và sau khi cài đặt VS 2015 thành công trên máy được kết nối mạng cung cấp một số chứng chỉ có vẻ chịu trách nhiệm cho các sự cố của tôi. Tuy nhiên, cài đặt chúng theo cách thủ công trên một máy bị ngắt kết nối không mang lại kết quả nào. Bạn có thể thấy question của tôi về chủ đề này, tuy nhiên nó không có ảnh hưởng gì đến cài đặt: điều tương tự cũng xảy ra khi tôi thử cài đặt trên Windows 10.

Có thể vấn đề là rộng hơn? Trong quá khứ, Microsoft đã cung cấp gói cập nhật chứng chỉ gốc (rootsupd.exe) có thể được cài đặt trên các máy ngoại tuyến. Mặc dù gói mới nhất có thể được cài đặt ngay cả trên Windows 8.1, nhưng nó không bao gồm các chứng chỉ mà tôi biết là bắt buộc. Và vì vậy, tôi đã tìm kiếm các cách khác để cài đặt các bản cập nhật chứng chỉ trên các máy bị ngắt kết nối.

Microsoft mô tả cách được khuyến nghị làm như vậy, trong this bài viết TechNet. Bởi vì tôi không có một máy Windows Server, tôi đã thử áp dụng các thay đổi yêu cầu đăng ký theo cách thủ công, nhưng không có kết quả.

Visual Studio forums cũng không cung cấp nhiều trợ giúp.

Nhưng, trong khoảnh khắc của sự rõ ràng đột ngột, tôi tự nghĩ: Nếu tôi có thể tránh được vấn đề hoàn toàn thì sao? Điều gì sẽ xảy ra nếu thay vì cố gắng lấy chứng chỉ trên VSIX để xác thực, tôi có thể thay thế các chứng chỉ đó bằng chính chứng chỉ của mình? Sau khi tất cả, tôi đang ở trong một môi trường bị ngắt kết nối, và do đó tin tưởng không phải là một vấn đề.

Giải pháp

Ký gói VSIX là có thể sử dụng vsixsigntool.exe, sẵn here. May mắn thay, có thể nạp một VSIX đã được ký vào tiện ích này và nó sẽ thay thế chứng chỉ được nhúng bằng chứng chỉ bạn đã chỉ định. Mảnh o'cake!

Vâng, không chính xác. Có hai vấn đề với cách tiếp cận này:

  1. Chủ đề của chứng chỉ phải là CN = Microsoft Corporation. Tại sao? Trình cài đặt sử dụng một "nguồn cấp dữ liệu XML" đặc biệt mô tả các thành phần khác nhau mà nó có sẵn (xem trong thư mục OfflineCache\feeds). Khi cài đặt gói VSIX, nó xác minh rằng đối tượng của chứng chỉ được nhúng khớp với đối tượng được chỉ định trong nguồn cấp dữ liệu XML. Nguồn cấp dữ liệu XML được ký là tốt, vì vậy vui vẻ là tất cả xung quanh.
  2. Một tệp đặc biệt, cache.bin, cung cấp cho trình cài đặt thông tin cần thiết để tìm phiên bản được lưu trong bộ nhớ cache của một gói (xem, ví dụ: OfflineCache\installers\VS_Extensibility_TemplatesV1\cache.bin). Vấn đề là, tệp chứa hàm băm SHA256 của gói. Tệp này thực sự chỉ là một đối tượng .NET được tuần tự hóa, nhưng chúng ta không thể deserialize nó mà không truy cập vào các assembly có chứa lớp của đối tượng được tuần tự hóa và các lớp của các thành viên của nó. Bên cạnh đó, đây không phải là cách lập trình viên thực sự làm điều đó! Hàm băm được lưu trữ dưới dạng chuỗi ASCII đơn giản, do đó, nó chỉ là vấn đề tìm kiếm & thay thế.

Vậy đó! Sử dụng phương pháp này, chúng tôi có thể ký lại tất cả các gói VSIX, nhập chứng chỉ được sử dụng cho cửa hàng Trusted Root Certification Authorities và Bob là chú của bạn.

Bộ luật

Tôi đã viết một kịch bản thực hiện tất cả các hoạt động tôi đã mô tả ở trên. Nó có sẵn here. Chúc vui vẻ!

2

Sự cố này xảy ra do máy cần có danh sách thu hồi chứng chỉ được cập nhật cho từng chứng chỉ được sử dụng bởi các tệp này. Nếu CRL mới nhất chưa được cài đặt, nó cần phải sử dụng internet để kiểm tra nó.

Với việc phát hành Update 2, Microsoft đã cập nhật trình cài đặt phụ từ Visual Studio không kiểm tra danh sách thu hồi chứng chỉ cho phần mở rộng VSIX nếu máy đang ngoại tuyến. Điều này khắc phục sự cố được mô tả trong chủ đề này.

Gần đây, họ cũng đã phát hành một bài viết có hướng dẫn cài đặt ngoại tuyến tại https://msdn.microsoft.com/en-us/library/mt706497.aspx. Phần "Khắc phục sự cố cài đặt ngoại tuyến" chứa thông tin giúp bạn giải quyết sự cố cài đặt ngoại tuyến bằng cách sử dụng nguồn cấp dữ liệu đặc biệt khi tạo bố cục.

+0

Điều này đã giúp tôi giải quyết vấn đề này, nhưng tôi phải tải xuống riêng nguồn cấp dữ liệu, sao chép nguồn cấp dữ liệu vào địa phương, sau đó tham chiếu nguồn cấp dữ liệu.xml sử dụng đường dẫn thông thường, (như c: \ blah \ feed.xml). Cùng với danh sách thu hồi chứng chỉ được cập nhật, trình cài đặt ngoại tuyến hoạt động bình thường. – Paully

0

Câu trả lời của ông Anderson Cassimiro đã cung cấp cho tôi một số đầu mối tuyệt vời về cách giải quyết vấn đề cho cài đặt ngoại tuyến của tôi do Lỗi xác thực chứng chỉ gây ra.

TÓM TẮT: Về cơ bản, tôi đã có để có được một bản sao của Lists Certificate Revocation mới nhất và cài đặt chúng trên hệ thống ẩn của tôi:

http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl

http://www.microsoft.com/pkiops/crl/MicCodSigPCA2011_2011-07-08.crl

http://crl.microsoft.com/pki/crl/products/MicrosoftTimeStampPCA.crl

http://crl.microsoft.com/pki/crl/products/MicTimStaPCA_2010-07-01.crl

http://crl.microsoft.com/pki/crl/products/CSPCA.crl

http://crl.microsoft.com/pki/crl/products/tspca.crl

http://crl.comodoca.com/COMODOCodeSigningCA2.crl

http://crl.comodoca.com/COMODORSACodeSigningCA.crl

http://crl.usertrust.com/UTN-USERFirst-Object.crl

http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_2010-07-06.crl

http://ts-crl.ws.symantec.com/tss-ca-g2.crl

Có hai gói mà tôi không thể có được giấy chứng nhận để xác nhận bất kể CRL cài đặt:

sqlcmdlnutils_amd64 \ SqlCmdLnUtils.msi

Dotfuscator

Bạn có thể cài đặt các sau khi cài đặt VS 2012 by đi trực tiếp đến các thư mục gói cho các công cụ này và cài đặt chúng.

CRL có thể tốt trong 24 giờ hoặc bất kỳ thời gian chờ CRL cache nào được đặt thành. Vì vậy, nếu bạn cần cài đặt trên một hệ thống khác sau vài ngày, bạn sẽ phải tải xuống và cài đặt các CRL mới nhất trên hệ thống khác.


Tôi đã viết các bước khắc phục sự cố lâu hơn tôi đã thực hiện bên dưới.

Triệu chứng: Trình cài đặt Visual Studio cho biết không cài đặt được một hoặc nhiều gói và yêu cầu bạn chỉ định vị trí của gói thực thi. Bạn chỉ định vị trí trong thư mục gói của phương tiện cài đặt, nhưng nó sẽ nhắc bạn lần nữa.

Bước 1: Xác định xem nó là một vấn đề giấy chứng nhận

Bạn có thể nhấp chuột phải vào Visual Studio thực thi và nhấp Properties. Trong tab Chữ ký số, chọn một trong các chữ ký và nhấp vào Chi tiết.

Dưới thông tin Chữ ký số, nếu không có thông báo "Chữ ký số này là OK". Sau đó, nó có thể là một vấn đề chữ ký.

Ngoài ra, bạn có thể kiểm tra trong thư mục c: \ Users [username] \ AppData \ Local \ Temp cho một tệp có tên dd_vs_professiona_ [Timestamp] .log và lưu ý rằng có lỗi xác thực chứng chỉ trong nhật ký.

Bước 2: Khắc phục các vấn đề Certificate

a. Nếu lỗi cho biết chứng chỉ không đáng tin cậy:

Ensure that all the certificates from the digital signature are trusted. 

1) Launch the Certificates MMC for your local computer by: 
    -Open command prompt as admin and type mmc and enter. 
    -File -> Add Remove SnapIn 
    -Select Certificates and click add 
    -Select Computer Account and click Next. 
    -Select Local Computer and click Finish. 

2) Quay lại hộp thoại thực thi Visual Studio.

Nhấp vào Visual Studio thực thi và Thuộc tính nhấp chuột. Trong tab Chữ ký số, chọn một trong các chữ ký và nhấp vào Chi tiết.

Nhấp vào Xem chứng chỉ. Nhấp vào tab Đường dẫn chứng nhận.

3) Nếu có chứng chỉ không đáng tin cậy trong đường dẫn chứng chỉ, hãy nhấp vào chứng chỉ đó và Xem chứng chỉ. Nhấp vào Chi tiết và nhấp vào Sao chép vào tệp. Lưu chứng chỉ vào vị trí bạn có thể dễ dàng tìm thấy.

4) Quay lại chứng chỉ MMC. Điều hướng đến Chứng chỉ gốc đáng tin cậy. Nhấp chuột phải -> Tất cả công việc -> Nhập

5) Nhập chứng chỉ bạn vừa lưu vào tệp.

Bạn phải thực hiện việc này cho tất cả chứng chỉ trong đường dẫn chứng chỉ.

b. Nếu lỗi cho biết nó không thể xác nhận hợp lệ CRL.

Nhấp vào Visual Studio thực thi và Thuộc tính nhấp chuột. Trong tab Chữ ký số, chọn một trong các chữ ký và nhấp vào Chi tiết.

1. Click View Certificate 
2. Under Details Tab -> Click CRL Distribution Points 
3. Download the crl from the URL specified in the CRL Distribution Points. 
4. Copy the file to your offline system. 
5. Right click on it and Click Install CRL, Next, Next, Finish. 

Xem phần tóm tắt ở trên để biết danh sách CRL tôi đã tải xuống.

c. Nếu lỗi cho biết "Một trong các ký hiệu không hợp lệ. Tệp có thể đã bị thay đổi"., Sau đó:

Nhấp vào Visual Studio và Thuộc tính nhấp chuột. Nhấp vào Chữ ký số. Nhấp vào chữ ký và nhấp vào Chi tiết.

  • Thay vì nhấp vào Xem chứng chỉ chữ ký kỹ thuật số, hãy nhấp vào Dấu thời gian bên dưới phần Chữ ký số lượt truy cập.

-Click chi tiết, sau đó nhấp vào View Certificate cho tem thời gian cert -Click CRL Distribution Points tại tab Details

-Download dấu thời gian CRL. -Sao chép nó vào hệ thống ngoại tuyến của bạn và nhấp chuột phải vào tệp crl và cài đặt crl, Tiếp theo, Tiếp theo, Kết thúc.

Xem phần tóm tắt ở trên để biết danh sách CRL tôi đã tải xuống.

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