kir*_*off 1 installation nsis build instructions
从 NSIS 文档中,我们有
root_key subkey key_name此属性告诉安装程序检查注册表中的字符串,如果该字符串有效,则将其用于安装目录。如果存在此属性,并且注册表项有效,它将覆盖 InstallDir 属性,否则它将回退到 InstallDir 默认值。
所以,如果我在.nsi文件中有这些行:
InstallDir "D:\myFolder\myFile"
InstallDirRegKey HKCU "Software\${PRODUCT_COMPANY}\${PRODUCT_NAME}" "Install_Dir"
Run Code Online (Sandbox Code Playgroud)
我知道我将安装目录设置为D:\myFolder\myFile默认目录,但如果Software\${PRODUCT_COMPANY}\${PRODUCT_NAME}是有效路径,那么我将使用它。那是对的吗?
从另一篇文章中,我了解到该InstallDirRegKey指令用于覆盖同一位置的先前安装。它如何更精确地工作?如果我有以下情况,
InstallDir "D:\myFolder\myFile"
InstallDirRegKey HKCU "D:\myFolder\myFile" "Install_Dir"
Run Code Online (Sandbox Code Playgroud)
.exeNSIS 脚本生成的新文件会覆盖之前的文件吗?或者这是否意味着可执行文件将覆盖前一个文件?
InstallDirRegKey 只从注册表中读取,从不写入。
在执行之前.onInit,NSIS 会执行以下操作:
InstallDir设置了,该路径将被复制到$InstdirInstallDirRegKey 设置并且注册表项存在,则注册表中的路径(删除文件名)将复制到$Instdir因此,如果您希望 InstallDirRegKey 在用户下次运行安装程序时生效,您必须将其指向安装程序在您的某个部分中创建的密钥。它可以是卸载密钥中的 UninstallString 命令,也可以是应用程序特定的密钥,例如HKLM\Software\My Company\My App.
整个要点是,当用户重新安装或安装应用程序的新版本时,它将安装在同一文件夹中(覆盖/升级现有安装)。
| 归档时间: |
|
| 查看次数: |
2568 次 |
| 最近记录: |