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

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

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

Сообщение kotkovets »

Цитата kotkovets:



А чем плох ОБЫЧНЫЙ ярлык?
[архив].: NSIS - все вопросы :.




1. Полагал, что значок интернета должен сам отражаться на ярлыках url.

2. Браузер по умолчанию Opera.

3. Как обычно все сделал сложнее:



- создал интернет-иконку нейтрального вида, а далее:





!define PRODUCT_WEB_SITE "
http://www.xnview.com
"



!macro CreateInternetShortcut FILENAME URL ICONFILE ICONINDEX

WriteINIStr "${FILENAME}.url" "InternetShortcut" "URL" "${URL}"

WriteINIStr "${FILENAME}.url" "InternetShortcut" "IconFile" "${ICONFILE}"

WriteINIStr "${FILENAME}.url" "InternetShortcut" "IconIndex" "${ICONINDEX}"

!macroend



!insertmacro CreateInternetShortcut \

"$SMPROGRAMS\${PRODUCT_NAME}\Веб-сайт ${PRODUCT_NAME}" \

"${PRODUCT_WEB_SITE}" \

"$INSTDIR\url.ico" "0"

SectionEnd





Получилось здорово!
Аватара пользователя
wolkow70

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

Сообщение wolkow70 »

Ребята, помогите опять..

делаю инсталлятор XnView из скрипта hb860 вытянул такие строки. Собрал установщик, а ассоциации с файлами так и не происходят, они остаются за ACDSee.

В чем может быть дело?

Section "Ассоциация файлов" Sec06

;

!macro RegisterExtension extenstion ContentType PerceivedType ClassName DefaultIcon OpenCommand

WriteRegStr HKCR "${extenstion}" "" "${ClassName}"

WriteRegStr HKCR "${extenstion}" "PerceivedType" "${PerceivedType}"

WriteRegStr HKCR "${extenstion}" "Content Type" "${ContentType}"

WriteRegStr HKCR "${ClassName}\DefaultIcon" "" "${DefaultIcon}"

WriteRegStr HKCR "${ClassName}\shell\open\command" "" "${OpenCommand}"

!macroend

var /GLOBAL OpenCommand

StrCpy $OpenCommand "$\"$OUTDIR\${PRODUCT_NAME}.exe$\" $\"%1$\""

!insertmacro RegisterExtension ".jpg" "image/jpeg" "image" "XnView.jpg" "$OUTDIR\${PRODUCT_NAME}.exe,2" $OpenCommand

!insertmacro RegisterExtension ".bmp" "image/bmp" "image" "XnView.bmp" "$OUTDIR\${PRODUCT_NAME}.exe,2" $OpenCommand

!insertmacro RegisterExtension ".gif" "image/gif" "image" "XnView.gif" "$OUTDIR\${PRODUCT_NAME}.exe,3" $OpenCommand

!insertmacro RegisterExtension ".iff" "image/iff" "image" "XnView.iff" "$OUTDIR\${PRODUCT_NAME}.exe,4" $OpenCommand

!insertmacro RegisterExtension ".jpe" "image/jpeg" "image" "XnView.jpeg" "$OUTDIR\${PRODUCT_NAME}.exe,5" $OpenCommand

!insertmacro RegisterExtension ".jpeg" "image/jpeg" "image" "XnView.jpeg" "$OUTDIR\${PRODUCT_NAME}.exe,5" $OpenCommand

!insertmacro RegisterExtension ".jpg" "image/jpeg" "image" "XnView.jpeg" "$OUTDIR\${PRODUCT_NAME}.exe,5" $OpenCommand

!insertmacro RegisterExtension ".pcx" "image/pcx" "image" "XnView.pcx" "$OUTDIR\${PRODUCT_NAME}.exe,7" $OpenCommand

!insertmacro RegisterExtension ".png" "image/png" "image" "XnView.png" "$OUTDIR\${PRODUCT_NAME}.exe,8" $OpenCommand

!insertmacro RegisterExtension ".tga" "image/tga" "image" "XnView.tga" "$OUTDIR\${PRODUCT_NAME}.exe,9" $OpenCommand

!insertmacro RegisterExtension ".tif" "image/tif" "image" "XnView.tif" "$OUTDIR\${PRODUCT_NAME}.exe,10" $OpenCommand

!insertmacro RegisterExtension ".emf" "image/emf" "image" "XnView.emf" "$OUTDIR\${PRODUCT_NAME}.exe,11" $OpenCommand

!insertmacro RegisterExtension ".wmf" "image/wmf" "image" "XnView.wmf" "$OUTDIR\${PRODUCT_NAME}.exe,12" $OpenCommand

!insertmacro RegisterExtension ".pic" "image/pic" "image" "XnView.Image" "$OUTDIR\${PRODUCT_NAME}.exe,1" $OpenCommand

!insertmacro RegisterExtension ".dib" "image/dib" "image" "XnView.Image" "$OUTDIR\${PRODUCT_NAME}.exe,1" $OpenCommand

WriteRegStr HKCR "Applications\xnview.exe\shell\open\command" "" $OpenCommand

${RefreshShellIcons}

SectionEnd
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

wolkow70,

А справка для чего? где это вы видели, чтобы макрокоманды в секции прописывались, если уж вытянули чужой макрос - вера, что ли не позволяет посмотреть скрипт, где и в каком месте макросы нарисованы и как они работают? и для чего они нужны то?

Примерно можно упрощенно сделать вот так:



Код:

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

!include "FileFunc.nsh"
!define Register "!insertmacro RegisterExtension"
!macro RegisterExtension extenstion ClassName DefaultIcon OpenCommand
  WriteRegStr HKLM "SOFTWARE\Classes\${extenstion}" "" "${ClassName}"
  WriteRegStr HKLM "SOFTWARE\Classes\${ClassName}\DefaultIcon" "" "${DefaultIcon}"
  WriteRegStr HKLM "SOFTWARE\Classes\${ClassName}\shell\open\command" "" "${OpenCommand}"
!macroend
Section Main
 SetOutPath "$INSTDIR\XnView" #помещает путь распаковки в $OUTDIR
${Register} ".bmp" "XnView.bmp" "$OUTDIR\XnView.exe,2" "$\"$OUTDIR\XnView.exe$\" $\"%1$\""
#---#
${RefreshShellIcons}
SectionEnd
/*
  получается в макросе вот такая запись структуры:
  WriteRegStr HKLM "SOFTWARE\Classes\.bmp" "" "XnView.bmp"
  WriteRegStr HKLM "SOFTWARE\Classes\XnView.bmp\DefaultIcon" "" "$OUTDIR\XnView.exe,2"
  WriteRegStr HKLM "SOFTWARE\Classes\.bmp\shell\open\command" "" "$\"$OUTDIR\XnView.exe$\" $\"%1$\""
*/
Аватара пользователя
XCV

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

Сообщение XCV »

Цитата kotkovets:



попроще можно жешь...

Код:

CreateDirectory "$INSTDIR\config\BACKUP\"

CopyFiles /silent "$INSTDIR\config\*" "$INSTDIR\config\BACKUP"
[архив].: NSIS - все вопросы :.




Не ваша ли рекомендация?



И мне не надо всю папку копировать, а выборочно папки из нее. Поэтому попробовал так.



Убрал \* и нормально стало копироваться.



CopyFiles /silent "$LOCALAPPDATA\Opera\Opera\cache" "$DOCUMENTS\Opera Backup\"

CopyFiles /silent "$LOCALAPPDATA\Opera\Opera\mail" "$DOCUMENTS\Opera Backup\"
Аватара пользователя
XCV

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

Сообщение XCV »

wolkow70,

исходя из-за каких задач...

CreateDirectory "$INSTDIR\config\BACKUP"

CopyFiles /silent "$INSTDIR\config\*" "$INSTDIR\config\BACKUP"


одно и тоже но... разницу видете - я думаю, что вы не видете

CreateDirectory "$INSTDIR\config\BACKUP"

CopyFiles /silent "$INSTDIR\config" "$INSTDIR\config\BACKUP"
Аватара пользователя
wolkow70

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

Сообщение wolkow70 »

Цитата kotkovets:



wolkow70,

исходя из-за каких задач...

CreateDirectory "$INSTDIR\config\BACKUP"

CopyFiles /silent "$INSTDIR\config\*" "$INSTDIR\config\BACKUP"

одно и тоже но... разницу видете - я думаю, что вы не видете

CreateDirectory "$INSTDIR\config\BACKUP"

CopyFiles /silent "$INSTDIR\config" "$INSTDIR\config\BACKUP"
[архив].: NSIS - все вопросы :.




Разница в наличии \*

Вот я и написал, что убрал и все заработало.

А что касается задач, то про эту же задачу и шла речь.

Насколько я помню \* означает, что папка будет копироваться со всем вложенным.

Оно и копировалось, только почему-то дублировалось - копировались папки с файлами, и еще файлы отдельно....
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

Прошу прощения за возможный флуд.

Меня интересует реальный пример заказной страницы с использованием MUI2 и nsDialog.

Страница должна содержать две ${NSD_CreateCheckBox} с поддержкой флагов и памятью,

для выбора ярлыков на Рабочий стол и Быстрый запуск и ниже две радио кнопки для выбора текущего или всех пользователей.

И возможно ли это реализовать без дополнительных секций?




Так же, хотелось бы увидеть имитацию страницы директории в nsDialog с нормальной кнопкой Обзор...

За ранее благодарен! Изображение
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

Цитата sawe:



Так же, хотелось бы увидеть имитацию страницы директории в nsDialog с нормальной кнопкой Обзор...
[архив].: NSIS - все вопросы :.




Все есть и примеры в папке NSIS\Examples\nsDialogs и читать тут обязательно NSIS\Docs\nsDialogs\Readme.html

В общем пример для всех.


тыц




Код:

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

!include "MUI2.nsh"
!include "FileFunc.nsh"
!insertmacro MUI_PAGE_WELCOME
Page custom fnCustomShow fnCustomLeave
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "nsdSetup.exe"
ShowInstDetails show
InstallDir "$PROGRAMFILES"
Var Text
Var Dialog
Var Radio1
Var Radio2
Var Check1
Var Check2
Var CheckBox1
Var CheckBox2
Var RadioButton1
Var RadioButton2
Var BrowseButton
Function fnCustomShow
    !insertmacro MUI_HEADER_TEXT "O-па!" \
     "Вот оно чё Михалыч!"
  nsDialogs::Create 1018
      Pop $Dialog
/******************************************************************************/
      ${NSD_CreateCheckBox} 0u 0u 100u 10u "Ярлык на рабочий стол"
      Pop $CheckBox1
      ${NSD_OnClick} $CheckBox1 CheckBox1 ;обработка события на клик
      ${If} $Check1 == 1
         ${NSD_SetState} $CheckBox1 1
      ${ElseIf} $Check1 == 0
         ${NSD_SetState} $CheckBox1 0
      ${Else}
         ${NSD_SetState} $CheckBox1 1
      ${EndIf}
/******************************************************************************/
      ${NSD_CreateCheckBox} 0u 15u 140u 10u "Ярлык на панель быстрого запуска"
      Pop $CheckBox2
      ${NSD_OnClick} $CheckBox2 CheckBox2
      ${If} $Check2 == 1
         ${NSD_SetState} $CheckBox2 1
      ${ElseIf} $Check2 == 0
         ${NSD_SetState} $CheckBox2 0
      ${Else}
         ${NSD_SetState} $CheckBox2 0
      ${EndIf}
/******************************************************************************/
      ${NSD_CreateRadioButton} 192u 0u 120u 10u "Для текущего пользователя"
      Pop $RadioButton1
      ${NSD_OnClick} $RadioButton1 RadioButton1
/******************************************************************************/
      ${NSD_CreateRadioButton} 192u 15u 120u 10u "Для всех пользователей"
      Pop $RadioButton2
      ${NSD_OnClick} $RadioButton2 RadioButton2
/******************************************************************************/
      ${If} $Radio1 == 1
      ${OrIf} $Radio2 == 0
           ${NSD_SetState} $RadioButton1 1
           ${NSD_SetState} $RadioButton2 0
      ${ElseIf} $Radio1 == 0
      ${OrIf} $Radio2 == 1
           ${NSD_SetState} $RadioButton1 0
           ${NSD_SetState} $RadioButton2 1
      ${Else}
           ${NSD_SetState} $RadioButton1 1
           ${NSD_SetState} $RadioButton2 0
      ${EndIf}
      ${NSD_CreateBrowseButton} 250u 70u 50u 13u "Обзор..."
      Pop $BrowseButton
      ${NSD_OnClick} $BrowseButton BrowseButton
/******************************************************************************/
      ${NSD_CreateText} 0u 70u 80% 13u "$INSTDIR"
      Pop $Text
      System::Call `shlwapi::SHAutoComplete(i$Text,i1)`
      ${NSD_OnChange} $Text DirChange
/******************************************************************************/
  nsDialogs::Show
FunctionEnd
/******************************************************************************/
Function CheckBox1
  Pop $CheckBox1
  ${NSD_GetState} $CheckBox1 $Check1
FunctionEnd
Function CheckBox2
  Pop $CheckBox2
  ${NSD_GetState} $CheckBox2 $Check2
FunctionEnd
Function RadioButton1
  Pop $RadioButton1
  ${NSD_GetState} $RadioButton1 $Radio1
  ${NSD_GetState} $RadioButton2 $Radio2
FunctionEnd
Function RadioButton2
  Pop $RadioButton2
  ${NSD_GetState} $RadioButton1 $Radio1
  ${NSD_GetState} $RadioButton2 $Radio2
FunctionEnd
/******************************************************************************/
Function BrowseButton
  Pop $BrowseButton
  nsDialogs::SelectFolderDialog "Выберите папку..." "$INSTDIR"
  Pop $INSTDIR
  ${IfNot} $INSTDIR == "error"
     ${NSD_SetText} $Text "$INSTDIR"
  ${EndIf}
FunctionEnd
/******************************************************************************/
Function DirChange
	Pop $Text
	GetDlgItem $0 $HWNDPARENT 1
	${NSD_GetText} $Text `$INSTDIR`
	${GetRoot} $INSTDIR $1
	${If} $INSTDIR == ""
	${OrIf} $1 == ""
		EnableWindow $0 0
	${Else}
		EnableWindow $0 1
	${EndIf}
FunctionEnd
/******************************************************************************/
Function fnCustomLeave
  ${NSD_GetText} $Text "$INSTDIR"
  ${If} $INSTDIR == ""
     Abort
  ${EndIf}
  ${NSD_GetState} $CheckBox1 $Check1
  ${NSD_GetState} $CheckBox2 $Check2
  ${NSD_GetState} $RadioButton1 $Radio1
  ${NSD_GetState} $RadioButton2 $Radio2
FunctionEnd
/******************************************************************************/
/******************************************************************************/
Section Test
   DetailPrint "$$INSTDIR = $INSTDIR"
   DetailPrint ""
/**********/
  ${If} $Check1 = 1
      DetailPrint '"Ярлык на рабочий стол"'
      DetailPrint ""
  ${EndIf}
/**********/
  ${If} $Check2 = 1
      DetailPrint '"Ярлык на панель быстрого запуска"'
      DetailPrint ""
  ${EndIf}
/**********/
  ${If} $Radio1 = 1
      DetailPrint '"Для текущего пользователя"'
      DetailPrint ""
  ${EndIf}
/**********/
  ${If} $Radio2 = 1
      DetailPrint '"Для всех пользователей"'
      DetailPrint ""
  ${EndIf}
SectionEnd
Аватара пользователя
XCV

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

Сообщение XCV »

Цитата:



В общем пример для всех.



Большое человеческое спасибо!

Но я имел ввиду две разных (отдельных) страницы, но и этого с головой хватит как основа, там разберёмся.

NSIS\Docs\nsDialogs\Readme.html
- мне пока плохо даётся освоить его.

Как то я у вас спрашивал на счёт редактора форм для nsDialogs, вы тогда ответили, что такого нет.

За чем обманывать наивных людей, недавно мне попался
NSIS Dialog Designer
,

но к сожалению он заточен только под Unicode, но это не беда.
Аватара пользователя
a--e

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

Сообщение a--e »

Цитата sawe:



Как то я у вас спрашивал на счёт редактора форм для nsDialogs, вы тогда ответили, что такого нет.
[архив].: NSIS - все вопросы :.




хех, а кто обманывал, первичный релиз 18.04.2011, а когда вы спрашивали?

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

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