【问题标题】:Windows Service cannot install on other platformsWindows 服务无法安装在其他平台上
【发布时间】:2014-07-18 13:40:33
【问题描述】:

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

初始化安装时发生异常:System.BadImageFormatException:Could not load file or assembly -- 或 它的依赖项之一。试图加载一个带有 格式不正确。

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

【问题讨论】:

  • 您使用的是来自%windir%\Microsoft.Net\Framework\vX.x.xxx 还是来自%windir%\Microsoft.Net\Framework64\vX.x.xxxinstallutil
  • 我同时拥有 %windir%\Microsoft.Net\Framework\vX.x.xxx 和 %windir%\Microsoft.Net\Framework64\vX.x.xxx。如何使用Framework64版本
  • 通过指定要使用的完整路径? (对于任何有关如何选择将使用哪个版本的命令行工具的问题,这都是标准答案)
  • 它运行成功。我使用 Framework64 路径安装。但卸载失败。
  • 如何使用 %windir%\Microsoft.Net\Framework64\vX.x.xxx 卸载服务。

标签: c# .net windows-services platform


【解决方案1】:

您必须选择 x86 平台,该 dll 以混合模式运行并且可以与您的服务一起使用

【讨论】:

    【解决方案2】:

    InstallUtill.exe 是平台特定的

    检查一下: https://stackoverflow.com/a/2160932/891715

    此外,这将为您提供正确版本的正确路径:

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

    还有一点警告:如果您使用安装项目来安装服务,请特别小心。它将 installutil 嵌入到自身中(通常它不是正确的版本......)。

    【讨论】:

    • SetupProject 很垃圾——这就是它被淘汰的原因。 WIX 去。当您仅添加一个文本文件时,SetupProject 甚至无法制作符合标准的安装程序。
    • @TomTom - 很遗憾,有人推了它,它是coming back
    • F***,我希望一个人永远死去。 WIX 就是您真正需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多