0

NSISスクリプトでTomcatがホストシステムにインストールされているかどうかを検出しようとしています.Hereはそれを行うセクションです

Section Tomcat
ClearErrors 

Var /GLOBAL tomcatVersion
ReadRegStr $tomcatVersion HKLM "SOFTWARE\Apache Software Foundation\Tomcat\7.0\Tomcat7" "InstallPath"
;ExecWait "$EXEDIR\apache-tomcat-7.0.22.exe"
DetailPrint "$tomcatVersion"
SectionEnd

「regedit」に移動してその特定のキーのパスを確認すると、値がありますが、print ステートメントは空白を返します。

これおよび/または私が直面している可能性のあるエラーをトラブルシューティングするための最良の方法を誰かが提案できますか?

私が気付いた興味深い点があります。上記のコードで、ReadRegStr コマンドを読み取りに指定すると、

HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"

値を返すため、構文的にはコードは機能します。

4

2 に答える 2

1
  • Tomcat インストーラーが 64 ビット インストーラーの場合、32 ビット プロセスではそのキーが見つかりません。NSIS ではSetRegView 64.

  • スクリプトで使用していて、Tomcat インストーラーが UAC によって仮想化されている場合は、 VirtualStoreRequestExectionLevelから読み取る必要があります(regedit でキーを確認できるため、このケースではありそうにありません)

  • Process Monitorは、レジストリの問題をデバッグするのにも便利です...

于 2012-10-05T04:56:38.150 に答える
0

パーティーに少し遅れましたが、「nsis install tomcat」をグーグルで検索するとこのスレッドが表示されるので、私が見つけたこの素晴らしい例を共有したいと思いました...

https://github.com/mathiaslin/openmrs-pgh-190/blob/master/metadata/installer/installer_setup.nsh

于 2013-03-27T14:24:24.170 に答える