Не вдається встановити службу 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.