1

我有 NSI 脚本和编译安装程序,其中包含以下代码:

WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "DisplayName" "${NAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "InstallLocation" "$\"$INSTDIR$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "UninstallString " "$\"$INSTDIR\uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "Publisher" "${COMPANY}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "URLInfoAbout" "${WEBSITE}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "DisplayVersion" "3.0.0"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "NoModify" "1"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "NoRepair" "1"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" "EstimatedSize" "400"

这将编译并在安装时创建所有密钥。我可以在 RegEdit 中看到它们。但它们没有显示在添加/删除程序列表中。无论我删除或添加什么参数。

我尝试创建具有完全相同值的新键,并且它确实显示在列表中。两个密钥的权限完全相同。

编辑:

这不适用于 Windows Vista 和 7,包括 x64 和 x86。文件没有数字签名。路径包含空间,但它被封装在双括号中。键名又名 ${NAME} 包含两个空格。

4

2 回答 2

2

这是由于“UninstallString”名称后面有一个意外空格,因此 Windows 无法将其识别为正确的条目。

于 2013-02-08T11:31:42.230 回答
1

如果您在 64b 操作系统上安装 32b 应用程序,也许它可能有助于切换到注册表的 32b 部分(Wow6432Node在创建密钥之前位于下面的分支?

SetRegView 32
WriteRegStr HKLM [...]

您的密钥将在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\your_name

于 2012-12-14T10:59:22.787 回答