我正在尝试修改将简单脚本文件安装到用户photoshop目录中的批处理脚本。
安装程序的基本过程是将大量产品文件复制到%APPDATA%文件夹中,然后此批处理脚本在安装后运行,将一个小钩子脚本复制到photoshop \ presets \ scripts中。但是我们遇到的问题是%APPDATA%没有在某些客户机器上定义,检查它是否存在是不好的做法,如果没有则设置它,如果不是,你怎么能最好地设置它来计算不同版本的Windows ?
我还沿着'reg query'路走了一段相当颠簸的路,试图找到一个一致的密钥,为了找到“路径”,这是安装目录,但是我想知道什么是最好的 - 同样的实践。
这是我当前的工作版本,其中包含一些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 :(得分:0)
好吧,我基本上通过使用Inno设置编写一个全新的安装程序来解决这个问题。它摇滚。它使用的pascal对我来说有点古老,但它比批量脚本更容易拾取和使用。有人请写一个python安装程序api!
就找到用户安装photoshop(或任何程序)的最佳实践而言,似乎只是简单地尝试它可能位于的每个可能的键/目录的强力方法是最好的选择。
例如,当我最近安装photoshop时,它实际上在2个独立的文件夹中提供了2个安装,32位和64位版本。理想情况下,当我运行我的安装程序将内容添加到photoshop的目录时,它应该进入两个版本。如果我只是查询一些“主注册表项”并将其填入其中,那就不会那样做了。似乎多年来,即使像Adobe这样的大牌也没有以一致的方式使用注册表。因此,我的安装程序工作的最好机会是制作一个大的列表,列出了adobe为photoshop的安装路径所做的每个可能的注册表项,并尝试了所有这些,然后自己尝试原始目录(至少基于环境变量) 。如果只有人遵循标准!