Код:
Var YN Var ac15 Var ac16 Var ac17 Var CS Var vart0 Var vart1 Var vart2 Var vart3 Var vart4 Var vart5 Var vart6 Var vart7 Var vart8 Var vart9 Var xtet Var xtet2 !define TEMP $R0 !define Name "Addons for AutoCAD - СДПС 3.0.311" Name "Addons for AutoCAD - СДПС 3.0.311" ;The file to write OutFile "..\${Name}.exe" Caption "${Name}" InstallDir $PROGRAMFILES\ADD_ACAD2 !include "MUI.nsh" !include "LogicLib.nsh" !define MUI_CUSTOMPAGECOMMANDS !define MUI_LICENSEPAGE !define MUI_COMPONENTSPAGE !define MUI_COMPONENTSPAGE_SMALLDESC ; !define MUI_DIRECTORYPAGE !define MUI_ABORTWARNING ;-------------------------------- ;Pages !insertmacro MUI_PAGE_LICENSE "License.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" !ifdef uglyinstaller BGGradient 000000 308030 FFFFFF InstallColors FF8080 000000 InstProgressFlags smooth colored !else WindowIcon off !endif ShowInstDetails show AutoCloseWindow false ;icon WinAmp.ico SetDateSave off Function .onInit ReadRegStr $CS HKLM "SOFTWARE\Consistent Software\СПДС GraphiCS\3.0" "APPPath" StrCmp $CS "" 0 +3 MessageBox MB_OK|MB_ICONSTOP "СПДС Grafics 3.0 на ПК не обнаружен!" Abort StrCpy $INSTDIR "$CS\Path" StrCpy $0 "0" loop: EnumRegKey $1 HKLM "Software\Autodesk\AutoCAD\R15.0" $0 StrCmp $1 "" done StrCmp $0 1 x1 StrCmp $0 2 x2 StrCpy $R0 $1 goto next x1: StrCpy $R1 $1 goto next x2: StrCpy $R2 $1 next: IntOp $0 $0 + 1 goto loop done: StrCpy $0 "0" loop2: EnumRegKey $1 HKLM "Software\Autodesk\AutoCAD\R16.0" $0 StrCmp $1 "" done2 StrCmp $0 1 x4 StrCmp $0 2 x5 StrCpy $R3 $1 goto next2 x4: StrCpy $R4 $1 goto next2 x5: StrCpy $R5 $1 next2: IntOp $0 $0 + 1 goto loop2 done2: StrCpy $0 "0" loop3: EnumRegKey $1 HKLM "Software\Autodesk\AutoCAD\R16.1" $0 StrCmp $1 "" done3 StrCmp $0 1 x7 StrCpy $R6 $1 goto next3 x7: StrCpy $R7 $1 next3: IntOp $0 $0 + 1 goto loop3 done3: StrCpy $0 "0" loop4: EnumRegKey $1 HKLM "Software\Autodesk\AutoCAD\R16.2" $0 StrCmp $1 "" done4 StrCmp $0 1 x9 StrCpy $R8 $1 goto next4 x9: StrCpy $R9 $1 next4: IntOp $0 $0 + 1 goto loop4 done4: ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R15.0\$R0" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R15.0\$R0" "Language" StrCpy $vart0 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R15.0\$R1" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R15.0\$R1" "Language" StrCpy $vart1 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R15.0\$R2" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R15.0\$R2" "Language" StrCpy $vart2 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R16.0\$R3" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R16.0\$R3" "Language" StrCpy $vart3 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R16.0\$R4" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R16.0\$R4" "Language" StrCpy $vart4 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R16.0\$R5" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R16.0\$R5" "Language" StrCpy $vart5 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R16.1\$R6" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R16.1\$R6" "Language" StrCpy $vart6 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R16.1\$R7" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R16.1\$R7" "Language" StrCpy $vart7 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R16.2\$R8" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R16.2\$R8" "Language" StrCpy $vart8 "$0 ($1)" ReadRegStr $0 HKLM "Software\Autodesk\AutoCAD\R16.2\$R9" "ProductName" StrCmp $0 "" +3 0 ReadRegStr $1 HKLM "Software\Autodesk\AutoCAD\R16.2\$R9" "Language" StrCpy $vart9 "$0 ($1)" FunctionEnd Section "СПДС 3.0.311 (база)" 1 SectionIn 1 2 RO SetOutPath $INSTDIR file /x settings.xml /x *.mn* ".\SPDS3.0.311\*" file "help.chm" SetOutPath $INSTDIR\..\data ;file ".\SPDS3.0.311\settings.xml" SectionEnd Section "$vart0" StrCmp $vart0 "" +20 0 StrCpy $vart0 "$vart0+" StrCpy $ac15 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R15.0\$R0\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R15.0\$R0\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m4;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m4;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R15.0\$R0\Profiles\$xtet\General" "ACAD" "$R2" StrCpy $R1 0 ${Do} IntOp $R1 $R1 + 1 ReadRegStr $xtet2 HKCU "Software\Autodesk\AutoCAD\R15.0\$R0\Profiles\$xtet\Menus" "Group$R1" StrCmp $xtet2 "" 0 +3 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R15.0\$R0\Profiles\$xtet\Menus" "Group$R1" "SPDS30 $INSTDIR\SPDS30" ${ExitDo} ${Loop} SectionEnd Section "$vart1" StrCmp $vart1 "" +20 0 StrCpy $vart1 "$vart1+" StrCpy $ac15 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R15.0\$R1\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R15.0\$R1\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m4;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m4;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R15.0\$R1\Profiles\$xtet\General" "ACAD" "$R2" StrCpy $R1 0 ${Do} IntOp $R1 $R1 + 1 ReadRegStr $xtet2 HKCU "Software\Autodesk\AutoCAD\R15.0\$R1\Profiles\$xtet\Menus" "Group$R1" StrCmp $xtet2 "" 0 +3 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R15.0\$R1\Profiles\$xtet\Menus" "Group$R1" "SPDS30 $INSTDIR\SPDS30" ${ExitDo} ${Loop} SectionEnd Section "$vart3" StrCmp $vart3 "" +25 0 StrCpy $vart3 "$vart3+" StrCpy $ac16 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m7;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m7;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles\$xtet\General" "ACAD" "$R2" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" IntOp $R2 $R2 + 1 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" "$R2" StrCpy $R2 "$R2Startup" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles\$xtet\Dialogs\Appload\Startup" "$R2" "$CS\m7\mcsLoader.arx" StrCpy $R1 0 ${Do} IntOp $R1 $R1 + 1 ReadRegStr $xtet2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles\$xtet\Menus" "Group$R1" StrCmp $xtet2 "" 0 +3 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R3\Profiles\$xtet\Menus" "Group$R1" "SPDS30 $INSTDIR\SPDS30_4" ${ExitDo} ${Loop} SectionEnd Section "$vart4" StrCmp $vart4 "" +25 0 StrCpy $vart4 "$vart4+" StrCpy $ac16 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m7;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m7;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles\$xtet\General" "ACAD" "$R2" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" IntOp $R2 $R2 + 1 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" "$R2" StrCpy $R2 "$R2Startup" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles\$xtet\Dialogs\Appload\Startup" "$R2" "$CS\m7\mcsLoader.arx" StrCpy $R1 0 ${Do} IntOp $R1 $R1 + 1 ReadRegStr $xtet2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles\$xtet\Menus" "Group$R1" StrCmp $xtet2 "" 0 +3 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R4\Profiles\$xtet\Menus" "Group$R1" "SPDS30 $INSTDIR\SPDS30_4" ${ExitDo} ${Loop} SectionEnd Section "$vart5" StrCmp $vart5 "" +25 0 StrCpy $vart5 "$vart5+" StrCpy $ac16 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m7;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m7;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles\$xtet\General" "ACAD" "$R2" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" IntOp $R2 $R2 + 1 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" "$R2" StrCpy $R2 "$R2Startup" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles\$xtet\Dialogs\Appload\Startup" "$R2" "$CS\m7\mcsLoader.arx" StrCpy $R1 0 ${Do} IntOp $R1 $R1 + 1 ReadRegStr $xtet2 HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles\$xtet\Menus" "Group$R1" StrCmp $xtet2 "" 0 +3 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.0\$R5\Profiles\$xtet\Menus" "Group$R1" "SPDS30 $INSTDIR\SPDS30_4" ${ExitDo} ${Loop} SectionEnd Section "$vart6" StrCmp $vart6 "" +25 0 StrCpy $vart6 "$vart6+" StrCpy $ac16 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m7;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m7;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles\$xtet\General" "ACAD" "$R2" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" IntOp $R2 $R2 + 1 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" "$R2" StrCpy $R2 "$R2Startup" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles\$xtet\Dialogs\Appload\Startup" "$R2" "$CS\m7\mcsLoader.arx" StrCpy $R1 0 ${Do} IntOp $R1 $R1 + 1 ReadRegStr $xtet2 HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles\$xtet\Menus" "Group$R1" StrCmp $xtet2 "" 0 +3 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R6\Profiles\$xtet\Menus" "Group$R1" "SPDS30 $INSTDIR\SPDS30_4" ${ExitDo} ${Loop} SectionEnd Section "$vart7" StrCmp $vart7 "" +25 0 StrCpy $vart7 "$vart7+" StrCpy $ac16 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m7;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m7;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles\$xtet\General" "ACAD" "$R2" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" IntOp $R2 $R2 + 1 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles\$xtet\Dialogs\Appload\Startup" "NumStartup" "$R2" StrCpy $R2 "$R2Startup" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles\$xtet\Dialogs\Appload\Startup" "$R2" "$CS\m7\mcsLoader.arx" StrCpy $R1 0 ${Do} IntOp $R1 $R1 + 1 ReadRegStr $xtet2 HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles\$xtet\Menus" "Group$R1" StrCmp $xtet2 "" 0 +3 WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.1\$R7\Profiles\$xtet\Menus" "Group$R1" "SPDS30 $INSTDIR\SPDS30_4" ${ExitDo} ${Loop} SectionEnd Section "$vart8" StrCmp $vart8 "" +13 0 StrCpy $vart8 "$vart8+" StrCpy $ac16 "yes" StrCpy $ac17 "yes" ReadRegStr $xtet HKCU "Software\Autodesk\AutoCAD\R16.2\$R8\Profiles" "" ReadRegStr $R2 HKCU "Software\Autodesk\AutoCAD\R16.2\$R8\Profiles\$xtet\General" "ACAD" Push "$R2" Push "$CS\m7;$CS\DataRO\Fonts;$INSTDIR" Call StrStr Pop $YN StrCmp $YN "" 0 +3 StrCpy $R2 "$R2$CS\m7;$CS\DataRO\Fonts;$INSTDIR;" WriteRegStr HKCU "Software\Autodesk\AutoCAD\R16.2\$R8\Profiles\$xtet\General" "ACAD" "$R2" SectionEnd Section /o "Показать справку" ExecShell open '$INSTDIR\Help.chm' SectionEnd Section -post SetOutPath $INSTDIR StrCmp $ac15 "yes" 0 +3 delete "$INSTDIR\SPDS40.mn*" file ".\SPDS3.0.311\SPDS30.mn*" StrCmp $ac16 "yes" 0 +3 delete "$INSTDIR\SPDS30_4.mn*" file ".\SPDS3.0.311\SPDS30_4.mn*" StrCmp $ac17 "yes" 0 +3 delete "$INSTDIR\SPDS30_4.cui" StrCmp $vart3 "AutoCAD 2004 (Русский)+" 0 +2 Exec 'AutoIt3_K.exe AutoCAD2004.au3' StrCmp $vart4 "AutoCAD 2004 (Русский)+" 0 +2 Exec 'AutoIt3_K.exe AutoCAD2004.au3' StrCmp $vart5 "AutoCAD 2004 (Русский)+" 0 +2 Exec 'AutoIt3_K.exe AutoCAD2004.au3' StrCmp $vart8 "AutoCAD 2006 (Русский)+" 0 +2 Exec 'AutoIt3_K.exe AutoCAD2006.au3' SectionEnd ;============================================================== Function StrStr Exch $R1 ; st=haystack,old$R1, $R1=needle Exch ; st=old$R1,haystack Exch $R2 ; st=old$R1,old$R2, $R2=haystack Push $R3 Push $R4 Push $R5 StrLen $R3 $R1 StrCpy $R4 0 ; $R1=needle ; $R2=haystack ; $R3=len(needle) ; $R4=cnt ; $R5=tmp loop: StrCpy $R5 $R2 $R3 $R4 StrCmp $R5 $R1 done StrCmp $R5 "" done IntOp $R4 $R4 + 1 Goto loop done: StrCpy $R1 $R2 "" $R4 Pop $R5 Pop $R4 Pop $R3 Pop $R2 Exch $R1 FunctionEnd