Build NSIS播放InstalldirRegKey

Build NSIS播放InstalldirRegKey,build,installation,nsis,instructions,Build,Installation,Nsis,Instructions,根据NSIS文件,我们有 root\u key subkey\u name此属性告诉安装程序 检查注册表中的字符串,并将其用于install dir(如果有) 字符串是有效的。如果此属性存在,它将覆盖 如果注册表项有效,则为InstallDir属性,否则将 返回到InstallDir默认设置 因此,如果我在.nsi文件中有这些行: InstallDir "D:\myFolder\myFile" InstallDirRegKey HKCU "Software\${PRODUCT_COMPANY}

根据NSIS文件,我们有

root\u key subkey\u name
此属性告诉安装程序 检查注册表中的字符串,并将其用于install dir(如果有) 字符串是有效的。如果此属性存在,它将覆盖 如果注册表项有效,则为InstallDir属性,否则将 返回到InstallDir默认设置

因此,如果我在
.nsi
文件中有这些行:

InstallDir "D:\myFolder\myFile"

InstallDirRegKey HKCU "Software\${PRODUCT_COMPANY}\${PRODUCT_NAME}" "Install_Dir"
我知道我将安装目录设置为默认目录
D:\myFolder\myFile
,但是如果
Software\${PRODUCT\u COMPANY}\${PRODUCT\u NAME}
是有效路径,那么我将使用它。对吗

另一方面,我了解到,
InstallDirRegKey
指令用于覆盖以前在同一位置的安装。它是如何更精确地工作的?如果我有以下几点

InstallDir "D:\myFolder\myFile"

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

NSIS脚本生成的新
.exe
文件是否会覆盖上一个文件?或者这是否意味着可执行文件将覆盖上一个文件?

InstallDirRegKey只从注册表读取,从不写入

在执行
.onInit
之前,NSIS执行以下操作:

  • 如果设置了
    InstallDir
    ,则该路径将复制到
    $Instdir
  • 如果设置了
    InstallDirRegKey
    且注册表项存在,则注册表中的路径(删除文件名)将复制到
    $Instdir
  • 因此,如果希望InstallDirRegKey在下次用户运行安装程序时发挥任何作用,则必须将其指向安装程序在其中一个部分中创建的密钥。它可以是卸载密钥中的卸载字符串命令,也可以是特定于应用程序的密钥,如
    HKLKM\Software\My Company\My App


    其要点是,当用户重新安装或安装应用程序的新版本时,它将安装在同一文件夹中(覆盖/升级现有安装)

    InstallDirRegKey只从注册表读取数据,从不写入数据

    在执行
    .onInit
    之前,NSIS执行以下操作:

  • 如果设置了
    InstallDir
    ,则该路径将复制到
    $Instdir
  • 如果设置了
    InstallDirRegKey
    且注册表项存在,则注册表中的路径(删除文件名)将复制到
    $Instdir
  • 因此,如果希望InstallDirRegKey在下次用户运行安装程序时发挥任何作用,则必须将其指向安装程序在其中一个部分中创建的密钥。它可以是卸载密钥中的卸载字符串命令,也可以是特定于应用程序的密钥,如
    HKLKM\Software\My Company\My App

    其要点是,当用户重新安装或安装应用程序的新版本时,它将安装在同一文件夹中(覆盖/升级现有安装)