А может, и не по личным. Я не смог открыть код этого расширения и посмотреть, там какая-то непонятная кодировка. Неизвестно, что это расширение делает, вполне может быть каким-нибудь троянцем.
Большой кот... Пуфыстый... Полосатый... Зубастый (:
Отсутствует
А что оно делает-то?
Я же написал, то же самое что и ярлык с –p?
Добавлено 26-07-2011 11:47:00
И пользоваться им неудобно, т.к. для выбора нужного профиля сначала нужно запустить , а ярлык всегда под рукой.
Отредактировано mserv (26-07-2011 11:47:00)
Отсутствует
...пользоваться им неудобно, т.к. для выбора нужного профиля сначала нужно запустить , а ярлык всегда под рукой.
Можно отдельной программкой пользоваться > TrayLauncy
mserv , Tiger.711 оно не просто запускать профиля , а для работы сразу с несколькими профилями
... и например там можно открыть страницу из активной вкладки в профиле, выбранном из выпадающего списка (значок ProfileSwitcher в панели дополнений ) , правда у Profile Manager and Synchronizer это реализованно на мой взгляд удобнее - через стандартное контекстное меню , но данное расширение к сожалению слишком навороченное
Отредактировано Крошка Ру (26-07-2011 13:10:49)
Отсутствует
оно не просто запускать профиля , а для работы сразу с несколькими профилями
Так и с помощью ярлыков можно запустить разные профили. Зачем для этого лишнее дополнение?
и например там можно открыть страницу из активной вкладки в профиле, выбранном из выпадающего списка (значок ProfileSwitcher в панели дополнений )
Не понял, чего где открывать?
правда у Profile Manager and Synchronizer это реализованно на мой взгляд удобнее - через стандартное контекстное меню , но данное расширение к сожалению слишком навороченное
И его тоже удалили с АМО Profile Manager and Synchronizer :: Дополнения Firefox
Добавлено 26-07-2011 13:40:17
Можно отдельной программкой пользоваться > TrayLauncy
А смысл захламлять ось, когда всё можно сделать подручными средствами?
Отредактировано mserv (26-07-2011 13:40:17)
Отсутствует
А может, и не по личным. Я не смог открыть код этого расширения и посмотреть, там какая-то непонятная кодировка. Неизвестно, что это расширение делает, вполне может быть каким-нибудь троянцем.
Конечно, это очень опасТный троянец, замаскерованный и закодерованный!!!
Код опасТного троянца, изучайте:
var PS_appname_win;
var PS_appname_mac;
var PS_appname_linux;
var PS_appname_sh;
var PS_appname_debian;
var PS_appname_gnu;
var PS_firefox = "chrome://browser/content/browser.xul";
var PS_thunderbird = "chrome://messenger/content/messenger.xul";
var PS_addressbook = "chrome://messenger/content/addressbook/addressbook.xul";
var PS_isThunderbird;
var PS_windowName;
var profileLauncherPrefs = Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefBranch);
var PS_bundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
.getService(Components.interfaces.nsIStringBundleService);
var PS_bundleFile = PS_bundleService.createBundle("chrome://profilelauncher/locale/profilelauncher.properties");
var PS_converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
PS_converter.charset = "UTF-8";
var profileLauncher = {
os : navigator.platform.toLowerCase(),
init: function() {
if (document.location.href == PS_firefox) {
PS_appname_win = "firefox.exe";
PS_appname_mac = "firefox-bin";
PS_appname_linux = "firefox";
PS_appname_sh = "firefox.sh";
PS_appname_debian = "/usr/bin/iceweasel";
PS_appname_gnu = "icecat";
PS_isThunderbird = false;
PS_windowName = "navigator:browser";
}
else {
PS_appname_win = "thunderbird.exe";
PS_appname_mac = "thunderbird-bin";
PS_appname_linux = "thunderbird";
PS_appname_sh = "thunderbird.sh";
PS_appname_debian = "/usr/bin/icedove";
PS_isThunderbird = true;
PS_windowName = "mail:3pane";
if (document.getElementById("folderTree"))
document.getElementById("folderTree").addEventListener("select", profileLauncher.setTitle, true);
}
profileLauncher.saveprofileinuse();
},
quitPrompt : function() {
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var flags=promptService.BUTTON_TITLE_YES * promptService.BUTTON_POS_1 +
promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_2 +
promptService.BUTTON_TITLE_NO * promptService.BUTTON_POS_0;
var quit = promptService.confirmEx(window,PS_bundleFile.GetStringFromName("quittitle"), PS_bundleFile.GetStringFromName("quityesno"), flags, null, null, null, null, {});
return quit;
},
confirmSafeMode: function() {
var go = confirm(PS_bundleFile.GetStringFromName("confirmSafeMode"));
return go;
},
runScript: function(item) {
// Program install directory as nsIFile
var execFile = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("CurProcD", Components.interfaces.nsIFile);
var option = profileLauncherPrefs.getIntPref("profileswitcher.close_before_launch");
var loadCurrentPage = profileLauncherPrefs.getBoolPref("profileswitcher.load_current_page");
var safemode = (item.getAttribute("id") == "profManagerSF" || item.getAttribute("id") == "profManagerSF2");
if (safemode) {
if (! profileLauncher.confirmSafeMode())
return;
var quit = true;
}
else if (option == 2) {
var button = profileLauncher.quitPrompt();
if (button == 2)
return;
else if (button == 1)
var quit = true;
else
var quit = false;
}
else if (option == 1)
var quit = true;
else
var quit = false;
if (item.getAttribute("id").indexOf("profManager") == 0)
// == "profManager" || item.getAttribute("id") == "profManager2" || item.getAttribute("id") == "profManager3" || item.getAttribute("id") == "profManagerSF" || item.getAttribute("id") == "profManagerSF2" || item.getAttribute("id") == "profManagerSF3")
var prof = "";
else {
// Here it's used the native-charset profile's name,
// because the Unicode one will not work
var prof = item.getAttribute("profile");
// Remove the "#. " part of the label
prof = prof.replace(/\d+. /, "");
}
var args = new Array;
var isWin = false;
if (profileLauncher.os.indexOf("win") > -1) {
execFile.append(PS_appname_win);
}
else if (profileLauncher.os.indexOf("linux") > -1) {
execFile.append(PS_appname_linux);
if (! execFile.exists()) {
var found = false;
if (! PS_isThunderbird) {
var tempFile = execFile.parent;
tempFile.append(PS_appname_gnu);
if (tempFile.exists()) {
execFile = tempFile;
found = true;
}
}
if (! found) {
// Some distros (for ex. OpenSuse) uses "firefox.sh" instead "firefox"
tempFile = execFile.parent;
tempFile.append(PS_appname_sh);
if (tempFile.exists()) {
execFile = tempFile;
found = true;
}
}
if (! found) {
// Debian uses "iceweasel", but it is located in /usr/bin
var debianFile = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
debianFile.initWithPath(PS_appname_debian);
if (debianFile.exists()) {
execFile = debianFile;
found = true;
}
}
}
}
else if (profileLauncher.os.indexOf("mac") > -1) {
execFile.append(PS_appname_mac);
}
else {
alert(PS_bundleFile.GetStringFromName("unknownos"));
return;
}
if (! execFile.exists()) {
alert(PS_bundleFile.GetStringFromName("noexecfile"));
return;
}
args.push("-P");
args.push(prof);
args.push("-no-remote");
if (safemode)
args.push("-safe-mode");
if (prof != "" && loadCurrentPage)
args.push(window.content.location.href);
var process = Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
process.init(execFile);
if (quit) {
var quitDelay = 1000;
// I'm not sure at 100% that this will work also with very slow computer and
// with very old Firefox/Thunderbird version, so there is a hidden preference
// to allow the user to use the old (1.1 version and earlier) method
if (profileLauncherPrefs.getBoolPref("profileswitcher.use_onbeforeunload") ) {
quitDelay = 500;
window.onbeforeunload = function (evt) {
process.run(false,args,args.length);
};
}
else
process.run(false,args,args.length);
window.setTimeout(goQuitApplication, quitDelay);
}
else
process.run(false,args,args.length);
},
saveprofileinuse : function() {
var str = Components.classes["@mozilla.org/supports-string;1"]
.createInstance(Components.interfaces.nsISupportsString);
var str8;
if (profileLauncherPrefs.getPrefType("profile.in_use") == 0) {
var numProf = 0;
var tempname = "";
var ok = false;
var isRelative = true;
var profiles = new Array;
var os = window.navigator.platform.toLowerCase();
// This is the standard "root" directory where the profiles are
var filex = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("DefProfRt", Components.interfaces.nsIFile);
// This is the directory of the profile in use
var profdir = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("ProfD", Components.interfaces.nsIFile);
// Name of the profile in use
var profdirname = profdir.leafName;
var profdirfullpath = profdir.path;
// This regexp is used to test if the line finishes with the profdirname
var profRegExp = eval("/" + profdirname + "$/");
// Clone of the root profiles directory
var filex2 = filex.clone();
// First attempt to find the profiles.ini, in the root profiles directory (Linux style)
filex2.append("profiles.ini");
// If the file doesn't exist, we try with the parent directory (Windows, Mac OSX style)
if (! filex2.exists()) {
var file = filex.parent;
file.append("profiles.ini");
}
else
var file = filex2;
if (file) {
// Reading the profiles.ini file, line by line
var istream = Components.classes["@mozilla.org/network/file-input-stream;1"]
.createInstance(Components.interfaces.nsIFileInputStream);
istream.init(file, 0x01, 0444, 0);
istream.QueryInterface(Components.interfaces.nsILineInputStream);
var line = {}, hasmore;
do {
hasmore = istream.readLine(line);
var myline = line.value;
try {
// I need the line both in native-charset and in Unicode:
// the native-charset will be used to launch the command
// and the Unicode one to match "profdirfullpath" var
var mylineUNICODE = PS_converter.ConvertToUnicode(myline);
}
catch(e) {
var mylineUNICODE = myline;
}
// If we find a line beginning with Name= , we store the profile's name in a temp variable
if (myline && myline.indexOf("Name=") == 0) {
numProf = numProf+1;
var tempname = myline.substring(5);
profiles.push(numProf+". "+tempname);
}
if (myline && myline.indexOf("IsRelative=0") > -1)
isRelative = false;
else if (myline && myline.indexOf("IsRelative=1") > -1)
isRelative = true;
// On Mac the absolute paths are not in plain text, but encoded in base64 with lots of control chars
// and other strange things ... why??? Who knows it!!!!
if (os.indexOf("mac") >-1 && myline && myline.indexOf("Path=") == 0 && ! isRelative ) {
try {
var encodedpath = mylineUNICODE.substring(5);
// atob = base64 decoder function
var decodedpath = atob(encodedpath);
// To check in mac absoulte path, we create a regexp with the name of the
// profile's directory followed by a control char, in this way we shoul avoid "fake positives"
var regex = new RegExp(profdirname+"[\\x00-\\x1F]","gi");
if (decodedpath && regex.test(decodedpath)) {
ok = true;
str.data = tempname;
profileLauncherPrefs.setComplexValue("profile.in_use", Components.interfaces.nsISupportsString, str);
}
}
catch(e) {}
}
// Rule for absolute path on Win and Linux: note the here the match is with the full path
// because otherwise it could fail
else if (! isRelative && mylineUNICODE == ("Path="+profdirfullpath) ) {
ok = true;
str.data = tempname;
profileLauncherPrefs.setComplexValue("profile.in_use", Components.interfaces.nsISupportsString, str);
}
// Normal case with relative path on every os
// If the profile's directory is at the end of the line beginning with Path=, we've found the right name
else if (isRelative && myline && myline.indexOf("Path=") == 0 && profRegExp.test(mylineUNICODE)) {
ok = true;
str.data = tempname;
profileLauncherPrefs.setComplexValue("profile.in_use", Components.interfaces.nsISupportsString, str);
}
} while(hasmore);
istream.close();
}
if (! ok)
// We haven't found the name, set the pref to null... :-(
profileLauncherPrefs.setCharPref("profile.in_use", "");
str.data = profiles.join(",,,");
profileLauncherPrefs.setComplexValue("profiles.list", Components.interfaces.nsISupportsString, str);
}
if (document.location.href == PS_firefox || document.location.href == PS_thunderbird)
profileLauncher.setLabel();
else
PS_setABLabel();
},
setLabel : function() {
var whereShow = profileLauncherPrefs.getIntPref("profileswitcher.where_show_name");
var used_prof = profileLauncherPrefs.getComplexValue("profile.in_use", Components.interfaces.nsISupportsString).data;
try {
used_prof = PS_converter.ConvertToUnicode(used_prof);
}
catch(e) {}
if (whereShow == 0) {
document.getElementById("profileNameSBP").collapsed = true;
if (! PS_isThunderbird) {
var text = PS_bundleFile.GetStringFromName("profileinuse")+": "+used_prof;
document.getElementById("statusbar-display").setAttribute("tooltiptext", text);
}
else if (document.title.indexOf("["+ used_prof +"] ") < 0){
document.title = "["+ used_prof +"] " + document.title;
}
}
else {
document.getElementById("profileNameLabel").value = used_prof;
document.getElementById("profileNameSBP").collapsed = false;
if (! PS_isThunderbird)
document.getElementById("statusbar-display").removeAttribute("tooltiptext");
if (whereShow == 2)
document.getElementById("status-bar").insertBefore(document.getElementById("profileNameSBP"), document.getElementById("status-bar").firstChild);
else
document.getElementById("status-bar").appendChild(document.getElementById("profileNameSBP"));
}
profileLauncher.fillPopup();
},
fillPopup : function() {
var profilesListPref = profileLauncherPrefs.getComplexValue("profiles.list", Components.interfaces.nsISupportsString).data;
var profilesList = profilesListPref.split(",,,");
var popup = document.getElementById("profList");
var popup2 = document.getElementById("profList2");
var popup3 = document.getElementById("profList3");
var used_prof = profileLauncherPrefs.getComplexValue("profile.in_use", Components.interfaces.nsISupportsString).data;
var regtest = new RegExp("\\d. "+used_prof+"$");
for (i=0;i<profilesList.length;i++) {
var item = document.createElement("menuitem");
try {
var labelUTF8 = PS_converter.ConvertToUnicode(profilesList[i]);
}
catch(e) {
var labelUTF8 = profilesList[i];
}
item.setAttribute("profile", profilesList[i]);
item.setAttribute("oncommand", "profileLauncher.runScript(this)");
if (profilesList[i].match(regtest)) {
item.setAttribute("disabled", "true");
item.setAttribute("label", labelUTF8 + " (" + PS_bundleFile.GetStringFromName("profileinuse") + ")");
}
else
item.setAttribute("label", labelUTF8);
popup.appendChild(item);
var item2 = item.cloneNode(true);
popup2.appendChild(item2);
if (popup3) {
var item3 = item.cloneNode(true);
popup3.appendChild(item3);
}
}
var sep = document.createElement("menuseparator");
popup.appendChild(sep);
sep = document.createElement("menuseparator");
popup2.appendChild(sep);
var last = document.createElement("menuitem");
last.setAttribute("label", PS_bundleFile.GetStringFromName("refresh"));
last.setAttribute("oncommand", "profileLauncher.refreshList()");
popup.appendChild(last);
var last2 = last.cloneNode(true);
popup2.appendChild(last2);
if (popup3) {
sep = document.createElement("menuseparator");
popup3.appendChild(sep);
var last3 = last.cloneNode(true);
popup3.appendChild(last3);
}
},
refreshList : function() {
profileLauncherPrefs.deleteBranch("profile.in_use");
profileLauncherPrefs.deleteBranch("profiles.list");
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var enumerator = wm.getEnumerator(PS_windowName);
while(enumerator.hasMoreElements()) {
var win = enumerator.getNext();
var popup= win.document.getElementById("profList");
var items = popup.childNodes;
for (i=items.length;i>0;i--)
popup.removeChild(items[i-1]);
popup= win.document.getElementById("profList2");
items = popup.childNodes;
for (i=items.length;i>0;i--)
popup.removeChild(items[i-1]);
win.profileLauncher.saveprofileinuse();
}
},
cleanpref : function() {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var enumerator = wm.getEnumerator(PS_windowName);
if (! enumerator.hasMoreElements()) {
profileLauncherPrefs.deleteBranch("profile.in_use");
profileLauncherPrefs.deleteBranch("profiles.list");
}
},
openOptions : function() {
open("chrome://profilelauncher/content/profilelauncherOptions.xul","","chrome=yes,modal=yes,centerscreen=yes");
},
setTitle : function() {
try {
var profilename = profileLauncherPrefs.getComplexValue("profile.in_use", Components.interfaces.nsISupportsString).data;
try {
profilename = PS_converter.ConvertToUnicode(profilename);
}
catch(e) {}
if (profilename != "" && profileLauncherPrefs.getIntPref("profileswitcher.where_show_name") == 0) {
var titleappend = "["+ profilename +"] ";
document.title = titleappend + document.title;
}
}
catch(e) {}
}
}
if (document.location.href != PS_addressbook) {
window.addEventListener("unload", profileLauncher.cleanpref, false);
window.addEventListener("load", profileLauncher.init, false);
}
Отредактировано slbgz (26-07-2011 14:39:43)
Отсутствует
Не понял, чего где открывать?
mserv Например Вам надо открыть станицу в другом профиле - по аналогии с расширением Open With , только там страница откроется в выбранном стороннем браузере
А смысл захламлять ось, когда всё можно сделать подручными средствами?
у меня ярлычки
Отсутствует
Надуманное расширение. Убрали и правильно сделали, что бы не вводить людей в заблуждение. Зачем оно вообще нужно? Что разве так трудно создать ярлык с –p?
И пользоваться им неудобно, т.к. для выбора нужного профиля сначала нужно запустить , а ярлык всегда под рукой.
Tiger.711 пишет: А как реализовано интерфейсно?Да точно так же как и у ярлыка, один в один. Во всяком случае, так было, когда я пробовал, до его удаления с AMO.
А смысл захламлять ось, когда всё можно сделать подручными средствами?
Мдя. Видать тот Паоло так же точно нарвался когда-то на подобных уникальных «гуру». И решил не портить себе нервы... итальянцы, они, люди горячие, могут и искалечить ...
Добавлено 26-07-2011 14:23:44
Если не секрет, чем выдернули код?
А у меня специальная дергалка есть, секретная.
Но Тебе скажу, полосатый, я люблю кошек... по секрету - Тотал Коммандер называется.
Отредактировано slbgz (26-07-2011 14:35:59)
Отсутствует
Мдя. Видать тот Паоло так же точно нарвался когда-то на подобных уникальных «гуру». И решил не портить себе нервы... итальянцы, они, люди горячие, могут и покалечить ...
Ну, когда сказать нечего, то конечно, как вариант можно и потролить. А потом ещё и тему создать, почему обижают злобного карлика. Смотрю и до минуса дотянулись, или табуретку подставили, смотрите не п…
Добавлено 26-07-2011 14:48:45
у меня ярлычки
А чего тогда рекламируешь всякую…?
Отредактировано mserv (26-07-2011 15:30:06)
Отсутствует
Тотал Коммандер называется.
А в тотале какой текстовый редактор? Скажу по секрету - там разные могут быть.
Большой кот... Пуфыстый... Полосатый... Зубастый (:
Отсутствует
А чего тогда рекламируешь всякую…?
mserv
одно другому не мешает .... вот сейчас установил - сидит себе в трее .... надоест - удалю
Добавлено 26-07-2011 15:52:45
slbgz,Tiger.711 всё секретничаете ?
Отредактировано Крошка Ру (26-07-2011 15:52:45)
Отсутствует
slbgz пишетТотал Коммандер называется.
А в тотале какой текстовый редактор? Скажу по секрету - там разные могут быть.
Спасибо за «информацию». Вы захламлять темы флеймом когда прекратите? И хамить?
Поиском умеете пользоваться, «гуру» доморощенные?
У меня нет желания вам отвечать. А тому маменькину сынку,врунишке mserv- тем более. Выпороть бы его хорошенько, да вот некому.
Отредактировано slbgz (27-07-2011 03:52:07)
Отсутствует
Спасибо за «информацию». Вы захламлять темы флеймом когда прекратите? И хамить?
Поиском умеете пользоваться, «гуру» доморощенные?
У меня нет желания вам отвечать. А тому маменькину сынку, врунишке mserv - тем более. Выпороть бы его хорошенько, да вот некому.
Что-то карлик опять разбушевался и на кнопку жмёт, как сумасшедший. За табуретку хоть держитесь, а то и правда костей не соберёте. Но его понять можно, скопипостил где-то кнопку, для бесполезного расширения и возомнил себя «гуру». А умишком понять не может, что это расширение никому ненужно, как и кнопочка к нему. Они ещё эту хрень и в подпись добавили.
•• Как легко и быстро создать/удалить/добавить профиль Firefox? Расширение и •• Кнопка к нему
А вчера, как назло ещё его любимую тему(Как посмотреть который карлик тебе все время «минусы» лепит? | Форум Mozilla Россия) закрыли, всё один к одному. Вот и рассерчал наш малыш.
Отсутствует
Версия 1.4 вполне себе рабочая. Даже на ночнушках.
Большой кот... Пуфыстый... Полосатый... Зубастый (:
Отсутствует
вполне себе рабочая. Даже на ночнушках.
версия глючная, при смене профиля во всплывающем окне с подтверждением, нужно жать красный крестик закрытия окна, чтобы профиль поменялся и запустился,если жать на другие кнопки в этом окошке то браузер просто отключается и запускать его приходится вручную! настраивал всяко-разно не помогает ни что!
Отсутствует
Добрый день!
Раньше при выборе в Свитчере другого профиля - тот просто открывался.
А теперь вместо открытия профиля выкидывает в менеджер профилей.. - т.е. на какой профиль ни нажмешь, все-равно надо его опять в менеджере выбирать.
Галочка "Не спрашивать при запуске" в менеджере - никак не влияет на работу Свитчера.
Кто-нибудь сталкивался с такой проблемой? Как можно исправить?
Отредактировано Torry (20-08-2012 17:45:03)
Отсутствует