Windows服务无法安装在其他平台上。

3
我创建了一个简单的Windows服务,项目平台是 Any CPU ,我使用 installutil.exe 命令安装了我的服务。然后,我卸载了该服务并将平台设置为 X64 。但此后,我无法安装该服务。我收到以下错误消息:

初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集--或 其中之一的依赖项。尝试使用不正确的格式加载程序。

我想将平台更改为 X64 以使用一些dll。请帮助我。

你是从 %windir%\Microsoft.Net\Framework\vX.x.xxx 还是从 %windir%\Microsoft.Net\Framework64\vX.x.xxx 使用 installutil 呢? - Damien_The_Unbeliever
我同时拥有 %windir%\Microsoft.Net\Framework\vX.x.xxx 和 %windir%\Microsoft.Net\Framework64\vX.x.xxx。我该如何使用 Framework64 版本? - Aneesh
1
通过指定要使用的完整路径来实现?(这几乎是关于如何选择使用哪个命令行工具版本的标准答案) - Damien_The_Unbeliever
它成功地运行了。我使用Framework64路径进行了安装。但是卸载失败了。 - Aneesh
如何使用%windir%\Microsoft.Net\Framework64\vX.x.xxx卸载服务。 - Aneesh
2个回答

0

InstallUtill.exe是平台特定的。

看这个: https://dev59.com/KnRC5IYBdhLWcg3wW_tk#2160932

此外,这将为您获取到正确版本的正确路径:

 string InstallUtilPath = Path.Combine(
     System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(),
     "installutil.exe");

还有一个小警告:如果您使用安装程序来安装服务,请特别小心。它会将installutil嵌入其中(通常不是正确的版本...)。

SetupProject很糟糕,这就是为什么它已经被淘汰了。WIX太棒了。当你只添加一个文本文件时,SetupProject甚至无法制作符合标准的安装程序。 - TomTom
@TomTom - 遗憾的是,一些人推动了这个事情,现在它又回来了。(http://blogs.msdn.com/b/visualstudio/archive/2014/04/17/visual-studio-installer-projects-extension.aspx) - Damien_The_Unbeliever
该死,我希望它彻底消失。WIX是你真正需要的一切。 - TomTom

0

你必须选择x86平台,dll以混合模式运行,并且可以与你的服务一起工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接