我有一个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."
答案 0 :(得分:1)
请注意,样本只是粗略和极小的样本。
如果您正在分发本机主机应用程序,那么您可能需要某种安装程序(适用于Windows的安装程序或.msi,类似于.deb /适用于Linux的任何程序包等)照顾那个。事实上,这样的安装程序甚至可以trigger the installation of the extension。
如何制作一个不在问题范围内,但这就是的想法 - 有些工具可以生成安装程序或软件包,提供熟悉,用户友好的软件安装方式。 / p>
注意:期待便携式解决方案是不合理的。您需要为不同的平台安装单独的安装程序 - 但是,您的本机主机仍然必须有所不同。