1

在为我开发的应用程序创建卸载程序注册表项期间,我尝试使用 EstimatedSize 值,不幸的是,我指定的值没有出现在我的程序条目旁边的“添加/删除程序”列表中。我试图找到使用此值的正确程序,但无济于事。有人对这个问题有任何经验吗?您的帮助将不胜感激。

Divo让我走上了正确的道路,所以我想我会发布有关如何正确显示 EstimatedSize 值的分步说明。

  1. 创建具有所有相关属性的注册表项,包括 EstimatedSize。此值将复制到注册表中的 ARPCache 键中
  2. 在 ARPCache 文件夹中找到注册表项,删除 SlowInfoCache 二进制值,并将 Changed 值设置为 1。
  3. 下次打开添加/删除程序列表时,您将看到您在 EstimatedSize 条目中指定的值,而不是 Windows 生成的任意值。
4

4 回答 4

3

我发现改变 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值后,更新后的大小才会出现在Add or remove programs下。

问候,迪沃

于 2008-11-25T19:49:08.343 回答
3

在 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

[...]
于 2009-11-19T19:13:04.640 回答
1

你用的是什么安装程序?微星?

Windows Installer 将在安装期间确定并设置此值(请参阅 MSDN:卸载注册表项

我认为无法手动设置此值。幕后发生了很多事情(一些真正“蹩脚”的东西)(http://blogs.msdn.com/oldnewthing/archive/2004/07/09/178342.aspx

问候,迪沃

于 2008-11-25T17:12:05.943 回答
1

虽然这个话题已经很老了,但在寻找如何在 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}

因为它缓存了卸载信息。

于 2011-08-17T15:31:13.407 回答