2010-06-08 2 views
3

간단한 스크립트 파일을 사용자 photoshop 디렉토리에 설치하는 배치 스크립트를 수정하려고합니다.배치 파일을 사용하여 파일을 Photoshop 디렉토리에 복사

설치 프로그램의 기본 프로세스는 제품 파일의 대부분을 % APPDATA % 폴더에 복사 한 다음이 배치 스크립트를 설치 후 작은 훅 스크립트를 photoshop \ presets \ scripts에 복사합니다. 그러나 일부 고객 컴퓨터에서는 % APPDATA %가 정의되지 않은 문제가 발생했습니다. 존재하지 않는지 확인한 다음 좋지 않은 경우이를 설정하는 것이 좋지 않겠지 만 다른 버전의 Windows ?

나는 또한 'reg query'도로를 따라 내려 가서 설치 디렉토리 인 "Path"를 찾기 위해 포토샵이 설정 한 일관된 키를 찾으려고했지만, 그 우수 사례도 마찬가지입니다. 키가 존재하지 않는 경우

는 여기에 몇 가지 비스타 권한 유물

그러나
@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).

답변

0

음, 기본적으로이 문제를 해결했습니다. 문제는 Inno 설정을 사용하여 완전히 새로운 설치 프로그램을 작성하는 것입니다. 그것은 흔들린다. 그것은 나에게 조금 고풍 적이라고 느끼는 파스칼을 사용하지만 일괄 스크립팅보다 픽업하고 사용하는 것이 훨씬 쉽습니다. 누군가 파이썬 설치 프로그램 API를 작성하십시오!

사용자의 포토샵 설치 (또는 해당 프로그램에 대한 프로그램 설치)를 찾는 가장 좋은 방법은 가능한 모든 키/디렉토리를 시도하는 무차별 방식과 같습니다. .

예를 들어 최근에 Photoshop을 설치하면 실제로 32 비트와 64 비트 버전의 2 개의 별도 폴더에 2 개의 설치가 제공되었습니다. 이상적으로, 설치 프로그램을 실행하여 포토샵의 디렉토리에 항목을 추가하면 두 버전으로 모두 들어가야합니다. 간단히 말해서 '마스터 레지스트리 키'를 질의하고 거기에 채워 넣으면 그렇게하지 않을 것입니다. 수년 동안 Adobe와 같은 유명 인사조차도 일관된 방식으로 레지스트리를 사용하지 않은 것 같습니다. 그래서, 내 설치 관리자가 작업의 가장 좋은 기회는 어도비가 포토샵의 설치 경로에 대해 만든 모든 가능한 레지스트리 키의 큰 목록을 만드는 것입니다, 그리고 그들도 노력하고 또한 원시 디렉토리를 직접 시도 (적어도 환경 변수를 기반으로) . 사람들 만이 표준을 따랐다면!