Войти

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


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

Imago_
06-10-2008, 13:40
katok888, три файлика на выбор: cmd, reg, ini - в одном комплекте (http://slil.ru/26209873) (ассоциация с файлами полная, плюс добавлена для *.dts, *.midi, *.ac3).

Спасибо Bulba_S (http://forum.oszone.net/member.php?u=77094) и его утилите для сохранения и восстановления ассоциаций файлов (http://forum.oszone.net/thread-94636.html).
зы. необходимо учитывать путь - при установке напрямую этими файлами, он будет "C:\Program Files\AIMP2".
ззы. для отображения в Настройках AIMP2 проассоциированных файлов все равно нужно будет выполнить "aimp2.exe /REG=R"

katok888
06-10-2008, 19:37
Imago_, А что если я добавлю ключи реестра, отвечающие за ассоциации файлов в скрипт INNO ?все равно нужно будет выполнить "aimp2.exe /REG=R" »??

При совместном использовании с MP3ext, чтобы остались значки от MP3ext, нужно исключить ключи вида
[HKEY_CLASSES_ROOT\AIMP.xx\DefaultIcon]
@="C:\\Program Files\\AIMP2\\Icons\\aimp2.dll,x"???

hb860
06-10-2008, 21:42
katok888, как это всё относится вообще к inno setup ??
все равно нужно будет выполнить "aimp2.exe /REG=R" »
Блин, да не надо ничё, если корректно прописать в инсталяторе расширения, галки будут стоять как надо! Единственно чё - надо в Aimp2.ini записать файл библиотеки иконок, чтобы отображался в программе, хотя это для эстетов, а не для функциональности.
P.S. Строча всё это, я полагаю, что Вы, уважаемый katok888, пишете скрипт в формате INNO SETUP

Imago_
07-10-2008, 03:32
надо в Aimp2.ini записать файл библиотеки иконок » хотя это для эстетов »
Э-э.. собственно это и имелось ввиду - при выполнении команды - происходит запись в конфиг. :) Но пропись напрямую в инишник наверное проще :)
сенЬкс.
чтобы остались значки от MP3ext »
а в чем сложность? не писать значки и все. А можно сделать финт ушами - взять понравившиеся значки, запихать в dll отвечающую за иконки в AIMP2 и выставить иконки из dll-ки по умолчанию.

katok888
07-10-2008, 20:29
финт ушами »здесь не получится, MP3ext прописывает значки mp3-файлов в зависимости от битрейта.

hb860
08-10-2008, 09:02
katok888, хм, очень интересно. Пожалуй, в этом есть смысл! Скачаю MP3ext и посмотрю как это он делает

SamLab
12-10-2008, 00:09
AIMP 2.50.306 Release
http://www.aimp.ru/files/aimp2/aimp_2.50.306_release.zip
http://soft.oszone.net/files_soft/aimp/aimp_2.50.306_release.zip
http://aimp.010203.ru/aimp_2.50.306_release.zip

Сборка финальной версии на основе скрипта из шапки
http://slil.ru/26227751

hb860
12-10-2008, 17:55
Обновил номер сборки в скрипте и саму сборку в шапке

Комсомолец
17-10-2008, 11:18
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 "By hb860"

;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}.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\*.*"
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
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

hb860
17-10-2008, 13:03
Вот этот код File /r "C:\AIMP2\*.*" затащит в дистрибутив всю папку "C:\AIMP2\Skins\*.*", тогда File "C:\AIMP2\Skins\*.*"
File "C:\AIMP2\Icons\*.*"
File /nonfatal /r "c:\Aimp2\DATA\Profile\" не имеет смысла
Вот это, конечно, не лишнееSection "В панели быстрого запуска" . У меня просто эта панель отключена, поэтому писать не стал:)

Комсомолец
18-10-2008, 06:30
затащит в дистрибутив всю папку "C:\AIMP2\Skins\*.*", тогда
Код:
File "C:\AIMP2\Skins\*.*"
File "C:\AIMP2\Icons\*.*"
File /nonfatal /r "c:\Aimp2\DATA\Profile\"
не имеет смысла»
сорри, наскоряк делал....не обратил внимания. поправлю.)))

File /r "C:\AIMP2\*.*" »
простто так удобнее, чем по диску С папки раскидывать. Да и основные ассоциации в минимальной установе не помешают. А быстрый запуск мне в обязательном порядке нужен, потому и добавил.

hb860
18-10-2008, 14:30
Я включу этот ярлык в следующую версию скрипта. Есть ещё кой какие задумки на его счет :)

Комсомолец
19-10-2008, 04:14
hb860, я еще пункт "плагины" добавил. Просто их тоже пакет ставлю. Позже файл обновлю-поправишь ошибки. :)

hb860
19-10-2008, 21:07
Вобщем, повторяем оригинальный инсталятор :)

Комсомолец
20-10-2008, 04:38
Вобщем, повторяем оригинальный инсталятор »
Ничего подобного. Просто сборочка под себя, с тихой установкой, с нужными дополнениями, настройками и ярлыками. И при обычной установке есть возможность выбора компонентов. Разве плохо?

hb860
20-10-2008, 08:54
Да собственно, для того ето и делалось :) Просто то, что щас мы тут совместными усилиями воротим, скоро повторит оригинальный инсталлер при "громкой" установке, но я ни в коем случае не считаю что это плохо. Скорее это хорошо, в итоге получится практически оригинальных дистриб, который, помимо всего прочего, ещё и сборочка под себя, с тихой установкой, с нужными дополнениями, настройками и ярлыками »
Раз уж выносить плагины отдельной опцией, то можно ещё и визуализации вынести, как вариант развития скрипта.

Комсомолец
21-10-2008, 05:32
hb860, можно и визуализации вынести)) только вот как с дефолтными быть, которые в обязательном порядке ставятся (скины и визуализации)?

hb860
21-10-2008, 09:08
Так я для этого и наплодил папок!!! C:\aimp\player - Это то что по делфолту! А ты начал на папки бочку катить :) Это правильный способ

Комсомолец
21-10-2008, 12:58
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 "By hb860"

;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}.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\*.*"
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
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


Кстати, ${BRANDING} где вообще должен отображаться? Ни разу не увидел.

можно ещё и визуализации вынести »
Как? Они же в одной папке с плагинами.

P.S.-нафига тебе юзербар? ;)

Комсомолец
21-10-2008, 14:10
Положите в c:\Aimp\Player оригинальный набор файлов программы. »
что-то хрень получилась. плеер в Player, все остальное отдельно в папках рядом с папкой плеер. Т.е. папки дублируются. Как то некрасиво.




© OSzone.net 2001-2012