Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Sancho5555
10-03-2016, 12:52
Serg866, вот так удаляет:
RMDir /r "$DESKTOP\Моя папка"
Sancho5555
10-03-2016, 15:14
В справочнике, в разделе "Работа с реестром" есть макрос ${StrToHex} "строка" $var - Конвертирование строки в HEX.
Не подскажите, как сделать наоборот конвертирование HEX в строку, или ${HexToStr}?
HEX в строку »
Registry_plug-in
${registry::HexToStr} "[hex_string]" $var
И ещё когда то kotkovets, приводил такой код :
конвертация 16-ричное число в десятичное, десятичное в ASCII
IntFmt $1 "%i" 0x37 ;16-ричное число в десятичное
;-------------------------------------------------------------------
IntFmt $1 "%c" $1 ;десятичное в ASCII
Dodakaedr
11-03-2016, 19:15
Подскажите, пожалуйста, в чем проблема? Почему если в конце ключа реестра стоит цифра то этот ключ пропускается? Для большей понятности:outfile "test find key.exe"
!include "Registry.nsh"
function "_bak"
StrCpy $0 0
loop:
EnumRegKey $1 HKLM "SOFTWARE" $0
StrCmp $1 "" done
IntOp $0 $0 + 1
StrCpy $9 "$1" 14
StrCmp $9 "ComSysControl." wel loop
wel:
${registry::MoveKey} "HKLM\SOFTWARE\$1" "HKLM\SOFTWARE\$1_bak" $r9
${Registry::UnLoad}
goto loop
done:
functionend
Section
${registry::Write} "HKLM\SOFTWARE\ComSysControl.UserVars.1" "" "" "REG_SZ" $9
${registry::Write} "HKLM\SOFTWARE\ComSysControl.UserVars" "" "" "REG_SZ" $9
${registry::Write} "HKLM\SOFTWARE\ComSysControl.Win_ini.1" "" "" "REG_SZ" $9
${registry::Write} "HKLM\SOFTWARE\ComSysControl.Win_ini" "" "" "REG_SZ" $9
${registry::Unload}
call _bak
SectionEnd
Почему если в конце ключа реестра стоит цифра то этот ключ пропускается? »
Всё нормально :
OutFile "test find key.exe"
!include "Logiclib.nsh"
!include "Registry.nsh"
var err
Section
; для тестирования
${registry::Write} "HKLM\SOFTWARE\Test.test.ttt.aaaaaaaa.1" ".test" "5" "REG_SZ" $err
${registry::Write} "HKLM\SOFTWARE\Test.test.ttt.bbbbbbbb.1" ".test" "7" "REG_SZ" $err
${Do}
EnumRegKey $1 HKLM "SOFTWARE" $0
IntOp $0 $0 + 1
StrCpy $9 $1 14 ;первые 14 символов из $1(Test.test.ttt.) помещаем в $9
${If} $9 == "Test.test.ttt." ; условие
DetailPrint $1 ;для информации
ClearErrors
MessageBox MB_OK "Условие найдено. Далее - необходимое действие"
${EndIf}
${LoopUntil} $1 == ""
SectionEnd
Dodakaedr
12-03-2016, 18:14
Всё нормально : »
С тестовыми ключами да, но если подставить требуемые, то результат тот же:
http://i74.fastpic.ru/big/2016/0312/29/42cbae897b9f813267cf479615f97529.jpg
OutFile "test find key22.exe"
!include "Logiclib.nsh"
!include "Registry.nsh"
var err
Section
; для тестирования
${registry::Write} "HKLM\SOFTWARE\ComSysControl.UserVars.1" ".test" "5" "REG_SZ" $err
${registry::Write} "HKLM\SOFTWARE\ComSysControl.UserVars" ".test" "7" "REG_SZ" $err
${Do}
EnumRegKey $1 HKLM "SOFTWARE" $0
IntOp $0 $0 + 1
StrCpy $9 $1 14 ;первые 14 символов из $1(Test.test.ttt.) помещаем в $9
${If} $9 == "ComSysControl." ; условие
;DetailPrint $1 ;для информации
;ClearErrors
;MessageBox MB_OK "Условие найдено. Далее - необходимое действие"
${registry::MoveKey} "HKLM\SOFTWARE\$1" "HKLM\SOFTWARE\$1_bak" $r9
${Registry::UnLoad}
${EndIf}
${LoopUntil} $1 == ""
SectionEnd
С тестовыми ключами да, но если подставить требуемые, то результат тот же »
Значит дело конкретно в твоих ключах. Либо нет доступа к ключу, либо скрипту(плагину) не нравится название ключа.
В частности, подозрение вызывает "UserVars" в составе ключа.
Sancho5555
16-03-2016, 15:14
Есть плагин от K.A.V. для установки прозрачности окна инсталлятора - для примера код:
!include "MUI2.nsh"
!define TBM_SETPOS 0x0405
!define TBM_GETPOS 0x0400
!define TBM_SETRANGEMIN 0x0407
!define TBM_SETRANGEMAX 0x0408
!addplugindir "."
!insertmacro MUI_LANGUAGE "Russian"
Name "transparent plugin example"
OutFile "transparent.exe"
XPStyle on
Var transparent
Var Slider
Var Move
Var Label
Var Button
Page custom Create
Function Slider
SendMessage $Slider ${TBM_GETPOS} 0 0 $Move
transparent::SetTransparentWindowStyle "$Move"
${NSD_SetText} $Label "$Move"
FunctionEnd
Function Create
nsDialogs::Create 1018
Pop $transparent
nsDialogs::CreateControl "msctls_trackbar32" "0x50010000|0x00000018" "" 80u 100u 200 60 ""
Pop $Slider
SendMessage $Slider ${TBM_SETRANGEMIN} 1 50
SendMessage $Slider ${TBM_SETRANGEMAX} 1 255
SendMessage $Slider ${TBM_SETPOS} 1 255
transparent::SetTransparentWindowStyle "255"
${NSD_CreateLabel} 215u 104u 30u 30u ""
Pop $Label
${NSD_CreateButton} 20u 103u 51u 12u "Обзор"
Pop $Button
${NSD_OnClick} $Button Example
${NSD_CreateTimer} Slider 50
nsDialogs::Show $transparent
FunctionEnd
Function Example
nsDialogs::SelectFolderDialog /NOUNLOAD "" ""
Pop $0
FunctionEnd
Section
SectionEnd
Прозрачность работает, но после нажатия кнопки "Обзор" transparent плагин перестаёт работать.
В чём может быть проблема?
Прозрачность работает, но после нажатия кнопки "Обзор" transparent плагин перестаёт работать. »
Нет такой проблемы, по крайней мере у меня, всё работает
Попробуйте так (http://kav-soft.ru/onlineHelp/NSIS/index.html?page=source%2Fcode_example%2FTransparentWindow.html)
Sancho5555
18-03-2016, 11:29
Нет такой проблемы, по крайней мере у меня, всё работает »
Заметил у себя на Win8 X64 работает через раз, после загрузки системы, буду разбираться.
Подскажите, как поместить видео в собственное окно на кастомной странице ?
код, в котором это не получается... (видео окно рядом с кастомным) :
!include MUI2.nsh
Page custom MyPage
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
OutFile "test_video.exe"
!define WS_BORDER 0x00800000
Var dlg
Function MyPage
nsDialogs::Create 1018
Pop $dlg
System::Call 'user32::CreateWindowEx(i0,t "STATIC",t " здесь должно быть видео",\
i${DEFAULT_STYLES}|${WS_BORDER}|${WS_VISIBLE},\
i130,i50,i200,i150,i$dlg,i222,i0,i0) i.R7'
SetCtlColors $R7 `0x0000FF` `0x99FFFF`
System::Call "winmm::mciSendStringA(t 'open $\"$EXEDIR\video.wmv$\" alias vvv parent $R7', i 0, i 0, i 0)"
System::Alloc 16
Pop $1
System::Call "user32::GetWindowRect(i $R7, i $1)"
System::Call "*$1(i.r2, i.r3, i.r4, i.r5)"
System::Free $1
System::Call "winmm::mciSendStringA(t 'put vvv destination at $2 $3 $4 $5', i 0, i 0, i 0)"
System::Call "winmm::mciSendStringA(t 'window vvv stretch', i 0, i 0, i 0)"
System::Call "winmm::mciSendStringA(t 'play vvv repeat',i 0, i 0, i 0)"
nsDialogs::Show
System::Call "winm::mciSendStringA(t 'stop vvv',i 0, i 0, i 0)"
System::Call "winm::mciSendStringA(t 'close vvv',i 0, i 0, i 0)"
FunctionEnd
тестовый комплект : http://rghost.ru/private/8RjjlkHVT/7c47e83bc5328fedc4a877c9ac07d1af
Подскажите, как поместить видео в собственное окно на кастомной странице ? »
!include MUI2.nsh
Page custom MyPage
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
OutFile "test_video.exe"
!define WS_BORDER 0x00800000
Var dlg
Function MyPage
nsDialogs::Create 1018
Pop $dlg
System::Call 'user32::CreateWindowEx(i0,t "STATIC",t " здесь должно быть видео",\
i${DEFAULT_STYLES}|${WS_BORDER}|${WS_VISIBLE},\
i130,i50,i200,i150,i$dlg,i222,i0,i0) i.R7'
SetCtlColors $R7 `0x0000FF` `0x99FFFF`
System::Call "winmm::mciSendStringA(t 'open $\"$EXEDIR\video.wmv$\" alias vvv parent $R7 style child', i 0, i 0, i 0)"
System::Alloc 16
Pop $1
System::Call "user32::GetWindowRect(i $R7, i $1)"
System::Call "*$1(i.r2, i.r3, i.r4, i.r5)"
System::Free $1
System::Call "winmm::mciSendStringA(t 'put vvv destination $2 $3 $4 $5', i 0, i 0, i 0)"
System::Call "winmm::mciSendStringA(t 'window vvv stretch', i 0, i 0, i 0)"
System::Call "winmm::mciSendStringA(t 'play vvv repeat',i 0, i 0, i 0)"
nsDialogs::Show
System::Call "winm::mciSendStringA(t 'stop vvv',i 0, i 0, i 0)"
System::Call "winm::mciSendStringA(t 'close vvv',i 0, i 0, i 0)"
FunctionEnd
Section
SectionEnd
K.A.V.,
Я ведь специально убрал style child из кода, т.к. с ним видео не было и в помине. А без него было, рядом в отдельном окне.
И сейчас скомпилил , запустил - нет никакого видео ! Но, совершенно случайно подвинул окно в сторону - и видео появилось.
Т.е. , пока не подвигаешь окно - видео нет. Что за чертовщина ?
И сейчас скомпилил , запустил - нет никакого видео ! Но, совершенно случайно подвинул окно в сторону - и видео появилось.
Т.е. , пока не подвигаешь окно - видео нет. Что за чертовщина ? »
Не знаю, что у тебя вечно за глюки с NSIS и системой, у меня после запуска сразу видео отображается...
глюки с NSIS и системой »
На другой машине то же самое. Видео нет, пока чуть не сдвинешь окно... И RedrawWindow не помогает...
Приблизительно такой же эффект разбирался здесь :
http://rsdn.ru/forum/media/340319.hot
Было ли решение, не ясно...
Всё не оставляю попыток изменить файл hosts без ругани самой системы и антивирусов.
Как думаете, можно воспользоваться методом, описанным здесь?
http://www.cyberforum.ru/cmd-bat/thread859941.html
Расшифровываем URI ( Uniform Resource Identifier )
http://ru.wikipedia.org/wiki/URI
здесь об URI человеческим языком : http://handynotes.ru/2009/09/uri-url-urn.html
Если ещё проще, то часто встречающиеся ссылки вида :
http://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0"
- это и есть URI.
Для декодирования/кодирования URI, у китайских товарищей есть плагин.
!addplugindir .
OutFile nsURI.exe
InstallColors /windows
ShowInstDetails show
Section
nsURI::decodeURI "http://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0"
Pop $R0
DetailPrint $R0
SectionEnd
Также, при необходимости , используем:
nsURI::encodeURI
nsURI::encodeURIComponent
nsURI::decodeURIComponen
trobbobsom
29-03-2016, 19:19
Добрый вечер!
Подскажите пожалуйста,я уже перерыл половину интернета...
не меняется иконка инсталера http://s8.hostingkartinok.com/uploads/images/2016/03/13de969d4cae8ff0cceda37e7acbbbee.png (http://hostingkartinok.com/show-image.php?id=13de969d4cae8ff0cceda37e7acbbbee)
Вот код который использую :
!include "MUI.nsh"
!define MUI_ICON "2.ico"
я уже не знаю что попробовать,перепробовал все..
Версия ос : win10
Версия nsis : 2.5
Dodakaedr
29-03-2016, 19:50
trobbobsom, добавьте этоIcon "icon.ico" иконка в данном случаи должна находится возле скрипта
trobbobsom
30-03-2016, 11:01
trobbobsom, добавьте это
Код:
Icon "icon.ico"
иконка в данном случаи должна находится возле скрипта »
Спасибо огромнейшее!!! Работает! Вы мне очень помогли!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.