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

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

如果我在域中的开发框或其他Windows 2008 R2计算机上运行“ installutil.exe AppName.exe”,则Windows Service安装无问题。

当我尝试在客户站点上执行相同的操作时,它无法安装以下错误。

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

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

有帮助吗?

解决方案

您可以尝试做一个 设置项目 为您的服务并在该服务器上运行MSI文件。

其他提示

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

需要解开文件。 或至少那是固定我的。

在Powershell中进行“散装”

get-childitem *.* | Unblock-File 

或DOS:

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

这个问题是为我出现的,因为我试图从网络位置安装服务。通过在使用Installutil之前将Service.exe复制到本地计算机,它可以解决我的问题和服务的成功。

当我们从另一台计算机上复制可执行文件时,Windows上标记了标志以保护。 右键单击可执行文件 在属性中单击 解体. 。它将清除标志,服务可执行文件将安装。

不要忘记投票...尝试以下内容:1。打开命令行2.写下SC Create ServiceName binpath =“ Exepath”。报告结果...

我也面临同样的问题。就我而言,我正在部署新版本的实用程序,因此我复制了新的EXE,安装程序文件,然后尝试卸载utils。

我复制了旧版本,即“ ulthe utils”,复制了新版本,然后再次安装了它。无论如何,这是我应该首先遵循的逻辑序列。

我有这个问题,并且在.NET版本的UTIT和我的服务之间有所不同
我将util用于.NET 2,并使用.NET4使用我的服务构建

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

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

在我的情况下,此错误是由于意外传递了包含服务的目录来置于安装的,而不是传递服务EXE引起的。

显然人为错误,但我发现错误消息误导了。

根据 @DoubleHelix上面的响应,此答案使我跟踪了与Windows XP中运行的服务问题有关的特定问题(在我可以找到的“安全性”选项卡中,Unblock不是一个选项)。就我而言,尽管实际的物理磁盘是相同的,但我试图从单独的驱动器运行服务(即与Windows相同,而不在程序文件上)。将我的服务移至程序文件文件夹中解决了我的基本问题。 (我打算针对 @DoubleHelix的答案“评论”,但我似乎无法处于当前状态)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top