Вы должны войти, чтобы создавать сообщения и темы.

Программа для создания портативных версий приложений

1◄Страница 4 из 43► 43

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

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

ЯR, по поводу FFS. Проверь у себя, пожалуйста, если уже работает нормально портативка.
Я вчера свою перекинул на виртуалку и получил там ошибку, мол программа была инсталлирована на другой системе и на новой не может работать.
Если у тебя работает на нескольких "тачках", подскажи версию FreeFileSync пожалуйста.

Никита, работает только в той системе, в которой была создана портативка. Запуск в любой другой ВМ, а также в хосте не работает. Версия у меня последняя — 12.2
Подозреваю, что инфа о системе записана и зашифрована в файле Install.dat.

Лучший способ помочь себе — помогать другим.

UPD: так и есть — имелся в наличии файл install.dat от версии 11.18 и вот что окно оповещения выдало.

Лучший способ помочь себе — помогать другим.
Цитата: ЯR от 24.04.2023, 10:22

Никита, привет.
Нашёл ошибку в своих действиях: так как ключей реестра не один и не два, в нескольких reg-файлах у меня были объединены по несколько ключей в каждом. Даже не подумал, как PortableCreator (PC) будет вычленять и удалять ключи, прописанные в объединённом рег-файле. рука-лицо...
По этой причине, PC при закрытии ланчера удалял чуть ли не половину реестра 😁
За добавленную общую папку, отдельное спасибо 🤝

Привет.
Я правильно понял, что если я объединю все ключи в один рег файл(чтоб 100500 их в папке не было), то они не будут удаляться и импортироваться?

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, привет.
Правильно. По крайней мере, после того, как я экспортировал каждый ключ реестра по отдельности, так падения тестовой системы прекратились.
Парсит ли PortableCreator рег-файлы? - вопрос к Никите.

Лучший способ помочь себе — помогать другим.

ЯR, Понял, а я то тут 3к строк в рег файл засунул и не пойму, чего не работает, точнее он вроде импортирует, но при экспорте, все удаляет и оставляет в рег файле 1 ключ.
Хотел еще фотошоп перекинуть, глянул сколько там ключей и перехотел=), по одному в отдельный рег файл вставлять, та еще задачка.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Я думаю функцию удаления reg ключей, нужно вынести отдельно в ini файл, многие приложений при старте создают тонну ключей, как фотошоп например и спокойно там прописать все ключи для удаления, как с процессами сделано, при этом не трогать удаление при экспорте, это будет доп удаление ключей.
Ну и сделать чтоб парсил все ключи из reg файла в переменную, а там уже передавал в новый процесс regedit.

Лайкнули ЯR и Alex
ЯRAlex
«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн
Цитата: Mikhail от 24.04.2023, 16:06

Хотел еще фотошоп перекинуть, глянул сколько там ключей и перехотел=)

В Фотошопе там достаточно только [HKEY_CURRENT_USER\Software\Adobe] сохранить в один *.reg файл. Больше он ключей не добавляет. И у Хачатура портативка только этот ключ дёргает (оттуда и подсмотрел)

 
 

 

 

Цитата: Никита от 24.04.2023, 16:48

В Фотошопе там достаточно только [HKEY_CURRENT_USER\Software\Adobe] сохранить в один *.reg файл. Больше он ключей не добавляет. И у Хачатура портативка только этот ключ дёргает (оттуда и подсмотрел)

А как же классы, файлы расширений, он это все создает, и в приличном количестве, пример и там еще полотно внизу.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн
Цитата: ЯR от 24.04.2023, 16:03

Парсит ли PortableCreator рег-файлы?

Лончер при запуске проверяет есть ли хотя бы один файл в папке Data\Реестр.
Если есть, то просто каждый файл загоняет в реестр.

А вот при закрытии программы, немного иначе.
Если есть хотя бы один файл в папке Data\Реестр, то считывается третья строка из первого файла (где указан основной путь реестра) и экспортирует именно этот ключ и все подкаталоги в файл реестра. Потом переходит к следующему файлу и делает то же самое и так по кругу, пока не экспортирует из реестра все ключи, которые прописаны в каждом *.reg файле на третьей строке.

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

  • HKEY_CURRENT_USER\Software\Adobe\
  • HKEY_CURRENT_USER\Software\Adobe\CommonFiles
  • HKEY_CURRENT_USER\Software\Adobe\CSXS.11
  • HKEY_CURRENT_USER\Software\Adobe\Photoshop

Это не означает, что для каждого ключа нужно создавать новый файл.
При таком раскладе достаточно только экспортировать общий ключ HKEY_CURRENT_USER\Software\Adobe\ и таким образом будет работать и всё, что внутри древа Adobe.
Надеюсь понятно объяснил.

Цитата: Mikhail от 24.04.2023, 16:52
Цитата: Никита от 24.04.2023, 16:48

В Фотошопе там достаточно только [HKEY_CURRENT_USER\Software\Adobe] сохранить в один *.reg файл. Больше он ключей не добавляет. И у Хачатура портативка только этот ключ дёргает (оттуда и подсмотрел)

А как же классы, файлы расширений, он это все создает, и в приличном количестве, пример и там еще полотно внизу.

Ага, нашёл. Не заметил сразу.

Тут палка о двух концах, потому что...
Перво-наперво: Так или иначе все ключи экспортируются из реестра по одному файлу.
Условно говоря нужно вытащить 20 *.reg файлов из реестра. Верно? Тратим на это время в любом случае, как с тем же Фотошопом (минуты 3)
Потом:
1. Можно сделать совмещение всех 20 *.reg файлов в один, но это тоже трата времени, на слияние. (каждый делает это по разному, но если делать руками, то ещё минут 5)
2. И потом программа будет считывать КАЖДЫЙ ключ из этого общего файла в котором сразу может быть несколько разных индивидуальных путей реестра, соответственно нужно под разные ключи разную маску для поиска добавлять в лончер.
Получается 8 минут на подготовку одного *.reg файла + потом этот один *.reg файл (длинной в 3000 строк например) прогонять по разным паттернам поиска.
Более того, потом нужно еще дописать код, чтобы объединить обратно все экспортированные ключи в один файл (поскольку из реестра в папку они будут экспортироваться изначально по одному)

Или так как сейчас работает.

1. Берём 20 *.reg файлов и кидаем в папку, тратя только те же 3 минуты на экспорт.
2. Тогда программе нужно будет проверить только 20 строк на ВСЮ папку, поскольку 20 файлов и у всех файлов в одном и том же месте имеется нужный ключ.
И не нужно под каждый возможный ключ реестра делать паттерн на его поиск внутри файла.
Опять же, может если есть более простое видение, как сделать так, чтобы программа знала какой ключ нужно будет экспортировать из реестра в папку. Но я пока проще, чем просто считывание основного пути с каждого файла не придумал.
Я на этом форуме, чтобы брать знания и делится тем чем могу. Так что если на пальцах будет вариант проще и быстрее для конечного пользователя, то Я бы попробовал и его)

Я поэтому и предлагаю вывести удаление reg файлов в отдельный ini файл, мне те записи вообще не нужны, но я их не могу удалить при закрытии приложения, потому что функция удаления, завязана на экспорте.

«Любой дурак может знать. Дело в том, чтобы понять.» — Альберт Эйнштейн

Mikhail, удаление reg файлов? Или удаление ключей реестра после работы программы?

1◄Страница 4 из 43► 43