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

Ответить
 • Просмотры: 8
Аватара пользователя
K.A.V.

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

Сообщение K.A.V. »

Может кто-нибудь подсказать почему не работает вот это в деинсталляторе?



!define MUI_UNFINISHPAGE_NOAUTOCLOSE



И если так не правильно , то как тогда правильно сделать?

Мне нужна возможность в деталях просматривать процесс деинсталяции.
Аватара пользователя
wolkow70

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

Сообщение wolkow70 »

Цитата wolkow70:



Может кто-нибудь подсказать почему не работает вот это в деинсталляторе?



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




Выяснил сам. Оказывается, что работает, нужно только в секции деинсталлятора убрать



SetAutoClose true
Аватара пользователя
dix75

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

Сообщение dix75 »

Что здесь не так



Код:

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

${StrRep} $folder $folder "/" "\"



Код:

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

!insertmacro: macro "FUNCTION_STRING_StrRep" requires 0 parameter(s), passed 4!

Решено. Спасибо
Аватара пользователя
dix75

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

Сообщение dix75 »

Цитата wolkow70:



Товарищи, подскажите как в

MB_USERICON подставить другую иконку, а не инсталлятора?
[архив].: NSIS - все вопросы :.




Элементарно....



Код:

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

${MessageBoxEx}  "путь к файлу ресурсу, где иконка" "текст надписи" "текст заголовка" "стиль сообщения" "индекс иконки" "код возврата"


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




Код:

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

!include "MUI2.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
OutFile "msgbox-setup.exe"
!ifndef MB_OK
  !define MB_OK                       0x00000000
  !define MB_OKCANCEL                 0x00000001
  !define MB_ABORTRETRYIGNORE         0x00000002
  !define MB_YESNOCANCEL              0x00000003
  !define MB_YESNO                    0x00000004
  !define MB_RETRYCANCEL              0x00000005
  !define MB_CANCELTRYCONTINUE        0x00000006
  !define MB_ICONHAND                 0x00000010
  !define MB_ICONQUESTION             0x00000020
  !define MB_ICONEXCLAMATION          0x00000030
  !define MB_ICONASTERISK             0x00000040
  !define MB_USERICON                 0x00000080
  !define MB_ICONWARNING              ${MB_ICONEXCLAMATION}
  !define MB_ICONERROR                ${MB_ICONHAND}
  !define MB_ICONINFORMATION          ${MB_ICONASTERISK}
  !define MB_ICONSTOP                 ${MB_ICONHAND}
  !define MB_DEFBUTTON1               0x00000000
  !define MB_DEFBUTTON2               0x00000100
  !define MB_DEFBUTTON3               0x00000200
  !define MB_DEFBUTTON4               0x00000300
  !define MB_APPLMODAL                0x00000000
  !define MB_SYSTEMMODAL              0x00001000
  !define MB_TASKMODAL                0x00002000
  !define MB_HELP                     0x00004000
  !define MB_NOFOCUS                  0x00008000
  !define MB_SETFOREGROUND            0x00010000
  !define MB_DEFAULT_DESKTOP_ONLY     0x00020000
  !define MB_TOPMOST                  0x00040000
  !define MB_RIGHT                    0x00080000
  !define MB_RTLREADING               0x00100000
  !define IDABORT    3
  !define IDCANCEL   2
  !define IDCONTINUE 11
  !define IDIGNORE   5
  !define IDNO       7
  !define IDOK       1
  !define IDRETRY    4
  !define IDTRYAGAIN 10
  !define IDYES      6
!endif
!define MessageBoxEx "!insertmacro macro_MessageBoxIndirect"
!macro macro_MessageBoxIndirect Library lpszText lpszCaption dwStyle lpszIcon ExitCode
  Push `${lpszText}`
  Push `${lpszCaption}`
  Push `${Library}`
  Push `${dwStyle}`
  Push `${lpszIcon}`
  System::Store Sr1r2r3r4r5
  System::Call 'kernel32::LoadLibrary(tr3)i.r0'
  StrCmp $0 0 +5
  System::Call '*(&l4, i$HWNDPARENT, ir0, tr5, tr4, i$2|${MB_USERICON}, ir1, i,k,i)i.r5'
  System::Call 'user32::MessageBoxIndirect(ir5) i.s'
  System::Call "kernel32::FreeLibrary(ir0)"
  System::Free $5
  StrCmp $0 0 0 +2
  Push "error"
  System::Store L
  Pop `${ExitCode}`
!macroend
Section
  ${MessageBoxEx} "$SYSDIR\shell32.dll" "lpszText" "lpszCaption" "${MB_YESNOCANCEL}" "194" $1
  ${If} $1 == ${IDYES}
      MessageBox MB_OK "Нажали кнопку `Да`"
  ${ElseIf} $1 == ${IDNO}
      MessageBox MB_OK "Нажали кнопку `Heт`"
  ${ElseIf} $1 == ${IDCANCEL}
      MessageBox MB_OK "Нажали кнопку `Отмена`"
  ${Else}
      MessageBox MB_OK "$$1 = $1"
  ${EndIf}
SectionEnd
Аватара пользователя
K.A.V.

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

Сообщение K.A.V. »

Цитата kotkovets:



Элементарно....
[архив].: NSIS - все вопросы :.




Кому как. Мне с этим вряд ли разобраться.



Мне надо в сообщении типа этого просто иконку другую указать.



MessageBox MB_YESNO|MB_USERICON|MB_TOPMOST "Внимание!$\n\

$\nЕсли у вас открыты окна браузеров Internet Explorer, Mozilla Firefox,$\nOpera, Google Chrome закройте их перед продолжением установки. \

$\nВ противном случае, они будут закрыты принудительно! \

$\nЭто избавит от конфликтов интеграции программы. \

$\nПродолжить установку ${PRODUCT_NAME} ?" /SD IDYES IDYES continue IDNO close

;

close:

Abort

continue:
Аватара пользователя
dix75

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

Сообщение dix75 »

Цитата wolkow70:



Кому как. Мне с этим вряд ли разобраться.

Мне надо в сообщении типа этого просто иконку другую указать.
[архив].: NSIS - все вопросы :.




ну так и указываете, хоть с исполняемого файла оперы.



Код:

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

  ${IfNot} ${Silent}
     ${MessageBoxEx} "$SYSDIR\shell32.dll" "lpszText" "lpszCaption" "${MB_YESNO}|${MB_TOPMOST}" "512" $1
  ${Else}
     StrCpy $1 ${IDYES}
  ${EndIf}
  ${If} $1 == ${IDYES}
      MessageBox MB_OK "Нажали кнопку `Да`"
  ${ElseIf} $1 == ${IDNO}
      MessageBox MB_OK "Нажали кнопку `Heт`"
  ${EndIf}
Аватара пользователя
K.A.V.

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

Сообщение K.A.V. »

Товарищи, может кто подскажет как на собственную страницу поместить просмотр текстового документа? Чего-то не получается:

Мне нужно, чтобы этот текстовый файл отображался с прокруткой.

И еще заголовок страницы поменять нужно, а то отображается от следующей страницы.



В функции вот что:





Код:

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

Function fnCustomInit 
nsDialogs::Create 1018 
Pop $Dialog 
${NSD_CreateLabel} 0 0 100% 12u "Вы можете ознакомиться с информацией об устанавливаемой программе"
	Pop $Label
${NSD_CreateText} 0 13u 100% -13u "${pkgdir}\FlylinkDC++\readme_ru-RU.rtf"
	Pop $Text
nsDialogs::Show 
FunctionEnd
Аватара пользователя
dix75

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

Сообщение dix75 »

Цитата wolkow70:



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




Вот так:


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




Код:

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

!include "MUI2.nsh"
!include "FileFunc.nsh"
 Page custom  Help
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_LANGUAGE "Russian"
 InstallDir "$PROGRAMFILES\LICENSE"
 OutFile "Basic.exe"
 Var TextPage
 Var Dialog
 Var Label
!define LoadRTF "!insertmacro macro_LoadRTFfunc"
!define __NSD_RichEdit_CLASS "RichEdit20A"
!define __NSD_RichEdit_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${ES_AUTOHSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}
!define __NSD_RichEdit_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE}
!insertmacro __NSD_DefineControl RichEdit
!macro macro_LoadRTFfunc file hwnd
    Push `${file}`
    Push ${hwnd}
    System::Store Sr0r1
    SendMessage $0 1077 0 0x7fffffff
    System::Get "(i, i.R0, i.R1, i.R2) iss"
    Pop $2
    System::Call "*(i 0, i 0, k r2) i .r3"
    System::Call "user32::SendMessage(ir0, i1097, i2, ir3)i.s"
    Pop $4
    Push $4
    ClearErrors
    FileOpen $1 "$1" r
    ${Do}
        Pop $0
        ${IfThen} "$0" != "$4" ${|}${Break}${|}
        System::Call "kernel32::ReadFile(ir1, iR0, iR1, iR2, i0)"
        Push 0
        System::Call "$2"
    ${Loop}
    FileClose $1
    System::Free $3
    System::Free $2
    System::Store L
!macroend
Function Help
   nsDialogs::Create 1018
   Pop $Dialog
   ${NSD_CreateLabel} 0 0 100% 12u "Вы можете ознакомиться с информацией об устанавливаемой программе"
   Pop $Label
   ${NSD_CreateRichEdit} 0 13u 100% 100% ""
   Pop $TextPage
   ${LoadRTF} "$EXEDIR\test.rtf" $TextPage
   nsDialogs::Show
 FunctionEnd
 Section "Main"
 SectionEnd
Аватара пользователя
K.A.V.

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

Сообщение K.A.V. »

kotkovets, Работает вариант, но не думал, что так сложно. Исходил из предположения, что в NSIS есть механизм чтения RTF - файлов (ведь текст лицензии он прокручивает).
Аватара пользователя
dix75

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

Сообщение dix75 »

K.A.V.,

Блин неправильно задание написал.

Имеется JSON строка вида



{"hello":"bla-bla"}

Как изменить bla-bla на что нить другое, известно только слово "hello"

"bla-bla" неизвестно.

такой кусок может располагаться в любом месте строки кол-во пробелов между : неограничено или может вообще отсутствовать.

Поэтому

${WordReplace} не подходит, да практически все что просмотрел.



Regex того что нужно



Код:

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

/^.*\"hello\"\s*:\s*\"([^\"])+\"$/
Ответить

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