Подтвердить что ты не робот

Не удается установить службу Windows

Я создал очень простой сервис окна с помощью visual studio 2010 и .N ET 4.0.

У этой службы нет функциональности, добавленной из проекта службы Windows по умолчанию, кроме добавленного установщика.

Если я запустил "installutil.exe appName.exe" на моем dev-боксе или других машинах Windows 2008 R2 в нашем домене, служба Windows будет установлена ​​без проблем.

Когда я пытаюсь сделать то же самое на нашем сайте клиента, он не может быть установлен со следующей ошибкой.

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).

Это решение имеет только 1 проект и никаких зависимостей не добавлено.

Я пробовал это на нескольких машинах в нашей среде и двух наших клиентах. Машины - это все окна 2008 R2, обе свежие установки. У одной машины есть только .net 2.0 и .net 4.0. Другие .net 2, 3, 3.5 и 4.

Я локальный администратор на каждой из машин.

Я также попробовал 64-битный установщик, но получил следующую ошибку, поэтому я считаю, что 32-разрядный - тот, который нужно использовать. System.BadImageFormatException

Любое руководство будет оценено по достоинству. Спасибо.

4b9b3361

Ответ 1

Вы можете попытаться создать Проект настройки для своей службы и запустить файл MSI на этом сервере.

Ответ 2

Другая причина этой ошибки может заключаться в том, что вы скопировали свою программу из источника, который считается недоверенным. Вы можете разблокировать сборку, нажав "разблокировать" после щелчка правой кнопкой мыши и выбора свойств в файле.

Ответ 3

Необходимо разблокировать файлы. или, по крайней мере, то, что исправлено.

Сделать "объемный" разблокировать в Powershell

get-childitem *.* | Unblock-File 

или в DOS:

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

Ответ 4

Эта проблема возникла из-за того, что я пытался установить службу из сетевого расположения. Скопировав service.exe на локальный компьютер до использования installutil, он исправил мою проблему, и служба была успешно установлена.

Ответ 5

Когда мы копируем исполняемый файл с другого компьютера, Windows помещает на них флаг для защиты. Щелкните правой кнопкой мыши на исполняемом файле и в свойствах Нажмите Разблокировать. Он очистит флаг, а служебный исполняемый файл будет установлен.

Ответ 6

не забудьте проголосовать... Попробуйте SC следующим образом: 1. открыть командную строку 2. напишите нижеприведенную информацию,  sc create ServiceName BinPath = "ExePath". отчет о результатах...

Ответ 7

Я также столкнулся с той же проблемой. В моем случае я развертывал новую версию утилит, копировал новые exe, файлы installog, а затем пытался удалить utils.

Я скопировал старую версию, uninstal utils, скопировал новую версию и снова установил ее. Во всяком случае, это логическая последовательность, которую я должен был выполнить на первом месте.

Ответ 8

У меня есть эта проблема, и она для разных между .net-версией утилиты и моего сервиса
Я использую утилиту для .net 2 и мою сборку службы с .net4

Ответ 9

Как и в предыдущем ответе @doublehelix, этот ответ поставил меня на путь моей конкретной проблемы, связанной с проблемой обслуживания, запущенной в Windows XP (Unblock не является опцией на вкладке безопасности, которую я мог найти). В моем случае я пытался запустить службу с отдельного диска (т.е. Не на том же диске, что и на Windows, а не на программных файлах), хотя фактический физический диск был таким же. Перемещение моей службы в папку Program Files решило мою основную проблему. (Я намеревался "комментировать" ответ @doublehelix, но, похоже, я не могу в своем текущем состоянии).

Ответ 10

В моем случае эта ошибка была вызвана случайным переходом каталога, содержащего эту службу, в InstallUtil вместо передачи exe службы.

Очевидно, человеческая ошибка, но я нашел сообщение об ошибке довольно вводящим в заблуждение.

Ответ 11

эту команду можно использовать в командной строке запуска администратора

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