我正在尝试将软件部署到一组计算机上以运行安装程序,如果他们还没有使用GUID识别的特定版本。我将使用不使用GUID的Adobe版本作为我正在尝试的示例。
让我们说他们有Adobe 9.3 - 但需要Adobe 9.5 所以我对两个dwords中的一个进行了检查,确定了当前安装的版本。当前代码如下:(使用echo响应进行测试)
:check1
@ECHO OFF
setlocal
set key="HKLM\Software\Wow6432Node\Adobe\Adobe Acrobat\9.0\Installer"
set value=VersionMax
:: delims is a TAB followed by a space
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY %key% /v %value%') DO SET base=%%B
if %base%=0x90005 && goto echo1 || goto echo2
:echo1
echo "Yes"
:echo2
echo "No"
所以, echo1 = True所以转到下一个双字检查(这是相同的密钥=但不同的值=因为它的另一个双字)如果那个也匹配跳过安装程序,则转到安装程序 echo2 = False dword decimal不等于9.5版dword来运行安装程序。
我对这个过程没有运气,而且我被告知我应该使用VBscript ...但是我被告知可以使用cmd,这就是我想要的。 任何有关这方面的帮助将不胜感激。谢谢
答案 0 :(得分:0)
设置%value2%
和%base2%
:
@ECHO OFF &SETLOCAL
:check1
set "key=HKLM\Software\Wow6432Node\Adobe\Adobe Acrobat\9.0\Installer"
set "value1=VersionMax"
set "value2=Version (?)"
:: delims is a TAB followed by a space: this are default delimiter
FOR /F "tokens=2*" %%A IN ('REG QUERY "%key%" /v %value1%') DO SET "base1=%%~B"
FOR /F "tokens=2*" %%A IN ('REG QUERY "%key%" /v %value2%') DO SET "base2=%%~B"
if "%base1%"=="0x90005" if "%base2%"=="9.5 (?)" goto:NoInstall
REM put your install code here
:NoInstall
REM Adobe v9 is already installed