【问题标题】:Can't get C# host app to launch from Chrome Extension无法从 Chrome 扩展程序启动 C# 主机应用程序
【发布时间】:2015-10-13 04:37:50
【问题描述】:

我正在关注这篇文章以尝试设置 C# 本机消息传递主机。 C# native host with Chrome Native Messaging

我的示例正在运行,我从 bat 文件中启动 Calc.exe,如下所示:

host.json

{
  "name": "tsetools",
  "description": "TSE tools for Chrome",
  "path": "tse-host.bat",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://ddemkjpofammommjpcmkhpajoccdjcdg/"
  ]
}

tse-host.bat

@echo off
CD C:\Windows\System32
start calc.exe

以上工作正常并启动 Calc.exe

但如果我将 host.json 更改为以下内容:

{
  "name": "tsetools",
  "description": "TSE tools for Chrome",
  "path": "TSEChromeHost.exe",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://jahdheagjlkdjcoeibobaphodgpgpacc/"
  ]
}

我从未在任务管理器中看到“TSEChromeHost.exe”启动。我已经从上面的帖子中构建了 C# 代码,没有任何错误并且可以手动午餐。我在与“host.json”文件相同的文件夹中有“TSEChromeHost.exe”。

关于我做错了什么的任何想法?

【问题讨论】:

    标签: c# json google-chrome chrome-native-messaging


    【解决方案1】:

    我认为问题是无法找到TSEChromeHost.exe。 试试这个:

    您需要像这样更改tse-host.bat 文件(您需要将工作目录更改为TSEChromeHost.exe 所在的目录)

    @echo off
    Pushd D:\SomeDir 
    start TSEChromeHost.exe
    

    D:\SomeDir 更改为TSEChromeHost.exe 文件所在的目录。

    并且还像这样在host.json 文件中设置path 键:(如第一个示例)

    "path": "tse-host.bat"
    

    【讨论】:

    • 感谢您的回复。它现在启动我的“TSEChromeHost.exe”,但似乎没有收到任何消息。我想如果“host.json”正在调用 .bat 文件,那么消息也会被发送到 .bat 文件中,当然这不起作用。那么如何让消息发送到“TSEChromeHost.exe”?
    • 这篇文章展示了直接调用原生主机应用程序:*.com/questions/24219144/native-messaging-chrome
    【解决方案2】:

    尝试指定 TSEChromeHost.exe 的完整路径。在 Linux 和 OSX 上,路径必须是绝对的。在 Windows 上,它可以相对于清单文件所在的目录。 (见this documentation

    "path": "Full_path_to_TSEChromeHost.exe"
    

    例如

    "path": "C:\\TestFolder\\TSEChromeHost.exe"
    

    【讨论】: