0

.实际上我已经在同一台计算机上安装了不同版本的软件,所以当用户继续安装第三个版本时,想要检查两个版本的文件夹。我正在尝试使用循环,但安装程序无法正常工作。提前致谢。

我已经在同一台计算机上安装了相同软件的 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
4

1 回答 1

0

以下是步骤

  1. 将您的产品名称或您的注册表项存储在变量中。
  2. 将要安装的路径存储在变量中,例如 $path
  3. 在循环中检查注册表项。

    ReadRegStr $pdt HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\productname

  4. 如果找到,则检索安装位置的值并将其存储在变量中;例如 $path1 ReadRegStr $path1 $pdt "安装位置" 否则继续

  5. ${if} $path == $path1 messagebox mb_ok "路径中已经安装了另一个版本"

  6. ${else} 继续
  7. ${endif}
于 2013-05-14T11:13:54.960 回答