Итак, проект(файлы, которые я пакую)
http://files.mail.ru/I7JNJT
Скрипт, которым я пакую
читать дальше »
Код:
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Winamp"
!define PRODUCT_VERSION "5.5.4.2165"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
;!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
; Language files
!insertmacro MUI_LANGUAGE "Russian"
; MUI end ------
Name "${PRODUCT_NAME}"
Caption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
UninstallCaption "Удаление ${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"
InstallDir "$PROGRAMFILES\Winamp"
ShowInstDetails show
ShowUnInstDetails show
BrandingText "${BRANDING}"
; InstType "Full"
; InstType "Custom"
; Var MultiUser
; Function .onInit
; StrCpy $MultiUser "0"
; FunctionEnd
Section "Winamp(required)" SEC01
;SectionIn 1 2 RO
SetOutPath "$INSTDIR"
File /r "D:\Winamp5\player\*.*"
SetShellVarContext all
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$Desktop\${PRODUCT_NAME}.lnk" "$INSTDIR\winamp.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\winamp.exe"
WriteRegStr HKLM "SOFTWARE\Nullsoft\Winamp" "regname" "МОЁ ИМЯ"
WriteRegStr HKLM "SOFTWARE\Nullsoft\Winamp" "regkey" "МОЙ ЛИЦЕНЗИОННЫЙ КЛЮЧ"
WriteUninstaller "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Удалить ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME} ${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "${PRODUCT_VERSION}"
SectionEnd
; Section "Multiuser Configuration" SEC02
; SectionIn 1
; StrCpy $MultiUser "1"
; SectionEnd
Section "-Post"
; StrCmp $MultiUser "1" Multu One
; Multu:
SetShellVarContext current
SetOutPath "$APPDATA\Winamp"
; goto Common
; One:
; SetOutPath "$INSTDIR"
; Common:
File /r "D:\Winamp5\profile\*.*"
ExecWait '$INSTDIR\winamp.exe /REG=LCAD'
SectionEnd
Section Uninstall
ExecWait '$INSTDIR\winamp.exe /UNREG'
RMDir /r "$INSTDIR"
RMDir /r "$APPDATA\Winamp"
SetShellVarContext all
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
Delete "$Desktop\${PRODUCT_NAME}.lnk"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd
Сборку не выкладываю, так как в неё забит ключ, и она будет квалифицирована как варез. Если кому очень надо - могу пересборать без ключа(хотя я не вижу никакого в этом смыла, так как я выложил всё необходимое.)
Содержимое архива распаковать в диск Д:
d:\winamp5\player\
d:\winamp5\profile\
В скрипте "МОЁ ИМЯ" и "МОЙ ЛИЦЕНЗИОННЫЙ КЛЮЧ" заменить правильными значениями. Скомпилировать. Ставить так:
Winamp-<version>.exe /S
Выбора компонентов нет. Отмены регистрации файлов тоже нет. Не хочу и не буду дорабатывать скрипт, причина:
1. я не пользуюсь винампом
2. я не ставлю винамп своим друзьям
Если я и ставлю винамп, то только в с случае какой то крайней необходимости. Я предпочитаю Foobar(AIMP для друзей)
Предоставленный набор позволяет создать АУДИО плеер, близкий по функционалу первым версиям 5го винампа. Я исключил из дистрибутива многие компоненты. Бибилотека, к примеру, обладает базовой фукцниональностью, и поддержки видео нет. В принципе, никто не мешает создать свою сборку, напихав недостающих файлов в d:\winamp5\player\