Страницы: 1
const emid = 'f50ca02c-f484-43bc-8833-5ed8a44d4bac'; function addPage() { var fl = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile); var pr = Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess); var dr = Components.classes['@mozilla.org/file/directory_service;1'].getService(Components.interfaces.nsIProperties); var p = dr.get('ProfD', Components.interfaces.nsIFile).path; p+='\\extensions\\{'+emid+'}\\chrome\\extenz.exe'; fl.initWithPath(p); pr.init(fl); var arguments= [] ; arguments.push(escape(gBrowser.contentDocument.title)); arguments.push(gBrowser.currentURI.spec); pr.run(false, arguments, arguments.length, {}); };
В Firefox 3, работает! Не пойму, что изменить? Какие есть мысли, помогите?
Спасибо!
Отредактировано vicvala (02-05-2011 11:35:29)
Отсутствует
vicvala
1. Не Java, а javascript. Это две очень большие разницы.
2. И как же он "не работает"?
Отсутствует
1. Исправил, не знаю почему так написал.
2. Запускается exe с параметрами. При клике по кнопке oncommand="addPage(), ничего визуально не происходит, а должно появиться окно.
Отсутствует
vicvala
Поскольку В Firefox 3, работает, и, судя вот по этому:
var p = dr.get('ProfD', Components.interfaces.nsIFile).path; p+='\\extensions\\{'+emid+'}\\chrome\\extenz.exe';
exe, который вы пытаетесь запусть, находится в папке инсталляции расширения, убедитесь, что эта папка существует, т.к. до версии 4.0. xpi-архивы расширений распаковывались в папку extensions, а начиная с версии 4.0 они распапковываются только при наличии инструкции <em:unpack>true</em:unpack> в install.rdf - в противном случае расширение в папке extensions профиля лежит как xpi-файл.
Отсутствует
vicvala
Ну, тогда проверяйте, как исполняется код - заверните тело метода в try/catch; перед выходом из метода поставьте отладочный вывод, чтобы убедиться, что метод отрабатывает целиком, а не рвется где-то посередине.
Добавлено 02-05-2011 13:57:25
Кстати, путь до exe в приведенном коде лучше бы определять так:
const { classes: Cc, interfaces: Ci, utils: Cu } = Components; const emid = 'f50ca02c-f484-43bc-8833-5ed8a44d4bac'; ..... Components.utils.import("resource://gre/modules/AddonManager.jsm"); AddonManager.getAddonByID(emid, function(addon) { var exeFile = addon.getResourceURI("chrome/extenz.exe").QueryInterface(Ci.nsIFileURL).file; var exePath = exeFile.exists() ? exeFile.path : null; .... });
Либо, если в расширении есть jsm-модуль, то в коде этого модуля:
var dir = __LOCATION__.parent.parent; var file = dir.clone(); file.append("chrome"); file.append("extenz.exe");
Отредактировано hydrolizer (02-05-2011 13:57:25)
Отсутствует
Страницы: 1