Ответ 1
Вы можете попытаться создать Проект настройки для своей службы и запустить файл MSI на этом сервере.
Я создал очень простой сервис окна с помощью 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
Любое руководство будет оценено по достоинству. Спасибо.
Вы можете попытаться создать Проект настройки для своей службы и запустить файл MSI на этом сервере.
Другая причина этой ошибки может заключаться в том, что вы скопировали свою программу из источника, который считается недоверенным. Вы можете разблокировать сборку, нажав "разблокировать" после щелчка правой кнопкой мыши и выбора свойств в файле.
Необходимо разблокировать файлы. или, по крайней мере, то, что исправлено.
Сделать "объемный" разблокировать в Powershell
get-childitem *.* | Unblock-File
или в DOS:
FOR %a in (*.*) do (echo.>%a:Zone.Identifier)
Эта проблема возникла из-за того, что я пытался установить службу из сетевого расположения. Скопировав service.exe на локальный компьютер до использования installutil, он исправил мою проблему, и служба была успешно установлена.
Когда мы копируем исполняемый файл с другого компьютера, Windows помещает на них флаг для защиты. Щелкните правой кнопкой мыши на исполняемом файле и в свойствах Нажмите Разблокировать. Он очистит флаг, а служебный исполняемый файл будет установлен.
не забудьте проголосовать... Попробуйте SC следующим образом: 1. открыть командную строку 2. напишите нижеприведенную информацию, sc create ServiceName BinPath = "ExePath". отчет о результатах...
Я также столкнулся с той же проблемой. В моем случае я развертывал новую версию утилит, копировал новые exe, файлы installog, а затем пытался удалить utils.
Я скопировал старую версию, uninstal utils, скопировал новую версию и снова установил ее. Во всяком случае, это логическая последовательность, которую я должен был выполнить на первом месте.
У меня есть эта проблема, и она для разных между .net-версией утилиты и моего сервиса
Я использую утилиту для .net 2 и мою сборку службы с .net4
Как и в предыдущем ответе @doublehelix, этот ответ поставил меня на путь моей конкретной проблемы, связанной с проблемой обслуживания, запущенной в Windows XP (Unblock не является опцией на вкладке безопасности, которую я мог найти). В моем случае я пытался запустить службу с отдельного диска (т.е. Не на том же диске, что и на Windows, а не на программных файлах), хотя фактический физический диск был таким же. Перемещение моей службы в папку Program Files решило мою основную проблему. (Я намеревался "комментировать" ответ @doublehelix, но, похоже, я не могу в своем текущем состоянии).
В моем случае эта ошибка была вызвана случайным переходом каталога, содержащего эту службу, в InstallUtil вместо передачи exe службы.
Очевидно, человеческая ошибка, но я нашел сообщение об ошибке довольно вводящим в заблуждение.
эту команду можно использовать в командной строке запуска администратора
installutil C:\...\MyService\bin\Debug\MyService.exe