Ru-Board.club
← Вернуться в раздел «Хостинг»

» Облако Mail.ru (Cloud Mail.ru)

Автор: dimasic
Дата сообщения: 17.04.2014 18:56
То есть, система такая:

1. Какая-то папка смонтирована на диск Z:
2. В папке с программой лежит (ДОЛЖЕН лежать) симлинк на диск Z:
3. В корневой папке клиента создается junction point на симлинк в папке с программой.

Клиент облака двигается вот так: джанкшн -> симлинк -> z: -> папка

Джанкшн я делаю потому что его можно создать без администраторских прав. Но напрямую делать джанкш из папки клиента на диск z: нельзя, потому что ссылки между разными логическими дисками умеет делать только симлинк. Про создание симлинка смотрите выше. )) На мой взгляд, некорректно всегда запускать программу с правами администратора, если можно без этого обойтись.

В будущем планирую создавать симлинк после запроса программы на повышение прав, но делать это не каждый раз при монтировании, а при первоначальном создании симлинка, который в будущем можно использовать многократно.

Добавлено:

Цитата:
значки не отображаются

Теперь понятно. Значок остался у меня на локальном диске, а в программу не внедрился. Там особо нечего смотреть - всего лишь два значка клиента Облака. Хочу оставить одну кнопку с изменяющимся состоянием, чтобы без всяких надписей сразу видно было состояние монтирования. Дело осталось за вменяемыми иконками - пробовал на значок облака зеленую стрелочку цеплять, красный крестик... пока ничего не понравилось. И алгоритм определения смонтированных для клиента дисков надо проработать. На случай монтирования нескольких папок одновременно. Только поэтому кнопок осталось две. Временное явление.
Автор: dima1978
Дата сообщения: 17.04.2014 19:04
dimasic
А где в реестре прописывается корневая папка по умолчанию? И если ее менять через утилитку, то в реестре этот параметр тоже меняется, или остается неизменным?
Автор: dimasic
Дата сообщения: 17.04.2014 19:18
У меня вот тут:

HKEY_CURRENT_USER\Software\Mail.Ru\Mail.Ru_Cloud\folder

На x64, теоретически, путь может быть каким-то другим. У кого такая система, посмотрите. Если такого пути нет, поищите.

Моя программа только смотрит в реестр, но не пишет в него измененное значение. Изменение ее расположения нужно только для случаев, если путь не определяется автоматически. Можно научить утилиту менять этот путь. Но надо следить за наличием в указанной папке файлов cloud, за тем, тому ли пользователю облака принадлежит эта папка, а в случае. И надо придумать, хотим ли перемещать старую папку на новое место, если файлов cloud там нет.

Еще изменение места расположения папки пользователя в реестре может понадобиться, чтобы реализовать закачку в облако разных пользователей простым переключением из программы. Поработали с одним профилем, переключились на другой, туда что-то залили. Вполне реализуемо. Если надо. Но пока не считаю первоочередной задачей.
Автор: 19w85
Дата сообщения: 17.04.2014 19:19
dimasic

Цитата:
Давайте пока шрифт уменьшу, а там будет видно

Не надо ничего уменьшать, тогда я не только пользоваться не смогу (хотя пока что и не планирую), но и даже тестить больше уже не смогу. Мелкий немасштабируемый текст для меня недопустим.
Лучше просто оставить пока как есть, ничего критичного тут нет, на функционал не влияет.

Цитата:
И проверьте наличие симлинка в папке с программой

Дело было в нём, из прочитанного я подумал, что он нужен только для первого запуска, а оказалось что он нужен постоянно.


Цитата:
HKEY_CURRENT_USER\Software\Mail.Ru\Mail.Ru_Cloud\folder

Путь на x64 такой же, но насколько я помню к этой ветке имеют доступ только 64 битные приложения, а 32 битные переадресовываются
т.е. при попытке доступа (на запись) к HKEY_CURRENT_USER\Software\папка
переадресовываются сюда:
HKEY_CURRENT_USER\Software\Wow6432Node\папка
Автор: dimasic
Дата сообщения: 17.04.2014 19:35
И еще про хранение пути к корневой папке облака.

Заданный вручную путь сохраняется в ini файле с папкой программы. При запуске программа считывает из него настройки и если галочка "Всегда получать путь из реестра" неактивна, то используется пользовательский путь. Если обычно используется пользовательский путь, то есть возможность кратковременно переключиться на путь из реестра, нажав кнопку и не сохранив при выходе настройки. Немного запутанно, но зато есть разные варианты использования.


Цитата:
т.е. при попытке доступа к HKEY_CURRENT_USER\Software\папка переадресовываются сюда: HKEY_CURRENT_USER\Software\Wow6432Node\папка

Но ведь перадресовываться должен не только сам раздел, но и запросы моей программы. И она, и клиент 32-битные. Или 64-битный клиент тоже есть? Просто я не в курсе. Хорошо бы кому-нибудь проверить это 32-битным редактором реестра и сообщить мне точный путь. Сам могу глянуть только из-под WinPE, но вдруг у нее есть какие-то особенности мировосприятия.


Цитата:
Лучше просто оставить пока как есть, ничего критичного тут нет, на функционал не влияет.

Хорошо, тогда доработаем функционал, а масштабированием займусь позднее. Чувствую, что справлюсь.

Также можно будет добавить поддержку ключей командной строки. Хотя бы монтирование/размонтирование в соответствии с сохраненными настройками.
Автор: dima1978
Дата сообщения: 17.04.2014 19:36
dimasic

Цитата:
У меня вот тут:
HKEY_CURRENT_USER\Software\Mail.Ru\Mail.Ru_Cloud\folder

Да, у меня там же. Думал когда несколько акков, то на каждый будет свое значение Folder. На самом деле только один параметр, видимо каждый раз при входе в другой акк это значение переписывается. Странно как-то, почему не прописать сразу несколько акков.
Автор: dimasic
Дата сообщения: 17.04.2014 19:52
Мультиаккаунт можно сделать так: войти в аккаунт и сохранить ветку реестра Mail.Ru_Cloud. В ней важны такие ключи: email, folder, refreshtoken (токен, который используется для авторизации в облаке вместо пароля). validfinish - флаг корректного завершения процесса, что делает autostart я не знаю. Еще бывают ключи со сложными именами, начинающимися с sync_ - один из них указывает на паузу в синхронизации (0/1), но бывают и другие, похожие. Удаление или изменение визуально ни на что не влияет. И бывает ключ с настройками прокси-сервера, если кто-то его испольует.

Сохраненные в reg-файл ветки могут использоваться для переключения клиентов и авторизации. Поработали с одним профилем, запустили reg, запустили клиент - видим облако другого пользователя. Повторюсь, это можно реализовать и в программе, без запусков рег-файлов. Научить ее сохранять учетные данные пользователя и переключать их туда-сюда. Только надо подумать, как их безопасно хранить. Шифровать паролем хотя бы. Токен, вероятнее всего, нельзя использовать в других сервисах - для угона учетки или еще чего-то, но кто его знает. А получить доступ к файлам совершенно точно может любой, получивший адрес почты и токен.
Автор: 19w85
Дата сообщения: 17.04.2014 19:53
dimasic

Цитата:
Если обычно используется пользовательский путь, то есть возможность кратковременно переключиться на путь из реестра, нажав кнопку и не сохранив при выходе настройки.

Я думал это кнопка перехода в реестр в раздел облака:

А это "из реестра", а т.к. путь в настройках у меня уже совпадал с тем, что в реестре визуально ничего не происходила после нажатия этой кнопки.

Цитата:
Но ведь перадресовываться должен не только сам раздел, но и запросы моей программы. И она, и клиент 32-битные.

Сейчас уточнил, переадресация похоже только для HKEY_LOCAL_MACHINE, так что можно расслабиться.

Цитата:
Или 64-битный клиент тоже есть?

Вроде нету

Цитата:
Хорошо бы кому-нибудь проверить это 32-битным редактором реестра и сообщить мне точный путь

Проверил в 32-битной версии regedit (она запускается из под 32-битного приложения), путь точно такой же.

P.S. Утилитку для вывода в юникоде в нижнем регистре всё ещё жду (её код ведь готов, раз уже используется в helper'е)
Автор: dimasic
Дата сообщения: 17.04.2014 19:56
Да, ребятки, а кстати. Интерфейс обсудили, особенности программы в текущем виде, необходимость держать симлинк к диску z: - тоже. А самое главное-то никто не проверил? Папку монтирует, в облако заливает, размонтирует, линк удаляет, служебные файлы исправляет, обратно из облака не качает? Или это ссыкотно пока проверять?
Автор: 19w85
Дата сообщения: 17.04.2014 20:05

Цитата:
А самое главное-то никто не проверил? Папку монтирует, в облако заливает, размонтирует, линк удаляет, служебные файлы исправляет, обратно из облака не качает?

Я ж уже писал, что монтирование работает если рядом с прогой постоянно держать симлинк на z. А размонтирование само собой делал, т.к. проверял монтирование несколько раз. Я не видел тут необходимость после каждого мелкого шага писать "всё прошло успешно". Были бы проблемы - я написал бы, разве не очевидно?
Автор: dima1978
Дата сообщения: 17.04.2014 20:10
dimasic

Цитата:
А самое главное-то никто не проверил? Папку монтирует, в облако заливает, размонтирует, линк удаляет, служебные файлы исправляет, обратно из облака не качает? Или это ссыкотно пока проверять?

Все монтирует и размонтирует, но почему-то в облако не заливает, не могу понять. Сейчас еще посмотрю.
Автор: dimasic
Дата сообщения: 17.04.2014 20:11
19w85

Цитата:
Я ж уже писал, что монтирование работает если рядом с прогой постоянно держать симлинк на z. А размонтирование само собой делал, т.к. проверял монтирование несколько раз.

Да это я читал. )) Оно все здорово, но меня еще интересует главное - взаимодействие с облаком. Получилось туда что-то залить, и чтобы оно при этом обратно не вылилось при следующей синхронизации? Клиент программно завершается? Папка в облаке оказывается? Ее галочка синхронизации в настройках клиента неактивна?

dima1978

Цитата:
Сейчас еще посмотрю.

Проверьте наличие симлинка на диск z: в папке с программой. И куда указывает ссылка в папке облака. Получается через нее выйти на содержимое диска z Если все нормально, попробуйте поставить синхронизацию на паузу и возобновить ее. Иногда он по линку ходить забывает. Но надо за этим понаблюдать.
Автор: dima1978
Дата сообщения: 17.04.2014 20:18
dimasic

Цитата:
Проверьте наличие симлинка на диск z: в папке с программой.

Его конечно там нет. Что за симлинк не могли бы поподробней и зачем он нужен.
Автор: 19w85
Дата сообщения: 17.04.2014 20:18
dimasic

Цитата:
Да это я читал. )) Меня интересует главное - взаимодействие с облаком. Получилось туда что-то залить, и чтобы оно при этом обратно не вылилось при следующей синхронизации? Клиент программно завершается? Папка в облаке оказывается? Ее галочка синхронизации в настройках клиента неактивна?

Чувствую этот мой ответ не устраивает:

Цитата:
Были бы проблемы - я написал бы, разве не очевидно?




Цитата:
Получилось туда что-то залить, и чтобы оно при этом обратно не вылилось при следующей синхронизации?

да

Цитата:
Клиент программно завершается?

да

Цитата:
Папка в облаке оказывается?

да

Цитата:
Ее галочка синхронизации в настройках клиента неактивна?

да, неактивна

P.S. Да и чего бы не работать, если это всё прекрасно работает в чистых батниках и я тщательно всё оттестировал перед тем как писать тут инструкции? А это GUI по сути явно те же батники запускает в качестве основы.
Автор: dima1978
Дата сообщения: 17.04.2014 20:20

Цитата:
То есть, система такая:
1. Какая-то папка смонтирована на диск Z:
2. В папке с программой лежит (ДОЛЖЕН лежать) симлинк на диск Z:
3. В корневой папке клиента создается junction point на симлинк в папке с программой.

Понял последовательность, но где взять этот симлинк.
Автор: 19w85
Дата сообщения: 17.04.2014 20:23
dima1978

Цитата:
Понял последовательность, но где взять этот симлинк.

нужно рядом с прогой MailRu.exe (нужно какое-то более специфическое название, а то клиент почти также называется) запустить config.cmd , который выкладывался вот тут:
20:23 12-04-2014
Автор: kirsha
Дата сообщения: 17.04.2014 20:54
dimasic

Цитата:
Мне кажется, у клиента Mail.Ru нет оверлеев на значках. И я не знаю, каким образом они работают. Для этого какие-то библиотеки как-то куда-то внедряют, а у мейла всего три файла в дистрибутиве: сам исполняемый файл, картинка сплеш-скрина и деинсталлятор.

В папке %temp% создаются

Код: mcse64_00.dll
mcse32_00.dll
mcse32_01.dll
Автор: dimasic
Дата сообщения: 17.04.2014 21:01
dima1978

Цитата:
Его конечно там нет. Что за симлинк не могли бы поподробней и зачем он нужен.

Я про него писал в посте с анонсом программы. И еще в подробностях описывал вот тут: http://forum.ru-board.com/topic.cgi?forum=11&topic=5484&start=360#3

Можно взять config.cmd от моего скрипта (второй версии который), убедиться, что в нем прописана буква Z, потом положить его в папку с программой и запустить его с правами администратора. У вас в папке окажется ссылка с именем Z, которая указывает на диск Z:, и которая используется в алгоритме. Без нее ничего не получится.

Или запустите cmd.exe с правами администратора и введите:


Код: mklink /d c:\полный-путь-к-папке-с-программой\z z:
Автор: dima1978
Дата сообщения: 17.04.2014 21:22
dimasic

Цитата:
Можно взять config.cmd от моего скрипта (второй версии который), убедиться, что в нем прописана буква Z, потом положить его в папку с программой и запустить его с правами администратора. У вас в папке окажется ссылка с именем Z, которая указывает на диск Z:, и которая используется в алгоритме. Без нее ничего не получится.

config.cmd создал в папке с утилитой в DOS кодировке, запускаю, но ссылка с именем Z в этой папке не появляется. И последовательность запуска утилиты и config.cmd важна или нет?
Автор: dimasic
Дата сообщения: 17.04.2014 21:27
Надо один раз создать симлинк на диск Z: и сделать это с правами администратора. Не просто запустить командный файл, а щелкнуть правой кнопкой мышки и "Запуск с правами администратора". Не на программе, а на батнике. Вы же, как минимум, один раз это проделывали с прежней версией.
Автор: dima1978
Дата сообщения: 17.04.2014 21:46

Цитата:
Надо один раз создать симлинк на диск Z: и сделать это с правами администратора.

А под WinXP это тоже актуально, т.е. надо зайти в локацию админа? Или "Запуск с правами администратора" это только для win7 и выше. Набираю команду

Код: mklink /d c:\полный-путь-к-папке-с-программой\z z:
Автор: kirsha
Дата сообщения: 17.04.2014 22:02
dima1978
mklink — Vista и выше.

Добавлено:
ru.wikipedia.org/wiki/Символьная_ссылка

Добавлено:

dimasic

Цитата:
Хардлинки - ссыкотно: выглядят-то они как настоящие файлы, а ну как совсем все удалится!

Link Shell Extension



Есть консольная утилита

ln - command line hardlinks
Автор: dimasic
Дата сообщения: 17.04.2014 22:27
Ах, XP... Ну там да, утилиты этой нету. Значит, и батники старые не заработают, и программа в текущем виде - тоже. Сейчас попробую создать симлинк без mklink и повышение привилегий отработаю. Картинки на кнопки повесил, снизу подписал (пока так), баг с именем монтируемой папки устранил, на очереди симлинки и джанкшны. Тогда должно и в хрюше заработать.
Автор: 19w85
Дата сообщения: 17.04.2014 22:30
dimasic

Цитата:
Не совсем так. Из "батниковости" там только вызовы subst и mklink. И то, возможно, временно. Код самого GUI, код проверки монтированности папки, код завершения клиента, код шаблона имени папки, код перекодировок, код изменения cloud_ss - вроде, все по мелочам, а программа написана с нуля, неизменной осталась только идея.

Хм...а оно того стоило вообще? Можно было всё объединить в один батник (также сделать проверку монтирования) и его одного потом запускать для монтирования/размонтирования. Ну и пару утилиток к нему для закрытия и юникода.
Я просто до сих пор не вижу смысла/преимуществ отдельной проги, если она по сути копирует функционал батников.
Целевую папку отправлять через ярлык, что на батник, что на прогу - конечному пользователю без разницы.
К тому же чуток подправил батник и им уже можно пользоваться для другого облачного хранилища, а не только с мэйлом, а прогу уже только автор может дорабатывать.

kirsha

Цитата:

Цитата: Хардлинки - ссыкотно: выглядят-то они как настоящие файлы, а ну как совсем все удалится!

Link Shell Extension

Есть консольная утилита
ln - command line hardlinks
Автор: dima1978
Дата сообщения: 17.04.2014 22:43

Цитата:
Ах, XP... Ну там да, утилиты этой нету.

Тогда понятно почему до конца утилита правильно не работала, хотя mount и unmount с диском Z делала, но ничего не синхронизировала в облако. Если есть возможность обойти как-то эти символьные линки в WinXP может сможете сделать и без них.
Автор: dimasic
Дата сообщения: 17.04.2014 22:57
kirsha
Ну вот видите, файл и ссылка на него выглядят совершенно одинаково. Я именно об этом и говорил.

19w85

Цитата:
Хм...а оно того стоило вообще?

Стоило. Потому что хочу.

То было во-первых. А во-вторых, посмотрите - скрипты уже обрастают утилитками. Одна для закрытия клиента, другая для перекодировки, для WinXP вот отдельно mklink нужна, а потом, глядишь, еще четвертая утилитка/командный файл появится для вытаскивания регистрационных данных из реестра с целью сделать поддержку нескольких аккаунтов. И вот они такие лежат все в одной папке, вперемежку батники и утилиты, reg-файлы и прочие ништяки. Лично мне такое не очень нравится.

dima1978

Цитата:
Конечно если есть возможность обойти как-то эти символьные линки в WinXP.

Если не ошибаюсь, они с Win2k поддерживаются, просто отдельной утилиты в комплекте не было. Сейчас еще пошаманю над программой, попробуете в XP.
Автор: kirsha
Дата сообщения: 17.04.2014 22:57
При запущенном клиенте Mail.Ru Cloud были проблемы с отображение оверлейных значков, создаваемых Link Shell Extension.

Сделал как советует автор в Frequently asked questions (FAQ):

Q: The overlay icons do not show up

в реестре

Код: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
Автор: 19w85
Дата сообщения: 17.04.2014 23:04
dimasic

Цитата:
еще четвертая утилитка/командный файл появится для вытаскивания регистрационных данных из реестра с целью сделать поддержку нескольких аккаунтов

Средствами батника прекрасно читаются и пишутся параметры реестра, доп.утилита тут ни к чему.

Цитата:
И вот они такие лежат все в одной папке, вперемежку батники и утилиты, reg-файлы и прочие ништяки.

А зачем всё в кучу, ничто не мешает все утилитки сложить в отдельную папки рядом с батником и тогда без разницы сколько их там, одна или 100. А я так вообще закидываю все нужные утилитки в системную папку System32 и они потом оттуда автоматом подхватываются

Цитата:
Потому что хочу

Вот он, решающий аргумент
Автор: dimasic
Дата сообщения: 17.04.2014 23:05
Нет, ошибаюсь. Симлинки с Висты появились. А джанкшн пойнты нам не помогут, я уже писал, почему. Тогда надо как-то без смонтированного диска обойтись. В папку куда-то монтировать, что ли. Цепочкой джанкшнов? Надо исследовать такую возможность.
Автор: dima1978
Дата сообщения: 17.04.2014 23:44
dimasic

Цитата:
Симлинки с Висты появились. А джанкшн пойнты нам не помогут, я уже писал, почему.

Под WinXP как-то встречал прогу, которая работает с символьными линками. Но, как это связать с Вашей улилиткой непонятно, да наверное и нельзя. Если будет время\желание может придумаете возможность реализации без линков.
19w85

Цитата:
Средствами батника прекрасно читаются и пишутся параметры реестра, доп.утилита тут ни к чему.

Вот это было бы удобно прописать в реестре сразу несколько акков, чтобы мейловский клиент каждый раз не спрашивал корневую папку для каждого.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Ссылки на COPY.COM


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.