Как мне добавить программу в Windows добавить / удалить список программ - PullRequest
9 голосов
/ 17 февраля 2011

Как мне добавить программу, чтобы она отображалась в списке (чтобы я мог щелкнуть по ней, чтобы удалить) в списке добавления / удаления программ Windows?

Ответы [ 2 ]

11 голосов
/ 17 февраля 2011

Регистрация деинсталляции хранится в реестре, где в реестре вы должны сохранить его, это зависит от того, устанавливает ли ваш установщик программу для всех пользователей или для одного пользователя (например, ваш параметр RequestExecutionLevel):

  • пользователь = HKCU
  • admin = HKLM
  • наивысший = SHCTX (это означает, что вы должны правильно использовать SetShellVarContext, а также правильно восстановить его в деинсталляторе)

Требуются только два значения: DisplayName и UninstallString.

!define REGUNINSTKEY "MyApplication" ;Using a GUID here is not a bad idea
!define REGHKEY HKLM ;Assuming RequestExecutionLevel admin AKA all user/machine install
!define REGPATH_WINUNINST "Software\Microsoft\Windows\CurrentVersion\Uninstall"

Section
WriteRegStr ${REGHKEY} "${REGPATH_WINUNINST}\${REGUNINSTKEY}" "DisplayName" "My application"
WriteRegStr ${REGHKEY} "${REGPATH_WINUNINST}\${REGUNINSTKEY}" "UninstallString" '"$INSTDIR\uninstaller.exe"'
SectionEnd

Есть несколько необязательных значений, которые вы можете установить, MSDN на самом деле не предоставляет список документированных значений, но NSIS Wiki имеет приличный список и эта страница имеет еще более полный список ...

3 голосов
/ 17 февраля 2011

Пример использования:

 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "DisplayName" "<Name>" ;The Name shown in the dialog
 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "UninstallString" "$INSTDIR\<Path to uninstaller>"
 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "InstallLocation" "$INSTDIR"
 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "Publisher" "<Your Name>"
 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "HelpLink" "<URL>"
 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "DisplayVersion" "<Version>"
 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "NoModify" 1 ; The installers does not offer a possibility to modify the installation
 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "NoRepair" 1 ; The installers does not offer a possibility to repair the installation
 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "ParentDisplayName" "<Parent>" ;
 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\<Name>" \
   "ParentKeyName" "<ParentKey>" ; The last two reg keys allow the mod to be shown as an update to another software. Leave them out if you don't like this behaviour
...