J'essaie de modifier un script batch qui installe un fichier script simple dans le répertoire photoshop des utilisateurs. Le processus de base du programme d'installation consiste à copier la majeure partie des fichiers de produits dans le dossier% APPDATA%, puis ce script de lot exécute une post-installation qui copie un petit script de hook dans photoshop \ presets \ scripts. Cependant, nous avons rencontré des problèmes avec% APPDATA% n'étant pas défini sur certaines machines clients, serait-il une mauvaise pratique de vérifier si elle existe, sinon, et si non, comment définiriez-vous les différentes versions de Windows? ?Copier un fichier dans le répertoire photoshop à l'aide d'un fichier batch
J'ai également fait une descente assez cahoteuse sur la route 'reg query' pour essayer de trouver une clé cohérente que Photoshop fixe pour trouver le "Path" qui est le répertoire d'installation mais je me demande ce que le les meilleures pratiques pour cela aussi.
Voilà ma version de travail actuelle qui a des reliques d'autorisation 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!
Cependant, des problèmes se posent lorsque la clé n'existe pas, la solution actuelle qui est déployée juste force brute essaie chaque photoshop emplacement connu pourrait être installé (basé sur les variables% PROGRAMFILES% /% PROGRAMFILES (x86)%) Toute aide vers un script plus robuste et plus cohérent est très appréciée ainsi que tout conseil sur les produits d'installation qui pourraient le mieux fonctionner pour déployer ce type de script -plateforme manière (Mac/Windows surtout)