。实际上我已在同一台计算机上安装了不同版本的软件,因此当用户进行第三版安装时,要检查该版本的文件夹。我正在尝试使用循环,但安装程序无法正常工作。谢谢。
我已经在同一台计算机上安装了2个版本的相同软件。我希望当我安装第三个版本时,脚本应检查路径,并且不应允许用户安装在前两个版本所在的相同路径中已安装
Function .onVerifyInstDir
nsArray::Set array 1.6
nsArray::Set array 1.7
nsArray::Set array 1.8
nsArray::Length array
Pop $R0
;DetailPrint `array length: $R0`
StrCpy $R1 0
${DoWhile} $R1 < $R0
nsArray::Get array $R1
Pop $R2
StrCpy $tempregistry "$(^Name)_$R2"
;DetailPrint `MyArray2[$R1] is $R2`
ReadRegStr $path HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstal\$tempregistry""InstallLocation" ;fetching installed location
${If} $path == ""
${Else}
strCmp $path $INSTDIR 0 pathGood
;Abort
IntOp $R1 $R1 + 1
${EndIf}
${Loop}
PathGood:
FunctionEnd
答案 0 :(得分:0)
以下是步骤
在循环内部检查注册表项。
ReadRegStr $ pdt HKLM&#34; SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ productname
如果找到,请检索已安装位置的值并将其存储在变量中; 例如$ path1 ReadRegStr $ path1 $ pdt&#34;安装位置&#34; 否则继续
$ {if} $ path == $ path1 messagebox mb_ok&#34;路径中已安装的另一个版本&#34;