Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Цитата Dodakaedr:
Объясните, пожалуйста, почему если указать в строке 'StrCmp $R0 "0"' 0 +5 сообщение показываеться, а если +4 то нет. »
Потому что строки:
Код: Выделить весь код
${registry::MoveKey} "HKCU\SOFTWARE\11" "HKCU\SOFTWARE\11_backup" $R4
${registry::Unload}
это не команды, а макросы, а в макросах может содержаться несколько команд
Макрос в NSIS своеобразная "оболочка" для команд, в макросы можно заключить несколько часто используемых команд+удобно потом ориентироваться в коде
Т.е. прописывая сроку с макросом, при компиляции эта самая строка может развернуться в несколько десятков строк (в зависимости от команд, которые прописаны в теле макроса) и, соответственно, при использовании всяких +2 +3 +5 прыжков на строку, которая прописана за макросом, может оказаться проблемой и вы получите нерабочий/не правильно работающий код

Конкретно в вашем коде - макрос ${registry::MoveKey} содержит в себе 2 строки команд:
Код: Выделить весь код
!macro registry::MoveKey _PATH_SOURCE _PATH_TARGET _ERR
	registry::_MoveKey /NOUNLOAD `${_PATH_SOURCE}` `${_PATH_TARGET}`
	Pop ${_ERR}
!macroend
Из-за чего ваш код стал не рабочим
Для решения этой проблемы либо создавайте метку и указывайте её в качестве цели "прыжка" (за место +4), либо еще лучше, пользуйтесь конструкциями с ${If}
Код: Выделить весь код
outfile "test.exe"
!include "Registry.nsh"
Autoclosewindow true
Silentinstall silent
section "Main"
${registry::KeyExists} "HKCU\Software\11" $R0
${If} $R0 == "0"
  ${registry::MoveKey} "HKCU\SOFTWARE\11" "HKCU\SOFTWARE\11_backup" $R4
  ${registry::Unload}
${Else}
  MessageBox mb_ok|mb_iconinformation "Ключа нет"
${EndIf}
quit  
sectionend

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:00, 03-11-2015 | #1880