[архив].: NSIS - все вопросы :.
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
Ребята, опять заблудился.
Делаю сборку Opera.
Такие секции:
Function .onInit
StrCpy $SysDrive $WINDIR 2
StrCpy $1 ${Sec03}
FunctionEnd
Section "Многопользовательская установка" Sec03
SetOutPath "$INSTDIR"
WriteINIStr "$INSTDIR\operaprefs_default.ini" "System" "Multi User" "1"
SectionEnd
;
Section /o "Однопользовательская установка" Sec04
SetOutPath "$INSTDIR"
WriteINIStr "$INSTDIR\operaprefs_default.ini" "System" "Multi User" "0"
SectionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${Sec03}
!insertmacro RadioButton ${Sec04}
!insertmacro EndRadioButtons
FunctionEnd
Кнопки 3 и 4 переключаются, но только не с первого раза. В первый клик кнопка 3 не выключается. Получаются обе секции включенными...
Делаю сборку Opera.
Такие секции:
Function .onInit
StrCpy $SysDrive $WINDIR 2
StrCpy $1 ${Sec03}
FunctionEnd
Section "Многопользовательская установка" Sec03
SetOutPath "$INSTDIR"
WriteINIStr "$INSTDIR\operaprefs_default.ini" "System" "Multi User" "1"
SectionEnd
;
Section /o "Однопользовательская установка" Sec04
SetOutPath "$INSTDIR"
WriteINIStr "$INSTDIR\operaprefs_default.ini" "System" "Multi User" "0"
SectionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${Sec03}
!insertmacro RadioButton ${Sec04}
!insertmacro EndRadioButtons
FunctionEnd
Кнопки 3 и 4 переключаются, но только не с первого раза. В первый клик кнопка 3 не выключается. Получаются обе секции включенными...
-
Krinkels
Re: [архив].: NSIS - все вопросы :.
wolkow70,
функцию .onInit переместите в скрипте - пропишите после всех секций, для корректного определения индетификаторов секций, вас же компилятор просит же...
для NSIS последовательность действий очень важна!
функцию .onInit переместите в скрипте - пропишите после всех секций, для корректного определения индетификаторов секций, вас же компилятор просит же...
для NSIS последовательность действий очень важна!
-
wolkow70
Re: [архив].: NSIS - все вопросы :.
Товарищи, делаю сборку Ligth Alloy прописал с ассоциациями такие команды:
StrCpy $OpenCommand "$INSTDIR\LA.exe $\"%1$\""
StrCpy $PlayCommand "$INSTDIR\LA.exe $\"%1$\""
StrCpy $QueneCommand "$INSTDIR\LA.exe $\"%1$\" /ADD"
"Воспроизвести в LA" работает
"Открыть в LA работает"
Открыть файл двойным щелчком не работает. Приходится ткнуть кнопку воспроизведения.
С оригинальным инсталлятором все работает.
Что нужно поправить?
StrCpy $OpenCommand "$INSTDIR\LA.exe $\"%1$\""
StrCpy $PlayCommand "$INSTDIR\LA.exe $\"%1$\""
StrCpy $QueneCommand "$INSTDIR\LA.exe $\"%1$\" /ADD"
"Воспроизвести в LA" работает
"Открыть в LA работает"
Открыть файл двойным щелчком не работает. Приходится ткнуть кнопку воспроизведения.
С оригинальным инсталлятором все работает.
Что нужно поправить?
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
wolkow70
А чем дело то? поставьте оригинал и гляньте какие записи делает, и перенесите такие же записи в свой установщик, а не за макросы сразу бросаться, научитесь для начала в реестр данные загонять в отладочном скрипте и сравниваете с оригиналом - пока не станут индетичны (заработает).
А то Вы сразу за штурвал МиГ-19 , минуя У-2
А чем дело то? поставьте оригинал и гляньте какие записи делает, и перенесите такие же записи в свой установщик, а не за макросы сразу бросаться, научитесь для начала в реестр данные загонять в отладочном скрипте и сравниваете с оригиналом - пока не станут индетичны (заработает).
А то Вы сразу за штурвал МиГ-19 , минуя У-2
-
wolkow70
Re: [архив].: NSIS - все вопросы :.
DruOleg, Вам уже не мало примеров приводили на макросе LineFind
В справке по индексу LineFind - читайте и изучайте
Цитата DruOleg:
добавлять строки в конец файла, но не за пределами закрытия php-скрипта, т. е. перед "?>" ?
Пример все тот же на LineFind перед "?>" запишет nsis
Код:
Цитата DruOleg:
добавлять строки в конец файла
Код:
Цитата DruOleg:
как добавить между строками разрыв (Enter)?
$\n - переместить каретку на новую строку
$\r - переместить каретку на начало строки
$\n$\r - переместить каретку на начало новой строки
$\t - знак табуляции, клавиша
В справке по индексу LineFind - читайте и изучайте
Цитата DruOleg:
добавлять строки в конец файла, но не за пределами закрытия php-скрипта, т. е. перед "?>" ?
[архив].: NSIS - все вопросы :.
Пример все тот же на LineFind перед "?>" запишет nsis
Код:
Код: Выделить всё
Function Replace
${If} $R9 == "?>"
${OrIf} $R9 == "?>$\r$\n"
${OrIf} $R9 == "?>$\r"
${OrIf} $R9 == "?>$\n"
StrCpy $R9 "nsis$\r$\n?>$\r$\n"
;------
;------
;------
${EndIf}
Push $0
FunctionEndЦитата DruOleg:
добавлять строки в конец файла
[архив].: NSIS - все вопросы :.
Код:
Код: Выделить всё
;---
FileSeek $0 0 End
FileWrite $0 "$\r$\n$$CFG->dbtype = '$$DBtype'$\n$\r"Цитата DruOleg:
как добавить между строками разрыв (Enter)?
[архив].: NSIS - все вопросы :.
$\n - переместить каретку на новую строку
$\r - переместить каретку на начало строки
$\n$\r - переместить каретку на начало новой строки
$\t - знак табуляции, клавиша
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
Kotkovets, посоветуй, пожалуйста, по следующим вопросам.
Для страниц инсталлятора я использую .ini файл с настройками элементов на странице.
Я нашел решение типа, где поля создаются напрямую в функции:
${NSD_CreateText} 0 20u 100% 15u "Здесь можно печатать..."
Pop $Text
${NSD_OnChange} $Text fnTextChange
Вопрос 1: как я могу присоединить функцию к событию элемента в моем случае
!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 2" "Flag" "DISABLED" - этот код почему то не делает не активным текстовое поле.
Вопрос 2: как изменить активность элемента?
У меня не получается прописать путь по умолчанию в текстовое поле кодом в функции страницы:
!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 1" "State" "C:\ProgramFolder"
Вопрос 3: как прописать текст в текстовое поле до отображения страницы?
Код скрипта в скрытом тексте
!include "Library.nsh"
!include "sections.nsh"
!include "MUI.nsh"
!include "LogicLib.nsh"
!include "OLEDB.NSH"
Name "Declarant TS"
Caption "Установка программы Declarant TS"
OutFile "InstallDeclarantTS.exe"
InstallDir "C:\GTD"
ShowInstDetails show
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_NOAUTOCLOSE
Var IsInstallDB
Var ProgramFolderPath
Var DBFileFolderPath
Var ServerName
Var UserName
Var UserPathword
;Var ServerInstance
;----Страницы шагов--------
PageEx custom
PageCallBacks EnterWelcomePage LeaveWelcomePage
PageExEnd
PageEx custom
PageCallBacks EnterPathPage LeavePathPage
PageExEnd
PageEx custom
PageCallBacks EnterServerAdjustmentsPage LeaveServerAdjustmentsPage
PageExEnd
!insertmacro MUI_PAGE_INSTFILES
;---------------------------------
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
!insertmacro MUI_LANGUAGE "Russian"
Function .onInit
InitPluginsDir
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "Welcome.ini"
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ProgramPath.ini"
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ServerAdjustments.ini"
FunctionEnd
Function CheckConnection
${OLEDB}::SQL_Logon "$ServerName" "$UserName" "$UserPathword"
Pop $0
${If} $0 == 0
MessageBox MB_OK "Соединение успешно установлено!"
${Else}
MessageBox MB_OK "Попытка соединения завершилась неудачно!"
${EndIf}
FunctionEnd
Section ""
detailprint "Подключение к серверу $ServerName"
${OLEDB}::SQL_Logon "" "" "" ;"$ServerName" "$UserName" "$UserPathword"
Pop $0
;${If} $0 == 1
DetailPrint $0
Pop $0
DetailPrint $0
;${EndIf}
${OLEDB}::SQL_ExecuteScript "test.sql"
Pop $0
;${If} $0 == 1
Pop $0
DetailPrint $0
;${EndIf}
detailprint ""
detailprint "Копирование файлов"
SetOutPath $ProgramFolderPath
File Files\Antlr3.Runtime.dll
File Files\Castle.Core.dll
File Files\Castle.DynamicProxy2.dll
File Files\Castle.DynamicProxy.dll
File Files\Core.dll
File Files\Core.Impl.dll
File Files\DBConnectionParameters.xml
File Files\Declaration.Domain.Impl.dll
File Files\Declaration.Presenters.Impl.dll
File Files\Declaration.Views.dll
File Files\Declaration.Views.Impl.dll
File Files\DeclarationElectronicCopy.dll
File Files\Domain.Impl.dll
File Files\Enums.dll
File Files\Events.dll
File Files\Handbooks.Domain.dll
File Files\Handbooks.Presenters.dll
File Files\Handbooks.Presenters.Impl.dll
File Files\Handbooks.Views.dll
File Files\Handbooks.Views.Impl.dll
File Files\Iesi.Collections.dll
File Files\Injection.dll
File Files\Injection.Impl.dll
File Files\local.hibernate.cfg.xml
File Files\log4net.dll
File Files\Main.Presenters.dll
File Files\Main.Presenters.Impl.dll
File Files\Main.Views.dll
File Files\Main.Views.Impl.dll
File Files\NHibernate.ByteCode.Castle.dll
File Files\NHibernate.dll
File Files\nhibernate-configuration.xsd
File Files\nhibernate-mapping.xsd
File Files\Ninject.dll
File Files\nunit.core.dll
File Files\nunit.framework.dll
File Files\Print.dll
File Files\ProgramAdjustments.xml
File Files\remote.hibernate.cfg.xml
File Files\Repositories.dll
File Files\Repositories.Impl.dll
File Files\Screen.Presenters.dll
File Files\Screen.Presenters.Impl.dll
File Files\Screen.Views.dll
File Files\Screen.Views.Impl.dll
File Files\Services.dll
File Files\sqlceca35.dll
File Files\sqlcecompact35.dll
File Files\sqlceer35EN.dll
File Files\sqlceer35RU.dll
File Files\sqlceme35.dll
File Files\sqlceoledb35.dll
File Files\sqlceqp35.dll
File Files\sqlcese35.dll
File Files\System.Data.SqlServerCe.dll
File Files\System.Data.SqlServerCe.Entity.dll
File Files\DeclarantTS.exe
CreateShortCut "C:\Documents and Settings\All Users\Рабочий стол\DeclarantTS.lnk" "$ProgramFolderPath\DeclarantTS.exe"
SectionEnd
Function EnterWelcomePage
!insertmacro MUI_HEADER_TEXT "Приветствие" "Вас приветствует мастер установки Declarant TS"
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "Welcome.ini"
!insertmacro MUI_INSTALLOPTIONS_SHOW
FunctionEnd
Function LeaveWelcomePage
!insertmacro MUI_INSTALLOPTIONS_READ $IsInstallDB "Welcome.ini" "Field 1" "State"
FunctionEnd
Function EnterPathPage
!insertmacro MUI_HEADER_TEXT "Выбор путей" "Выберите папки,куда требуется установить программу"
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ProgramPath.ini"
!insertmacro MUI_INSTALLOPTIONS_SHOW
!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 1" "State" "C:\ProgramFolder"
${if} $IsInstallDB == 0
;!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 2" "Flag" "DISABLED"
${endif}
FunctionEnd
Function LeavePathPage
!insertmacro MUI_INSTALLOPTIONS_READ $ProgramFolderPath "ProgramPath.ini" "Field 1" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $DBFileFolderPath "ProgramPath.ini" "Field 2" "State"
FunctionEnd
Function EnterServerAdjustmentsPage
${if} $IsInstallDB == 0
Abort
${endif}
!insertmacro MUI_HEADER_TEXT "Доступ к серверу" "Укажите настройки доступа к серверу MS SQL, к которой будет подсоединена база данных"
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ServerAdjustments.ini"
!insertmacro MUI_INSTALLOPTIONS_SHOW
FunctionEnd
Function LeaveServerAdjustmentsPage
Call SaveServerAdjustments
FunctionEnd
Function SaveServerAdjustments
!insertmacro MUI_INSTALLOPTIONS_READ $ServerName "ServerAdjustments.ini" "Field 1" "Text"
!insertmacro MUI_INSTALLOPTIONS_READ $UserName "ServerAdjustments.ini" "Field 2" "Text"
!insertmacro MUI_INSTALLOPTIONS_READ $UserPathword "ServerAdjustments.ini" "Field 3" "Text"
!insertmacro MUI_INSTALLOPTIONS_READ $0 "ServerAdjustments.ini" "Field 4" "Text"
${if} $0 ""
StrCpy $ServerName "$ServerName\$0"
${endif}
FunctionEnd
Для страниц инсталлятора я использую .ini файл с настройками элементов на странице.
Я нашел решение типа, где поля создаются напрямую в функции:
${NSD_CreateText} 0 20u 100% 15u "Здесь можно печатать..."
Pop $Text
${NSD_OnChange} $Text fnTextChange
Вопрос 1: как я могу присоединить функцию к событию элемента в моем случае
!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 2" "Flag" "DISABLED" - этот код почему то не делает не активным текстовое поле.
Вопрос 2: как изменить активность элемента?
У меня не получается прописать путь по умолчанию в текстовое поле кодом в функции страницы:
!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 1" "State" "C:\ProgramFolder"
Вопрос 3: как прописать текст в текстовое поле до отображения страницы?
Код скрипта в скрытом тексте
читать дальше »
!include "Library.nsh"
!include "sections.nsh"
!include "MUI.nsh"
!include "LogicLib.nsh"
!include "OLEDB.NSH"
Name "Declarant TS"
Caption "Установка программы Declarant TS"
OutFile "InstallDeclarantTS.exe"
InstallDir "C:\GTD"
ShowInstDetails show
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_NOAUTOCLOSE
Var IsInstallDB
Var ProgramFolderPath
Var DBFileFolderPath
Var ServerName
Var UserName
Var UserPathword
;Var ServerInstance
;----Страницы шагов--------
PageEx custom
PageCallBacks EnterWelcomePage LeaveWelcomePage
PageExEnd
PageEx custom
PageCallBacks EnterPathPage LeavePathPage
PageExEnd
PageEx custom
PageCallBacks EnterServerAdjustmentsPage LeaveServerAdjustmentsPage
PageExEnd
!insertmacro MUI_PAGE_INSTFILES
;---------------------------------
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
!insertmacro MUI_LANGUAGE "Russian"
Function .onInit
InitPluginsDir
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "Welcome.ini"
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ProgramPath.ini"
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ServerAdjustments.ini"
FunctionEnd
Function CheckConnection
${OLEDB}::SQL_Logon "$ServerName" "$UserName" "$UserPathword"
Pop $0
${If} $0 == 0
MessageBox MB_OK "Соединение успешно установлено!"
${Else}
MessageBox MB_OK "Попытка соединения завершилась неудачно!"
${EndIf}
FunctionEnd
Section ""
detailprint "Подключение к серверу $ServerName"
${OLEDB}::SQL_Logon "" "" "" ;"$ServerName" "$UserName" "$UserPathword"
Pop $0
;${If} $0 == 1
DetailPrint $0
Pop $0
DetailPrint $0
;${EndIf}
${OLEDB}::SQL_ExecuteScript "test.sql"
Pop $0
;${If} $0 == 1
Pop $0
DetailPrint $0
;${EndIf}
detailprint ""
detailprint "Копирование файлов"
SetOutPath $ProgramFolderPath
File Files\Antlr3.Runtime.dll
File Files\Castle.Core.dll
File Files\Castle.DynamicProxy2.dll
File Files\Castle.DynamicProxy.dll
File Files\Core.dll
File Files\Core.Impl.dll
File Files\DBConnectionParameters.xml
File Files\Declaration.Domain.Impl.dll
File Files\Declaration.Presenters.Impl.dll
File Files\Declaration.Views.dll
File Files\Declaration.Views.Impl.dll
File Files\DeclarationElectronicCopy.dll
File Files\Domain.Impl.dll
File Files\Enums.dll
File Files\Events.dll
File Files\Handbooks.Domain.dll
File Files\Handbooks.Presenters.dll
File Files\Handbooks.Presenters.Impl.dll
File Files\Handbooks.Views.dll
File Files\Handbooks.Views.Impl.dll
File Files\Iesi.Collections.dll
File Files\Injection.dll
File Files\Injection.Impl.dll
File Files\local.hibernate.cfg.xml
File Files\log4net.dll
File Files\Main.Presenters.dll
File Files\Main.Presenters.Impl.dll
File Files\Main.Views.dll
File Files\Main.Views.Impl.dll
File Files\NHibernate.ByteCode.Castle.dll
File Files\NHibernate.dll
File Files\nhibernate-configuration.xsd
File Files\nhibernate-mapping.xsd
File Files\Ninject.dll
File Files\nunit.core.dll
File Files\nunit.framework.dll
File Files\Print.dll
File Files\ProgramAdjustments.xml
File Files\remote.hibernate.cfg.xml
File Files\Repositories.dll
File Files\Repositories.Impl.dll
File Files\Screen.Presenters.dll
File Files\Screen.Presenters.Impl.dll
File Files\Screen.Views.dll
File Files\Screen.Views.Impl.dll
File Files\Services.dll
File Files\sqlceca35.dll
File Files\sqlcecompact35.dll
File Files\sqlceer35EN.dll
File Files\sqlceer35RU.dll
File Files\sqlceme35.dll
File Files\sqlceoledb35.dll
File Files\sqlceqp35.dll
File Files\sqlcese35.dll
File Files\System.Data.SqlServerCe.dll
File Files\System.Data.SqlServerCe.Entity.dll
File Files\DeclarantTS.exe
CreateShortCut "C:\Documents and Settings\All Users\Рабочий стол\DeclarantTS.lnk" "$ProgramFolderPath\DeclarantTS.exe"
SectionEnd
Function EnterWelcomePage
!insertmacro MUI_HEADER_TEXT "Приветствие" "Вас приветствует мастер установки Declarant TS"
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "Welcome.ini"
!insertmacro MUI_INSTALLOPTIONS_SHOW
FunctionEnd
Function LeaveWelcomePage
!insertmacro MUI_INSTALLOPTIONS_READ $IsInstallDB "Welcome.ini" "Field 1" "State"
FunctionEnd
Function EnterPathPage
!insertmacro MUI_HEADER_TEXT "Выбор путей" "Выберите папки,куда требуется установить программу"
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ProgramPath.ini"
!insertmacro MUI_INSTALLOPTIONS_SHOW
!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 1" "State" "C:\ProgramFolder"
${if} $IsInstallDB == 0
;!insertmacro MUI_INSTALLOPTIONS_WRITE "ProgramPath.ini" "Field 2" "Flag" "DISABLED"
${endif}
FunctionEnd
Function LeavePathPage
!insertmacro MUI_INSTALLOPTIONS_READ $ProgramFolderPath "ProgramPath.ini" "Field 1" "State"
!insertmacro MUI_INSTALLOPTIONS_READ $DBFileFolderPath "ProgramPath.ini" "Field 2" "State"
FunctionEnd
Function EnterServerAdjustmentsPage
${if} $IsInstallDB == 0
Abort
${endif}
!insertmacro MUI_HEADER_TEXT "Доступ к серверу" "Укажите настройки доступа к серверу MS SQL, к которой будет подсоединена база данных"
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ServerAdjustments.ini"
!insertmacro MUI_INSTALLOPTIONS_SHOW
FunctionEnd
Function LeaveServerAdjustmentsPage
Call SaveServerAdjustments
FunctionEnd
Function SaveServerAdjustments
!insertmacro MUI_INSTALLOPTIONS_READ $ServerName "ServerAdjustments.ini" "Field 1" "Text"
!insertmacro MUI_INSTALLOPTIONS_READ $UserName "ServerAdjustments.ini" "Field 2" "Text"
!insertmacro MUI_INSTALLOPTIONS_READ $UserPathword "ServerAdjustments.ini" "Field 3" "Text"
!insertmacro MUI_INSTALLOPTIONS_READ $0 "ServerAdjustments.ini" "Field 4" "Text"
${if} $0 ""
StrCpy $ServerName "$ServerName\$0"
${endif}
FunctionEnd
-
wolkow70
Re: [архив].: NSIS - все вопросы :.
Цитата TTTLordLeo:
Я нашел решение типа, где поля создаются напрямую в функции:
${NSD_CreateText} 0 20u 100% 15u "Здесь можно печатать..."
Pop $Text
${NSD_OnChange} $Text fnTextChange
Этот код для nsDialogs -> MUI2.nsh
Цитата TTTLordLeo:
Для страниц инсталлятора я использую .ini файл с настройками элементов на странице.
Этот код для InstallOptions.dll -> MUI.nsh - почти не использую, так что пишите на MUI2, тогда подскажу...
Я нашел решение типа, где поля создаются напрямую в функции:
${NSD_CreateText} 0 20u 100% 15u "Здесь можно печатать..."
Pop $Text
${NSD_OnChange} $Text fnTextChange
[архив].: NSIS - все вопросы :.
Этот код для nsDialogs -> MUI2.nsh
Цитата TTTLordLeo:
Для страниц инсталлятора я использую .ini файл с настройками элементов на странице.
[архив].: NSIS - все вопросы :.
Этот код для InstallOptions.dll -> MUI.nsh - почти не использую, так что пишите на MUI2, тогда подскажу...

-
kotkovets
Re: [архив].: NSIS - все вопросы :.
wolkow70,
Под боком конвертера нету, делал руками.
Код:
Но я обычно такие данный загоняю в HKLM.
Код:
Синтаксис записи строковых параметров.
Код:
пример, записать в ключ значение Light Alloy[/i]
Код:
Записать значение: "Light Alloy" /ADD[/i] - c вложенными кавычками, для этого есть символ $\"
Код:
Можно так
Код:
Или так
Код:
%1 - в эту системную переменную подставляется путь\file[/i], т.е вы кликаете по файлу и он открывается соответствующей программой.
Еще очень важное замечание про расширяемый строковый параметр, параметр типа REG_EXPAND_STR
Код:
Это проделки реестра, если импортируйте этот файл в реестр, то получите значение ключа Common Desktop[/i] равным %ALLUSERSPROFILE%\Рабочий стол
Так вот, если вы их конвертируете в скрипт NSIS, то получите значение ключа в бинарном ввиде, а в реестре смотрим - это же расширяемый строковый параметр, здесь очень важно смотреть, какой тип параметра!
Правильно будет так:
Код:
Под боком конвертера нету, делал руками.
читать дальше »
Код:
Код: Выделить всё
WriteRegStr HKCR ".MP4" "" "LAV4.MP4"
WriteRegStr HKCR ".MP4" "LA_Backup" "LAV4.MP4"
WriteRegStr HKCR "LAV4.MP4" "" "Light Alloy - MPEG-4 Media File"
WriteRegStr HKCR "LAV4.MP4\DefaultIcon" "" "$PROGRAMFILES\Light Alloy 4.5up\Icons\XPlite.icl,36"
WriteRegStr HKCR "LAV4.MP4\Shell" "" "Play"
WriteRegStr HKCR "LAV4.MP4\Shell\Enqueue" "" "Добавить в список в Light Alloy"
WriteRegStr HKCR "LAV4.MP4\Shell\Enqueue\Command" "" "$PROGRAMFILES\Light Alloy 4.5up\LA.exe $\"%1$\" /ADD"
WriteRegStr HKCR "LAV4.MP4\Shell\Open\Command" "" "$PROGRAMFILES\Light Alloy 4.5up\LA.exe $\"%1$\""
WriteRegStr HKCR "LAV4.MP4\Shell\Play" "" "Воспроизвести в Light Alloy"
WriteRegStr HKCR "LAV4.MP4\Shell\Play\Command" "" "$PROGRAMFILES\Light Alloy 4.5up\LA.exe $\"%1$\""
WriteRegStr HKCR "LAV4.MP4\shellex\ContextMenuHandlers\LA5ContextMenu" "" "{45C15F61-ACAD-48C6-8D86-321ED8A6CFC6}"Но я обычно такие данный загоняю в HKLM.
читать дальше »
Код:
Код: Выделить всё
WriteRegStr HKLM "SOFTWARE\Classes\.MP4" "" "LAV4.MP4"
WriteRegStr HKLM "SOFTWARE\Classes\.MP4" "LA_Backup" "LAV4.MP4"
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4" "" "Light Alloy - MPEG-4 Media File"
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\DefaultIcon" "" "$PROGRAMFILES\Light Alloy 4.5up\Icons\XPlite.icl,36"
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\Shell" "" "Play"
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\Shell\Enqueue" "" "Добавить в список в Light Alloy"
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\Shell\Enqueue\Command" "" "$PROGRAMFILES\Light Alloy 4.5up\LA.exe $\"%1$\" /ADD"
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\Shell\Open\Command" "" "$PROGRAMFILES\Light Alloy 4.5up\LA.exe $\"%1$\""
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\Shell\Play" "" "Воспроизвести в Light Alloy"
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\Shell\Play\Command" "" "$PROGRAMFILES\Light Alloy 4.5up\LA.exe $\"%1$\""
WriteRegStr HKLM "SOFTWARE\Classes\LAV4.MP4\shellex\ContextMenuHandlers\LA5ContextMenu" "" "{45C15F61-ACAD-48C6-8D86-321ED8A6CFC6}"Синтаксис записи строковых параметров.
читать дальше »
Код:
Код: Выделить всё
WriteRegStr [root_key] [subkey] [key_name] [value]пример, записать в ключ значение Light Alloy[/i]
Код:
Код: Выделить всё
WriteRegStr HKLM "Software\My Company" "KEY" "Light Alloy"Записать значение: "Light Alloy" /ADD[/i] - c вложенными кавычками, для этого есть символ $\"
Код:
Код: Выделить всё
WriteRegStr HKLM "Software\My Company" "KEY" "$\"Light Alloy$\" /ADD"Можно так
Код:
Код: Выделить всё
WriteRegStr HKLM "Software\My Company" "KEY" '"Light Alloy" /ADD'Или так
Код:
Код: Выделить всё
WriteRegStr HKLM "Software\My Company" "KEY" `"Light Alloy" /ADD`%1 - в эту системную переменную подставляется путь\file[/i], т.е вы кликаете по файлу и он открывается соответствующей программой.
Еще очень важное замечание про расширяемый строковый параметр, параметр типа REG_EXPAND_STR
читать дальше »
Код:
Код: Выделить всё
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Common Desktop"=hex(2):25,00,41,00,4c,00,4c,00,55,00,53,00,45,00,52,00,53,00,\
50,00,52,00,4f,00,46,00,49,00,4c,00,45,00,25,00,5c,00,20,04,30,04,31,04,3e,\
04,47,04,38,04,39,04,20,00,41,04,42,04,3e,04,3b,04,00,00Это проделки реестра, если импортируйте этот файл в реестр, то получите значение ключа Common Desktop[/i] равным %ALLUSERSPROFILE%\Рабочий стол
Так вот, если вы их конвертируете в скрипт NSIS, то получите значение ключа в бинарном ввиде, а в реестре смотрим - это же расширяемый строковый параметр, здесь очень важно смотреть, какой тип параметра!
Правильно будет так:
Код:
Код: Выделить всё
WriteRegExpandStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "Common Desktop" "%ALLUSERSPROFILE%\Рабочий стол"-
wolkow70
Re: [архив].: NSIS - все вопросы :.
Цитата TTTLordLeo:
в MUI2 определение элементов и их положение возможно только способом указания кода их создания в функция скрипта?
конечно! никаких ini - чистый апи, работает все прекрасно - дело в тренировке и изучением толмутов.
Тем более посмотрите предыдущие странички темы этак 20 - 30 страниц - я много приводил примеров создания страничек на MUI2
Цитата TTTLordLeo:
есть способ накидать элементы в визуальном дизайнере?
есть, но для юникодной версии NSIS (ссылка в шапке), но правда далеко от идеала. После 5 минут общения с дизайнером пропала охота пользоваться...
в MUI2 определение элементов и их положение возможно только способом указания кода их создания в функция скрипта?
[архив].: NSIS - все вопросы :.
конечно! никаких ini - чистый апи, работает все прекрасно - дело в тренировке и изучением толмутов.
Тем более посмотрите предыдущие странички темы этак 20 - 30 страниц - я много приводил примеров создания страничек на MUI2
Цитата TTTLordLeo:
есть способ накидать элементы в визуальном дизайнере?
[архив].: NSIS - все вопросы :.
есть, но для юникодной версии NSIS (ссылка в шапке), но правда далеко от идеала. После 5 минут общения с дизайнером пропала охота пользоваться...
http://coolsoft.altervista.org/en/nsisdialogdesigner
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
Парень из Словакии (под ником Slappy) создал плагин для "HM NIS Edit", позволяющий создавать дизайн окон инсталлятора NSIS как в InnoSetup. Назвал он свое творение "
Он пишет, что этого результата можно добиться и без его дополнения. Я хотел спросить здесь у опытных NSIS-ишников (я только начал знакомиться с этим установщиком) - это действительно возможно? Просто дайте мне направление, на что обратить внимание (какие плагины или модули использовать), а я уже буду дальше сам разбираться. Как говорится, зачем платить.
Может у кого здесь уже есть наработки в этом направлении, будет приятно с ними познакомиться и разобрать ко косточкам.
Graphical Installer
" и распространяет за деньги. Ориентирование плагина - создание красочных инсталляторов для игрушек. Кто-нибудь уже испытывал это чудо?Он пишет, что этого результата можно добиться и без его дополнения. Я хотел спросить здесь у опытных NSIS-ишников (я только начал знакомиться с этим установщиком) - это действительно возможно? Просто дайте мне направление, на что обратить внимание (какие плагины или модули использовать), а я уже буду дальше сам разбираться. Как говорится, зачем платить.
Может у кого здесь уже есть наработки в этом направлении, будет приятно с ними познакомиться и разобрать ко косточкам.