копирование файла в каталог photoshop с использованием командного файла - PullRequest
3 голосов
/ 08 июня 2010

Я пытаюсь изменить пакетный скрипт, который устанавливает простой файл скрипта в каталог photoshop пользователей.

Основной процесс установки заключается в том, чтобы скопировать большую часть файлов продуктов в папку% APPDATA%, затем этот пакетный скрипт запускается после установки, который копирует небольшой скрипт-ловушку в photoshop \ presets \ scripts. Однако у нас возникли проблемы с тем, что% APPDATA% не был определен на некоторых клиентских компьютерах. Было бы плохой практикой проверять, существует ли он, затем установить его, если нет, и если нет, то как лучше всего настроить его с учетом различных версий Windows?

Я также предпринял довольно ухабистую поездку по пути 'reg query', чтобы попытаться найти непротиворечивый ключ, который устанавливает Photoshop, чтобы найти "Path", который является каталогом установки, но мне интересно, что лучше -практики для этого тоже.

Вот моя текущая рабочая версия с некоторыми реликвиями разрешения Vista

    @echo off
rem | locate photoshop by querying the registry
echo Locating your photoshop installation..
set regpath="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Photoshop.exe"
set regval="Path"
set photoshop_path=

rem | accumlate the path from the query
for /f "tokens=2,* delims= " %%A in ('reg query %regpath% /v %regval%') do ( 
    set photoshop_path=%%B 
)

rem | get rid of the last hanging space
set photoshop_path=%photoshop_path:~0,-1%

echo found photoshop at %photoshop_path%

set script_path=%photoshop_path%Presets\Scripts\script.jsx

echo Removing existing copies of script.jsx..
if exist "%script_path%" del "%script_path%"
echo ...Done!

echo Installing script.jsx to Photoshop Scripts directory... %script_path%
if exist "%photoshop_path%Photoshop.exe copy "%APPDATA%\My Company\etc\script.jsx" "%script_path%"
echo Done!

rem | some fix for vista permissions
ver | find "XP" > nul
if %ERRORLEVEL% neq 0 goto exit

echo Setting permissions for Vista...
echo ...Taking ownership of files...
takeown /f "%APPDATA%\My Company" /r /d y
echo ...Granting write access to files...
icacls "%APPDATA%\My Company" /grant Users:F /t
echo Done!

:exit

echo Creating Product Library entry in folderlist.cfg
echo Product Library=%APPDATA%\My Company\library>>"%APPDATA%\My Company\etc\folderlist.cfg"
echo Done!

Тем не менее, проблемы возникают, когда ключ не существует, текущее решение, которое развернуто только грубой силой, пытается установить каждый известный фотошоп местоположения (на основе переменных% PROGRAMFILES% /% PROGRAMFILES (x86)%. Любая помощь высоко ценится создание более надежного и согласованного сценария, а также любые советы о том, какие продукты установщика лучше всего подойдут для развертывания этого типа сценария кросс-платформенным способом (в основном для Mac / Windows).

1 Ответ

0 голосов
/ 19 июня 2010

Ну, я в основном решил эту проблему, написав совершенно новый установщик, используя установку Inno. Это круто. Он использует паскаль, который для меня немного архаичен, но его было гораздо проще подобрать и использовать, чем пакетный сценарий. Кто-нибудь, пожалуйста, напишите api установщика Python!

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

Например, когда я недавно установил Photoshop, он фактически дал мне 2 установки в 2 отдельных папках, 32-битная и 64-битная версия. В идеале, когда я запускаю свой установщик, чтобы добавить что-то в каталог фотошопа, он должен идти в обе версии. Этого бы не произошло, если бы я просто запросил «главный ключ реестра» и вставил его туда. Похоже, что на протяжении многих лет даже такое громкое имя, как Adobe, не использовало реестр согласованным образом. Таким образом, лучший шанс для работы моего установщика состоит в том, чтобы составить большой список всех возможных ключей реестра, которые Adobe сделал для пути установки фотошопа, и попробовать все из них, а затем также самостоятельно попробовать необработанные каталоги (по крайней мере, на основе переменных среды) , Если бы только люди следовали стандартам!

...