私はthis oneのような多くの関連するQをトロールしてきましたが、最初のNSISインストーラを起動して実行するのには苦労していました。NSISコードがレジストリキーを取得しないのはなぜですか?
インストーラは64ビットマシンに固有のものです(他のコードはこれを取り込み、32ビットの場合は中止します)。
私はちょうど(V10が見つかりました。)1(V9た)または2、(何も見つからインストール0の値を返さないする必要があります。
瞬間、私はすべての3つのシナリオでは、マシン上でこの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
素晴らしい作品、私に教訓を教えてくれました。私はSEの他の場所でも読んでいるので、SetRegViewを調べます。 ありがとう! – Simon