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


76

Я створив дуже просту службу вікон, використовуючи Visual Studio 2010 та .N ُ ET 4.0.

Ця служба не має жодної функціональної можливості, доданої за замовчуванням до проекту служби Windows, окрім інсталятора.

Якщо я запустив "installlutil.exe appName.exe" на моєму вікні розробника або інших машинах 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 проект і жодних залежностей не додано.

Я випробував це на багатьох машинах у нашому середовищі та на двох у наших клієнтів. Машини - це все Windows 2008 R2, обидва нові встановлені. Одна машина має лише .net 2.0 та .net 4.0. Інші .net 2, 3, 3.5 та 4.

Я місцевий адміністратор на кожній машині.

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

Будь-яке керівництво буде вдячне. Дякую.


Зачекайте ... чи не .NET 4 вже включає .NET 2/3 / 3.5?
Каміло Мартін

Так, служба з усіма фреймворками, встановленими для іншої мети, я просто ілюстрував проблему, схоже, пов’язану з доменом.
Matthew Dalton

Відповіді:


-2

Ви можете спробувати створити проект налаштування для вашої послуги та запустити файл MSI на цьому сервері.


12
Це більше обхідний шлях, ніж реальне вирішення проблеми
thepirat000

10
дивіться відповідь, за яку проголосували нижче, яку справді слід позначити як рішення
Енді

1
Ця функція не існує у VS 2013
cja,

2
@cja це працює у VS 2013, вам доведеться встановити його звідси visualstudiogallery.msdn.microsoft.com/…
Stefan P.

2
@Andy - тут є порада щодо порятунку життя, а також нагадування продовжувати прокручувати публікації SO :)
Томмі,

284

Іншою причиною цієї помилки може бути те, що ви скопіювали програму з джерела, яке Windows вважає ненадійним. Ви можете розблокувати збірку, натиснувши кнопку "розблокувати", клацнувши правою кнопкою миші та вибравши властивості у файлі.


12
Це спрацювало для мене і відповідає на питання прямо, ніж відповідь "спробувати проект інсталяції". Обидва працюють, але це, швидше за все, відповідь на вихідне запитання.
MKing

5
Дякую! Сумніваюся, що я коли-небудь зробив би такий висновок. Я хотів би, щоб це повідомлялося про кращу причину, ніж "Операція не підтримується"
Росс Хембрік,

11
Якщо він не розблокується, і він знаходиться у вашій папці / Program Files, перемістіть .exe у папку документів, розблокуйте його там, а потім перемістіть назад. Провідник Windows не піднімає запити на розблокування в папках / Program Files.
Снівес,

21
Ще одна корисна порада: якщо ви розблокуєте zip-файл перед вилученням, то всі витягнуті файли автоматично розблокуються. Може заощадити вам багато роботи, щоб розблокувати їх по одному :)
doublehelix

2
Боже, це було найлегше виправлення! Дякую.
c00000fd

17

Потрібно розблокувати файли. або принаймні це те, що виправило міну.

Щоб розблокувати "масове" в Powershell

get-childitem *.* | Unblock-File 

або в DOS:

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

Або простоget-childitem "C:\MyFolder" | unblock-file
Peet Brits

Якщо файли передаються на іншу машину, ще один простий спосіб розблокувати їх усі відразу - це заархівувати файли, скопіювати їх на zip-файл, розблокувати zip-файл, а потім витягти. Витягнуті файли також будуть розблоковані.
cdhowie

10

Ця проблема виникла у мене, оскільки я намагався встановити службу з мережевого розташування. Скопіювавши service.exe на локальну машину перед використанням installlutil, це вирішило мою проблему, і служба була успішно встановлена.


2
На підставі запитання stackoverflow.com/questions/8524423/ ... Можна також встановити для loadFromRemoteSourcesелементу виконання значення true у machine.config.
Джошуа Дрейк

Мені довелося перейти до властивостей кожного файлу та "розблокувати" файл.
Тревор Даніель

10

Коли ми копіюємо виконуваний файл з іншого комп'ютера, Windows позначає на них прапор для захисту. Клацніть правою кнопкою миші на виконуваному файлі, а у властивостях натисніть Розблокувати . Було б очищено прапор, а виконуваний файл служби встановлював би.


2

не забудьте проголосувати ... Спробуйте SC наступним чином: 1. відкрийте командний рядок 2. напишіть нижче - sc створіть ServiceName BinPath = "ExePath". звіт про результати ...


Результатом цього є [SC] CreateService SUCCESS, але послугу все одно не можна запустити. Він скаржиться, що не може знайти вказаний файл.
Метью Далтон,

Я також додав повну довіру до спільної мережі. Проте там сказано, що не вдається знайти вказаний файл.
Srikanth P Vasist

1

Я теж стикався з тим самим питанням. У моєму випадку я розгортав нову версію утиліт, я скопіював новий exe, встановив файли, а потім намагався видалити утиліти.

Я скопіював стару версію, видалив утиліти, скопіював нову версію та встановив її знову. У будь-якому випадку це логічна послідовність, якою я мав би дотримуватися в першу чергу.


1

У мене є ця проблема, і це стосується різних версій .net util та моєї служби.
Я використовую util для .net 2 та моєї служби, побудованої за допомогою .net4


1

Ви можете використовувати цю команду в адміністраторі командного рядка розробника

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

2
Це те, що він вже робить, і це не вирішує його проблеми.
Саша

0

У моєму випадку ця помилка була викликана випадковою передачею каталогу, що містить службу, InstallUtil замість передачі служби exe.

Очевидно, людська помилка, але я знайшов повідомлення про помилку досить оманливим.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.