无法安装Windows服务

时间:2010-11-10 09:18:36

标签: c# windows-services .net-4.0 installutil

我使用visual studio 2010和.N ET 4.0创建了一个非常简单的窗口服务。

除了添加了安装程序之外,此服务没有从默认的Windows服务项目中添加任何功能。

如果我在我的开发箱或我们域中的其他Windows 2008 R2计算机上运行“installutil.exe appName.exe”,则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).

此解决方案只有一个项目,并且没有添加任何依赖项。

我在我们环境中的多台机器上尝试过,在客户中尝试过两台机器。这些机器都是windows 2008 R2,都是全新安装。一台机器只有.net 2.0和.net 4.0。另一个.net 2,3,3.5和4.

我是每台机器上的本地管理员。

我也尝试过64位安装程序,但得到以下错误,所以我认为32位是使用的。 System.BadImageFormatException

任何指导都将不胜感激。感谢。

11 个答案:

答案 0 :(得分:271)

此错误的另一个原因可能是您从Windows认为不受信任的来源复制了您的程序。 右键单击并在文件上选择属性后,可以通过单击“取消阻止”来取消阻止程序集。

答案 1 :(得分:14)

需要取消阻止文件。或者至少是固定我的文件。

在Powershell中执行'批量'取消阻止

get-childitem *.* | Unblock-File 

或在DOS中:

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

答案 2 :(得分:9)

这个问题对我来说是因为我试图从网络位置安装服务。通过在使用installutil之前将service.exe复制到本地计算机,它解决了我的问题并成功安装了服务。

答案 3 :(得分:7)

当我们从另一台计算机复制可执行文件时,Windows会在其上标记一个标记以进行保护。 右键单击可执行文件并在属性中单击取消阻止。它会清除标志和服务可执行文件将安装。

答案 4 :(得分:2)

别忘了投票... 尝试SC如下: 1.打开命令行 2.写下面 -    sc create ServiceName BinPath =“ExePath”。 报告结果......

答案 5 :(得分:1)

我也面临同样的问题。在我的情况下,我正在部署新版本的实用程序,我复制了新的exe,installog文件,然后尝试卸载工具。

我复制了旧版本,卸载了utils,复制了新版本并重新安装了它。无论如何,这是我应该首先遵循的逻辑顺序。

答案 6 :(得分:1)

我有这个问题,它适用于.net版本的util和我的服务之间的不同 我使用util for .net 2和我的服务构建.net4

答案 7 :(得分:1)

您可以在开发人员命令提示符中使用此命令运行管理员

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

答案 8 :(得分:0)

根据@ doublehelix上面的回复,这个答案让我跟上了我在Windows XP中运行的服务问题的特定问题(Unblock不是我能找到的安全选项卡中的一个选项)。在我的情况下,我试图从一个单独的驱动器(即不在与Windows相同的驱动器上而不是在程序文件下)运行服务,尽管实际的物理磁盘是相同的。将我的服务移动到Program Files文件夹解决了我的根本问题。 (我打算对@ doublehelix的答案进行'评论',但我现在似乎无法达到目前状态。)

答案 9 :(得分:0)

在我的情况下,这个错误是由于意外地将包含服务的目录传递给InstallUtil而不是传递服务exe而引起的。

显然是人为错误,但我发现错误信息非常误导。

答案 10 :(得分:-3)

您可以尝试为您的服务创建Setup Project并在该服务器上运行MSI文件。