Khi cài đặt Windows Service bằng InstallUtil, có thể bạn sẽ gặp lỗi sau:

Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Exception occurred while initializing the installation:
System.IO.FileLoadException: Could not load file or assembly 'file:///D:\xxx\YourService.exe' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).code-box

Nguyên nhân

  • Thật ra có nhiều nguyên nhân dẫn đến thông báo lỗi này, ví dụ như:
  • Đường dẫn đến tập tin exe của bạn không đúng.
  • Service của bạn build không đúng với phiên bản của InstallUtil (64 bit hoặc 32 bit).
  • Máy của bạn chưa cài đúng phiên bản .NET framework mà service cần. Hoặc máy bạn chưa cài các thư viện cần thiết mà service cần.
  • Tập tin exe của bạn đang bị đánh dấu là block bởi Windows.
  • Các nguyên nhân khác

Cách khắc phục

Kiểm tra lại đường dẫn

Bạn kiểm tra lại đường dẫn đến tập tin đã đúng chưa? Đảm bảo rằng đường dẫn được đặt trong dấu ngoặc kép (").

Ví dụ, câu lệnh hợp lệ như sau:
InstallUtil.exe "D:\xxx\YourService.exe"code-box

Kiểm tra lại phiên bản InstallUtil và service của bạn

Nếu service của bạn được build với dạng 32 bit thì bạn cài đặt nó bằng InstallUtil trong thư mục Framework. Ngược lại, nếu service của bạn build dưới dạng 64 bit thì hãy cài đặt nó bằng InstallUtil trong thư mục Framework64.

Kiểm tra lại .Net framework và thư viện

Kiểm tra trong Visual Studio rằng service của bạn đang sử dụng phiên bản nào của .Net framework. Cách thực hiện như sau:

Tại cửa sổ Solution Explorer, chuột phải vào solution, chọn Properties:


Như trên thì service mình đang dùng .NET framework 4.5 nên cần đảm bảo rằng server cũng được cài phiên bản này.

Ngoài ra, bạn cũng cần chắc chắn rằng server cũng được cài những thư viện cần thiết mà service bạn cần nhé.

Unlock tập tin exe

Chuột phải vào tập tin exe của bạn, chọn Properties.

Tick vào Unblock, và nhấn nút Apply → OK.

Xem log của Windows

Để tìm hiểu các nguyên nhân khác, bạn có thể xem log qua Event Viewer của Windows để tìm hiểu nguyên nhân lỗi.

Để mở Event Viewer, bạn có thể tìm kiếm qua Start Menu hoặc chạy eventvwr thông qua CMD. Giao diện Event Viewer có dạng như sau:



Post a Comment

Mới hơn Cũ hơn