Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипт NSIS для перепаковки AIMP2+Сборки

Ответить
Настройки темы
Скрипт NSIS для перепаковки AIMP2+Сборки

Аватара для hb860

Идиот


Сообщения: 1126
Благодарности: 420

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: hb860
Дата: 06-06-2010
Описание: Cкрипт для 2.6 и сборка
Вложения
Тип файла: 7z aimp2.6.7z
(5.7 Kb, 1086 просмотров)
Cкрипт для NSIS, позволяющий создать свою сборку этой замечательной программы.
После компиляции скрипта,получается инсталлятор, который имеет опции выбора того, что ставить.
ВНИМАНИЕ!
Этот скрипт предоставляется вам исключительно для персонального использования.Компилируя им свою сборку, вы обязуетесь никогда и нигде не распространять её, как с целью получения прибыли, так и для любой другой цели. Код и сборка предоставлены в общий доступ с любезного разрешения Артёма Измайлова. Изменяя код этого скрипта, и распространяя модифицированный скрипт или саму сборку на его основе, вы нарушаете лицензию использования AIMP2 и условия, на которых получено разрешение на создание скрипта и сборки.
Официальный сетевой ресурс плеера: http://wwww.aimp.ru
Описание инсталлятора

Скрипт
-ставит ассоциации на все форматы AIMP2
-корректно ставит ассоциации в NT6.x
-удаляет ассоциации при удалении приложения
-поддерживает файл ответов для тихой установки

Скомпилированный инсталлятор поддерживает всего два ключа командной строки - /G и /S
/G - запускает инсталлятор в режиме генератора файла ответов, примерно также работает инсталлятор к-лайт кодеков с ключом -MakeUnatended. Расставляете галки на нужных компонентах, в системе никаких изменений не происходит, а факт выбора компонентов записываются в файл с именем <ИМЯ_СБОРКИ_БЕЗ_РАСШИРЕНИЯ>.ini.

/S - ну этот ключ в представлении не нуждается, правда, теперь при его указании инсталятор смотрит наличие файла ответов, и если текущий компонент помечен как выбранный, компонент устанавливается, в противном случае компонент игнорируется. Если файла ответов нет, происходит обычная тихая установка.

Возможность указания пользовательской шкуры, библиотеки значков и папки установки вынесена в файл ответов. В файл ответов эти параметры в последней версии скрипта добавляются через специальную страницу режима генератора:
Код:
[advanced]
SkinFile=Lagoon.acs2
IconFileName=aimp classic2.dll
Directory=%systemdrive%\Aimp2

Опция Directory понимает %systemdrive%, %programfiles%, %appdata%, %windir%. Удалите её из файла ответов, и программа встанет сама в Program files\aimp2.
Скрипт поддерживает упаковку аимпа с TOOLS и без, без необходимости его правки. Проверяется наличие соответствующих файлов, и если их нет, ярлыки на инструменты просто не создаются.
ВНИМАНИЕ! Если вы запускали генератор файлом, к примеру AIMP2- 2.6.0.250.exe, а потом переименовали в AIMP2.exe, не забудьте переименовать и файл ответов из AIMP2- 2.6.0.250.ini в AIMP2.ini, иначе он не подцепится.



Код скрипта не лезет в сообщение См. вложение

Создание своего дистрибутива

0. Измените в скрипте !define pkgdir на !define pkgdir "с:". Или на другое другое место, где вам удобно хранить исходные файлы. Скрипт ищет файлы по принципу pkgdir+\aimp\player\ и так далее.
1. Создайте на диске C: папки c:\Aimp\Player, c:\Aimp\skins\, c:\aimp\Icons, c:\Aimp\profile
2. Положите в С:\Aimp\Player оригинальный набор файлов программы. Их можно получить, распаковав дистрибутив программы архиватором 7-zip
3. В папку c:\aimp\skins\ поместите свои любимые скины
4. В папку c:\aimp\icons\ поместите значки для типов файлов
5. Необязательно. В папку c:\Aimp\profile положите содежимое папки %programfiles%\aimp\data\profile(если у Вас "однопользовательский" режим использования программы, в противном случае положите туда содержимое %APPDATA%\AIMP). Смотрите также этот пост
5. Скомпилируйте скрипт. На выходе получится файл Aimp2-<текущая версия>.exe


Проверялось: Windows XP SP3 x86, Windows 7 7600 RTM, Vista SP2. Теоретически работает во всех NT6.x при запуске инсталлятора с повышенными привилегиями.
Сборку на основе 2.61.570 с AIMP TOOLS можно загрузить здесь, а описание состава сборки - здесь

Отправлено: 09:42, 21-02-2008

 

Пользователь


Сообщения: 129
Благодарности: 39

Профиль | Отправить PM | Цитировать


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

-------
- /../а как бы ты поступил, если бы сейчас через эту дверь к нам вошел бог?
- Я бы велел ему вытереть ноги/../ © Р.Хайнлайн


Отправлено: 16:11, 21-10-2008 | #61



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hb860

Идиот


Сообщения: 1126
Благодарности: 420

Профиль | Сайт | Отправить PM | Цитировать


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

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

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

Цитата Комсомолец:
P.S.-нафига тебе юзербар? »
ХОЧУ

-------
http://feeds.feedburner.com/Winreviewru.1.gif
Горячие клавиши Windows 8 | Все программы, которые я разработал| Гаджеты для Windows 8


Отправлено: 16:16, 21-10-2008 | #62


Аватара для Комсомолец

Ветеран


Автор проектов


Сообщения: 1558
Благодарности: 228

Профиль | Сайт | Отправить PM | Цитировать


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
скрипт.
Тебя хотел попросить с удалением компонентов помочь (плагины, визуализации, скины). Ещё не разобрался с этим.

-------
Для того, чтобы узнать, что такое рекурсия - необходимо узнать, что такое рекурсия. :)

http://forum.oszone.net/image.php?type=sigpic&userid=69953&dateline=1440353086


Последний раз редактировалось Комсомолец, 21-10-2008 в 18:14.


Отправлено: 17:25, 21-10-2008 | #63


Аватара для Комсомолец

Ветеран


Автор проектов


Сообщения: 1558
Благодарности: 228

Профиль | Сайт | Отправить PM | Цитировать


hb860, еще вопросик-чего у тебя инсталлятор какой-то жёлтый?

-------
Для того, чтобы узнать, что такое рекурсия - необходимо узнать, что такое рекурсия. :)

http://forum.oszone.net/image.php?type=sigpic&userid=69953&dateline=1440353086


Отправлено: 18:02, 21-10-2008 | #64


Аватара для hb860

Идиот


Сообщения: 1126
Благодарности: 420

Профиль | Сайт | Отправить PM | Цитировать


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

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

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

-------
http://feeds.feedburner.com/Winreviewru.1.gif
Горячие клавиши Windows 8 | Все программы, которые я разработал| Гаджеты для Windows 8


Отправлено: 18:14, 21-10-2008 | #65


Аватара для Комсомолец

Ветеран


Автор проектов


Сообщения: 1558
Благодарности: 228

Профиль | Сайт | Отправить PM | Цитировать


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
эти пункты можно было отдельно удалять.

-------
Для того, чтобы узнать, что такое рекурсия - необходимо узнать, что такое рекурсия. :)

http://forum.oszone.net/image.php?type=sigpic&userid=69953&dateline=1440353086


Отправлено: 18:27, 21-10-2008 | #66


Аватара для hb860

Идиот


Сообщения: 1126
Благодарности: 420

Профиль | Сайт | Отправить PM | Цитировать


Цитата Комсомолец:
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.

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

-------
http://feeds.feedburner.com/Winreviewru.1.gif
Горячие клавиши Windows 8 | Все программы, которые я разработал| Гаджеты для Windows 8


Отправлено: 18:50, 21-10-2008 | #67


Аватара для Комсомолец

Ветеран


Автор проектов


Сообщения: 1558
Благодарности: 228

Профиль | Сайт | Отправить PM | Цитировать


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

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

-------
Для того, чтобы узнать, что такое рекурсия - необходимо узнать, что такое рекурсия. :)

http://forum.oszone.net/image.php?type=sigpic&userid=69953&dateline=1440353086


Отправлено: 03:25, 22-10-2008 | #68


Аватара для hb860

Идиот


Сообщения: 1126
Благодарности: 420

Профиль | Сайт | Отправить PM | Цитировать


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

-------
http://feeds.feedburner.com/Winreviewru.1.gif
Горячие клавиши Windows 8 | Все программы, которые я разработал| Гаджеты для Windows 8


Отправлено: 09:05, 22-10-2008 | #69


Аватара для Комсомолец

Ветеран


Автор проектов


Сообщения: 1558
Благодарности: 228

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Для того, чтобы узнать, что такое рекурсия - необходимо узнать, что такое рекурсия. :)

http://forum.oszone.net/image.php?type=sigpic&userid=69953&dateline=1440353086


Отправлено: 13:40, 22-10-2008 | #70



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипт NSIS для перепаковки AIMP2+Сборки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Автоматическая установка The KMPlayer + NSIS скрипт wolkow70 Автоматическая установка приложений 140 10-07-2021 15:48
Скрипт NSIS для перепаковки Mail.ru Agent hb860 Автоматическая установка приложений 47 16-04-2015 11:37
NSIS скрипт для перепаковки GOM player+сборка hb860 Автоматическая установка приложений 5 19-06-2014 00:03
Установка тем для Notepad++ с применением(NSIS скрипт+тема-сборка прилагается) hb860 Автоматическая установка приложений 3 16-10-2011 16:40
NSIS-скрипт для установки UsefulUtils Disc Studio(UUDS)+сборка hb860 Автоматическая установка приложений 0 26-11-2009 23:15




 
Переход