Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

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

Аватара для hb860

Идиот


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

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


Изменения
Автор: hb860
Дата: 06-06-2010
Описание: Cкрипт для 2.6 и сборка
Вложения
Тип файла: 7z aimp2.6.7z
(5.7 Kb, 1063 просмотров)
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

 

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

Ветеран


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


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

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


hb860, я не считаю так. просто у тебя спросил-ты лучше это дело изучил. Хорошо перевел))

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

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


Отправлено: 06:27, 23-01-2009 | #131



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

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


Аватара для Habetdin


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


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

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


hb860, будет ли скрипт для AIMP v2.60.xxx?

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Отправлено: 17:50, 10-06-2009 | #132


Аватара для hb860

Идиот


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

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


Habetdin, его можно перепаковать старым. Новый никак не доделаю, а просто циферки в скрипте поменять может каждый, смысла не вижу этого делать.

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


Отправлено: 08:32, 11-06-2009 | #133


Аватара для Habetdin


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


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

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


hb860, там не только "циферки" - там утилит нет

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Отправлено: 10:26, 11-06-2009 | #134


Аватара для volk1234

Старовер


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

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


hb860
Насчет перевода. Я чуток подскажу, хотя все с кем я говорю по англиски говорят, что я говорю плохо

Правильнее будет:

читать дальше »
How to make deployed setup:
1. Make folowing folders on your drive C: - c:\Aimp\Player, c:\Aimp\skins\, c:\aimp\Icons, c:\Aimp\profile
2. Copy to folder c:\Aimp\Player files from original distributive. You can use 7-zip ( http://www.7-zip.org ) archiver to extract files from original distro.
3. Copy to c:\aimp\skins\ your favorite skins
4. Copy to c:\aimp\icons\ your favorite icons
и т.д.
не претендую на правоту, но так не режет глаз...

-------

Ю-ху!


Отправлено: 12:32, 11-06-2009 | #135


Аватара для hb860

Идиот


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

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


volk1234, если считаешь что перевод вообще оказался кому-нить полезен - я исправлю. Я вообще не претендую на знание английского, с грамматикой у меня проблемы дикие.
Habetdin, посмотрю. Ярлыки выкинуть тоже не проблема, ну или поправить. Я просто 2.60 мельком успел только глянуть.
Хочется нормальный скрипт уже написать, который цепает файлы конфигурации, как k-lite, и умеет их создавать.

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


Отправлено: 16:26, 11-06-2009 | #136

XCV XCV вне форума

Старожил


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

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


hb860 Тема умерла? или будет продолжение?

-------
http://static.hsdn.org/infobar/240x15.gif


Отправлено: 17:12, 28-08-2009 | #137


Аватара для hb860

Идиот


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

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


будет. обещаю.

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

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:01, 28-08-2009 | #138


Аватара для hb860

Идиот


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

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


Итак, после продолжительного молчания, представляю новый скрипт:
читать дальше »
Код: Выделить весь код
;Text/Registry definitions
!define PRODUCT_NAME "AIMP2"
!define PRODUCT_VERSION " 2.6.0.499 rc1"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define BRANDING "By Happy Bulldozer860"
!define pkgdir "d:\package"

;includes
!include "MUI.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
!include "WordFunc.nsh"


SetCompressor /SOLID lzma
;SetCompress Off
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!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



;variables section
;ui variables
Var SkinFile
Var IconFile
Var IconFileName
Var WindowCaption
;unnatend mode variables
Var IniFile
Var gMode

;open command for files related with $installdir
Var OpenCommand

;profiles related varialbes
Var ProfilePath
Var MultiUser

;extensions related variables
Var ClassName
Var IconIndex


;script initialization
Function .onInit
	;
	; when /g switch specified and not present /s switch, then generate default config
	;
	;inifile definition
	StrCpy $WindowCaption "${PRODUCT_NAME} ${PRODUCT_VERSION}"
	${WordReplace} "$EXEFILE" ".exe" ".ini" "+" $IniFile
	StrCpy $IniFile "$EXEDIR\$IniFile"
	;gMode detection
	StrCpy $gMode 0
	${GetOptions} $CMDLINE "/G" $0
	;if not found /G then exit
	IfErrors EndFunc 0
	;When Silent setup then ignoring /G
	IfSilent +3 0
	StrCpy $gMode 1
	StrCpy $WindowCaption "Генератор файла ответов ${PRODUCT_NAME}"
	EndFunc:
FunctionEnd






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

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

!macro ProcessSection secID
	;
	;if gMode=1 - generate default config. if 0 and not silent - reads the config
	StrCpy $R0 1
	StrCmp $gMode 1 WriteMode
	IfSilent 0 EndMarco
		IfFileExists $IniFile 0 EndMarco
		ReadINIStr $R0 $IniFile Sections ${secID}
		IfErrors 0 +2
		StrCpy $R0 0
		Goto EndMarco
	WriteMode:
		StrCpy $R0 0
		WriteINIStr $IniFile Sections ${secID} 1
	EndMarco:	
!macroend

;custom filetype registration function
!macro RegisterExtension extenstion 
	;create a class for extesion
		;read/write section state
		!insertmacro ProcessSection ${extenstion}
		;if $r0 is 0 then exit section
		StrCmp $R0 0 EndMacro 0
		;--------------section code----------------			
		
  StrCpy $ClassName "AIMP.${extenstion}"
  StrCmp ${extenstion} "AUDIOCD" +2 0
  WriteRegStr HKCR ".${extenstion}" "" "$ClassName"
  WriteRegStr HKCR "${extenstion}" "" "$ClassName"
  WriteRegStr HKCR "$ClassName" "" "AIMP: ${extenstion}"
  WriteRegStr HKCR "$ClassName\CLSID" "" "{0041494D-5032-4472-6F70-546172676574}"
  WriteRegStr HKCR "$ClassName\shell\open" "" "Открыть в AIMP2"
  WriteRegStr HKCR "$ClassName\shell\open\command" "" "$OpenCommand"
  WriteRegStr HKCR "$ClassName\shell\open\DropTarget" "CLSID" "{0041494D-5032-4472-6F70-546172676574}"
	;define  icon for class
	${Switch} ${extenstion}	
		${Case} "WAV"
			StrCpy $IconIndex 0
			${Break} 	
		;mp3 group	
		${Case} "MP3"
			StrCpy $IconIndex 1
			${Break} 
		${Case} "MP1"
			StrCpy $IconIndex 1
			${Break} 			
		${Case} "MP2"
			StrCpy $IconIndex 1
			${Break} 
			
		${Case} "OGG"
			StrCpy $IconIndex 2
			${Break}
			
		${Case} "WMA"
			StrCpy $IconIndex 3
			${Break}			
		;mod group	
		${Case} "MOD"
			StrCpy $IconIndex 5
			${Break}	
		${Case} "IT"
			StrCpy $IconIndex 5
			${Break}	
		${Case} "MO3"
			StrCpy $IconIndex 5
			${Break}
		${Case} "MTM"
			StrCpy $IconIndex 5
			${Break}			
		${Case} "S3M"
			StrCpy $IconIndex 5
			${Break}	
		${Case} "XM"
			StrCpy $IconIndex 5
			${Break}
			
			
		${Case} "FLAC"
			StrCpy $IconIndex 6
			${Break}			
			
		${Case} "MPC"
			StrCpy $IconIndex 7
			${Break}
			
		${Case} "ACS2"
			StrCpy $IconIndex 8
			${Break}
		;playlists group	
		${Case} "CUE"
			StrCpy $IconIndex 9				
			${Break}
		${Case} "PLS"
			StrCpy $IconIndex 9				
			${Break}
		${Case} "M3U"
			StrCpy $IconIndex 9				
			${Break}	
		${Case} "M3U8"
			StrCpy $IconIndex 9				
			${Break}
		${Case} "PLC"
			StrCpy $IconIndex 9				
			${Break}			
		${Case} "UMX"
			StrCpy $IconIndex 9				
			${Break}
			
		${Default}
			StrCpy $IconIndex 4
			${Break}
	${EndSwitch}
  WriteRegStr HKCR "$ClassName\DefaultIcon" "" "$IconFile,$IconIndex"	
  EndMacro:
!macroend



; !macro UnRegisterExtension extenstion
  ; StrCpy $ClassName "AIMP.${extenstion}"
  ; ReadRegStr $0 HKCR ".${extenstion}" ""
  ; StrCmp $0	$ClassName 0 +3
  ; DeleteRegKey HKCR ".${extenstion}"
  ; DeleteRegKey HKCR "$ClassName"
; !macroend



;sections
Section "!${PRODUCT_NAME}" CORE
  SectionIn 1 2 3 RO
  StrCmp $gMode 1 0 NotgMode
  WriteINIStr $IniFile Advanced Directory $INSTDIR
  Goto EndSection
  NotgMode:
  ;this is required section so don't perfom reading from inifile
  StrCpy $ProfilePath "$INSTDIR\Data\Profile"
  IfSilent 0 NotSilent
  IfFileExists $IniFile 0 NotSilent
  ReadINIStr $R0 $IniFile Advanced Directory
  StrCmp $R0 "" NotSilent 0
  StrCpy $INSTDIR $R0	
  NotSilent:
  SetOutPath "$INSTDIR\"
  File /r "${pkgdir}\AIMP\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}"
	
  EndSection:
SectionEnd

Section "Отдельные настройки на каждого пользователя" MultiUser
	SectionIn 1 2 3
	;read/write section state
	!insertmacro ProcessSection "MultiUser"
	;if $r0 is 0 then exit section
	StrCmp $R0 0 EndSection 0
	;--------------section code----------------
	StrCpy $MultiUser 1
	;-------------------------------------------
	EndSection:
SectionEnd

;=========================================================================================================================
SectionGroup /e "Дополнения"
	Section "Скины" Skins
		SectionIn 1
		;read/write section state
		!insertmacro ProcessSection "Skins"
		;if $r0 is 0 then exit section
		StrCmp $R0 0 EndSection 0
		;--------------section code----------------		
		SetOutPath "$INSTDIR\Skins"
		File "${pkgdir}\AIMP\Skins\*.*"
		;-------------------------------------------
		EndSection:		
	SectionEnd

	Section "Иконки типов файлов" Icons
		SectionIn 1
		!insertmacro ProcessSection "Icons"
		;if $r0 is 0 then exit section
		StrCmp $R0 0 EndSection 0
		;--------------section code----------------			
		SetOutPath "$INSTDIR\Icons"
		File "${pkgdir}\AIMP\Icons\*.*"
		;-------------------------------------------
		EndSection:			
	SectionEnd
SectionGroupEnd	

;=========================================================================================================================
SectionGroup /e "Ярлыки"
	Section "В меню Пуск" StartMenu
		SectionIn 1 2
		!insertmacro ProcessSection "StartMenu"
		;if $r0 is 0 then exit section
		StrCmp $R0 0 EndSection 0
		;--------------section code----------------		
		SetShellVarContext all
		CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
		CreateShortCut  "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
		IfFileExists "$INSTDIR\AIMP2t.exe" 0 +2
		CreateShortCut  "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Advanced Tag Editor.lnk" "$INSTDIR\AIMP2t.exe"
		IfFileExists "$INSTDIR\AIMP2c.exe" 0 +2
		CreateShortCut  "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Converter.lnk" "$INSTDIR\AIMP2c.exe"
		IfFileExists "$INSTDIR\AIMP2r.exe" 0 +2
		CreateShortCut  "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Audio Recorder.lnk" "$INSTDIR\AIMP2r.exe"
		CreateShortCut  "$SMPROGRAMS\${PRODUCT_NAME}\Удалить ${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
		;-------------------------------------------
		EndSection:	
	SectionEnd
	Section "На рабочем столе" Desktop
		SectionIn 1
		!insertmacro ProcessSection "Desktop"
		;if $r0 is 0 then exit section
		StrCmp $R0 0 EndSection 0		
		;--------------section code----------------	
		SetShellVarContext all
		CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
		;-------------------------------------------
		EndSection:	
	SectionEnd
	Section "В панели быстрого запуска" QuickLaunch
		SectionIn 1
		!insertmacro ProcessSection "QuickLaunch"
		;if $r0 is 0 then exit section
		StrCmp $R0 0 EndSection 0		
		;--------------section code----------------	
		SetShellVarContext all
		CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
		;-------------------------------------------
		EndSection:	
	SectionEnd	
SectionGroupEnd	

;=========================================================================================================================
SectionGroup /e "Ассоциации файлов"

	Section "-SetupIconsVariables"
		StrCmp $gMode 1 NotgMode	
		;default icon file
		StrCpy $IconFileName "aimp2.dll"
		IfSilent 0 EndSection
			IfFileExists $IniFile 0 EndSection
			ReadINIStr $R0 $IniFile Advanced IconFileName
			IfFileExists "$INSTDIR\Icons\$R0" 0 EndSection
			StrCpy $IconFileName $R0
		EndSection:
			StrCpy $IconFile "$INSTDIR\Icons\$IconFileName"
			StrCpy $OpenCommand "$INSTDIR\AIMP2.exe $\"%1$\""
		NotgMode:	
	SectionEnd
	
	Section "Контекстое меню проводника" ContextMenu
		SectionIn 1 2
		;read/write section state
		!insertmacro ProcessSection "ContextMenu"
		;if $r0 is 0 then exit section
		StrCmp $R0 0 EndSection 0
		;--------------section code----------------		
		RegDLL  "$INSTDIR\System\aimp_shell.dll"
		EndSection:
	SectionEnd
	
	Section "AAC" aac
		SectionIn 1 2
		!insertmacro RegisterExtension "AAC"
	SectionEnd
	
	Section "ACS2"
		SectionIn 1 2
		!insertmacro RegisterExtension "ACS2"
	SectionEnd
	
	Section "AIF"
		SectionIn 1 2
		!insertmacro RegisterExtension "AIF"
	SectionEnd	
	
	Section "AIFF"
		SectionIn 1 2
		!insertmacro RegisterExtension "AIFF"
	SectionEnd		
	
	Section "APE"
		SectionIn 1 2
		!insertmacro RegisterExtension "APE"
	SectionEnd	

	Section "AUDIOCD"
		SectionIn 1 2
		!insertmacro RegisterExtension "AUDIOCD"
	SectionEnd		
	
	Section "CDA"
		SectionIn 1 2
		!insertmacro RegisterExtension "CDA"
	SectionEnd		

	Section "CUE"
		SectionIn 1 2
		!insertmacro RegisterExtension "CUE"
	SectionEnd

	Section "FLAC"
		SectionIn 1 2
		!insertmacro RegisterExtension "FLAC"
	SectionEnd	

	Section "IT"
		SectionIn 1 2
		!insertmacro RegisterExtension "IT"
	SectionEnd
	
	Section "M3U"
		SectionIn 1 2
		!insertmacro RegisterExtension "M3U"
	SectionEnd	
	
	Section "M3U8"
		SectionIn 1 2
		!insertmacro RegisterExtension "M3U8"
	SectionEnd	
	
	Section "MID"
		SectionIn 1 2
		!insertmacro RegisterExtension "MID"
	SectionEnd	

	Section "MO3"
		SectionIn 1 2
		!insertmacro RegisterExtension "MO3"
	SectionEnd	
	
	Section "MOD"
		SectionIn 1 2
		!insertmacro RegisterExtension "MOD"
	SectionEnd	

	Section "MP1"
		SectionIn 1 2
		!insertmacro RegisterExtension "MP1"
	SectionEnd

	Section "MP2"
		SectionIn 1 2
		!insertmacro RegisterExtension "MP2"
	SectionEnd	

	Section "MP3"
		SectionIn 1 2
		!insertmacro RegisterExtension "MP3"
	SectionEnd		

	Section "MPC"
		SectionIn 1 2
		!insertmacro RegisterExtension "MPC"
	SectionEnd

	Section "MTM"
		SectionIn 1 2
		!insertmacro RegisterExtension "MTM"
	SectionEnd

	Section "OGG"
		SectionIn 1 2
		!insertmacro RegisterExtension "OGG"
	SectionEnd

	Section "PLC"
		SectionIn 1 2
		!insertmacro RegisterExtension "PLC"
	SectionEnd

	Section "PLS"
		SectionIn 1 2
		!insertmacro RegisterExtension "PLS"
	SectionEnd

	Section "S3M"
		SectionIn 1 2
		!insertmacro RegisterExtension "S3M"
	SectionEnd

	Section "UMX"
		SectionIn 1 2
		!insertmacro RegisterExtension "UMX"
	SectionEnd	
	
	Section "WAV"
		SectionIn 1 2
		!insertmacro RegisterExtension "WAV"
	SectionEnd	
	
	Section "WMA"
		SectionIn 1 2
		!insertmacro RegisterExtension "WMA"
	SectionEnd	

	Section "WV"
		SectionIn 1 2
		!insertmacro RegisterExtension "WV"
	SectionEnd
	
	Section "XM"
		SectionIn 1 2
		!insertmacro RegisterExtension "XM"
	SectionEnd	
	Section "-RefreshIcons"
		SectionIn 1 2 3
		StrCmp $gMode 1 +2 0
		${RefreshShellIcons}
	SectionEnd
SectionGroupEnd	
;=========================================================================================================================
Section "-PostinstallProfileProcessing"
	;here we must set current user constats context
	StrCmp $gMode 1 NotgMode
	SetShellVarContext current

	;common INI settings
	CreateDirectory "$INSTDIR\DATA"
	WriteINIStr "$INSTDIR\DATA\AIMP.INI" System DefaultLang russian.lng
	WriteINIStr "$INSTDIR\DATA\AIMP.INI" System Version 2603
	
	
	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 "${pkgdir}\Aimp\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:	
	IfSilent 0 NotSilent
		IfFileExists $IniFile 0 NoIniFile
			ReadINIStr $R0 $IniFile Advanced SkinFile
			IfFileExists "$INSTDIR\Skins\$R0" 0 NoIniFile
			StrCpy $SkinFile $R0
		NoIniFile:
	WriteINIStr "$ProfilePath\AIMP2.INI" Skins DefaultSkin $SkinFile	;скин		
	
	NotSilent:
	WriteINIStr "$ProfilePath\AIMP2.INI" Skins ICL $IconFileName	;значки
	NotgMode:
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


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

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

Возможность указания пользовательской шкуры и библиотеки значков вынесена также в файл ответов. В файл ответов необходимо добавить(увы, пока вручную) три строки:
Код: Выделить весь код
[advanced]
SkinFile=Lagoon.acs2
IconFileName=aimp classic2.dll
Скрипт поддерживает упаковку аимпа с TOOLS и без, без необходимости его правки. Проверяется наличие соотвествующих файлов, и если их нет, ярлыки на инструменты просто не создаются.
Скрипт нуждается в доработке. Я хочу иметь возможность указывать шкуру и файл значков через генератор файла ответов. Также:
-в файле ответов пока нельзя указать папку, куда ставить программу, в режиме генератора она не сохраняется.
-при упаковке версии 2.60 галки, что плеер ассоциирован с файлами, не проставляются. Тем не менее, ассоциации проставляются корректно, файлы остаются за плеером.
-при наличии уже готового файла ответов, в режиме генератора, если вы НЕ выбираете компонент, а в файле ответов он присутсвует как выбранный, ВЫБОР НЕ БУДЕТ СБРОШЕН. Рекомендуется удалять старые файлы ответов перед запуском генератора.

ВНИМАНИЕ! Если вы запускали генератор файлом, к примеру AIMP2- 2.6.0.499 rc1.exe, а потом переименовали в AIMP2.exe, не забудьте переименовать и файл ответов из AIMP2- 2.6.0.499 rc1.ini в AIMP2.ini, иначе он не подцепится.

Скрипт будет дорабатываться, а код скрипта - оптимизироваться.
Сборка с TOOLS и файлом ответов, размер 6.3 метра(так, чтобы поиграться. Что в неё включать, а что нет - решу позднее, после плотного знакомства с новой версией.):http://files.mail.ru/VN8AD5

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


Последний раз редактировалось hb860, 11-09-2009 в 20:15. Причина: Дорабатываю скрипт

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:18, 08-09-2009 | #139


Аватара для hb860

Идиот


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

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


Цитата hb860:
-в файле ответов пока нельзя указать папку, куда ставить программу, в режиме генератора она не сохраняется. »
Вот это исправлено. НСИС, как оказалось, не понимает %systemdrive% и т.п. Так что пути в файле ответов абсолютные. Буду писать автозамену, как реализовать, пока не знаю. Собственно, не я один этим грешен, некоторые инсталлшилды тоже сохраняют абсолютные пути. Вобщем, возможность указать папку, отличную от Program files\aimp2, теперь есть.

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


Отправлено: 23:48, 10-09-2009 | #140



Компьютерный форум 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




 
Переход