PDA

Показать полную графическую версию : extensions в профиле Mozilla Firefox


icetanker
14-04-2017, 08:43
у каждого пользователя свой уникальный профиль в Mozilla Firefox, задача в том, что нужно каким-то образом определить имя профиля и скопировать в директорию C:\Users\User\AppData\Roaming\Mozilla\Firefox\Profiles\<профиль>\extensions свое расширение, хотелось бы как то это автотизировать, но не могу понять, как определять данный профиль

x0r
14-04-2017, 18:03
...

Iska
14-04-2017, 18:13
Чё за расширение? способ есть и не один. »
Да без разницы. Способ ровно один — в соответствии со стандартами.

icetanker
15-04-2017, 10:51
Iska, подскажи, а какой способ?

x0r
15-04-2017, 11:23
разницо есть. Если это очередной говно-рекламный плуг или другой мегокалькулятор(всем ощень-на нужный), который школьнег хочет тулить всем подряд в скрытой установке, то чем дольше он будет в неведении, тем меньше от него будет проблемм.

icetanker
15-04-2017, 11:56
x0r, если настолько есть разница , то вот это https://www.cryptopro.ru/sites/default/files/products/cades/extensions/cryptopro_extension_for_cades_browser_plug_in-1.1.1-an+fx-windows.xpi

Nordek
15-04-2017, 12:52
icetanker, Вы потрудились бы для начала пользоваться поиском.

Повторю свой ответ:
На Ваш вопрос даже отвечать нет необходимости, поскольку Google способен найти интересующую Вас информацию. »

Если не верите, то: Пожалуйста (http://www.cyberforum.ru/cmd-bat/thread683443.html).

x0r
15-04-2017, 13:00
Profile_folder_-_Firefox (http://kb.mozillazine.org/Profile_folder_-_Firefox)
если из самого FF, нопример CustomButtons или самого расширения, то

var prof = Services.dirsvc.get('ProfD', Ci.nsIFile);
prof.append("extensions");

или

var file= Components.classes["@mozilla.org/file/directory_service;1"].
getService(Components.interfaces.nsIProperties).
get("ProfD", Components.interfaces.nsIFile);
file.append("extensions");

можно из cmd\js (тут я не особо) Профиль лежит в
%APPDATA%\Mozilla\Firefox\Profiles
а там(..\) файл profiles.ini где указаны имена папок профиля. Нужно его разобрать , взяв строку с путем.
раньше можно было проще, была переменная %MOZ_PROFILE_PATH% , щас вроде убрали.

Iska
16-04-2017, 16:55
Nordek, не верю. Профиль может быть не в %APPDATA%\Mozilla\Firefox. В profiles.ini может быть более одного профиля. Профили могут иметь как относительные, так и абсолютные пути. Кодировка файла тоже никак не учитывается.

Nordek
16-04-2017, 18:02
не верю. »Чего остановился? Продолжай, а я послушаю. Ваше предложение выглядит незаконченным.

...так и абсолютные пути. Кодировка файла тоже никак не учитывается... »... также если два и более профилей, "может быть" использован последний профиль (первый или первые два пропущены).

P.S Изначально подразумевал по умолчанию. Это (https://support.mozilla.org/t5/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%9C%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80%D0%B0-%D0%BF%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D0%B5%D0%B9-%D0%B4%D0%BB%D1%8F-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B8-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/ta-p/10280) или это (https://developer.mozilla.org/ru/docs/Mozilla/Command_Line_Options#-P_.22profile_name.22) не подразумевал.

Iska
16-04-2017, 18:10
Nordek, вот именно это и надо было говорить, только не мне и сейчас, а автору вопроса и сразу.

icetanker
26-04-2017, 14:44
145243
@Echo Off
:: путь к моему файлу, который нужно скопировать
Set myfile=ru.cryptopro.nmcades@cryptopro.ru.xpi
:: путь к ini файлу, из которого нужно прочитать название папки профиля
Set pathini=%appdata%\Mozilla\Firefox\profiles.ini
:: путь, по которому нужно будет создать этот профиль и потом скопировать мои файл и папку
Set outfolder=%appdata%\Mozilla\Firefox

:: читаем название папки профиля из ini файла
For /f "tokens=2 delims==" %%i In ('FindStr /b "Path=" "%pathini%"') Do Set fPath=%%i
:: получаем полный путь папки профиля и правим в нем прямой слеш на обратный
Set fPath=%outfolder%\%fPath:/=\%
Echo %fPath%

SetLocal EnableExtensions EnableDelayedExpansion

Set "File="%fPath%\extension.json""
rem Set "File=extension.json"

Set "Rep1="active":true""
Set "Rep2="userDisabled":false""

>"%File%.bat.tmp" (FOR /F "usebackq delims=" %%s IN (`More "%File%"`) DO Echo %%s)

Set /A N1=0,N2=0,NN=0
FOR /F "usebackq Skip=2 delims=[]" %%n IN (`Find /N ""active":false"" "%File%.bat.tmp"`) DO Set N1=%%n
FOR /F "usebackq Skip=2 delims=[]" %%n IN (`Find /N ""userDisabled":true"" "%File%.bat.tmp"`) DO Set N2=%%n

>"%File%" (FOR /F "usebackq delims=" %%s IN (`More "%File%.bat.tmp"`) DO (
Set /A NN+=1
If Not !NN! EQU %N1% If Not !NN! EQU %N2% Echo %%s
If !NN! EQU %N1% Echo %Rep1%
If !NN! EQU %N2% Echo %Rep2%
))
DEL "%File%.bat.tmp" 2>NUL

Exit

получилось скопировать файл в папку extension, только теперь не получается отредактировать сам файл extensions.json
хочу найти значения у параметров "active":false,"userDisabled":true у самого плагина и изменить их на "active":true,"userDisabled":false
подскажите, где может быть ошибка?

Iska
26-04-2017, 15:27
подскажите, где может быть ошибка? »
В выборе языка реализации. Возьмите PowerShell — тем более, что нынче в нём есть такие командлеты, как ConvertFrom-Json и ConvertTo-Json, а равным образом не будет проблем с юникодом.

icetanker
26-04-2017, 15:38
Iska, а с помощью cmd не получиться никаким образом? или пример какой-нибудь на powershell?

Iska
26-04-2017, 16:25
icetanker, я вижу очень много проблем на этом пути, и вовсе не уверен, что все они решаемы.

icetanker
26-04-2017, 17:16
Iska, у Вас нет примера, как можно это реализовать с помощью powershell?(почитал по powershell, честно говоря, не очень понятно)

Iska
26-04-2017, 17:44
icetanker, нет, готового примера для xpi без install.rdf у меня нет.

icetanker
27-04-2017, 09:39
Iska, а на vbs возможно реализовать?

Iska
27-04-2017, 22:13
Iska, а на vbs возможно реализовать? »
Полагаю, можно, но возни будет вдвое-втрое больше: встроенной поддержки UTF-8 нету — надо будет заниматься конвертацией через ADODB.Stream, также придётся самому парсить и разбирать-собирать JSON.




© OSzone.net 2001-2012