AVanti473
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Часть 1 (чисто предыстория - к прочтению необязательна): 1) Итак, есть у меня привычка устанавливать и запускать не особо часто используемые мной программы в собранном мною же "девайсе" -портабельном файловом менеджере (далее "девайс") http://avanti473.ru/news.php?readmore=133 Ну, чтобы результаты их работы и данные реестра падали в песочницу "девайса". Надо оговориться, что я большой любитель работы операционки в режиме тени (программа Shadow Defender, когда после первой же перезагрузки система остаётся девственно чистой), поэтому есть резон чтобы всё сохранялось в песочнице вышеупомянутой сборки, для комфортного продолжения работы. 2) Я не игроман, но, неожиданно новый год обрадовал бесплатной игрушкой "Metro Last Light Redux". Вернее, листая смартфон увидел в яндексе сообщение о бесплатной раздаче, и успел скачать полный дистрибутив за 38 минут до её завершения. Разумеется, установил её в выше упомянутый "девайс" и некисло так завис в игрушке на пару часов. Пока отправлял комп в сон вроде всё норм - прогресс игры сохранялся в перерывах. Но когда перегрузился, то с удивлением обнаружил, что прогресс игры исчез. В общем устроил себе головомойку на целый день, с поиском прогресса, а именно - куда же он сохраняется. И так рыл и эдак, да всё бесполезно. Испробовал всё, и в реале и в виртуале... Любопытство и гордость до последнего не давали обратиться к гуглу. ))) Зря. Когда все идеи закончились, пришлось идти в гугл. и по первой же ссылке понять какой я дятел. ))) В силу тотальной ненужности и бесполезности для меня папки "Мои документы" (см. выше про Shadow Defender), я вообще давно и благополучно забыл о её существовании. Ну, а так-как папку %Personal%, я почти всегда оставляю в проектах с изоляцией Merged, то понятно почему я ничего не мог найти ни в реале ни в виртуале. В виртуале это дырка, а в реале, при исследовании Total Uninstall(ом) она, либо в исключении, либо я машинально её пропускал в результатах, не придавая значения. Часть 2 (суть проблемы): 3) В общем пересобирать "девайс" под конкретную игрушку прям очень как влом (проще игрушку выкинуть). Больше путаницы, а проблема давнишняя, так почему бы ещё раз не вернуться к её решению? Задача - без пересборки портабла сменить изоляцию папки %Personal% с Merged на WriteCopy. И пофиг уже игрушка, ведь желание решить старую задачу вышло на первый план. ))) 4) Лезу в мануал, нахожу по результатам поиска SetfilesystemIsolation и вспоминаю, что я подглядывал решение, когда скрипт ThinApp можно запустить без обязательного помещения его в проект. Для этого, повторюсь - берётся из распакованной версии ThinApp scripting.dll и помещается в системную папку "C:\Program Files (x86)\ThinstallPlugins", а рядом с ним любой vbs-скрипт с ThinApp(овскими) условиями запуска, макросами и прочим. При этом, все сборки ThinApp начинают запускаться на компьютере именно с выполнения этого скрипта. Не только сборки, но и отдельные процессы в этих сборках... Хотя, если поместить эту конструкцию внутрь файловой системы конкретного портабельного приложения (в случае моего "девайса" - портабельного файлового менеджера), то только та сборка и будет стартовать со скриптом. Ну, а раз скрипт таким макаром стартует и именно с тинаповскими командами вроде OnFirstParentStart или ExpandPath("%Personal%"), я делаю вывод, что так это всё и должно работать без пересборки проекта. 5) Иду сюда на форум за поддержкой, где Вы, вместе с MobyArt любезно помогли мне и подсказали как сделать так, чтобы vbs(ник) работал без ошибок. Работать-то он работает, да вот не выполняет то, что от него требуется. Иначе говоря, я по разному менял скрипт в различных вариантах и с различными значениями изоляции. После, в своём "девайсе" я просто копировал любой файл в папку %Personal%, чтобы проверить, не сменилась ли в ней изоляция. Опытным путём выяснил, что нет, не сменилась. Как была дырка в систему, так и осталась. Из Merged она не стала WriteCopy или Full. Пробовал (чисто ради эксперимента) на других папках с изоляцией WriteCopy сменить её например на Merged - тоже облом. 6) Единственное, что эти все эксперименты были с папками %Personal%, %Profile% или %ProgramFilesDir%. Естественно они есть в сборке и у них есть изоляция, которую и предполагается сменить. Ведь именно для этого же существует описываемый в мануале API-функционал - SetfilesystemIsolation !? 7) В моём случае я повышаю изоляцию папки %Personal% с Merged на WriteCopy. Должно работать, но не работает. Код: Function OnFirstParentStart Dim FolderName FolderName = ExpandPath("%Personal%") MsgBox FolderName SetfilesystemIsolation FolderName, 1 End Function | Скрипт отрабатывает без ошибок, MsgBox показывает правильный путь. scripting.dll пробовал от разных распакованных версий ThinApp (у меня работал от любой, что ниже версии сборки "девайса", или выше). | Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 20:45 06-01-2021 | Исправлено: AVanti473, 21:28 06-01-2021 |
|