Войти

Показать полную графическую версию : Скрипт NSIS для перепаковки AIMP2+Сборки


Страниц : 1 2 3 [4] 5 6 7 8 9 10

Imago_
21-10-2008, 16:11
Комсомолец, все правильно - оригинальные файлы - в одной директории; дополнения, настройки и просто нужности - в других. ИМХО - удобно.

hb860
21-10-2008, 16:16
${BRANDING} отображается под "Требуется места на диске" и в деинсталяторе. Смори скрины - там есть By Happy Bulldozer860

По поводу скрипта: чё там оптимизировать ? Он возьмёт всё из папки c:\aimp, включая подпапки, Выбор компонентов не будет работать.

ИМХО - удобно. »
И мне. Чё тут может быть неудобного, мне не понятно.

P.S.-нафига тебе юзербар? »
ХОЧУ :)

Комсомолец
21-10-2008, 17:25
hb860, посмотри
;Text/Registry definitions
!define PRODUCT_NAME "AIMP2"
!define PRODUCT_VERSION "2.5.0.306"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define BRANDING "(с)2008"

;icons indexes definition
!define idxWAV 0
!define idxMP3 1
!define idxOGG 2
!define idxWMA 3
!define idxAUDIO 4
!define idxMOD 5
!define idxFLAC 6
!define idxMPC 7
!define idxSKIN 8
!define idxPLAYLIST 9

; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\aimp.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico"
!define MUI_COMPONENTSPAGE_NODESC
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"

;service macroses
!insertmacro GetOptions
!insertmacro RefreshShellIcons

;Common directives
BrandingText "${BRANDING}"
Name "${PRODUCT_NAME}"
Caption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}_PowerPack.exe"
InstallDir "$PROGRAMFILES\AIMP2"
ShowInstDetails show
ShowUninstDetails show

;installation types
InstType "Полная"
InstType "Сокращенная"
InstType "Минимальная"

;variables section
Var SkinFile
Var IconFile
Var IconFileName
Var OpenCommand
Var ProfilePath
Var MultiUser
Var MultiUserCmdValue

;custom filetype registration function
!macro RegisterExtension extenstion /*ContentType PerceivedType*/ ClassName ClassStrDefault IconIndex
WriteRegStr HKCR "${extenstion}" "" "${ClassName}"
;WriteRegStr HKCR "${extenstion}" "PerceivedType" "${PerceivedType}"
;WriteRegStr HKCR "${extenstion}" "Content Type" "${ContentType}"

WriteRegStr HKCR "${ClassName}" "" "${ClassStrDefault}"
WriteRegStr HKCR "${ClassName}\CLSID" "" "{0041494D-5032-4472-6F70-546172676574}"
WriteRegStr HKCR "${ClassName}\DefaultIcon" "" "$IconFile,${IconIndex}"
WriteRegStr HKLM "${ClassName}\shell\open" "" "Открыть в AIMP2"
WriteRegStr HKCR "${ClassName}\shell\open\command" "" "$OpenCommand"
WriteRegStr HKCR "${ClassName}\shell\open\DropTarget" "CLSID" "{0041494D-5032-4472-6F70-546172676574}"
!macroend



;sections
Section "!${PRODUCT_NAME}"
SectionIn 1 2 3 RO
StrCpy $ProfilePath "$INSTDIR\Data\Profile"
SetOutPath "$INSTDIR\"
File /r "C:\AIMP2\Player*.*"
WriteUninstaller "$OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$OUTDIR\aimp2.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
SectionEnd

Section /o "Отдельные настройки на каждого пользователя"
SectionIn 1
;Very important be sure what SetShellVarContext has CURRENT value here
StrCpy $MultiUser 1
SectionEnd

;=================================================================================================== ======================
SectionGroup /e "Дополнения"

Section "Скины"
SectionIn 1 2
SetOutPath "$INSTDIR\Skins"
File "C:\AIMP2\Skins\*.*"
SectionEnd

Section "Иконки типов файлов"
SectionIn 1 2
SetOutPath "$INSTDIR\Icons"
File "C:\AIMP2\Icons\*.*"
SectionEnd

Section "Плагины"
SectionIn 1 2
SetOutPath "$INSTDIR\PlugIns"
File "C:\AIMP2\PlugIns\*.*"
SectionEnd

Section "Визуализации"
SectionIn 1 2
SetOutPath "$INSTDIR\Visual"
File "C:\AIMP2\Visual\*.*"
SectionEnd

SectionGroupEnd

;=================================================================================================== ======================
SectionGroup /e "Ярлыки"

Section "В меню Пуск"
SectionIn 1 2 3
SetShellVarContext all
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Advanced Tag Editor.lnk" "$INSTDIR\AIMP2t.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Converter.lnk" "$INSTDIR\AIMP2c.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Recorder.lnk" "$INSTDIR\AIMP2r.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Удалить ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section "На рабочем столе"
SectionIn 1
IfSilent +3
SetShellVarContext all
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
SectionEnd

Section "В панели быстрого запуска"
SectionIn 1 2
SetShellVarContext all
CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
SectionEnd

SectionGroupEnd

;=================================================================================================== ======================
SectionGroup /e "Ассоциации файлов"
Section "-GetIconsDll"
SectionIn 1 2 3
${GetOptions} $CMDLINE "/ICONS=" $IconFileName
StrCmp $IconFileName "" EmptyIconFile
IfFileExists "$INSTDIR\Icons\$IconFileName" EndSection IconFileNotExists

IconFileNotExists:
StrCpy $IconFileName ""
EmptyIconFile:
StrCpy $IconFileName "aimp2.dll"
EndSection:
StrCpy $IconFile "$INSTDIR\Icons\$IconFileName"
StrCpy $OpenCommand "$INSTDIR\AIMP2.exe $\"%1$\""
SectionEnd

Section "Контекстое меню проводника"
SectionIn 1 2
RegDLL "$INSTDIR\System\aimp_shell.dll"
SectionEnd

Section "AAC"
SectionIn 1 2
!insertmacro RegisterExtension ".aac" "AIMP.AAC" "AIMP2: AAC" ${idxAUDIO}
SectionEnd

Section "ACS2"
SectionIn 1 2
!insertmacro RegisterExtension ".acs2" "AIMP.ACS2" "AIMP2: ACS2" ${idxSKIN}
SectionEnd

Section "AIF"
SectionIn 1 2
!insertmacro RegisterExtension ".aif" "AIMP.AIF" "AIMP2: AIF" ${idxAUDIO}
SectionEnd

Section "AIFF"
SectionIn 1 2
!insertmacro RegisterExtension ".aiff" "AIMP.AIFF" "AIMP2: AIFF" ${idxAUDIO}
SectionEnd

Section "APE"
SectionIn 1 2
!insertmacro RegisterExtension ".ape" "AIMP.APE" "AIMP2: APE" ${idxAUDIO}
SectionEnd

Section "AUDIOCD"
SectionIn 1 2 3
!insertmacro RegisterExtension "AudioCD" "AIMP.AUDIOCD" "AIMP2: AUDIOCD" ${idxAUDIO}
SectionEnd

Section "CDA"
SectionIn 1 2
!insertmacro RegisterExtension ".cda" "AIMP.CDA" "AIMP2: CDA" ${idxAUDIO}
SectionEnd

Section "CUE"
SectionIn 1 2
!insertmacro RegisterExtension ".cue" "AIMP.CUE" "AIMP2: CUE" ${idxPLAYLIST}
SectionEnd

Section "FLAC"
SectionIn 1 2
!insertmacro RegisterExtension ".flac" "AIMP.FLAC" "AIMP2: FLAC" ${idxFLAC}
SectionEnd

Section "IT"
SectionIn 1 2
!insertmacro RegisterExtension ".it" "AIMP.IT" "AIMP2: IT" ${idxMOD}
SectionEnd

Section "M3U"
SectionIn 1 2 3
!insertmacro RegisterExtension ".m3u" "AIMP.M3U" "AIMP2: M3U" ${idxPLAYLIST}
SectionEnd

Section "M3U8"
SectionIn 1 2
!insertmacro RegisterExtension ".m3u8" "AIMP.M3U8" "AIMP2: M3U8" ${idxPLAYLIST}
SectionEnd

Section "MID"
SectionIn 1 2
!insertmacro RegisterExtension ".mid" "AIMP.MID" "AIMP2: MID" ${idxAUDIO}
SectionEnd

Section "MO3"
SectionIn 1 2
!insertmacro RegisterExtension ".mo3" "AIMP.MO3" "AIMP2: MO3" ${idxMOD}
SectionEnd

Section "MOD"
SectionIn 1 2
!insertmacro RegisterExtension ".mod" "AIMP.MOD" "AIMP2: MOD" ${idxMOD}
SectionEnd

Section "MP1"
SectionIn 1 2
!insertmacro RegisterExtension ".mp1" "AIMP.MP1" "AIMP2: MP1" ${idxMP3}
SectionEnd

Section "MP2"
SectionIn 1 2
!insertmacro RegisterExtension ".mp2" "AIMP.MP2" "AIMP2: MP2" ${idxMP3}
SectionEnd

Section "MP3"
SectionIn 1 2 3
!insertmacro RegisterExtension ".mp3" "AIMP.MP3" "AIMP2: MP3" ${idxMP3}
SectionEnd

Section "MPC"
SectionIn 1 2
!insertmacro RegisterExtension ".mpc" "AIMP.MPC" "AIMP2: MPC" ${idxMPC}
SectionEnd

Section "MTM"
SectionIn 1 2
!insertmacro RegisterExtension ".mtm" "AIMP.MTM" "AIMP2: MTM" ${idxMOD}
SectionEnd

Section "OGG"
SectionIn 1 2 3
!insertmacro RegisterExtension ".ogg" "AIMP.OGG" "AIMP2: OGG" ${idxOGG}
SectionEnd

Section "PLC"
SectionIn 1 2 3
!insertmacro RegisterExtension ".plc" "AIMP.PLC" "AIMP2: PLC" ${idxPLAYLIST}
SectionEnd

Section "PLS"
SectionIn 1 2 3
!insertmacro RegisterExtension ".pls" "AIMP.PLS" "AIMP2: PLS" ${idxPLAYLIST}
SectionEnd

Section "S3M"
SectionIn 1 2
!insertmacro RegisterExtension ".s3m" "AIMP.S3M" "AIMP2: S3M" ${idxMOD}
SectionEnd

Section "UMX"
SectionIn 1 2
!insertmacro RegisterExtension ".umx" "AIMP.UMX" "AIMP2: UMX" ${idxMOD}
SectionEnd

Section "WAV"
SectionIn 1 2 3
!insertmacro RegisterExtension ".wav" "AIMP.WAV" "AIMP2: WAV" ${idxWAV}
SectionEnd

Section "WMA"
SectionIn 1 2 3
!insertmacro RegisterExtension ".wma" "AIMP.WMA" "AIMP2: WMA" ${idxWMA}
SectionEnd

Section "WV"
SectionIn 1 2
!insertmacro RegisterExtension ".wv" "AIMP.WV" "AIMP2: WV" ${idxAUDIO}
SectionEnd

Section "XM"
SectionIn 1 2
!insertmacro RegisterExtension ".xm" "AIMP.XM" "AIMP2: XM" ${idxMOD}
SectionEnd
Section "-RefreshIcons"
SectionIn 1 2 3
${RefreshShellIcons}
SectionEnd
SectionGroupEnd
;=================================================================================================== ======================
Section "-PostinstallProfileProcessing"
;here we must set current user constats context
SetShellVarContext current

;common INI settings
CreateDirectory "$INSTDIR\DATA"
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System DefaultLang russian.lng
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System Version 2500

${GetOptions} $CMDLINE "/MULTIUSER=" $MultiUserCmdValue
StrCmp $MultiUserCmdValue "" +2
StrCpy $MultiUser $MultiUserCmdValue

StrCmp $MultiUser 1 PerUserCFG OneUserCFG

PerUserCFG:
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System UserMode 1
StrCpy $ProfilePath "$APPDATA\AIMP"
CreateDirectory "$ProfilePath"
Goto WriteCFG
OneUserCFG:
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System UserMode 0
CreateDirectory "$INSTDIR\DATA\Profile"
Goto WriteCFG
WriteCFG:
SetOutPath "$ProfilePath"
File /nonfatal /r "c:\Aimp2\DATA\Profile\"

IfFileExists "$ProfilePath\AIMP2.INI" EndSection
WriteINIStr "$ProfilePath\AIMP2.INI" System LangFile russian.lng ;язык по умолчанию для плеера
WriteINIStr "$ProfilePath\AIMP2r.INI" System LangFile russian.lng ;язык по умолчанию для рекордера
WriteINIStr "$ProfilePath\AIMP2c.INI" System LangFile russian.lng ;язык по умолчанию для конвертера
WriteINIStr "$ProfilePath\AIMP2t.INI" System LangFile russian.lng ;язык по умолчанию для таггера
EndSection:
${GetOptions} $CMDLINE "/SKIN=" $SkinFile
StrCmp $SkinFile "" +2
WriteINIStr "$ProfilePath\AIMP2.INI" Skins DefaultSkin $SkinFile ;скин
WriteINIStr "$ProfilePath\AIMP2.INI" Skins ICL $IconFileName ;скин
SectionEnd

Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd

Section Uninstall
UnRegDLL "$INSTDIR\System\aimp_shell.dll"
ExecWait '$INSTDIR\aimp2.exe /REG=U'
RMDir /r "$INSTDIR\"
SetShellVarContext all
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
Delete "$DESKTOP\${PRODUCT_NAME}.LNK"
Delete "$QUICKLAUNCH\${PRODUCT_NAME}.LNK"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd
скрипт.
Тебя хотел попросить с удалением компонентов помочь (плагины, визуализации, скины). Ещё не разобрался с этим.

Комсомолец
21-10-2008, 18:02
hb860, еще вопросик-чего у тебя инсталлятор какой-то жёлтый? :o

hb860
21-10-2008, 18:14
hb860, еще вопросик-чего у тебя инсталлятор какой-то жёлтый? »
Тема оформления такая. Disney it's a Mgical World :)

По скрипту: команду File /r "C:\AIMP2\Player*.*" » иправь на C:\AIMP2\Player\*.* и всё :)

Тебя хотел попросить с удалением компонентов помочь (плагины, визуализации, скины). Ещё не разобрался с этим. »
Поподробней

Комсомолец
21-10-2008, 18:27
hb860, сейчас протестил. настройки не подхватились, скинов и визуалов нет, плагинов тоже. Только дефолтный оригинальный набор. Придется дорабатывать. Или отказаться, что не гуд.

;Text/Registry definitions
!define PRODUCT_NAME "AIMP2"
!define PRODUCT_VERSION "2.5.0.306"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define BRANDING "(с)2008"

;icons indexes definition
!define idxWAV 0
!define idxMP3 1
!define idxOGG 2
!define idxWMA 3
!define idxAUDIO 4
!define idxMOD 5
!define idxFLAC 6
!define idxMPC 7
!define idxSKIN 8
!define idxPLAYLIST 9

; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\aimp.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico"
!define MUI_COMPONENTSPAGE_NODESC
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"

;service macroses
!insertmacro GetOptions
!insertmacro RefreshShellIcons

;Common directives
BrandingText "${BRANDING}"
Name "${PRODUCT_NAME}"
Caption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}_PowerPack.exe"
InstallDir "$PROGRAMFILES\AIMP2"
ShowInstDetails show
ShowUninstDetails show

;installation types
InstType "Полная"
InstType "Сокращенная"
InstType "Минимальная"

;variables section
Var SkinFile
Var IconFile
Var IconFileName
Var OpenCommand
Var ProfilePath
Var MultiUser
Var MultiUserCmdValue

;custom filetype registration function
!macro RegisterExtension extenstion /*ContentType PerceivedType*/ ClassName ClassStrDefault IconIndex
WriteRegStr HKCR "${extenstion}" "" "${ClassName}"
;WriteRegStr HKCR "${extenstion}" "PerceivedType" "${PerceivedType}"
;WriteRegStr HKCR "${extenstion}" "Content Type" "${ContentType}"

WriteRegStr HKCR "${ClassName}" "" "${ClassStrDefault}"
WriteRegStr HKCR "${ClassName}\CLSID" "" "{0041494D-5032-4472-6F70-546172676574}"
WriteRegStr HKCR "${ClassName}\DefaultIcon" "" "$IconFile,${IconIndex}"
WriteRegStr HKLM "${ClassName}\shell\open" "" "Открыть в AIMP2"
WriteRegStr HKCR "${ClassName}\shell\open\command" "" "$OpenCommand"
WriteRegStr HKCR "${ClassName}\shell\open\DropTarget" "CLSID" "{0041494D-5032-4472-6F70-546172676574}"
!macroend



;sections
Section "!${PRODUCT_NAME}"
SectionIn 1 2 3 RO
StrCpy $ProfilePath "$INSTDIR\Data\Profile"
SetOutPath "$INSTDIR\"
File /r "C:\AIMP2\Player\*.*"
WriteUninstaller "$OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$OUTDIR\aimp2.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
SectionEnd

Section /o "Отдельные настройки на каждого пользователя"
SectionIn 1
;Very important be sure what SetShellVarContext has CURRENT value here
StrCpy $MultiUser 1
SectionEnd

;=================================================================================================== ======================
SectionGroup /e "Дополнения"

Section "Скины"
SectionIn 1 2
SetOutPath "$INSTDIR\Skins"
File "C:\AIMP2\Skins\*.*"
SectionEnd

Section "Иконки типов файлов"
SectionIn 1 2
SetOutPath "$INSTDIR\Icons"
File "C:\AIMP2\Icons\*.*"
SectionEnd

Section "Плагины"
SectionIn 1 2
SetOutPath "$INSTDIR\PlugIns"
File "C:\AIMP2\PlugIns\*.*"
SectionEnd

Section "Визуализации"
SectionIn 1 2
SetOutPath "$INSTDIR\Visual"
File "C:\AIMP2\Visual\*.*"
SectionEnd

SectionGroupEnd

;=================================================================================================== ======================
SectionGroup /e "Ярлыки"

Section "В меню Пуск"
SectionIn 1 2 3
SetShellVarContext all
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\Player\aimp2.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Advanced Tag Editor.lnk" "$INSTDIR\Player\AIMP2t.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Converter.lnk" "$INSTDIR\Player\AIMP2c.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Recorder.lnk" "$INSTDIR\Player\AIMP2r.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Удалить ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section "На рабочем столе"
SectionIn 1
IfSilent +3
SetShellVarContext all
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\Player\aimp2.exe"
SectionEnd

Section "В панели быстрого запуска"
SectionIn 1 2
SetShellVarContext all
CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\Player\aimp2.exe"
SectionEnd

SectionGroupEnd

;=================================================================================================== ======================
SectionGroup /e "Ассоциации файлов"
Section "-GetIconsDll"
SectionIn 1 2 3
${GetOptions} $CMDLINE "/ICONS=" $IconFileName
StrCmp $IconFileName "" EmptyIconFile
IfFileExists "$INSTDIR\Icons\$IconFileName" EndSection IconFileNotExists

IconFileNotExists:
StrCpy $IconFileName ""
EmptyIconFile:
StrCpy $IconFileName "aimp2.dll"
EndSection:
StrCpy $IconFile "$INSTDIR\Icons\$IconFileName"
StrCpy $OpenCommand "$INSTDIR\Player\AIMP2.exe $\"%1$\""
SectionEnd

Section "Контекстое меню проводника"
SectionIn 1 2
RegDLL "$INSTDIR\Player\System\aimp_shell.dll"
SectionEnd

Section "AAC"
SectionIn 1 2
!insertmacro RegisterExtension ".aac" "AIMP.AAC" "AIMP2: AAC" ${idxAUDIO}
SectionEnd

Section "ACS2"
SectionIn 1 2
!insertmacro RegisterExtension ".acs2" "AIMP.ACS2" "AIMP2: ACS2" ${idxSKIN}
SectionEnd

Section "AIF"
SectionIn 1 2
!insertmacro RegisterExtension ".aif" "AIMP.AIF" "AIMP2: AIF" ${idxAUDIO}
SectionEnd

Section "AIFF"
SectionIn 1 2
!insertmacro RegisterExtension ".aiff" "AIMP.AIFF" "AIMP2: AIFF" ${idxAUDIO}
SectionEnd

Section "APE"
SectionIn 1 2
!insertmacro RegisterExtension ".ape" "AIMP.APE" "AIMP2: APE" ${idxAUDIO}
SectionEnd

Section "AUDIOCD"
SectionIn 1 2 3
!insertmacro RegisterExtension "AudioCD" "AIMP.AUDIOCD" "AIMP2: AUDIOCD" ${idxAUDIO}
SectionEnd

Section "CDA"
SectionIn 1 2
!insertmacro RegisterExtension ".cda" "AIMP.CDA" "AIMP2: CDA" ${idxAUDIO}
SectionEnd

Section "CUE"
SectionIn 1 2
!insertmacro RegisterExtension ".cue" "AIMP.CUE" "AIMP2: CUE" ${idxPLAYLIST}
SectionEnd

Section "FLAC"
SectionIn 1 2
!insertmacro RegisterExtension ".flac" "AIMP.FLAC" "AIMP2: FLAC" ${idxFLAC}
SectionEnd

Section "IT"
SectionIn 1 2
!insertmacro RegisterExtension ".it" "AIMP.IT" "AIMP2: IT" ${idxMOD}
SectionEnd

Section "M3U"
SectionIn 1 2 3
!insertmacro RegisterExtension ".m3u" "AIMP.M3U" "AIMP2: M3U" ${idxPLAYLIST}
SectionEnd

Section "M3U8"
SectionIn 1 2
!insertmacro RegisterExtension ".m3u8" "AIMP.M3U8" "AIMP2: M3U8" ${idxPLAYLIST}
SectionEnd

Section "MID"
SectionIn 1 2
!insertmacro RegisterExtension ".mid" "AIMP.MID" "AIMP2: MID" ${idxAUDIO}
SectionEnd

Section "MO3"
SectionIn 1 2
!insertmacro RegisterExtension ".mo3" "AIMP.MO3" "AIMP2: MO3" ${idxMOD}
SectionEnd

Section "MOD"
SectionIn 1 2
!insertmacro RegisterExtension ".mod" "AIMP.MOD" "AIMP2: MOD" ${idxMOD}
SectionEnd

Section "MP1"
SectionIn 1 2
!insertmacro RegisterExtension ".mp1" "AIMP.MP1" "AIMP2: MP1" ${idxMP3}
SectionEnd

Section "MP2"
SectionIn 1 2
!insertmacro RegisterExtension ".mp2" "AIMP.MP2" "AIMP2: MP2" ${idxMP3}
SectionEnd

Section "MP3"
SectionIn 1 2 3
!insertmacro RegisterExtension ".mp3" "AIMP.MP3" "AIMP2: MP3" ${idxMP3}
SectionEnd

Section "MPC"
SectionIn 1 2
!insertmacro RegisterExtension ".mpc" "AIMP.MPC" "AIMP2: MPC" ${idxMPC}
SectionEnd

Section "MTM"
SectionIn 1 2
!insertmacro RegisterExtension ".mtm" "AIMP.MTM" "AIMP2: MTM" ${idxMOD}
SectionEnd

Section "OGG"
SectionIn 1 2 3
!insertmacro RegisterExtension ".ogg" "AIMP.OGG" "AIMP2: OGG" ${idxOGG}
SectionEnd

Section "PLC"
SectionIn 1 2 3
!insertmacro RegisterExtension ".plc" "AIMP.PLC" "AIMP2: PLC" ${idxPLAYLIST}
SectionEnd

Section "PLS"
SectionIn 1 2 3
!insertmacro RegisterExtension ".pls" "AIMP.PLS" "AIMP2: PLS" ${idxPLAYLIST}
SectionEnd

Section "S3M"
SectionIn 1 2
!insertmacro RegisterExtension ".s3m" "AIMP.S3M" "AIMP2: S3M" ${idxMOD}
SectionEnd

Section "UMX"
SectionIn 1 2
!insertmacro RegisterExtension ".umx" "AIMP.UMX" "AIMP2: UMX" ${idxMOD}
SectionEnd

Section "WAV"
SectionIn 1 2 3
!insertmacro RegisterExtension ".wav" "AIMP.WAV" "AIMP2: WAV" ${idxWAV}
SectionEnd

Section "WMA"
SectionIn 1 2 3
!insertmacro RegisterExtension ".wma" "AIMP.WMA" "AIMP2: WMA" ${idxWMA}
SectionEnd

Section "WV"
SectionIn 1 2
!insertmacro RegisterExtension ".wv" "AIMP.WV" "AIMP2: WV" ${idxAUDIO}
SectionEnd

Section "XM"
SectionIn 1 2
!insertmacro RegisterExtension ".xm" "AIMP.XM" "AIMP2: XM" ${idxMOD}
SectionEnd
Section "-RefreshIcons"
SectionIn 1 2 3
${RefreshShellIcons}
SectionEnd
SectionGroupEnd
;=================================================================================================== ======================
Section "-PostinstallProfileProcessing"
;here we must set current user constats context
SetShellVarContext current

;common INI settings
CreateDirectory "$INSTDIR\DATA"
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System DefaultLang russian.lng
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System Version 2500

${GetOptions} $CMDLINE "/MULTIUSER=" $MultiUserCmdValue
StrCmp $MultiUserCmdValue "" +2
StrCpy $MultiUser $MultiUserCmdValue

StrCmp $MultiUser 1 PerUserCFG OneUserCFG

PerUserCFG:
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System UserMode 1
StrCpy $ProfilePath "$APPDATA\AIMP"
CreateDirectory "$ProfilePath"
Goto WriteCFG
OneUserCFG:
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System UserMode 0
CreateDirectory "$INSTDIR\DATA\Profile"
Goto WriteCFG
WriteCFG:
SetOutPath "$ProfilePath"
File /nonfatal /r "c:\Aimp2\DATA\Profile\"

IfFileExists "$ProfilePath\AIMP2.INI" EndSection
WriteINIStr "$ProfilePath\AIMP2.INI" System LangFile russian.lng ;язык по умолчанию для плеера
WriteINIStr "$ProfilePath\AIMP2r.INI" System LangFile russian.lng ;язык по умолчанию для рекордера
WriteINIStr "$ProfilePath\AIMP2c.INI" System LangFile russian.lng ;язык по умолчанию для конвертера
WriteINIStr "$ProfilePath\AIMP2t.INI" System LangFile russian.lng ;язык по умолчанию для таггера
EndSection:
${GetOptions} $CMDLINE "/SKIN=" $SkinFile
StrCmp $SkinFile "" +2
WriteINIStr "$ProfilePath\AIMP2.INI" Skins DefaultSkin $SkinFile ;скин
WriteINIStr "$ProfilePath\AIMP2.INI" Skins ICL $IconFileName ;скин
SectionEnd

Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd

Section Uninstall
UnRegDLL "$INSTDIR\System\aimp_shell.dll"
ExecWait '$INSTDIR\aimp2.exe /REG=U'
RMDir /r "$INSTDIR\"
SetShellVarContext all
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
Delete "$DESKTOP\${PRODUCT_NAME}.LNK"
Delete "$QUICKLAUNCH\${PRODUCT_NAME}.LNK"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd


У тебя как?

hb860, чтобы

SectionGroup /e "Дополнения"

Section "Скины"
SectionIn 1 2
SetOutPath "$INSTDIR\Skins"
File "C:\AIMP2\Skins\*.*"
SectionEnd

Section "Иконки типов файлов"
SectionIn 1 2
SetOutPath "$INSTDIR\Icons"
File "C:\AIMP2\Icons\*.*"
SectionEnd

Section "Плагины"
SectionIn 1 2
SetOutPath "$INSTDIR\PlugIns"
File "C:\AIMP2\PlugIns\*.*"
SectionEnd

Section "Визуализации"
SectionIn 1 2
SetOutPath "$INSTDIR\Visual"
File "C:\AIMP2\Visual\*.*"
SectionEnd

SectionGroupEnd

эти пункты можно было отдельно удалять.

hb860
21-10-2008, 18:50
SetOutPath "$INSTDIR\Visual" »
А это что ? насколько помню AIMP2 визуализацию в папке Plugins хранит.

Хватит уродовать мой код! :)
File /nonfatal /r "c:\Aimp2\DATA\Profile\" - это убери и верни всё как было!

Положи настройки в "c:\Aimp2\Profile\"
и скопируй туда Необязательно. В папку c:\Aimp\profile положите содежимое папки %programfiles%\aimp\data\profile(если у Вас "однопользовательский" режим использования программы, в противном случае положите туда содержимое %APPDATA%\AIMP)
Я не знаю что ты там именно пихаешь в c:\Aimp2\DATA\Profile\
Скины должны были подхватится и в твоей "модифицированной" версии скрипта, если ты их положил конечно в c:\aimp2\skins.

По поводу удаления отдельно именно компонентов - помоему это бред. А вообще для такой реализации надо лог установленных файлов писать. Или даже логи, чтобы потом по ним отдельно бить скины, отдельно плагины и т.д.

Комсомолец
22-10-2008, 03:25
SetOutPath "$INSTDIR\Visual" »
Это я ивращался :)
Хватит уродовать мой код! »
ещё и не так извращусь! :biggrin:
Я не знаю что ты там именно пихаешь в c:\Aimp2\DATA\Profile\ »
там содержимое папки Profile
Положи настройки в
"c:\Aimp2\Profile\" »
уточни, что туда положить. У меня в папке с Aimp'ом (C:\Program Files\Aimp2\Data) там файл aimp.ini и папка Data, в которой все настройки. Вот это я и скопировал в c:\Aimp2\Profile\

Короче, то одно не получается, то другое. Забил вчера и пошел спать. :tongue:

hb860
22-10-2008, 09:05
уточни, что туда положить. »
Рассмотрим два случая
1. Если у тебя конфигурация НЕ многопользовательская, то в C:\AIMP\Profile надо скопировать ВСЕ ФАЙЛЫ из папки c:\program files\aimp\data\profile
2. Если у тебя аимп настроен так, что настройки хранятся для каждого пользователя отдельно, то то в C:\AIMP\Profile надо скопировать ВСЕ ФАЙЛЫ из папки C:\documents and settings\Комсомолец\application data\AIMP

Комсомолец
22-10-2008, 13:40
hb860, у меня 1-й вариант
в C:\Program Files\AIMP2\Data лежит папка Profile и рядом файл aimp.ini. Оба ложить?

hb860
22-10-2008, 14:22
Комсомолец, ты издеваешься чтоли ? :)
то в C:\AIMP\Profile надо скопировать ВСЕ ФАЙЛЫ из папки c:\program files\aimp\data\profile »
Что тут может быть непонятного-то ? Берешь все файлы из папки Profile и копируешь в C:\AIMP\Profile.
Не надо никакой аимп.ини. Его мой скрипт создает сам(я подчеркиваю, МОЙ скрипт, до твоих извращений над ним :))

vipnucleus
22-10-2008, 15:36
А на бета версии будеш делать сборку ?

hb860
22-10-2008, 16:36
буду, на днях выложу. Просто паралельно хочу скрипт доработать

Комсомолец
22-10-2008, 16:56
hb860, тебе так не нравится, что я с ним пытаюсь сделать? Хорошо. Не буду постить его. Спасибо за проделанную тобой работу.

hb860
22-10-2008, 16:58
Комсомолец, чё ещё за детские обиды? Пость чё хочешь!
Просто ты меняешь мой код, и я придерживаюсь в своих ответах ссылок на оригинальные исходники.Что в этом плохого ?
Единственное, чё мне не совсем понятно, так это:
1. зачем менять модель папок
2. зачем удалять отдельно компоненты.
Извини если чем обидел, я не со зла и не специально

P.S. Я придумал удалять компоненты записью лога в один файл Aimp.log в формате ини-файла. Типа

[general]
files=10
file1=c:\program files\aimp2\aimp2.exe
...
file10=...
[skins]
files=1
file1=c:\program files\aimp2\skins\bla bla.acs2

И так далее
Вопрос: КАК ПИСАТЬ такой файл? Деисталером его обработать не проблема.

Комсомолец
22-10-2008, 17:20
1. зачем менять модель папок »
просто хотел проверит.
2. зачем удалять отдельно компоненты. »
хочется доработать скрипт под разные возможности. в жизни пригодится.
Обид нет.

вот. в общем вернулся к исходному.

;Text/Registry definitions
!define PRODUCT_NAME "AIMP2"
!define PRODUCT_VERSION "2.5.0.306"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define BRANDING "Created by Комсомолец (с)2008"

;icons indexes definition
!define idxWAV 0
!define idxMP3 1
!define idxOGG 2
!define idxWMA 3
!define idxAUDIO 4
!define idxMOD 5
!define idxFLAC 6
!define idxMPC 7
!define idxSKIN 8
!define idxPLAYLIST 9

; MUI 1.67 compatible ------
!include "MUI.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
SetCompressor /SOLID lzma
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\aimp.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue-full.ico"
!define MUI_COMPONENTSPAGE_NODESC
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "Russian"

;service macroses
!insertmacro GetOptions
!insertmacro RefreshShellIcons

;Common directives
BrandingText "${BRANDING}"
Name "${PRODUCT_NAME}"
Caption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}_PowerPack.exe"
InstallDir "$PROGRAMFILES\AIMP2"
ShowInstDetails show
ShowUninstDetails show

;installation types
InstType "Полная"
InstType "Сокращенная"
InstType "Минимальная"

;variables section
Var SkinFile
Var IconFile
Var IconFileName
Var OpenCommand
Var ProfilePath
Var MultiUser
Var MultiUserCmdValue

;custom filetype registration function
!macro RegisterExtension extenstion /*ContentType PerceivedType*/ ClassName ClassStrDefault IconIndex
WriteRegStr HKCR "${extenstion}" "" "${ClassName}"
;WriteRegStr HKCR "${extenstion}" "PerceivedType" "${PerceivedType}"
;WriteRegStr HKCR "${extenstion}" "Content Type" "${ContentType}"

WriteRegStr HKCR "${ClassName}" "" "${ClassStrDefault}"
WriteRegStr HKCR "${ClassName}\CLSID" "" "{0041494D-5032-4472-6F70-546172676574}"
WriteRegStr HKCR "${ClassName}\DefaultIcon" "" "$IconFile,${IconIndex}"
WriteRegStr HKLM "${ClassName}\shell\open" "" "Открыть в AIMP2"
WriteRegStr HKCR "${ClassName}\shell\open\command" "" "$OpenCommand"
WriteRegStr HKCR "${ClassName}\shell\open\DropTarget" "CLSID" "{0041494D-5032-4472-6F70-546172676574}"
!macroend



;sections
Section "!${PRODUCT_NAME}"
SectionIn 1 2 3 RO
StrCpy $ProfilePath "$INSTDIR\Data\Profile"
SetOutPath "$INSTDIR\"
File /r "C:\AIMP2\Player\*.*"
WriteUninstaller "$OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$OUTDIR\aimp2.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$OUTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
SectionEnd

Section /o "Отдельные настройки на каждого пользователя"
SectionIn 1
;Very important be sure what SetShellVarContext has CURRENT value here
StrCpy $MultiUser 1
SectionEnd

;=================================================================================================== ======================
SectionGroup /e "Дополнения"

Section "Скины"
SectionIn 1 2
SetOutPath "$INSTDIR\Skins"
File "C:\AIMP2\Skins\*.*"
SectionEnd

Section "Иконки типов файлов"
SectionIn 1 2
SetOutPath "$INSTDIR\Icons"
File "C:\AIMP2\Icons\*.*"
SectionEnd

Section "Плагины"
SectionIn 1 2
SetOutPath "$INSTDIR\PlugIns"
File "C:\AIMP2\PlugIns\*.*"
SectionEnd

Section "Визуализации"
SectionIn 1 2
SetOutPath "$INSTDIR\PlugIns"
File "C:\AIMP2\Visual\*.*"
SectionEnd

SectionGroupEnd

;=================================================================================================== ======================
SectionGroup /e "Ярлыки"

Section "В меню Пуск"
SectionIn 1 2 3
SetShellVarContext all
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Advanced Tag Editor.lnk" "$INSTDIR\AIMP2t.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Converter.lnk" "$INSTDIR\AIMP2c.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Recorder.lnk" "$INSTDIR\AIMP2r.exe"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Удалить ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section "На рабочем столе"
SectionIn 1
IfSilent +3
SetShellVarContext all
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
SectionEnd

Section "В панели быстрого запуска"
SectionIn 1 2
SetShellVarContext all
CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
SectionEnd

SectionGroupEnd

;=================================================================================================== ======================
SectionGroup /e "Ассоциации файлов"
Section "-GetIconsDll"
SectionIn 1 2 3
${GetOptions} $CMDLINE "/ICONS=" $IconFileName
StrCmp $IconFileName "" EmptyIconFile
IfFileExists "$INSTDIR\Icons\$IconFileName" EndSection IconFileNotExists

IconFileNotExists:
StrCpy $IconFileName ""
EmptyIconFile:
StrCpy $IconFileName "aimp2.dll"
EndSection:
StrCpy $IconFile "$INSTDIR\Player\Icons\$IconFileName"
StrCpy $OpenCommand "$INSTDIR\AIMP2.exe $\"%1$\""
SectionEnd

Section "Контекстое меню проводника"
SectionIn 1 2
RegDLL "$INSTDIR\System\aimp_shell.dll"
SectionEnd

Section "AAC"
SectionIn 1 2
!insertmacro RegisterExtension ".aac" "AIMP.AAC" "AIMP2: AAC" ${idxAUDIO}
SectionEnd

Section "ACS2"
SectionIn 1 2
!insertmacro RegisterExtension ".acs2" "AIMP.ACS2" "AIMP2: ACS2" ${idxSKIN}
SectionEnd

Section "AIF"
SectionIn 1 2
!insertmacro RegisterExtension ".aif" "AIMP.AIF" "AIMP2: AIF" ${idxAUDIO}
SectionEnd

Section "AIFF"
SectionIn 1 2
!insertmacro RegisterExtension ".aiff" "AIMP.AIFF" "AIMP2: AIFF" ${idxAUDIO}
SectionEnd

Section "APE"
SectionIn 1 2
!insertmacro RegisterExtension ".ape" "AIMP.APE" "AIMP2: APE" ${idxAUDIO}
SectionEnd

Section "AUDIOCD"
SectionIn 1 2 3
!insertmacro RegisterExtension "AudioCD" "AIMP.AUDIOCD" "AIMP2: AUDIOCD" ${idxAUDIO}
SectionEnd

Section "CDA"
SectionIn 1 2
!insertmacro RegisterExtension ".cda" "AIMP.CDA" "AIMP2: CDA" ${idxAUDIO}
SectionEnd

Section "CUE"
SectionIn 1 2
!insertmacro RegisterExtension ".cue" "AIMP.CUE" "AIMP2: CUE" ${idxPLAYLIST}
SectionEnd

Section "FLAC"
SectionIn 1 2
!insertmacro RegisterExtension ".flac" "AIMP.FLAC" "AIMP2: FLAC" ${idxFLAC}
SectionEnd

Section "IT"
SectionIn 1 2
!insertmacro RegisterExtension ".it" "AIMP.IT" "AIMP2: IT" ${idxMOD}
SectionEnd

Section "M3U"
SectionIn 1 2 3
!insertmacro RegisterExtension ".m3u" "AIMP.M3U" "AIMP2: M3U" ${idxPLAYLIST}
SectionEnd

Section "M3U8"
SectionIn 1 2
!insertmacro RegisterExtension ".m3u8" "AIMP.M3U8" "AIMP2: M3U8" ${idxPLAYLIST}
SectionEnd

Section "MID"
SectionIn 1 2
!insertmacro RegisterExtension ".mid" "AIMP.MID" "AIMP2: MID" ${idxAUDIO}
SectionEnd

Section "MO3"
SectionIn 1 2
!insertmacro RegisterExtension ".mo3" "AIMP.MO3" "AIMP2: MO3" ${idxMOD}
SectionEnd

Section "MOD"
SectionIn 1 2
!insertmacro RegisterExtension ".mod" "AIMP.MOD" "AIMP2: MOD" ${idxMOD}
SectionEnd

Section "MP1"
SectionIn 1 2
!insertmacro RegisterExtension ".mp1" "AIMP.MP1" "AIMP2: MP1" ${idxMP3}
SectionEnd

Section "MP2"
SectionIn 1 2
!insertmacro RegisterExtension ".mp2" "AIMP.MP2" "AIMP2: MP2" ${idxMP3}
SectionEnd

Section "MP3"
SectionIn 1 2 3
!insertmacro RegisterExtension ".mp3" "AIMP.MP3" "AIMP2: MP3" ${idxMP3}
SectionEnd

Section "MPC"
SectionIn 1 2
!insertmacro RegisterExtension ".mpc" "AIMP.MPC" "AIMP2: MPC" ${idxMPC}
SectionEnd

Section "MTM"
SectionIn 1 2
!insertmacro RegisterExtension ".mtm" "AIMP.MTM" "AIMP2: MTM" ${idxMOD}
SectionEnd

Section "OGG"
SectionIn 1 2 3
!insertmacro RegisterExtension ".ogg" "AIMP.OGG" "AIMP2: OGG" ${idxOGG}
SectionEnd

Section "PLC"
SectionIn 1 2 3
!insertmacro RegisterExtension ".plc" "AIMP.PLC" "AIMP2: PLC" ${idxPLAYLIST}
SectionEnd

Section "PLS"
SectionIn 1 2 3
!insertmacro RegisterExtension ".pls" "AIMP.PLS" "AIMP2: PLS" ${idxPLAYLIST}
SectionEnd

Section "S3M"
SectionIn 1 2
!insertmacro RegisterExtension ".s3m" "AIMP.S3M" "AIMP2: S3M" ${idxMOD}
SectionEnd

Section "UMX"
SectionIn 1 2
!insertmacro RegisterExtension ".umx" "AIMP.UMX" "AIMP2: UMX" ${idxMOD}
SectionEnd

Section "WAV"
SectionIn 1 2 3
!insertmacro RegisterExtension ".wav" "AIMP.WAV" "AIMP2: WAV" ${idxWAV}
SectionEnd

Section "WMA"
SectionIn 1 2 3
!insertmacro RegisterExtension ".wma" "AIMP.WMA" "AIMP2: WMA" ${idxWMA}
SectionEnd

Section "WV"
SectionIn 1 2
!insertmacro RegisterExtension ".wv" "AIMP.WV" "AIMP2: WV" ${idxAUDIO}
SectionEnd

Section "XM"
SectionIn 1 2
!insertmacro RegisterExtension ".xm" "AIMP.XM" "AIMP2: XM" ${idxMOD}
SectionEnd
Section "-RefreshIcons"
SectionIn 1 2 3
${RefreshShellIcons}
SectionEnd
SectionGroupEnd
;=================================================================================================== ======================
Section "-PostinstallProfileProcessing"
;here we must set current user constats context
SetShellVarContext current

;common INI settings
CreateDirectory "$INSTDIR\DATA"
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System DefaultLang russian.lng
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System Version 2500

${GetOptions} $CMDLINE "/MULTIUSER=" $MultiUserCmdValue
StrCmp $MultiUserCmdValue "" +2
StrCpy $MultiUser $MultiUserCmdValue

StrCmp $MultiUser 1 PerUserCFG OneUserCFG

PerUserCFG:
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System UserMode 1
StrCpy $ProfilePath "$APPDATA\AIMP"
CreateDirectory "$ProfilePath"
Goto WriteCFG
OneUserCFG:
WriteINIStr "$INSTDIR\DATA\AIMP.INI" System UserMode 0
CreateDirectory "$INSTDIR\DATA\Profile"
Goto WriteCFG
WriteCFG:
SetOutPath "$ProfilePath"
File /nonfatal /r "c:\Aimp2\Profile\"

IfFileExists "$ProfilePath\AIMP2.INI" EndSection
WriteINIStr "$ProfilePath\AIMP2.INI" System LangFile russian.lng ;язык по умолчанию для плеера
WriteINIStr "$ProfilePath\AIMP2r.INI" System LangFile russian.lng ;язык по умолчанию для рекордера
WriteINIStr "$ProfilePath\AIMP2c.INI" System LangFile russian.lng ;язык по умолчанию для конвертера
WriteINIStr "$ProfilePath\AIMP2t.INI" System LangFile russian.lng ;язык по умолчанию для таггера
EndSection:
${GetOptions} $CMDLINE "/SKIN=" $SkinFile
StrCmp $SkinFile "" +2
WriteINIStr "$ProfilePath\AIMP2.INI" Skins DefaultSkin $SkinFile ;скин
WriteINIStr "$ProfilePath\AIMP2.INI" Skins ICL $IconFileName ;скин
SectionEnd

Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
FunctionEnd

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
Abort
FunctionEnd

Section Uninstall
UnRegDLL "$INSTDIR\System\aimp_shell.dll"
ExecWait '$INSTDIR\aimp2.exe /REG=U'
RMDir /r "$INSTDIR\"
SetShellVarContext all
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
Delete "$DESKTOP\${PRODUCT_NAME}.LNK"
Delete "$QUICKLAUNCH\${PRODUCT_NAME}.LNK"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd

hb860
22-10-2008, 18:15
Выглядит работоспособно :)

Jeeb
22-10-2008, 22:16
Привет всем!
Скрипт очень полезный. hb860, отлично! :yu:
Сам пользовался, ибо в оригинальном установщике были проблемы с тихой установкой. Просто мне не нужно интегрировать свои компоненты в установщик.
На днях отписал разработчикам насчет их инсталлятора.
Обещали поправить, так что будем ждать.

Комсомолец
23-10-2008, 05:08
Jeeb, в скрипте hb860 так же можно ничего не интегрировать. только под тихую установку перепаковать.

hb860
23-10-2008, 09:07
Комсомолец, он орать будет что нет файлов в C:\aimp\skins и c:\aimp\icons. Можно выкинуть секции "Иконки" и "Скины", или поставить там File /notfatal.

2ALL. Обновил сборку. Добавил 3 скина и программу обновил до 309го билда.
Скрипт пока тот же. Новый функционал в глубочааайшей разработке.




© OSzone.net 2001-2012