Так правильно будет?
Все скопом регистрировать не лучший вариант. Для каждого расширения лучше отдельную секцию делать. Потом меньше проблем с деинсталляцией будет.
Вот посмотрите как у меня в скрипте Winamp сделано:
Код: Выделить всё
Section Uninstall
...
DeleteRegKey HKLM "Software\Classes\Aimp.File"
...
SectionEndКод: Выделить всё
!macro RegisterExtension extenstion
WriteRegStr HKLM "Software\Classes\.${extenstion}" "" "Aimp.File"
WriteRegStr HKLM "Software\Classes\Aimp.File" "" "Aimp Media File"
WriteRegStr HKLM "Software\Classes\Aimp.File\DefaultIcon" "" "$INSTDIR\Aimp.exe,1"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell" "" "Play"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play" "" "&Play in Aimp"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play\command" "" "$\"$INSTDIR\Aimp.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\open\command" "" "$\"$INSTDIR\Aimp.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark" "" "Add to Aipm's &Bookmark list"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark\command" "" "$\"$INSTDIR\Aimp.exe$\"/BOOKMARK $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue" "" "&Enqueue in Aipm"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue\command" "" "$\"$INSTDIR\Aimp.exe$\"/ADD $\"%1$\""
; ставим приложением по умолчанию для текущего пользователя
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "Aimp.File"
!macroendКод: Выделить всё
!insertmacro RegisterExtension mp3
!insertmacro RegisterExtension acc
;и так далее
Код: Выделить всё
CreateDirectory "$DOCUMENTS\Opera Backup\AppData\Opera"
CreateDirectory "$DOCUMENTS\Opera Backup\LocalAppData\Opera"
CreateDirectory "$DOCUMENTS\Opera Backup\Opera\profile"Код: Выделить всё
${RefreshShellIcons}Код: Выделить всё
!include "FileFunc.nsh"Код: Выделить всё
!macro RegisterExtension extenstion
SetShellVarContext all
WriteRegStr HKLM "Software\Classes\.mp3" "" "Aimp.File"
WriteRegStr HKLM "Software\Classes\Aimp.File" "" "Aimp Media File"
WriteRegStr HKLM "Software\Classes\Aimp.File\DefaultIcon" "" "$INSTDIR\AIMP2.exe,1"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell" "" "Play"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play" "" "&Play in Aimp"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play\command" "" "$\"$INSTDIR\AIMP2.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\open\command" "" "$\"$INSTDIR\AIMP2.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark" "" "Add to Aipm's &Bookmark list"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark\command" "" "$\"$INSTDIR\AIMP2.exe$\"/BOOKMARK $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue" "" "&Enqueue in Aipm"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue\command" "" "$\"$INSTDIR\AIMP2.exe$\"/ADD $\"%1$\""
; ставим приложением по умолчанию для текущего пользователя
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice" "Progid" "Aimp.File"
${RefreshShellIcons}
!macroend