2010-06-08 11 views
3

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)

Répondre

0

Eh bien, j'ai fondamentalement résolu ce problème en écrivant un programme d'installation complètement nouveau en utilisant Inno setup. Ça berce. Il utilise pascal qui me semble un peu archaïque mais il était beaucoup plus facile à ramasser et à utiliser que des scripts batch. Quelqu'un s'il vous plaît écrire un programme d'installation python api! En ce qui concerne les meilleures pratiques pour localiser l'installation d'un utilisateur de photoshop (ou n'importe quel programme d'ailleurs), il semble que la méthode de la force brute de simplement essayer chaque clé/répertoire dans lequel il se trouve est la meilleure . Par exemple, lorsque j'ai récemment installé Photoshop, il m'a fallu 2 installations dans 2 dossiers distincts, une version 32 bits et une version 64 bits. Idéalement, quand je lance mon installateur pour ajouter des choses au répertoire de photoshop, il devrait aller dans les deux versions. Ce ne serait pas le cas si je demandais simplement une «clé de registre maître» et que je la bourrais dedans. Il semble que, au fil des ans, même un grand nom comme Adobe n'a pas utilisé le registre de manière cohérente. Ainsi, la meilleure chance de mon installateur est de faire une liste de toutes les clés de registre possibles pour le chemin d'installation de photoshop et de les essayer toutes, puis d'essayer moi-même les répertoires bruts (au moins sur les variables d'environnement) . Si seulement les gens suivaient les normes!