安装NativeHost for Chrome Extension

时间:2016-05-10 10:48:51

标签: google-chrome google-chrome-extension

我有一个chrome扩展,它打开由NativeHost json文件启动的终端进程。要在系统上安装此json文件,我需要将其复制到OSx和Windows中的NativeMessagHost文件夹中,为本地用户更改一些注册表。 在我可以看到的示例扩展代码中,使用.bat / .sh脚本完成了这样的事情的安装,但这似乎不是用户友好的,因为打开终端并运行这些脚本的非技术人员可能是一场噩梦。 有没有其他方法以用户友好的方式安装这些NativeHost.json?

NativeHost.json的源代码可以(取自chrome扩展示例代码):

{
  "name": "com.google.chrome.example.echo",
  "description": "Chrome Native Messaging API Example Host",
  "path": "HOST_PATH",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://<ID>"
  ]
}

和.sh看起来像:

set -e

DIR="$( cd "$( dirname "$0" )" && pwd )"
if [ "$(uname -s)" == "Darwin" ]; then
  if [ "$(whoami)" == "root" ]; then
    TARGET_DIR="/Library/Google/Chrome/NativeMessagingHosts"
  else
    TARGET_DIR="$HOME/Library/Application Support/Google/Chrome/NativeMessagingHosts"
  fi
else
  if [ "$(whoami)" == "root" ]; then
    TARGET_DIR="/etc/opt/chrome/native-messaging-hosts"
  else
    TARGET_DIR="$HOME/.config/google-chrome/NativeMessagingHosts"
  fi
fi

HOST_NAME=com.google.chrome.example.echo

# Create directory to store native messaging host.
mkdir -p "$TARGET_DIR"

# Copy native messaging host manifest.
cp "$DIR/$HOST_NAME.json" "$TARGET_DIR"

# Update host path in the manifest.
HOST_PATH=/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal

ESCAPED_HOST_PATH=${HOST_PATH////\\/}
sed -i -e "s/HOST_PATH/$ESCAPED_HOST_PATH/" "$TARGET_DIR/$HOST_NAME.json"

# Set permissions for the manifest so that all users can read it.
chmod o+r "$TARGET_DIR/$HOST_NAME.json"

echo "Native messaging host $HOST_NAME has been installed."

1 个答案:

答案 0 :(得分:1)

请注意,样本只是粗略和极小的样本。

如果您正在分发本机主机应用程序,那么您可能需要某种安装程序(适用于Windows的安装程序或.msi,类似于.deb /适用于Linux的任何程序包等)照顾那个。事实上,这样的安装程序甚至可以trigger the installation of the extension

如何制作一个不在问题范围内,但这就是的想法 - 有些工具可以生成安装程序或软件包,提供熟悉,用户友好的软件安装方式。 / p>

注意:期待便携式解决方案是不合理的。您需要为不同的平台安装单独的安装程序 - 但是,您的本机主机仍然必须有所不同。