Я тралял множество связанных вопросов, таких как этот , но изо всех сил пытался запустить и запустить мой первый установщик NSIS.
Установщик предназначен для 64-битных машин (другиекод фиксирует это и прерывается, если 32-битный).
Мне просто нужно вернуть значение 0 (установка не найдена, 1 (найдена v9) или 2 (найдена v10).
В данный момент, если я запускаю этот NSIS на машине во всех трех сценариях, он всегда возвращает 0.
Может ли кто-нибудь указать мне на то, что я сделал неправильно в логике кода?
Вполне вероятно, что я не сделал этого самым изящным способом, поэтому был бы очень признателен за фрагмент лучшего подхода, в идеале с некоторыми рассуждениями.
Var AGSv
Section "Check AGS" SEC01
call CheckAGS
Pop $R0
messagebox MB_OK $AGSv
SectionEnd
;Check to see if AGS is installed, and which version.
Function CheckAGS
;This is the key for v10
ReadRegStr $1 HKLM "SOFTWARE\Wow6432Node\ESRI\Server10.0\CoreRuntime" "RealVersion"
${If} $1 == ""
GoTo Try931
${Else}
StrCpy $AGSv 2
${EndIf}
;This is the key for v9
Try931:
ReadRegStr $2 HKLM "SOFTWARE\Wow6432Node\ESRI\ArcServer\Microsoft .NET Framework Edition" "RealVersion"
${If} $2 == ""
GoTo NoAGS
${Else}
StrCpy $AGSv 1
${EndIf}
NoAGS:
StrCpy $AGSv 0
Messagebox MB_OK "No AGS installation detected."
FunctionEnd