1

NSISドキュメントから、

root_key subkey key_name この属性は、レジストリ内の文字列をチェックし、その文字列が有効な場合はインストールディレクトリに使用するようにインストーラに指示します。この属性が存在する場合、レジストリキーが有効な場合はInstallDir属性をオーバーライドし、そうでない場合はInstallDirのデフォルトにフォールバックします。

したがって、.nsiファイルにこれらの行がある場合:

InstallDir "D:\myFolder\myFile"

InstallDirRegKey HKCU "Software\${PRODUCT_COMPANY}\${PRODUCT_NAME}" "Install_Dir"

D:\myFolder\myFileインストールディレクトリをデフォルトディレクトリとして設定したことは理解していますがSoftware\${PRODUCT_COMPANY}\${PRODUCT_NAME}、が有効なパスである場合は、代わりにそれを使用します。あれは正しいですか?

別の投稿InstallDirRegKeyから、同じ場所での以前のインストールを上書きするために命令が使用されていることを理解しています。それはどのように正確に機能していますか?私が以下を持っている場合、

InstallDir "D:\myFolder\myFile"

InstallDirRegKey HKCU "D:\myFolder\myFile" "Install_Dir"

NSISスクリプトによって生成された新しい.exeファイルは以前のファイルを上書きしますか?または、実行可能ファイルが前の実行可能ファイルを上書きすることを意味しますか?

4

1 に答える 1

5

InstallDirRegKeyはレジストリからの読み取りのみを行い、書き込みは行いません。

実行される前に、.onInitNSISは次のことを行います。

  1. が設定されている場合InstallDir、そのパスはにコピーされます$Instdir
  2. InstallDirRegKey が設定されていて、レジストリキーが存在する場合、レジストリからのパス(ファイル名が削除されたもの)がにコピーされます。$Instdir

したがって、次にユーザーがインストーラーを実行するときにInstallDirRegKeyを有効にする場合は、インストーラーがセクションの1つに作成するキーをポイントする必要があります。これは、アンインストールキーのUninstallStringコマンド、またはのようなアプリケーション固有のキーにすることができますHKLM\Software\My Company\My App

これの要点は、ユーザーがアプリの新しいバージョンを再インストールまたはインストールすると、同じフォルダーにインストールされることです(既存のインストールを上書き/アップグレードします)。

于 2012-11-18T22:10:02.483 に答える