【问题标题】:Using the EstimatedSize value inside a program uninstall key to correctly display the program size in the Add/Remove Programs list使用程序卸载键中的 EstimatedSize 值在“添加/删除程序”列表中正确显示程序大小
【发布时间】:2010-09-23 23:26:48
【问题描述】:
在为我开发的应用程序创建卸载程序注册表项期间,我尝试使用 EstimatedSize 值,不幸的是,我指定的值没有出现在我的程序条目旁边的“添加/删除程序”列表中。我试图找到使用此值的正确程序,但无济于事。有人对这个问题有任何经验吗?我们将不胜感激。
Divo 让我走上了正确的道路,所以我想我会发布有关如何正确显示 EstimatedSize 值的分步说明。
- 创建具有所有相关属性的注册表项,包括 EstimatedSize。此值将复制到注册表中的 ARPCache 键中
- 在 ARPCache 文件夹中找到注册表项,删除 SlowInfoCache 二进制值,并将 Changed 值设置为 1。
- 下次打开“添加/删除程序”列表时,您将看到您在 EstimatedSize 条目中指定的值,而不是 Windows 生成的任意值。
【问题讨论】:
标签:
registry
uninstallation
【解决方案1】:
我发现在
下改变 EstimatedSize 的值
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{my-guid-value}
没有任何直接影响。该值缓存在以下键中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\{my-guid-value}\SlowInfoCache
只有在我删除(重命名)此 SlowInfoCache 值后,更新后的大小才会出现在 添加或删除程序下。
问候,
迪沃
【解决方案2】:
在 Windows7 上写入任意值对我来说很好。
我使用不会自动填充此值的 NSIS
或者写这个密钥或者在这里做任何神奇的事情。
但是您可以自己创建注册表项,
并自己将任何你想要的东西放进去,
使用普通的脚本命令。
这是 NSIS *.nsi 脚本,抱歉,只有 3 行有效。
我不认为你必须知道 NSIS 才能看到我是
只是任意创建密钥并编写我选择的值
进去。我还可以告诉你,当我提出错误的价值观时
在那里,它确实出现在添加/删除程序中,完全一样糟糕
正如我所写的那样。 (我假设该值应该以字节为单位
起初,我的 3.2 MB 应用显示为 3.2 GB)
摘自 foo.nsi:
[...]
; ARP = just convenience variable to hold the long reg key path
!define ARP "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
[...]
; Specify a section ID like SEC_01, for obtaining its size in kilobytes later
Section "Install" SEC_01
; [...copy all files here, before SectionGetSize...]
; Obtain the size of the files, in kilobytes, in section SEC_01
SectionGetSize "${SEC_01}" $0
; Create/Write the reg key with the dword value
WriteRegDWORD HKLM "${ARP}" "EstimatedSize" "$0"
[...write the other keys in the same reg path...]
SectionEnd
[...]
【解决方案4】:
虽然这个话题已经很老了,但在寻找如何在 Windows XP 的添加/删除程序窗口中显示应用程序大小时,我进行了一次搜索,因此我发布了我发现的内容,以防其他人发现它有用:
只需转到以下应用程序的文件夹:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\\{app_name}
并添加一个名为“InstallLocation”的字母数字值,其值是应用程序的主文件夹。
如果您是手动操作(不是在安装过程中),为了使其正常工作,您必须删除文件夹:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\\{app_name}
因为它缓存了卸载信息。