使用程序卸载密钥中的EstimatedSize值在“添加/删除程序”列表中正确显示程序大小

时间:2008-11-25 15:09:03

标签: registry uninstaller

我在为我开发的应用程序创建卸载程序注册表项时尝试使用EstimatedSize值,遗憾的是我指定的值未显示在程序条目旁边的“添加/删除程序”列表中。我试图找到使用此值的正确程序,但无济于事。有人在这个问题上有经验吗?感谢您的帮助。

Divo 让我走上正轨,所以我想我会逐步说明如何正确显示EstimatedSize值。

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

4 个答案:

答案 0 :(得分: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}"

    ; include a function library that includes a file/directory size reporting command
    !include "FileFunc.nsh"   ; for ${GetSize} for EstimatedSize registry entry

    [...]

    Section "Install"

    ; [...copy all files here, before GetSize...]

    ; get cumulative size of all files in and under install dir
    ; report the total in KB (decimal)
    ; place the answer into $0  ($1 and $2 get other info we don't care about)
    ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2

    ; Convert the decimal KB value in $0 to DWORD
    ; put it right back into $0
    IntFmt $0 "0x%08X" $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

    [...]

答案 1 :(得分:2)

我发现在

下更改了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 值后,更新后的尺寸才会显示在添加或删除程序下。

此致 DIVO

答案 2 :(得分: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}

因为它缓存了卸载信息。

答案 3 :(得分:0)

您使用的是哪种安装程序? MSI?

Windows Installer将在安装期间确定并设置此值(请参阅MSDN:Uninstall Registry Key

我认为无法手动设置此值。幕后(http://blogs.msdn.com/oldnewthing/archive/2004/07/09/178342.aspx

有很多事情发生(一些真正“蹩脚”的东西)

问候,divo