2008-11-25 56 views
0

我試圖創建一個卸載程序的註冊表項的過程中使用EstimatedSize值我已經開發了一個應用程序,不幸我指定的值不會出現在我的程序條目旁邊的添加/刪除程序列表中。我試圖找到使用此值的正確過程,但無濟於事。任何人在這個問題上有任何經驗?您的幫助將不勝感激。使用程序卸載鍵內EstimatedSize值可以正確顯示在添加程序大小/刪除程序列表

Divo讓我在正確的軌道上,所以我想我會發布關於如何正確顯示EstimatedSize值的分步說明。

  1. 使用所有相關屬性(包括EstimatedSize)創建註冊表項。此值將在註冊表中的ARPCache密鑰中複製
  2. 找到ARPCache文件夾內的註冊表項,刪除SlowInfoCache二進制值並將更改值設置爲1.
  3. 下一次添加/刪除程序列表是打開你會看到你在EstimatedSize項中指定的值,而不是任意的Windows生成一個。

回答

2

我想通了,下

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{my-guid-value} 

改變EstimatedSize的值不有任何直接的影響。此值緩存在以下項:只有在

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\{my-guid-value}\SlowInfoCache 

我刪除(重命名)本SlowInfoCache值,更新的大小出現下添加或刪除程序

問候, DIVO

3

寫一個任意值上的Windows7對我來說工作正常。

我用針扎不自動填寫此值 或寫這個鍵或在這裏做什麼神奇。 但是你可以自己創建註冊表鍵, 並使用普通的腳本命令將你想要的任何東西放入它們中, 。

這是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

雖然這個話題很舊,一搜索就把我在這兒尋找如何在外接顯示應用程序的大小/刪除程序窗口,在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} 

因爲它緩存卸載信息。

相關問題