Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Alex S,
На винампе подсказали :
OutFile Test.exe
!include LogicLib.nsh
!define /IfNDef CC_ANYCOLOR 0x00000100
!define /IfNDef CC_FULLOPEN 0x00000002
Section
System::Call '*(&l4, p $hWndParent, p0, i0, @r0, i ${CC_ANYCOLOR}|${CC_FULLOPEN}, p, p0, p0)p.r1'
System::Call 'COMDLG32::ChooseColorA(pr1)i.r0'
${If} $0 <> 0
System::Call '*$1(i,p,p,i.r0)'
IntFmt $0 "%.6X" $0
MessageBox MB_OK $0
${EndIf}
System::Free $1
SectionEnd
MKN, большое спасибо за помощь...
Выходной формат цвета здесь "Hex". Сейчас кинулся, а моя программа его не воспринимает никак. Для нее цвета должны записываться в кодировке "decimal". Вот такая вот фигня. Теперь буду искать способ получения результата в нужной кодировке. Если сам не разберусь, загляну на винамп, попрошу автора кода, может он поможет... Еще раз спасибо...
Alex S,
Используй результат до конвертирования
System::Call '*$1(i,p,p,i.r0)'
MessageBox MB_OK $0
и примени к нему соотв. математику...
Alex S,
Или можно из HEX получить RGB с помощью, например, известного Colors.nsh. Но это как то не очень красиво... :)
(можно и без хидера (.nsh) - просто поместить нужные макросы и назначения-определения (!define) в основной код скрипта. )
!include Colors.nsh
!include LogicLib.nsh
!define /IfNDef CC_ANYCOLOR 0x00000100
!define /IfNDef CC_FULLOPEN 0x00000002
OutFile "colors.exe"
ShowInstDetails show
Section
System::Call '*(&l4, p $hWndParent, p0, i0, @r0, i ${CC_ANYCOLOR}|${CC_FULLOPEN}, p, p0, p0)p.r1'
System::Call 'COMDLG32::ChooseColorA(pr1)i.r0'
${If} $0 <> 0
System::Call '*$1(i,p,p,i.r0)'
IntFmt $0 "%.6X" $0
MessageBox MB_OK $0
StrCpy $9 $0
${EndIf}
System::Free $1
${GetRvalueX} $0 "$9"
${GetGvalueX} $1 "$9"
${GetBvalueX} $2 "$9"
DetailPrint "Hex: $9 -> Red=$0; Green=$1; Blue=$2"
SectionEnd
Честно говоря я мыслил в этом же направлении. Во время поиска вариантов нарвался на формулу преобразования rgb в decimal ((RRR*1)+(GGG*256)+(BBB*65536)). Теперь буду пробовать всё имеющееся собрать воедино...
MKN, спасибо тебе за помощь... Уважуха...
Думаю, что вопрос можно считать закрытым. Вот конечный результат:
!include Colors.nsh
!include LogicLib.nsh
!define /IfNDef CC_ANYCOLOR 0x00000100
!define /IfNDef CC_FULLOPEN 0x00000002
OutFile "colors.exe"
ShowInstDetails show
Section
System::Call '*(&l4, p $hWndParent, p0, i0, @r0, i ${CC_ANYCOLOR}|${CC_FULLOPEN}, p, p0, p0)p.r1'
System::Call 'COMDLG32::ChooseColorA(pr1)i.r0'
${If} $0 <> 0
System::Call '*$1(i,p,p,i.r0)'
IntFmt $0 "%.6X" $0
StrCpy $9 $0
${EndIf}
System::Free $1
${GetRvalueX} $0 "$9"
${GetGvalueX} $1 "$9"
${GetBvalueX} $2 "$9"
#HexToDecimal((RRR*1)+(GGG*256)+(BBB*65536))
IntOp $R3 $0 * 1
IntOp $R4 $1 * 256
IntOp $R5 $2 * 65536
IntOp $R6 $R3 + $R4
IntOp $R7 $R6 + $R5
MessageBox MB_OK " Hex: $9 $\n RGB: $0,$1,$2 $\n Decimal: $R7"
SectionEnd
Kopejkin
11-02-2025, 23:58
Вопрос тупой, наверное, но не могу сообразить, в чем причина.
Есть мой старый сценарий, с помощью которого был создан необходимый инсталлятор. Возникла потребность обновить этот инсталлятор.
Компилятор почему-то стал запинаться на этой фразе, а именно на имени с пробелом: вместо одного параметра, он видит два. Проблема в имени с пробелом. Если убрать пробел, ошибка исчезает.
!insertmacro VPatchFile "genpat\Pro.pat" "$INSTDIR\super puper-3.exe" "$INSTDIR\temporaryfile.exe"
Чего ему нужно? Может это связано с недавней переустановкой системы (Win10x64) и софта? Так раньше на этом же железе, системе и софте все нормально работало. Пробовал NSIS 3.05 и 3.08.
Kopejkin,
А если поэксперементировать с одинарными кавычками и не брать в кавычки один из параметров ?
Типа : nsExec::ExecToStack 'CMD.exe /C if 1==1 "c:\path with spaces\app.exe" param1 "par am 2"'
Alex S,
Хмм... А не занимались ли мы ерундой с конвертированием ?
Из функции ведь значения получаются как раз в decimal... Ничего конвертировать вообще не надо...
RGB сбило с толку... :) Но для общего развития было полезно...
System::Call '*$1(i,p,p,i.r0)'
MessageBox MB_OK $0 ;decimal
Компилятор почему-то стал запинаться на этой фразе, а именно на имени с пробелом: вместо одного параметра, он видит два. Проблема в имени с пробелом. Если убрать пробел, ошибка исчезает.
!insertmacro VPatchFile "genpat\Pro.pat" "$INSTDIR\super puper-3.exe" "$INSTDIR\temporaryfile.exe" »
Kopejkin, а в какой версии компилятора был собран тот инсталлятор? :cool:
В файле VPatchLib.nsh заключи переменные путей, которые заносятся в стек, в двойные кавычки.
Строки 16-17
Push "${SOURCEFILE}"
Push "${TEMPFILE}"
Сохрани изменения в файле.
:smirk:
Kopejkin
13-02-2025, 00:29
...поэксперементировать с одинарными кавычками... »
Это пробовал в первую очередь.
Строки 16-17...»
Спасибо, все заработало!!! :good:
Для таких :lamer: , как я, это нужно, наверное, в FAQ добавить.
P.S. Инсталлятор был создан в октябре 2020 года. У меня сохранено две версии NSIS 3.05 - оригинальная и русифицированная от Leserg (wylek.ru). В последней и был создан тот инсталлятор. Специально посмотрел содержимое VPatchLib.nsh. В русифицированной версии в строках 16-17 есть кавычки, в оригинальной версии кавычек нет. В оригинальной версии NSIS 3.08 кавычек тоже нет. Вероятно, с тех пор в моих сценариях не встречалось имен файлов с пробелами в макросах VPatch, поэтому и пробемы не возникало.
Еще раз спасибо!
Kopejkin
31-03-2025, 13:06
Сделал простенький сценарий для резервного копирования папки сохранений программы.
Программа создает сохранения на протяжении всего времени своей работы.
Все хорошо работает, но есть один досадный нюанс.
Предусмотрено, если выйти из программы, создание резервных копий прекращается и открывается папка сохранений.
Но! Если интервал создания резервных копий сделать достаточно большим (мне нужно 10 минут), после выхода из программы приходится ждать завершения этого временнОго периода, что очень не удобно.
Как сделать, чтобы выход из программы прерывал таймер отсчета времени? Не могу сообразить, что нужно сделать.
Unicode true
!include "MUI2.nsh"
!include "Logiclib.nsh"
!include "ProcessFunc.nsh"
!include "FileFunc.nsh"
Var datetime
Var BackupDir
Var SourseDir
Name "SomeAPP Saver"
OutFile "SomeAPP.Saver.exe"
InstallDir "D:\SomeAPP\"
ShowInstDetails show
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
RequestExecutionLevel admin
!macro backupLoop
Loop:
${If} ${ProcessExists} "SomeAPP.exe"
; дата в формате YYYY-MM-DD_HH-MM
${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
StrCpy $datetime "$0-$1-$2_$4-$5"
; Создание папки с меткой даты
StrCpy $BackupDir "$LOCALAPPDATA\SomeAPP\Saved\$datetime_SomeAPPSaved"
CreateDirectory $BackupDir
; Создание резервной копии папки 'SomeAPPSaved' в родительской папке
StrCpy $SourseDir "$LOCALAPPDATA\SomeAPP\Saved\SomeAPPSaved"
CopyFiles /SILENT "$SourseDir" "$BackupDir"
Sleep 60000 ; 1 минута интервал повтора резервирования
${Else}
Goto done
${EndIf}
Goto Loop
done:
!macroend
Section
Exec "$INSTDIR\SomeAPP.exe"
${If} ${ProcessExists} "SomeAPP.exe"
!insertmacro backupLoop
Goto done1
${Else}
done1:
ExecShell "open" "$LOCALAPPDATA\SomeAPP\Saved"
${EndIf}
Quit
SectionEnd
Function .onVerifyInstDir
IfFileExists "$INSTDIR\SomeAPP.exe" PathGood
Abort
PathGood:
FunctionEnd
Как сделать, чтобы выход из программы прерывал таймер отсчета времени? »
Ну на команде Sleep 10мин код просто в паузе, динамики нет. Самое простое введите циклическую проверку наличия процесса вашей программы во время паузы (динамической) 10 мин. При отсутствии процесса отсчет времени прекратится и код отработает дальше. В этом случае возможна незначительная утечка памяти, не знаю, не проверял. Код вместо Sleep 10мин:
StrCpy $0 10
next:
Sleep 60000 ; 1 мин
${FindProcessName} "Моя Программа" $1
StrCmp $1 "1" 0 +3
IntOp $0 $0 - 1
StrCmp $0 0 0 next
Kopejkin
05-04-2025, 20:39
Спасибо, Salmo. Не сразу сообразил, как это работает. Буду играться интервалами и отсчетами.
Kopejkin, Код простой, но есть недостаток. Если завершение программы произойдет в момент минутной паузы, то пока она длится, код дальше отрабатывать не будет. Есть решение с применением библиотеки ProcessFunc.nsh, написанной маэстро kotkovets :up Смотрите в справочнике по NSIS в шапке темы. В разделе "Работа с процессами" в подпункте "Ожидание завершения запущенного процесса заданное время" - ${ProcessWait} "process.exe" "time" $var. В "time" впишите свои 10 минут и макрос будет мгновенно отлавливать завершение процесса вашей программы и в отработке кода никаких пауз не будет. Библиотека написана давно и я не знаю, совместима ли она с вашей версией компилятора. Я 6 лет не был на форуме и стал"дремуч" в этой теме :lamer:
Kopejkin
06-04-2025, 11:12
Я тоже редко что-то новое (для себя) делаю в NSIS. Немного изменил числовые параметры вашего примера. Меня все устраивает и ждать ничего не нужно. В итоге я имею отслеживание запущенного процесса во время отсчета таймера и отображение обратного отсчета таймера над прогресбаром.
https://images2.imgbox.com/22/45/b8qIqEiL_o.png
Unicode true
!include "MUI2.nsh"
!include "Logiclib.nsh"
!include "ProcessFunc.nsh"
!include "FileFunc.nsh"
Var datetime
Var BackupDir
Var SourseDir
Name "SomeAPP Saver"
OutFile "SomeAPP.Saver.exe"
InstallDir "D:\SomeAPP\"
ShowInstDetails show
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
RequestExecutionLevel admin
!macro backupLoop
Loop:
${If} ${ProcessExists} "SomeAPP.exe"
; дата и текущее значение времени в формате ГГГГ ММ ДД ДН ЧЧ ММ СС
${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
; MessageBox MB_OK|MB_ICONEXCLAMATION "$0 $1 $2 $3 $4 $5 $6"
; дата в формате YYYY-MM-DD_HH-MM для имени папки
StrCpy $datetime "$2-$1-$0_$4-$5"
; Создание папки с меткой даты текущего времени
StrCpy $BackupDir "$LOCALAPPDATA\SomeAPP\Saved\$datetime_SomeAPPSaved"
CreateDirectory $BackupDir
; Создание резервной копии папки 'SomeAPPSaved' в родительской папке
StrCpy $SourseDir "$LOCALAPPDATA\SomeAPP\Saved\SomeAPPSaved\*"
CopyFiles /SILENT "$SourseDir" "$BackupDir"
; Код Salmo вместо Sleep 600000 - 10 минут интервал повтора резервирования
StrCpy $7 600 ; количество отсчетов Sleep
next:
Sleep 1000 ; интервал отсчета 1 сек.
${FindProcessName} "SomeAPP.exe" $8
StrCmp $8 "1" 0 skip
IntOp $7 $7 - 1
; Обратный отсчет таймера над прогресбаром
SetDetailsPrint textonly
DetailPrint "До создания следующей резервной копии осталось $7 сек..."
SetDetailsPrint listonly
StrCmp $7 0 0 next
skip:
${Else}
Goto done
${EndIf}
Goto Loop
done:
!macroend
Section
Exec "$INSTDIR\SomeAPP.exe"
${If} ${ProcessExists} "SomeAPP.exe"
!insertmacro backupLoop
Goto done1
${Else}
done1:
ExecShell "open" "$LOCALAPPDATA\SomeAPP\Saved"
${EndIf}
Quit
SectionEnd
Function .onVerifyInstDir
IfFileExists "$INSTDIR\SomeAPP.exe" PathGood
Abort
PathGood:
FunctionEnd
Меня все устраивает »
Если устраивает, ну и хорошо. Успехов в творчестве!
Kopejkin
06-04-2025, 20:37
Когда-то MKN публиковал код, который позволял использовать BMP-картинку на стандартных страничках установщика.
Также было указано, что странички можно использовать по выбору.
У меня не получается использовать только две странички: PAGE_DIRECTORY и PAGE_INSTFILES. Код работает только если дополнительно есть страничка PAGE_FINISH. Без нее не хочет компилироваться:
Function: "DirectoryPageShow"
Синтаксис: FindWindow $(user_var: handle output) WindowClass [WindowTitle] [Window_Parent] [Child_After]
Ошибка в сценарии "D:\INSTALL_TEST\State Of Decay 2\bgbitmap-mkn2.nsi", строка 124 -- сборка прервана
Может знает кто, как победить?
!include MUI.nsh
!include WinMessages.nsh
;size 497x314
!define BITMAP_FILE bg.bmp
Name "Background Bitmap"
OutFile "bgbitmap.exe"
InstallDir "$TEMP"
ShowInstDetails show
!define MUI_COMPONENTSPAGE_NODESC
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_CUSTOMFUNCTION_GUIINIT MyGUIInit
!define LR_LOADFROMFILE 0x0010
!define LR_CREATEDIBSECTION 0x2000
!define IMAGE_BITMAP 0
!define SS_BITMAP 0x0000000E
!define WS_CHILD 0x40000000
!define WS_VISIBLE 0x10000000
!define HWND_TOP 0
!define SWP_NOSIZE 0x0001
!define SWP_NOMOVE 0x0002
!define IDC_BITMAP 1500
!define stRECT "(i, i, i, i) i"
Var hBitmap
!define MUI_PAGE_CUSTOMFUNCTION_SHOW WelcomePageShow
!insertmacro MUI_PAGE_WELCOME
;!define MUI_PAGE_CUSTOMFUNCTION_SHOW LicensePageShow
;!insertmacro MUI_PAGE_LICENSE bgbitmap.nsi
!define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryPageShow
!insertmacro MUI_PAGE_DIRECTORY
!define MUI_PAGE_CUSTOMFUNCTION_SHOW ComponentsPageShow
!insertmacro MUI_PAGE_COMPONENTS
!define MUI_PAGE_CUSTOMFUNCTION_SHOW InstFilesPageShow
!insertmacro MUI_PAGE_INSTFILES
!define MUI_PAGE_CUSTOMFUNCTION_SHOW FinishPageShow
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English
; Destroy a window.
!macro DestroyWindow HWND IDC
GetDlgItem $R0 ${HWND} ${IDC}
System::Call `user32::DestroyWindow(i R0)`
!macroend
; Give window transparent background.
!macro SetTransparent HWND IDC
GetDlgItem $R0 ${HWND} ${IDC}
SetCtlColors $R0 0xFFFFFF transparent
!macroend
; Refresh window.
!macro RefreshWindow HWND IDC
GetDlgItem $R0 ${HWND} ${IDC}
ShowWindow $R0 ${SW_HIDE}
ShowWindow $R0 ${SW_SHOW}
!macroend
Function MyGUIInit
InitPluginsDir
ReserveFile `${BITMAP_FILE}`
File `/ONAME=$PLUGINSDIR\bg.bmp` `${BITMAP_FILE}`
; Получение параметров родительского окна
System::Call `*${stRECT} .R0`
System::Call `user32::GetClientRect(i $HWNDPARENT, i R0)`
System::Call `*$R0${stRECT} (, , .R1, .R2)`
System::Free $R0
; Создание нового окна и помещение в него изображения
System::Call `kernel32::GetModuleHandle(i 0) i.R3`
System::Call `user32::CreateWindowEx(i 0, t "STATIC", t "", i ${SS_BITMAP}|${WS_CHILD}|${WS_VISIBLE}, i 0, i 0, i R1, i R2, i $HWNDPARENT, i ${IDC_BITMAP}, i R3, i 0) i.R1`
System::Call `user32::SetWindowPos(i R1, i ${HWND_TOP}, i 0, i 0, i 0, i 0, i ${SWP_NOSIZE}|${SWP_NOMOVE})`
System::Call `user32::LoadImage(i 0, t "$PLUGINSDIR\bg.bmp", i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_CREATEDIBSECTION}|${LR_LOADFROMFILE}) i.s`
Pop $hBitmap
SendMessage $R1 ${STM_SETIMAGE} ${IMAGE_BITMAP} $hBitmap
; Установка прозрачности фона
!insertmacro SetTransparent $HWNDPARENT 3
!insertmacro SetTransparent $HWNDPARENT 1
!insertmacro SetTransparent $HWNDPARENT 2
!insertmacro SetTransparent $HWNDPARENT 1034
!insertmacro SetTransparent $HWNDPARENT 1037
!insertmacro SetTransparent $HWNDPARENT 1038
;Удаление не нужных контролов (элементов управления)
!insertmacro DestroyWindow $HWNDPARENT 1256
!insertmacro DestroyWindow $HWNDPARENT 1028
!insertmacro DestroyWindow $HWNDPARENT 1039
FunctionEnd
;Обновление контролов родительского окна. Необходимо для некоторых элементов управления,
;если они имеют прозрачный фон.
Function RefreshParentControls
!insertmacro RefreshWindow $HWNDPARENT 1037
!insertmacro RefreshWindow $HWNDPARENT 1038
FunctionEnd
Function WelcomePageShow
SetCtlColors $MUI_HWND 0xFFFFFF transparent
!insertmacro SetTransparent $MUI_HWND 1200
!insertmacro SetTransparent $MUI_HWND 1201
!insertmacro SetTransparent $MUI_HWND 1202
FunctionEnd
/*; For license page.
Function LicensePageShow
FindWindow $MUI_HWND "#32770" "" $HWNDPARENT
SetCtlColors $MUI_HWND 0xFFFFFF transparent
!insertmacro SetTransparent $MUI_HWND 1040
!insertmacro SetTransparent $MUI_HWND 1000
!insertmacro SetTransparent $MUI_HWND 1006
!insertmacro SetTransparent $MUI_HWND 1034
!insertmacro SetTransparent $MUI_HWND 1035
Call RefreshParentControls
FunctionEnd*/
Function DirectoryPageShow
FindWindow $MUI_HWND "#32770" "" $HWNDPARENT
SetCtlColors $MUI_HWND 0xFFFFFF transparent
!insertmacro SetTransparent $MUI_HWND 1019
!insertmacro SetTransparent $MUI_HWND 1001
!insertmacro SetTransparent $MUI_HWND 1024
!insertmacro SetTransparent $MUI_HWND 1008
!insertmacro SetTransparent $MUI_HWND 1023
!insertmacro SetTransparent $MUI_HWND 1006
!insertmacro SetTransparent $MUI_HWND 1020
; Remove group box text. $R0 still contains HWND of 1020
SendMessage $R0 ${WM_SETTEXT} 0 STR:
; Refresh controls.
Call RefreshParentControls
FunctionEnd
Function ComponentsPageShow
FindWindow $MUI_HWND "#32770" "" $HWNDPARENT
SetCtlColors $MUI_HWND 0xFFFFFF transparent
!insertmacro SetTransparent $MUI_HWND 1017
!insertmacro SetTransparent $MUI_HWND 1022
!insertmacro SetTransparent $MUI_HWND 1021
!insertmacro SetTransparent $MUI_HWND 1023
!insertmacro SetTransparent $MUI_HWND 1006
!insertmacro SetTransparent $MUI_HWND 1032
Call RefreshParentControls
FunctionEnd
Function InstFilesPageShow
FindWindow $MUI_HWND "#32770" "" $HWNDPARENT
SetCtlColors $MUI_HWND 0xFFFFFF transparent
!insertmacro SetTransparent $MUI_HWND 1027
!insertmacro SetTransparent $MUI_HWND 1004
!insertmacro SetTransparent $MUI_HWND 1006
!insertmacro SetTransparent $MUI_HWND 1016
Call RefreshParentControls
FunctionEnd
Function FinishPageShow
SetCtlColors $MUI_HWND 0xFFFFFF transparent
!insertmacro SetTransparent $MUI_HWND 1200
!insertmacro SetTransparent $MUI_HWND 1201
!insertmacro SetTransparent $MUI_HWND 1202
!insertmacro SetTransparent $MUI_HWND 1203
!insertmacro SetTransparent $MUI_HWND 1204
!insertmacro SetTransparent $MUI_HWND 1205
!insertmacro SetTransparent $MUI_HWND 1206
FunctionEnd
; Free loaded resources. Destroy the bitmap.
Function .onGUIEnd
System::Call `gdi32::DeleteObject(i s)` $hBitmap
FunctionEnd
Section "Section1"
SectionEnd
Kopejkin,
Удали-закомментируй :
;!define MUI_PAGE_CUSTOMFUNCTION_SHOW FinishPageShow
;!insertmacro MUI_PAGE_FINISH
;Function FinishPageShow
;SetCtlColors $MUI_HWND 0xFFFFFF transparent
;!insertmacro SetTransparent $MUI_HWND 1200
;!insertmacro SetTransparent $MUI_HWND 1201
;!insertmacro SetTransparent $MUI_HWND 1202
;!insertmacro SetTransparent $MUI_HWND 1203
;!insertmacro SetTransparent $MUI_HWND 1204
;!insertmacro SetTransparent $MUI_HWND 1205
;!insertmacro SetTransparent $MUI_HWND 1206
;FunctionEnd
В остальном код рабочий, без ошибок (Проверил на W7 NSIS 3.9.0)
Kopejkin
07-04-2025, 16:55
Удали-закомментируй : »
Не-а... Что-то с моими лыжами. Ошибка та же - не компилируется.
Проверял, какие комбинации работают в вашем сценарии (с комментированием соответствующих частей сценария)
Работает комбинация страниц PAGE_WELCOME и PAGE_FINISH.
Работает любая комбинация страницы PAGE_WELCOME и "внутренних" страниц отдельно, вместе и выборочно.
Работает любая комбинация страницы PAGE_FINISH и "внутренних" страниц отдельно, вместе и выборочно.
Любая комбинация "внутренних" четырех страниц НЕ РАБОТАЕТ.
Хотя в стандартном сценарии любые комбинации страничек компилируются.
Вопрос остается: как сделать, чтобы в сценарии MKN работала комбинация страниц PAGE_DIRECTORY и PAGE_INSTFILES?
Опять засада с ProcessFunc.nsh
при компиляции :
!include: "ProcessFunc.nsh" (UTF8)
Bad text encoding: ProcessFunc.nsh:1
!include: error in script: "ProcessFunc.nsh" on line 1
Error in script "c:\__NSIS\_Process\ProcessFunc_NSH\Test_dok.nsi" on line 4 -- aborting creation process
В данный момент ошибка при NSIS 3.9.0.0 в Windows 7x64
Вроде проблема как то уже разбиралась-лечилась... Напомните пожалуйста - каким образом исправить ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.