无法安装Windows服务

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

除了已经添加了安装程序以外,此服务没有从默认的Windows服务项目中添加function。

如果我在我的域中的我的开发盒或其他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). 

此解决scheme只有1个项目,并没有添加任何依赖关系。

我已经在我们的环境中使用了多台机器,而我们的客户则使用了两台。 这些机器都是Windows 2008 R2,都是全新安装的。 一台机器只有.net 2.0和.net 4.0。 其他.net 2,3,3.5和4。

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

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

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

您可以尝试为您的服务进行安装项目并在该服务器上运行MSI文件。

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

需要解锁文件。 或者至less这是固定我的。

在Powershell中进行“批量”取消阻止

 get-childitem *.* | Unblock-File 

或在DOS中:

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

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

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

不要忘记投票了…试试SC如下:1.打开命令行2.写下面的sc创buildServiceName BinPath =“ExePath”。 报告结果…

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

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

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

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

显然人为错误,但我发现错误消息颇具误导性。

根据上面的@ doublehelix的回答,这个答案让我跟踪与Windows XP中运行的服务问题有关的特定问题(解除阻止不是安全选项卡中的选项,我可以find)。 在我的情况下,我试图从一个单独的驱动器(即不是在与Windows相同的驱动器,不在程序文件下)运行服务,虽然实际的物理磁盘是相同的。 将我的服务移动到Program Files文件夹解决了我的根本问题。 (我打算评论@ doublehelix的答案,但我似乎不能在我目前的状态)。

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

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