我开发了一个Google扩展程序,我为其创建了一个Windows安装程序包。该安装程序按照https://developer.chrome.com/extensions/external_extensions#registry
中的说明编写相应的注册表项在某些计算机上运行良好。因此,在我运行安装程序包然后运行谷歌浏览器后,会出现一个小弹出窗口,告诉我启用扩展程序。我对该问题回答“是”,从那时起,扩展按预期工作。
但是,在某些使用相同版本的Chrome(53.0.2785.116 m)的计算机中,安装程序会将相应的条目写入注册表,但是当我运行Chrome时,没有任何操作,并且扩展名未列在Chrome中:/ / extensions / page。
在这种情况下,我可以连接到网上商店手动安装扩展程序。但是,此扩展启动应用程序,因为它实现了Native Messaging。当我手动安装扩展程序时,它可以正常工作(本机消息传递主机应用程序已启动并正常工作),但当我关闭并重新打开Chrome时,主机应用程序未运行。要运行它,我需要手动禁用然后重新启用扩展。
发生什么事很奇怪。你可以帮帮我吗?
答案 0 :(得分:0)
根据此thread(与您的问题有些相关),当您关闭Chrome时,它会触发holder.textView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int adapterPos = holder.getAdapterPosition();
if(adapterPos != RecyclerView.NO_POSITION) {
Toast.makeText(context, SubjectValues[adapterPos], Toast.LENGTH_SHORT).show();
}
}
});
事件,这就是应用程序未运行的原因。
原生消息传递意味着只有Chrome可以在连接"时启动主机实例。这是一个用词不当,因为
onDisconnect
表示"发布新副本并与之交谈"。没有办法"附加"到一个已经在运行的过程。如果关闭主机,stdio管道将被破坏,
connect()
对象将触发Port
事件。然后,您需要从扩展程序重新启动主机才能与其进行通信。
您可以查看此link。只需确保计算机上没有防病毒程序或防火墙程序导致问题。如果您可以在防火墙关闭时打开Google Chrome,则可能需要在防病毒或防火墙设置中create an exception。
答案 1 :(得分:0)
但是,在某些使用相同版本的Chrome(53.0.2785.116 m)的计算机中,安装程序会将相应的条目写入注册表,但是当我运行Chrome时,没有任何操作,并且扩展名未列在Chrome中:/ / extensions / page。
如果已安装该扩展程序,则可能会遇到blacklisting,然后卸载。
如果用户卸载了扩展程序,该怎么办?
如果用户通过用户界面卸载扩展程序,它将不再存在 每次启动时都要安装或更新。换句话说,外部 延期被列入黑名单。
如何离开黑名单?
如果用户卸载了您的扩展程序,您应该尊重这一点 决策。但是,如果您(开发人员)意外卸载 通过用户界面进行扩展,您可以删除黑名单标签 通过UI正常安装扩展,然后 卸载它。