Войти

Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 [108] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

Begin2Fly
15-07-2017, 18:18
кстати как можно подняться на папку выше чем $EXEDIR ? и присвоить этот путь переменной »
http://nsis.sourceforge.net/Get_parent_directory

DeDyJIR
01-08-2017, 21:53
Разъясните. Перешел на 3.02 с 3.0, появилась небольшая проблема. Раньше после запуска инсталятора выводилось диалоговое окно выбора языка установки, сейчас его нет, но если установку производить на ОС с английским интерфейсом язык меняется и все отрабатывает согласно коду под англоязык. Это нововведения или необходимо доработать?

Теперь для появления диалогового окна необходимо дописывать следующее:

;--------------------------------
;Interface Settings

!define MUI_ABORTWARNING

;Show all languages, despite user's codepage
!define MUI_LANGDLL_ALLLANGUAGES

Serg866
13-08-2017, 09:31
Привет
Вопрос по nsDialogs
Создаю страничку с чекбоксом, как добавить чекбокс разобрался, теперь нужно обеспечить взаимодействие с флажком. Например, хотелось бы, чтобы кнопка "Далее" становилась активна только когда пользователь поставит флажок в чекбоксе. Может есть примеры с такой функцией? Спасибо!

Flix
13-08-2017, 10:45
Например, хотелось бы, чтобы кнопка "Далее" становилась активна только когда пользователь поставит флажок в чекбоксе. Может есть примеры с такой функцией? »
Посмотрите в разделе NsDialogs FAQ (http://nsis.sourceforge.net/NsDialogs_FAQ) на домашней страничке NSIS. В первом примере "How to Enable/Disable a control" (Как Включить/Отключить элемент управления) показан как раз ваш случай.

Serg866
13-08-2017, 16:34
Там показана манипуляция с созданной кнопкой. А как сделать так же со стандартной кнопкой ("Далее")?

Flix
13-08-2017, 18:52
А как сделать так же со стандартной кнопкой ("Далее")? »
Вот так, например: :cool:
!include "nsDialogs.nsh"
!include "winmessages.nsh"
!include "logiclib.nsh"
OutFile "test.exe"

Page Custom pre
Page license
Page instfiles

var dialog
var hwnd

Function pre
nsDialogs::Create 1018
Pop $dialog
${NSD_CreateCheckbox} 0 0 50% 6% "Enable button Next"
Pop $hwnd
${NSD_OnClick} $hwnd EnDisableButton

GetDlgItem $0 $HWNDPARENT 1 # get handle next/install button
EnableWindow $0 0 # disable next/install button

nsDialogs::Show
FunctionEnd

Function EnDisableButton
Pop $hwnd
GetDlgItem $1 $HWNDPARENT 1
${NSD_GetState} $hwnd $0
${If} $0 == 1
EnableWindow $1 1
${Else}
EnableWindow $1 0
${EndIf}
FunctionEnd

Section ""
SectionEnd

ZVSRus
27-10-2017, 17:05
Всем доброго времени суток. Подскажите, как в скрипте (для создания портативной программы) прописать для лаунчера запуск программы из разных папок

на 32 битной системе по пути App\papka32\proga.exe

на 64 битной системе по пути App\papka64\proga.exe

MKN
27-10-2017, 18:42
ZVSRus,
Наверное, как в справке и в сотне примеров в теме :

!include "x64.nsh"
!include "LogicLib.nsh"

${If} ${RunningX64}
ExecWait "путь\App\papka64\proga.exe"
${Else}
ExecWait "путь\App\papka32\proga.exe"
${EndIf}

ZVSRus
27-10-2017, 19:22
MKN,
Спасибо, я в данной теме пару дней.
И последний штрих, поможете прикрутить к данной функции ваш код (ненужное за комментировать)



Function Launch
SetOutPath "$EXEDIR\${APPDIR}"
${GetParameters} $0
ExecWait `"$EXEDIR\${APPDIR}\${APPEXE}"${APPSWITCH} $0`

!include "x64.nsh"
!include "LogicLib.nsh"

${If} ${RunningX64}
ExecWait "путь\App\papka64\proga.exe"
${Else}
ExecWait "путь\App\papka32\proga.exe"
${EndIf}

ReadEnvStr $0 USERNAME
WriteINIStr "$EXEDIR\Data\${APP}Portable.ini" "${APP}Portable" "UserName" "$0"
WriteINIStr "$EXEDIR\Data\${APP}Portable.ini" "${APP}Portable" "GoodExit" "true"
FunctionEnd

Salmo
15-11-2017, 19:59
Подскажите, уважаемые, кто делал такую штуку или знает как сделать.... У меня в фоне работает консольная утилита. Иногда ее надо срочно закрыть. Нужна на экран плавающая кнопка стоп (цветная, с иконкой, 20х20 мм), нажав на которую можно закрыть (убить) процесс. Запускает консольную утилиту ЕХЕ_шник на NSIS (процесс без окна) и ждет ее завершения. Кнопку можно запаковать в отдельный ЕХЕ файл. Я очень давно собирал инсталляторы и навык потерял.... :sorry:

Iska
15-11-2017, 20:27
Salmo, не надо извращений в виде плавающих по экрану кнопок. Скрипт AutoIt/AutoHotKey из нескольких строк, закрывающий указанный процесс по имени исполняемого файла по нажатию комбинации горячих клавиш.

MKN
21-11-2017, 11:47
Нужна на экран плавающая кнопка стоп »
Как вариант, (комплект - код с примером и нужными плагинами) - см. прикреплённый файл
На примере убиения процесса виндового калькулятора (используется плагин nsProcess).
(Кнопка с фейсом поверх окон, можно перетаскивать, с маленькой кнопочкой для закрытия, с иконкой на кнопке 32x32)
Ессно размеры и пр косметику можно изменять по вкусу...

http://s019.radikal.ru/i618/1711/bf/93fcb6ed7eae.jpg

ZVSRus
21-11-2017, 20:20
Всем доброго времени суток!
Подскажите какая константа соответствует дате и времени суток?
Если точнее, как прописать в ini файл дату и время компиляции?

MKN
22-11-2017, 11:05
как прописать в ini файл дату и время компиляции? »
Как вариант-пример записи в уже имеющийся файл myinifile.ini :
(если файла нет - ессно сначала создать)

!define /date MyTIMESTAMP "%Y-%m-%d-%H-%M-%S"
OutFile "Test-${MyTIMESTAMP}.exe"

;http://nsis.sourceforge.net/mediawiki/index.php?title=Reference/WriteINIStr
Section
WriteINIStr $EXEDIR\myinifile.ini section1 myinifile ${MyTIMESTAMP}
WriteINIStr $EXEDIR\myinifile.ini section1 myinifileelse "ещё запись в section1"
WriteINIStr $EXEDIR\myinifile.ini section2 nsis ${MyTIMESTAMP}
SectionEnd

gamma
04-12-2017, 17:50
Добрый вечер!

Подскажите в чем проблема?



Name "test"
OutFile "Test.exe"
RequestExecutionLevel user
InstallDir "$APPDATA\1"

Icon "icon.ico"

SilentInstall silent

Section
SetOutPath $INSTDIR

File "test.txt"

Exec '"$INSTDIR\test.txt"'

SectionEnd



Компиляция проходит успешно.Файлы распакуются в директорию appdata, нужно открыть файл txt. Ничего не выходит. Пробовал через "FileOpen" Такая же фигня.

MKN
05-12-2017, 11:34
gamma,
Используй ExecShell
Например :
ExecShell "" "$EXEDIR\test.txt"

Alex S
04-01-2018, 01:47
Мужики, помогите разобраться... Второй день вожусь. Сделал две кастомные странички, на первой есть чекбокс выбора создания ярлыка в меню Пуск, на второй кнопка выбора папки в меню Пуск. Не могу заставить вторую страницу считывать состояние отметки чекбокса и в зависимости от отметки активировать/деактивировать кнопку...
!define PRODUCT_NAME "MyProg"
!define PRODUCT_VERSION "1.0"

SetCompressor lzma
!include "MUI2.nsh"
!include "nsDialogs.nsh"

Var CustPage1
Var DirRequest_Txt
Var DirRequest_Btn

var CustPage2
Var Check
var CheckBox1

!insertmacro MUI_PAGE_WELCOME
Page custom fnCustPage1
Page custom fnCustPage2

!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\MyProg"
ShowInstDetails show
ShowUnInstDetails show

;======================-Первая страница-=========================;
Function fnCustPage1
nsDialogs::Create 1018
Pop $CustPage1
!insertmacro MUI_HEADER_TEXT "..." "..."
${NSD_CreateCheckBox} 10u 90u 100u 12u "Ярлык в меню «Пуск»"
Pop $CheckBox1
${NSD_SetState} $CheckBox1 1
;${NSD_OnClick} $CheckBox1 fnCheckBox ; Такой вариант не работает
nsDialogs::Show
FunctionEnd
;======================-Вторая страница-=========================;
Function fnCustPage2
nsDialogs::Create 1018
Pop $CustPage2
!insertmacro MUI_HEADER_TEXT "..." "..."

${NSD_CreateText} 10.09u 86.38u 224.53u 13.31u "C:\ProgramData\Microsoft\Windows\Start Menu\Programs"
Pop $DirRequest_Txt

${NSD_CreateButton} 240.94u 86.38u 50.49u 13.31u "Обзор..."
Pop $DirRequest_Btn
${NSD_OnClick} $DirRequest_Btn fnc_DirRequest_Click
;Call fnCheckBox ; Такой вариант тоже не работает
nsDialogs::Show
FunctionEnd
;===========================================================;
Function fnCheckBox
Pop $CheckBox1
${NSD_GetState} $CheckBox1 $Check
${If} $Check = 1
EnableWindow $DirRequest_Txt 0
EnableWindow $DirRequest_Btn 0
${ElseIf} $Check = 0
EnableWindow $DirRequest_Txt 1
EnableWindow $DirRequest_Btn 1
${EndIf}
FunctionEnd
;===========================================================;
Function fnc_DirRequest_Click
Pop $R0
${If} $R0 == $DirRequest_Btn
${NSD_GetText} $DirRequest_Txt $R0
nsDialogs::SelectFolderDialog /NOUNLOAD "" "$R0"
Pop $R0
${If} "$R0" != "error"
${NSD_SetText} $DirRequest_Txt "$R0"
${EndIf}
${EndIf}
FunctionEnd
;===========================================================;
Section "" SEC01
SectionEnd

MKN
04-01-2018, 12:38
Alex S,
Навскидку, можно как то так (если я правильно понял суть...), но без активации/деактивации кнопки :


!define PRODUCT_NAME "MyProg"
!define PRODUCT_VERSION "1.0"

;SetCompressor lzma
!include "MUI2.nsh"
!include "nsDialogs.nsh"

Var CustPage1
Var DirRequest_Txt
Var DirRequest_Btn

var CustPage2
var CheckBox1

!insertmacro MUI_PAGE_WELCOME
Page custom fnCustPage1
Page custom fnCustPage2

!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Test_setup.exe"
InstallDir "$PROGRAMFILES\MyProg"
ShowInstDetails show
ShowUnInstDetails show

;======================-Первая страница-=========================;
Function fnCustPage1
nsDialogs::Create 1018
Pop $CustPage1
!insertmacro MUI_HEADER_TEXT "..." "..."
${NSD_CreateCheckBox} 10u 90u 100u 12u "Ярлык в меню «Пуск»"
Pop $CheckBox1
${NSD_SetState} $CheckBox1 1
${NSD_OnClick} $CheckBox1 fnCheckBox
nsDialogs::Show
FunctionEnd

Function fnCheckBox
;Pop $CheckBox1
${NSD_GetState} $CheckBox1 $9
FunctionEnd

;======================-Вторая страница-=========================;
Function fnCustPage2
${If} $9 == "0"
nsDialogs::Create 1018
Pop $CustPage2
MessageBox MB_OK "выбираем путь для ярлыка"
!insertmacro MUI_HEADER_TEXT "..." "..."

${NSD_CreateText} 10.09u 86.38u 224.53u 13.31u "C:\ProgramData\Microsoft\Windows\Start Menu\Programs"
Pop $DirRequest_Txt

${NSD_CreateButton} 240.94u 86.38u 50.49u 13.31u "Обзор..."
Pop $DirRequest_Btn
${NSD_OnClick} $DirRequest_Btn fnc_DirRequest_Click
nsDialogs::Show
${Else}
MessageBox MB_OK "код для ярлыка в меню «Пуск»"
${EndIf}
FunctionEnd
;===========================================================;
Function fnc_DirRequest_Click
Pop $R0
${If} $R0 == $DirRequest_Btn
${NSD_GetText} $DirRequest_Txt $R0
nsDialogs::SelectFolderDialog /NOUNLOAD "" "$R0"
Pop $R0
${If} "$R0" != "error"
${NSD_SetText} $DirRequest_Txt "$R0"
${EndIf}
${EndIf}
FunctionEnd
;===========================================================;
Section "" SEC01
SectionEnd

Flix
04-01-2018, 13:31
Alex S,
Вот вам еще один пример. :)
!define PRODUCT_NAME "MyProg"
!define PRODUCT_VERSION "1.0"

SetCompressor lzma
!include "MUI2.nsh"
!include "nsDialogs.nsh"

Var CustPage1
Var DirRequest_Txt
Var DirRequest_Btn
Var DirApp

Var CustPage2
Var Check
var CheckBox1

!insertmacro MUI_PAGE_WELCOME
Page custom fnCustPage1 fnCheckBox
Page custom fnCustPage2 DirRequest

!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
ShowInstDetails show
ShowUnInstDetails show

;======================-Первая страница-=========================;
Function fnCustPage1
nsDialogs::Create 1018
Pop $CustPage1
${If} $CustPage1 == error
Abort
${EndIf}

!insertmacro MUI_HEADER_TEXT "..." "..."
${NSD_CreateCheckBox} 10.09u 86.38u 100u 12u "Ярлык в меню «Пуск»"
Pop $CheckBox1
${NSD_Check} $CheckBox1

${If} $Check == ${BST_UNCHECKED}
${NSD_UnCheck} $CheckBox1
${EndIf}

nsDialogs::Show
FunctionEnd

;======================-Вторая страница-=========================;
Function fnCustPage2
nsDialogs::Create 1018
Pop $CustPage2
${If} $CustPage2 == error
Abort
${EndIf}

!insertmacro MUI_HEADER_TEXT "..." "..."

${NSD_CreateText} 10.09u 86.38u 224.53u 13.31u $SMPROGRAMS
Pop $DirRequest_Txt

${NSD_CreateButton} 240.94u 86.38u 50.49u 13.31u "Обзор..."
Pop $DirRequest_Btn
${NSD_OnClick} $DirRequest_Btn fnc_DirRequest_Click

${If} $Check == ${BST_UNCHECKED}
EnableWindow $DirRequest_Txt 0
EnableWindow $DirRequest_Btn 0
${EndIf}

nsDialogs::Show
FunctionEnd

;===========================================================;
Function fnCheckBox
${NSD_GetState} $CheckBox1 $Check
FunctionEnd

;===========================================================;
Function fnc_DirRequest_Click
${NSD_GetText} $DirRequest_Txt $DirApp
nsDialogs::SelectFolderDialog "Выберите папку или создайте новую:" $DirApp
Pop $DirApp
${If} $DirApp != error
${NSD_SetText} $DirRequest_Txt $DirApp
${EndIf}
FunctionEnd

;===========================================================;
Function DirRequest
${NSD_GetText} $DirRequest_Txt $DirApp
FunctionEnd

;===========================================================;
Section "" SEC01
SectionEnd

RedCatX
04-01-2018, 15:13
Всем привет! Помогите, пожалуйста мне с такой проблемой: есть установщик состоящий из двух страниц - MUI_PAGE_WELCOME и MUI_PAGE_INSTFILES, и нужно чтобы этот установщик, при запуске с определённым ключом, сразу же показывал страницу MUI_PAGE_INSTFILES, начинал установку, и закрывался после завершения. То есть как бы Silent-режим, не требующий никаких действий от пользователя, но с отображением прогресса. Заранее спасибо!




© OSzone.net 2001-2012