Войти

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


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

hb860
25-11-2008, 09:44
Такого вопроса не было. При тихой установке ярлык на рабочем столе не создается. Чтобы он создавался, необходимо модифиировать скрипт, заменив
Section "На рабочем столе"
SectionIn 1
IfSilent +3
SetShellVarContext all
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
SectionEnd
на
Section "На рабочем столе"
SectionIn 1
SetShellVarContext all
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\aimp2.exe"
SectionEnd
После этого пересобрать плеер. Я добавлю управление ярлыками аргументами командной строки в следующей версии скрипта
Внимательно прочитайте этот пост!
Возможности текущей версии:
1. С ключом /S ставится всё, кроме значка на рабочем столе »

Kurunir
30-11-2008, 15:52
AIMP 2.51.323 уже вышел... что то быстро стали делать обновления

hb860
30-11-2008, 21:54
Обновил шапку/сборку до версии 2.51.323

hb860
16-12-2008, 15:26
Что нового в AIMP v2.51 Build 328?
Исправлено: после принудительного завершения работы программы, она не запускалась до перезагрузки
Исправлено: плейлист не синхронизировался со списком библиотеки при запуске файла на проигрывание
Исправлено: падение шафл-менеджера в некоторых случаях при переключении воспроизведения между плейлистами
Исправлено: неправильно определялась длительность некоторых WAV-файлов
Исправлено: сбрасывался кэш оценок песен при изменении каких-либо настроек в плеере
Исправлены мелкие ошибки и недоработки

Новая сборка в шапке.

Kurunir
31-12-2008, 16:27
уже вышла AIMP v2.51 Build 330... что то клепают быстро

hb860
05-01-2009, 20:32
Итак, уважаемые пользователи, после долгого молчания выхожу на связь
Оптимизирован код скрипта, добавлена возможность управления ярлыками из коммандной строки
Теперь ключи командной работают только при ТИХОЙ установке(давно хотел это сделать). Вобщем, все подробности в шапке

hb860
08-01-2009, 17:36
Я вот тут думаю... а не дофига ли ключей ?
Может, попробовать написать по типу K-Lite ?
Типа
aimp2-xxx.exe -MakeUnattend
Создается aimp2-xxx.ini
А потом при aimp2-xxx.exe /S подцепается. Если не находится - ставится по-умолчанию.
Кто что думает ?

zilexa
22-01-2009, 00:44
Could someone translate the first post (doesn't have to be very good or complete) to English?
This program is becoming known outside Russia.

I want to do silent install with skin, icons, file associations and custom settings (profile) and Dutch as the default language (all other languages do not have to be installed).

How do I use the .nsi file?

Комсомолец
22-01-2009, 18:33
hb860, думаешь, получится? это ж не inno. Переводи человеку шапку. вишь говорит-аимп не только в России знают. :) Ну и заодно поучи))

hb860
22-01-2009, 20:49
zilexa, well, i try :)
How to make your own setup:
1. Make next folders on your drive C: - c:\Aimp\Player, c:\Aimp\skins\, c:\aimp\Icons, c:\Aimp\profile
2. Copy to c:\Aimp\Player files from original untouched setup. You can use 7-zip ( http://www.7-zip.org ) archiver to extract them from original distro.
3. Copy into c:\aimp\skins\ your favorite skins
4. Copy into c:\aimp\icons\ your favorite icons
5. This item is not mandatory. Copy into c:\Aimp\profile content of %programfiles%\aimp\data\profile(do this if you have "one user" configuration, in other case you have to copy content of %APPDATA%\AIMP).
5. Compile .nsi file using NSIS compiler( http://nsis.sf.net ). You will get Aimp2-<current version>.exe file.

For Dutch Language by default replace this code
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 ;язык по умолчанию для таггера
with next code
WriteINIStr "$ProfilePath\AIMP2.INI" System LangFile dutch.lng
WriteINIStr "$ProfilePath\AIMP2r.INI" System LangFile dutch.lng
WriteINIStr "$ProfilePath\AIMP2c.INI" System LangFile dutch.lng
WriteINIStr "$ProfilePath\AIMP2t.INI" System LangFile dutch.lng

Also you have to know what if you decide to include your own settings as described at item 5, they will kept except skin & icons specified from command line

Typical usage:
1. Simple silent installation: AIMP2-2.5.0.303.exe /S
2. With custom skin by default: AIMP2-2.5.0.303.exe /S /SKIN=WMP11.acs2
3. With custom skin and icons library: AIMP2-2.5.0.303.exe /S /SKIN=WMP11.acs2 /ICONS=XP.dll
4. With custom skin and icons library, what contains spaces in their names: AIMP2-2.5.0.303.exe /S /SKIN="WMP11 Glow.acs2" /ICONS="XP Blue.dll"
5. Multiuser configuration of player: AIMP2-2.5.0.303.exe /S /SKIN="WMP11 Glow.acs2" /ICONS="XP Blue.dll" /MULTIUSER=1
6. Command line shortcuts management keys:
AIMP2-2.5.0.303.exe /S /shortcut=101 - shortcuts in start menu and on desktop
AIMP2-2.5.0.303.exe /S /shortcut=011 - shortcuts in start menu and quick launch
AIMP2-2.5.0.303.exe /S /shortcut=110 -shortcuts on desktop and quick launch
AIMP2-2.5.0.303.exe /S /shortcut=000 - no any shortcuts
Remember what /shortcut=1 means /shortcut=001,not 100

Комсомолец, уверен что получится. И при чём тут инно или не инно ? Или ты считаешь что у NSIS функционал слабее ?

Комсомолец
23-01-2009, 06:27
hb860, я не считаю так. просто у тебя спросил-ты лучше это дело изучил. Хорошо перевел))

Habetdin
10-06-2009, 17:50
hb860, будет ли скрипт для AIMP v2.60.xxx?

hb860
11-06-2009, 08:32
Habetdin, его можно перепаковать старым. Новый никак не доделаю, а просто циферки в скрипте поменять может каждый, смысла не вижу этого делать.

Habetdin
11-06-2009, 10:26
hb860, там не только "циферки" - там утилит нет

volk1234
11-06-2009, 12:32
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
и т.д.
не претендую на правоту, но так не режет глаз...

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

XCV
28-08-2009, 17:12
hb860 Тема умерла? или будет продолжение?

hb860
28-08-2009, 21:01
будет. обещаю.

hb860
08-09-2009, 09:18
Итак, после продолжительного молчания, представляю новый скрипт:
;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 и без, без необходимости его правки. Проверяется наличие соотвествующих файлов, и если их нет, ярлыки на инструменты просто не создаются.
:beta: Скрипт нуждается в доработке. Я хочу иметь возможность указывать шкуру и файл значков через генератор файла ответов. Также:
-в файле ответов пока нельзя указать папку, куда ставить программу, в режиме генератора она не сохраняется.
-при упаковке версии 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

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




© OSzone.net 2001-2012