我正在尝试修改一个批处理脚本,将一个简单的脚本文件安装到用户的photoshop目录中。
安装程序的基本过程是将大量产品文件复制到%APPDATA%文件夹中,然后此批处理脚本运行安装后操作,将一个小挂钩脚本复制到photoshop\presets\scripts中。然而,我们遇到了一些客户计算机上没有定义%APPDATA%的问题,检查它是否存在然后设置它是否是一种坏做法,如果不存在,如果不存在,您应该如何针对不同版本的Windows设置它?
我在'reg query‘的道路上也经历了相当颠簸的旅程,试图找到一个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)的建议,我们都非常感谢。
发布于 2010-06-20 02:13:54
我使用Inno setup编写了一个全新的安装程序,基本上解决了这个问题。太棒了。它使用的是pascal,对我来说有点过时,但它比批处理脚本更容易上手和使用。谁来写一个python安装程序api!
就定位用户的photoshop安装(或任何相关程序)的最佳实践而言,似乎最好的办法是使用暴力方法,简单地尝试它可能所在的每个可能的键/目录。
例如,当我最近安装photoshop时,它实际上给了我两个独立的文件夹中的两个安装,一个32位和64位版本。理想情况下,当我运行安装程序将内容添加到photoshop的目录中时,它应该同时包含在两个版本中。如果我只是简单地查询一些‘主注册表项’并把它塞进去,它就不会这么做了。似乎,多年来,即使是像Adobe这样的大牌也没有以一致的方式使用注册表。所以,我的安装程序最好的办法就是把photoshop的安装路径中所有可能的注册表项adobe都罗列出来,然后自己尝试原始目录(至少是基于环境变量)。如果人们遵循标准就好了!
https://stackoverflow.com/questions/2999967
复制相似问题