【问题标题】:Programmatically create Firefox profiles以编程方式创建 Firefox 配置文件
【发布时间】:2013-09-10 05:31:57
【问题描述】:

问题

是否有一种简单的编程方式来创建新的 Firefox 配置文件?

nsIToolkitProfileService 看起来可以解决问题,但docs 说:

从 Gecko 18 开始(Firefox 18.0 / Thunderbird 18.0 / SeaMonkey 2.15 / Firefox OS 1.0.1),您不应再使用此服务或 nsIToolkitProfile

为什么

我对此很感兴趣,因为我认为它可以用来让 Firefox 的独立可执行文件非常轻松地运行(例如,可以在每个应用程序的任务栏中有一个完全独立的图标),而无需现在已解散的 Prism/Chromeless/WebRunner 项目。

我的方法是创建一个 Firefox 插件,它允许用户指定一个 Web 应用程序 URL,然后为他们自动创建一个命名空间配置文件,如“Executable1”、“Executable2”等。以及一个批处理文件,它将针对该配置文件和应用程序调用命令行“-no-remote”参数(因为 -no-remote 似乎需要一个配置文件来创建一个新实例(“-new-instance”参数我有看到一个错误中提到的似乎对我不起作用)。

【问题讨论】:

  • 你还需要这方面的帮助吗?我发现了一些新信息。
  • 是的,如果您不介意,我会很感兴趣。它不在我的待办事项列表的最顶端,但如果你有时间,我会对它的信息感兴趣,谢谢!
  • 这个问题是不是太老了?实际上,您可以在启动 firefox -CreateProfile myprofile 时创建一个配置文件,并在 random.myprofile 名称下创建它。完整的 Firefox 命令文档在这里 developer.mozilla.org/es/docs/Mozilla/…

标签: firefox-addon


【解决方案1】:

我的猜测是人们要么想要避免主线程 I/O。或者有人谈论从应用程序中删除配置文件管理器以加快启动速度并简化一般的启动代码,所以这可能是原因。似乎 wiki 用户“victorporof”确实进行了此编辑,因此您可能应该联系他寻求解释(IIRC,他有一个@mozilla.com 地址,您可以轻松地用谷歌搜索;)

无论如何,一个新的配置文件只不过是一个空目录。该应用程序将在启动后立即复制/创建丢失的文件。所以你的插件可以:

  • 在所需位置创建一个空目录。
  • 打开一个实例:-no-remote -profile $dir
  • 添加图标之类的。
  • 别管它了。
  • 可以选择与profiles.ini 混淆,以便新的配置文件在常规配置文件管理器中列出。

我经常从命令行做这样的事情,例如

mkdir -p central.profile && path/to/firefox -no-remote -profile $PWD/central.profile

或者只是继续使用nsITOolkitProfileService,直到它被实际删除。 (这就是我可能会做的)。 FWIW,甚至还有新代码仍在使用它,例如(远程)调试器。

另外,也许值得看看他们编写的the standalone profile manager

【讨论】:

  • 嗨@nmaier,你能帮我获取更多信息吗?我正在尝试使用 OS.File 重命名配置文件,但只是重命名 fodler 不会这样做。基本上我试图找到有关 nsIToolkitProfileService 正在打开/关闭/检查锁定/编辑的字段的信息,你能帮我在 MXR 上找到这个吗?
  • 我正试图与 victor guy 取得联系,但我无法收到他的电子邮件,所以我给他发了推文。你确定那个胜利者是对文章做出改变的那个人吗?
  • 看下面的回答,mdn文章上的消息是假的。
【解决方案2】:

因此,根据 ask.m.o 的 Neil 的说法,他说不使用此服务的消息是在他们制作 OS.File 时自动放在那里的。它将该消息错误地添加到此页面。该服务可用,但 OS.File 是首选方式。所以我创建了一些函数来使用 OS.File

链接主题:ask.m.o: OS.File instead of nsiToolkitProfileService?

这里是: https://gist.github.com/yajd/9791029

这仍然是一项正在进行的工作,需要我在我的插件 Profilist 中进行的更多微调,我会尽快发布,然后在这里发布。

【讨论】:

  • 嘿,我向 amo 发布了 profilist。功能在里面,我做的时候对promises不太了解。所以我有一些修饰要做。但是,如果你在这个项目上取得了进展,而我没有清理功能,请告诉我,这将开始我对功能进行微调。尝试从那里提升功能并使用,请分享任何 imrpvoments。
  • 虽然我很想跟上潮流,但其他一些项目已被排在我的优先事项列表的首位,尽管我仍然非常打算回到提到的工作尽可能在 OP 中,并且我已经添加了一个 todo/链接回到这篇文章以供参考,因为我可以找到时间回到这个。
猜你喜欢
  • 1970-01-01
  • 2018-12-07
  • 2015-09-13
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 2011-01-18
相关资源
最近更新 更多