2010-06-08 185 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安装路径的每个可能的注册表项的大名单,并尝试所有这些,然后自己尝试原始目录(至少基于环境变量) 。如果只有人遵循标准!

相关问题