Я пытаюсь изменить пакетный скрипт, который устанавливает простой файл скрипта в каталог 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).