【问题标题】: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 值的分步说明。

  1. 创建具有所有相关属性的注册表项,包括 EstimatedSize。此值将复制到注册表中的 ARPCache 键中
  2. 在 ARPCache 文件夹中找到注册表项,删除 SlowInfoCache 二进制值,并将 Changed 值设置为 1。
  3. 下次打开“添加/删除程序”列表时,您将看到您在 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
      
      [...]
      

      【讨论】:

        【解决方案3】:

        您使用了哪种安装程序?微星?

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

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

        问候,迪沃

        【讨论】:

          【解决方案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}
          

          因为它缓存了卸载信息。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-02
            • 1970-01-01
            • 2010-12-19
            • 1970-01-01
            • 2011-01-25
            • 2015-03-17
            • 1970-01-01
            • 2019-02-12
            相关资源
            最近更新 更多