我正在尝试修改将简单脚本文件安装到用户photoshop目录中的批处理脚本。

安装程序的基本过程是将大部分产品文件复制到%APPDATA%文件夹中,然后此批处理脚本在安装后运行,将一个小钩子脚本复制到photoshop \ presets \ scripts中。但是,我们遇到了在某些客户计算机上未定义%APPDATA%的问题,不好的习惯是检查它是否存在,然后将其设置为不存在,如果不行,那么最好针对不同版本的Windows进行设置?

我在“ reg查询”路上也遇到了很多麻烦,试图找到photoshop设置的一致密钥,以便找到安装目录的“路径”,但我想知道最佳做法是什么也是。

这是我当前的工作版本,其中包含一些远景许可遗物

    @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)的建议都受到赞赏。

最佳答案

好吧,我基本上是通过使用Inno安装程序编写一个全新的安装程序来解决此问题的。摇晃。它使用了Pascal,这对我来说有点古朴,但是比起批处理脚本要容易得多。有人请写一个python installer api!

就查找用户的Photoshop(或与此相关的任何程序)的安装的最佳做法而言,似乎最好的方法就是简单地尝试可能位于其上的每个可能的键/目录的蛮力方法。

例如,当我最近安装photoshop时,它实际上为我提供了2个安装,分别位于2个单独的文件夹中,分别为32位和64位版本。理想情况下,当我运行安装程序以将内容添加到photoshop的目录时,它应该同时进入两个版本。如果我只是查询一些“主注册表项”并将其填充在那里,就不会这样做。多年来,似乎即使是像Adobe这样的大公司也没有以一致的方式使用注册表。因此,我的安装程序可以工作的最好机会是,列出Adobe为photoshop的安装路径制作的所有可能的注册表项,并尝试所有这些,然后自己尝试(至少基于环境变量)原始目录。如果只有人遵守标准!

关于batch-file - 使用批处理文件将文件复制到Photoshop目录中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2999967/

10-11 20:23