[архив].: NSIS - все вопросы :.

Ответить
 • Просмотры: 42
Аватара пользователя
Krinkels

Re: [архив].: NSIS - все вопросы :.

Сообщение Krinkels »

Цитата diakov:



Так правильно будет?
[архив].: NSIS - все вопросы :.




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

Вот посмотрите как у меня в скрипте Winamp сделано:

Winamp 5.xx - автоустановка
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Цитата wolkow70:



Для каждого расширения лучше отдельную секцию делать.
[архив].: NSIS - все вопросы :.




мне не подходит сколько чекбоксов не влезит))))



Изображение




Цитата wolkow70:



Потом меньше проблем с деинсталляцией будет.
[архив].: NSIS - все вопросы :.




Операционная система Windows перестает считать тип файла ассоциированным, если в реестре отсутствует описание приложения-обработчика. Таким образом, применительно к вышеуказанному примеру, достаточно удалить раздел HKLM\Software\Classes\Aimp.File для снятия всех ассоциация при удалении Aimp. Можно эту операцию оформить вызовом команды DeleteRegKey в секции деисталлятора:





Код:

Код: Выделить всё

Section Uninstall 
    ... 
    DeleteRegKey HKLM "Software\Classes\Aimp.File" 
    ... 
    SectionEnd
Аватара пользователя
wolkow70

Re: [архив].: NSIS - все вопросы :.

Сообщение wolkow70 »

Цитата diakov:



и хочу чтобы был чекбокс Установить ассоциации для аудио файлов, тоесть пользователь мог выбрать ассоциировать или просто установить аимп...
[архив].: NSIS - все вопросы :.




Макрос предполагает аргумент, в качестве передаваемого расширения файла для ассоциации с приложением


читать дальше »




Код:

Код: Выделить всё

!macro RegisterExtension extenstion 
WriteRegStr HKLM "Software\Classes\.${extenstion}" "" "Aimp.File" 
WriteRegStr HKLM "Software\Classes\Aimp.File" "" "Aimp Media File" 
WriteRegStr HKLM "Software\Classes\Aimp.File\DefaultIcon" "" "$INSTDIR\Aimp.exe,1" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell" "" "Play" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play" "" "&Play in Aimp" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play\command" "" "$\"$INSTDIR\Aimp.exe$\" $\"%1$\"" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\open\command" "" "$\"$INSTDIR\Aimp.exe$\" $\"%1$\"" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark" "" "Add to Aipm's &Bookmark list" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark\command" "" "$\"$INSTDIR\Aimp.exe$\"/BOOKMARK $\"%1$\"" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue" "" "&Enqueue in Aipm" 
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue\command" "" "$\"$INSTDIR\Aimp.exe$\"/ADD $\"%1$\"" 
; ставим приложением по умолчанию для текущего пользователя 
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" 
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "Aimp.File" 
!macroend

И запуск макроса:



Код:

Код: Выделить всё

!insertmacro RegisterExtension mp3
!insertmacro RegisterExtension acc
;и так далее






Цитата wolkow70:



Все скопом регистрировать не лучший вариант. Для каждого расширения лучше отдельную секцию делать.
[архив].: NSIS - все вопросы :.




wolkow70 прав, но хозяин барин, хочет все - пожалуйста Изображение
Аватара пользователя
wolkow70

Re: [архив].: NSIS - все вопросы :.

Сообщение wolkow70 »

Попробовал, так не пашет.

IfFileExists "$APPDATA\Opera\Opera\*.ini *.adr *.xml *.dat" 0 no_backup
Аватара пользователя
wolkow70

Re: [архив].: NSIS - все вопросы :.

Сообщение wolkow70 »

diakov, Правильно, пишете запуск макроса, столько, сколько вам нужно ассоциаций с связанным приложением


Цитата diakov:



мне не подходит сколько чекбоксов не влезит))))
[архив].: NSIS - все вопросы :.




Всегда можно нарисовать еще свои странички, но это будет слишком сложно для вас.
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

wolkow70, Слишком сложно и много лишнего...

А если у меня будет профиль в папке программы и профиль в $APPDATA и $LOCALAPPDATA ???
Аватара пользователя
wolkow70

Re: [архив].: NSIS - все вопросы :.

Сообщение wolkow70 »

Цитата diakov:



Операционная система Windows перестает считать тип файла ассоциированным, если в реестре отсутствует описание приложения-обработчика. Таким образом, применительно к вышеуказанному примеру, достаточно удалить раздел HKLM\Software\Classes\Aimp.File для снятия всех ассоциация при удалении Aimp. Можно эту операцию оформить вызовом команды DeleteRegKey в секции деисталлятора
[архив].: NSIS - все вопросы :.






Но сами то расширения файлов при этом останутся по умолчанию закрепленными за отсутствующим приложением, а это мусор в реестре, который в конце концов обманывает и саму операционную систему.

Считаю, что нужно удалять значения расширений по умолчанию, причем в обеих разделах реестра.

Кроме того, в windows 7 есть еще значения ключей, передающие системе сведения о программах, связанных с определенными расширениями.
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

wolkow70,



Код:

Код: Выделить всё

CreateDirectory "$DOCUMENTS\Opera Backup\AppData\Opera"
CreateDirectory "$DOCUMENTS\Opera Backup\LocalAppData\Opera"
CreateDirectory "$DOCUMENTS\Opera Backup\Opera\profile"

Излишне, команда Copy[/i] сама создаст нужные каталоги.
Аватара пользователя
tisole

Re: [архив].: NSIS - все вопросы :.

Сообщение tisole »

Цитата diakov:



изменить иконку для зарегистрированных файлов?
[архив].: NSIS - все вопросы :.




После применения всех регистраций,обновляем кэш иконок, пишем:



Код:

Код: Выделить всё

${RefreshShellIcons}

Этот макрос описан в FileFunc.nsh, естественно если этот хедер не подключен к телу скрипта, то в самом начале пишем:



Код:

Код: Выделить всё

!include "FileFunc.nsh"
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

Что то я не правильно делаю смотри:





Код:

Код: Выделить всё

!macro RegisterExtension extenstion
  SetShellVarContext all
WriteRegStr HKLM "Software\Classes\.mp3" "" "Aimp.File"
WriteRegStr HKLM "Software\Classes\Aimp.File" "" "Aimp Media File"
WriteRegStr HKLM "Software\Classes\Aimp.File\DefaultIcon" "" "$INSTDIR\AIMP2.exe,1"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell" "" "Play"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play" "" "&Play in Aimp"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Play\command" "" "$\"$INSTDIR\AIMP2.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\open\command" "" "$\"$INSTDIR\AIMP2.exe$\" $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark" "" "Add to Aipm's &Bookmark list"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\ListBookmark\command" "" "$\"$INSTDIR\AIMP2.exe$\"/BOOKMARK $\"%1$\""
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue" "" "&Enqueue in Aipm"
WriteRegStr HKLM "Software\Classes\Aimp.File\shell\Enqueue\command" "" "$\"$INSTDIR\AIMP2.exe$\"/ADD $\"%1$\""
; ставим приложением по умолчанию для текущего пользователя
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice" "Progid" "Aimp.File"
${RefreshShellIcons}
!macroend

А иконки стают вот такими



Изображение
Ответить

Вернуться в «Автоматическая установка приложений»