0
我一直在搜寻大量相关的问题,如this one,但一直在努力让我的第一个NSIS安装程序正常运行。为什么我的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
工作很好,并且教会了我一个教训。将查看SetRegView,因为我还在SE上阅读了其他地方。 谢谢! – Simon 2012-01-11 01:47:36