Không thể cài đặt dịch vụ windows


76

Tôi đã tạo một dịch vụ cửa sổ rất đơn giản bằng cách sử dụng Visual studio 2010 và .N ُ ET 4.0.

Dịch vụ này không có chức năng nào được thêm vào từ dự án dịch vụ windows mặc định, ngoại trừ một trình cài đặt đã được thêm vào.

Nếu tôi chạy "installutil.exe appName.exe" trên hộp phát triển của tôi hoặc các máy chạy windows 2008 R2 khác trong miền của chúng tôi, dịch vụ windows sẽ cài đặt mà không gặp sự cố.

Khi tôi cố gắng làm điều này tương tự trên trang web của khách hàng của chúng tôi, nó không thể cài đặt với 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:///C:\TestService\WindowsService1.exe' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515).

Giải pháp này chỉ có 1 dự án và không có phụ thuộc nào được thêm vào.

Tôi đã thử nó trên nhiều máy trong môi trường của chúng tôi và hai máy ở khách hàng của chúng tôi. Các máy đều là windows 2008 R2, đều là bản cài mới. Một máy chỉ có .net 2.0 và .net 4.0. .Net khác 2, 3, 3.5 và 4.

Tôi là quản trị viên cục bộ trên mỗi máy.

Tôi cũng đã thử trình cài đặt 64bit nhưng gặp lỗi sau, vì vậy tôi nghĩ 32 bit là một trong những để sử dụng. System.BadImageFormatException

Bất kỳ hướng dẫn sẽ được đánh giá cao. Cảm ơn.


Chờ đã ... chưa .NET 4 đã bao gồm .NET 2/3 / 3.5?
Camilo Martin

Có, dịch vụ với tất cả các khuôn khổ được cài đặt cho một mục đích khác, tôi chỉ ảo tưởng rằng vấn đề dường như liên quan đến miền.
Matthew Dalton

Câu trả lời:


-2

Bạn có thể cố gắng tạo Dự án thiết lập cho dịch vụ của mình và chạy tệp MSI trên máy chủ đó.


12
Đây là thêm một workaround hơn một giải pháp thực tế cho vấn đề
thepirat000

10
hãy xem câu trả lời được bình chọn cao bên dưới, câu trả lời thực sự nên được đánh dấu là giải pháp
Andy

1
Tính năng này không tồn tại trong VS 2013
cja

2
@cja nó hoạt động trong VS 2013, bạn sẽ phải cài đặt nó từ đây visualstudiogallery.msdn.microsoft.com/…
Stefan P.

2
@Andy - lời khuyên tiết kiệm cuộc sống ngay tại đó và cũng là lời nhắc nhở để tiếp tục cuộn các bài đăng SO :)
Tommy

283

Một lý do khác cho lỗi này có thể là bạn đã sao chép chương trình của mình từ một nguồn mà windows cho là không đáng tin cậy. Bạn có thể bỏ chặn lắp ráp bằng cách nhấp vào "bỏ chặn" sau khi bạn nhấp chuột phải và chọn các thuộc tính trên tệp.


12
Điều này phù hợp với tôi và trả lời câu hỏi trực tiếp hơn câu trả lời "thử một dự án thiết lập". Cả hai đều hoạt động, nhưng đây có nhiều khả năng là câu trả lời cho câu hỏi ban đầu.
MKing

5
Cảm ơn bạn! Tôi nghi ngờ tôi đã bao giờ đưa ra kết luận này. Tôi ước gì nó báo cáo một lý do tốt hơn là "Hoạt động không được hỗ trợ"
Ross Hambrick

11
Nếu nó không bỏ chặn và nó nằm trong thư mục / Program Files của bạn thì hãy di chuyển .exe vào thư mục tài liệu của bạn, bỏ chặn nó ở đó, rồi di chuyển nó trở lại. Windows Explorer sẽ không nâng cao các yêu cầu bỏ chặn trong các thư mục / Program Files.
Snives

21
Một lời khuyên hữu ích khác: Nếu bạn bỏ chặn một tệp zip trước khi giải nén, thì tất cả các tệp được giải nén sẽ tự động được bỏ chặn. Có thể giúp bạn tiết kiệm rất nhiều công việc của khai thông từng cái một :)
doublehelix

2
Chúa ơi, đây là cách sửa chữa dễ dàng nhất! Cảm ơn.
c00000fd

16

Cần bỏ chặn các tệp. hoặc ít nhất đó là những gì đã cố định của tôi.

Để thực hiện bỏ chặn 'hàng loạt' trong Powershell

get-childitem *.* | Unblock-File 

hoặc trong DOS:

FOR %a in (*.*) do (echo.>%a:Zone.Identifier)

Hoặc đơn giảnget-childitem "C:\MyFolder" | unblock-file
Peet Brits

Nếu các tệp đang được chuyển sang một máy khác, một cách dễ dàng khác để bỏ chặn tất cả chúng cùng một lúc là nén tệp, sao chép qua tệp zip, bỏ chặn tệp zip, sau đó giải nén. Các tệp đã giải nén cũng sẽ được bỏ chặn.
cdhowie

10

Sự cố này xảy ra với tôi vì tôi đang cố cài đặt dịch vụ từ một vị trí mạng. Bằng cách sao chép service.exe vào máy cục bộ trước khi sử dụng installutil, nó đã khắc phục sự cố của tôi và dịch vụ được cài đặt thành công.


2
Dựa trên câu hỏi stackoverflow.com/questions/8524423/… Người ta cũng có thể đặt loadFromRemoteSourcesphần tử thời gian chạy thành true trong machine.config.
Joshua Drake

Tôi đã phải đi đến thuộc tính của mọi tệp và "Bỏ chặn" tệp.
Trevor Daniel

9

Khi chúng tôi sao chép tệp thực thi từ một máy tính khác, Windows sẽ đánh dấu một lá cờ trên chúng để bảo vệ. Nhấp chuột phải vào tệp thực thi và trong thuộc tính Nhấp vào Bỏ chặn . Nó sẽ xóa cờ và dịch vụ thực thi sẽ Cài đặt.


2

đừng quên bỏ phiếu ... Hãy thử SC như sau: 1. mở dòng lệnh 2. viết dòng lệnh dưới đây- tạo ServiceName BinPath = "ExePath". báo cáo kết quả ...


Kết quả của việc đó là [SC] CreateService THÀNH CÔNG nhưng dịch vụ vẫn không thể khởi động. Nó phàn nàn rằng nó không thể tìm thấy tệp được chỉ định.
Matthew Dalton

Tôi cũng đã thêm tin cậy chia sẻ mạng đầy đủ. Nó vẫn cho biết không thể tìm thấy tệp được chỉ định.
Srikanth P Vasist

1

Tôi cũng phải đối mặt với vấn đề tương tự. Trong trường hợp của tôi, tôi đang triển khai phiên bản tiện ích mới, tôi đã sao chép các tệp exe, installog mới và sau đó cố gắng gỡ cài đặt utils.

Tôi đã sao chép lại phiên bản cũ, gỡ cài đặt utils, sao chép phiên bản mới và cài đặt lại. Dù sao thì đó cũng là trình tự hợp lý mà tôi nên theo dõi ngay từ đầu.


1

tôi gặp sự cố này và sự cố này khác nhau giữa phiên bản .net của using và dịch vụ của
tôi. Tôi sử dụng .net 2 và bản dựng dịch vụ của tôi với .net4


1

bạn có thể sử dụng lệnh này trong quản trị viên chạy dấu nhắc lệnh của nhà phát triển

installutil C:\...\MyService\bin\Debug\MyService.exe

2
Đó là những gì anh ấy đã làm và nó không giải quyết được vấn đề của anh ấy.
Sascha

0

Trong trường hợp của tôi, lỗi này là do vô tình chuyển thư mục chứa dịch vụ sang InstallUtil thay vì chuyển exe của dịch vụ.

Rõ ràng là lỗi của con người nhưng tôi thấy thông báo lỗi khá sai lệch.


0

Theo phản hồi của @ doublehelix ở trên, câu trả lời này giúp tôi đi đúng hướng cho sự cố cụ thể của mình, liên quan đến sự cố dịch vụ đang chạy trong Windows XP (Bỏ chặn không phải là một tùy chọn trong tab bảo mật mà tôi có thể tìm thấy). Trong trường hợp của tôi, tôi đang cố gắng chạy một dịch vụ từ một ổ đĩa riêng biệt (tức là không trên cùng một ổ đĩa với Windows và không nằm trong các tệp chương trình) mặc dù đĩa vật lý thực tế giống nhau. Di chuyển dịch vụ của tôi vào thư mục Tệp Chương trình đã giải quyết được vấn đề cơ bản của tôi. (Tôi đã định 'bình luận' chống lại câu trả lời của @ doublehelix nhưng dường như tôi không thể làm được trong trạng thái hiện tại của mình).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.