2010-06-08 223 views
3

我正在嘗試修改批處理腳本,該腳本將簡單的腳本文件安裝到用戶photoshop目錄中。使用批處理文件將文件複製到photoshop目錄

安裝程序的基本過程是將大部分產品文件複製到%APPDATA%文件夾中,然後該批處理腳本運行後安裝,將一個小鉤子腳本複製到photoshop \ presets \ scripts中。但是,我們遇到了未在某些客戶機器上定義%APPDATA%的問題,檢查它是否存在然後設置它是否是不好的做法,如果不是,如果不是,您將如何最好地設置它以計算不同版本的Windows ?

我也採取了一個相當顛簸的'reg查詢'之路,試圖找到一個一致的密鑰,photoshop設置爲了找到「路徑」這是安裝目錄,但我想知道什麼最好的做法也是如此。

這裏是我的,有一些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! 

然而當前工作版本,出現問題時,該鍵不存在,所部署的只是蠻力試圖每一個已知位置的Photoshop可能是當前的解決方案(基於%PROGRAMFILES%/%PROGRAMFILES(x86)%變量)。對於更強大和更一致的腳本的任何幫助都非常感謝,以及有關安裝程序產品可能最適合在十字架中部署此類腳本的任何建議 - 平臺的方式(主要是Mac/Windows)

回答

0

那麼,我基本上解決了這個問題通過使用Inno setup編寫一個全新的安裝程序來解決問題。它岩石。它使用的pascal對我來說有點古老,但比批量腳本更容易拾取和使用。有人請寫一個python安裝程序api!

就最佳實踐去定位用戶安裝的photoshop(或任何程序),它似乎是簡單地嘗試每個可能的鍵/目錄它可能位於的蠻力方法是最好的選擇。

例如,當我最近安裝了Photoshop,它實際上給了我2個安裝在2個單獨的文件夾,一個32位和64位版本。理想情況下,當我運行我的安裝程序向photoshop的目錄添加內容時,它應該進入兩個版本。如果我只是簡單地查詢一些「主註冊表項」並將其填充到那裏,它就不會那樣做。看起來,多年來,即使像Adobe這樣的大公司也沒有以一致的方式使用註冊表。所以,我的安裝程序工作的最好機會是製作一個關於Adobe Photoshop安裝路徑的每個可能的註冊表項的大名單,並嘗試所有這些,然後自己嘗試原始目錄(至少基於環境變量) 。如果只有人遵循標準!

相關問題