gpt4 book ai didi

javascript - 当 nsIProcess 的 Firefox 启动失败时如何捕获错误

转载 作者:行者123 更新时间:2023-11-28 01:17:30 24 4
gpt4 key购买 nike

以下代码使用 nsIProcess 和 runAsync 来启动配置文件。如果它在使用中,它会抛出一个警报。我想抑制该警报并只关注该窗口。我尝试给它提供 -silent 命令行选项,但它不起作用。此外,如果 nsiProcess 无法启动,它永远不会在观察者中给我错误原因,它总是只是说已完成。 :(

这是可从暂存器运行的复制粘贴代码:

var exe = FileUtils.getFile('XREExeF', []); //this gives path to executable
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
process.init(exe);

var obsToLaunchProfAfterCreate = {
observe: function (aSubject, aTopic, aData) {
console.info('incoming obsToLaunchProfAfterCreate: aSubject = ' + aSubject + ' | aTopic = ' + aTopic + ' | aData = ' + aData, {
aSubject: aSubject,
aTopic: aTopic,
aData: aData
});
}
};

var args = ['-P', 'default', '-no-remote'];
var a = process.runAsync(args, args.length, obsToLaunchProfAfterCreate);
console.log('a', a)

最佳答案

我正在浏览 nsAppRunner 代码,似乎没有办法消除错误。

您可能仍然使用nsIToolkitService.profiles然后profile.lock()对于命名配置文件,或 nsIToolkitService.lockProfilePath()任意配置文件,以查看在实际生成进程之前是否可以打开该配置文件。不知道如何正确使用这些东西,只是做一些尝试和错误;)

至于nsIProcess : 嗯,进程已成功创建,否则无法显示警告对话框;) 所以在这种情况下,难怪 you get process-finished而不是process-failedprocess-failed仅当操作系统无法创建进程或进程以 (int32_t)exitCode < 0 退出时才会分派(dispatch)(操作系统通常会在创建进程失败时返回该信息)。

要检查一般错误,请使用以下内容:

if (!(subject instanceof Ci.nsIProcess) || subject.exitValue != 0) {
// error handling;
}

(有关返回退出代码的相关流程,请参阅文档)。

不幸的是,当 Firefox 由于配置文件锁定而退出时 Firefox still does return an exit code of 0 ,所以不幸的是你无法专门检查对话框......所以回到在生成进程之前检查锁的想法。

关于javascript - 当 nsIProcess 的 Firefox 启动失败时如何捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com