Использование значения EstimatedSize внутри ключа удаления программы для правильного отображения размера программы в списке «Установка и удаление программ». - PullRequest
1 голос
/ 25 ноября 2008

Я пытался использовать значение EstimatedSize при создании раздела реестра для удаления приложения, которое я разработал, к сожалению, указанное мной значение не отображается в списке «Установка и удаление программ» рядом с записью моей программы. Я пытался найти правильную процедуру для использования этого значения, но безрезультатно. У кого-нибудь есть опыт по этому вопросу? Ваша помощь будет оценена.

Divo поставил меня на правильный путь, поэтому я решил опубликовать пошаговые инструкции о том, как правильно отображать значение EstimatedSize.

  1. Создайте раздел реестра со всеми соответствующими свойствами, включая EstimatedSize. Это значение будет реплицировано в ключ ARPCache в реестре
  2. Найдите раздел реестра в папке ARPCache, удалите двоичное значение SlowInfoCache и установите значение Изменено в 1.
  3. При следующем открытии списка «Установка и удаление программ» вы увидите значение, указанное в записи EstimatedSize, а не произвольное значение, созданное Windows.

Ответы [ 4 ]

3 голосов
/ 19 ноября 2009

Запись произвольного значения отлично работает для меня в Windows7.

Я использую NSIS, который автоматически не заполняет это значение или напишите этот ключ или сделайте что-нибудь волшебное здесь. Но вы можете создать ключи реестра самостоятельно, и положи в них все, что захочешь, используя обычные команды скрипта.

Это скрипт NSIS * .nsi, извините, но есть только 3 активные строки. Я не думаю, что вы должны знать NSIS, чтобы увидеть, что я просто создать ключ произвольно и записать значение по моему выбору внутрь. Я могу также сказать вам, что, когда я ставил плохие ценности там, он, безусловно, обнаружился в программах добавления / удаления точно так же плохо как то, что я написал. (Я предположил, что значение должно быть в байтах Итак, мое приложение 3.2 МБ обнаружилось как 3.2 ГБ)

выдержка из 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

    [...]
2 голосов
/ 25 ноября 2008

Я понял, что при изменении значения 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 значение, обновленный размер появится под Установка и удаление программ .

С уважением, диво

1 голос
/ 17 августа 2011

Хотя эта тема довольно старая, поиск привел меня сюда, когда я искал, как показать размер приложения в окне добавления / удаления программ в 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}

, поскольку он кэширует информацию об удалении.

0 голосов
/ 25 ноября 2008

Какой установщик вы использовали? MSI?

Установщик Windows определит и установит это значение во время установки (см. MSDN: Удаление ключа реестра )

Я думаю, что невозможно вручную установить это значение. За кулисами происходит много (кое-что действительно "хромого") (http://blogs.msdn.com/oldnewthing/archive/2004/07/09/178342.aspx)

С уважением, диво

...