PDA

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


Страниц : 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 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

wolkow70
03-04-2011, 17:41
kotkovets,
В общем то, работает, но возникли еще вопросы, на которые хотелось бы получить ответы:
1. Я делаю установщик, что бы работал с ключом /S, а в процессе выводятся два диалоговых окна, как бы их блокировать?
2. Папка с профилем находится в папке текущего пользователя, если я указал

var path
Section
SetShellVarContext current
${GetParent} "$APPDATA" $R2
${GetParent} $R2 $path
MessageBox MB_OK "$path" IDOK
${Locate} "$path" "/L=FDE /M=extensions.ini" "Find"
IfErrors +2
MessageBox MB_OK '$$R0 = "$R0" $\n$\r$$R1 = "$R1"' IDOK
SectionEnd

то ничего страшного?
3. Имея абсолютный путь E:\Documents and Settings\Anton.OOO-940B41D8143\Application Data\Mozilla\Firefox\Profiles\c0rkpcd2.default

можно ли отчет уровней начать с папки Firefox, а то впапке Mozilla еще может оказаться почтовый клиент, у которого тоже есть файл extensions.ini?

kotkovets
03-04-2011, 22:21
Я делаю установщик, что бы работал с ключом /S, а в процессе выводятся два диалоговых окна, как бы их блокировать? »
а кто не дает мессаги убрать? я же в качестве примера привел, наглядное отображение переменных
Зачем так этому прямолобно относится? при отладке скрипта это очень помогает и вообще я если пишу скрипт, то отлаживаю кусок кода на отладочном скрипте, когда все нормуль - добавляю в основной проект, иначе как?. Чтобы нормально написать скрипт или прогу - надо жестко пахать, а разбираться никто не хочет, что и как, вот отсюда и такие вопросы....
можно ли отчет уровней начать с папки Firefox, а то впапке Mozilla еще может оказаться почтовый клиент, у которого тоже есть файл extensions.ini? »
естественно, вы же заказываете музыку, вам нужно в первую очередь определить с какого места начать поиск
в данном случае, если папка Anton.OOO-940B41D8143, означает имя текущего пользователя, то можно так:
MessageBox MB_OK "$APPDATA\Mozilla\Firefox" если попадает путь в вашем случае на E:\Documents and Settings\Anton.OOO-940B41D8143\Application Data\Mozilla\Firefox\Profiles\c0rkpcd2.default , зачем путь вверх подымать? вот вы увидите куда вы попадете в сообщении, а SetShellVarContext current - (по умолчанию) всегда перенаправляет в папку настроек текущего пользователя. Если иначе поиск нужно начинать с Documents and Settings - писал уже в предыдущих в своих сообщениях, ведь в NSIS нет прямой переменной на папку Documents and Settings, приходится использовать $DOCUMENTS c поднятием на 2 уровня вверх.

wolkow70
04-04-2011, 09:00
kotkovets,

Не подскажите, что означает ошибка в конце:
install function "GetParent" not referenced
Хотя, инсталлятор собирается и работает.
Сделал так:
var path
Section "Интеграция в браузер Firefox" sec07
SetShellVarContext current
${GetParent} "$APPDATA\Mozilla\Firefox\Profiles" $path
MessageBox MB_OK "$path" IDOK
${Locate} "$path" "/L=FDE /M=extensions.ini" "Find"
IfErrors +2
MessageBox MB_OK '$$R0 = "$R0" $\n$\r$$R1 = "$R1"' IDOK
CreateDirectory "$R0\extensions"
SetOutPath "$R0\extensions"
Push "$PROGRAMFILES\Orbitdownloader\addons\OneClickYouTubeDownloader$\r$\n"
Push "$R0\extensions\{35379F86-8CCB-4724-AE33-4278DE266C70}"
Call WriteToFile
SectionEnd

kotkovets
04-04-2011, 09:18
install function "GetParent" not referenced »
${GetParent} "$APPDATA\Mozilla\Firefox\Profiles" $path - зачем ?
проще же так сразу:
${Locate} "$APPDATA\Mozilla\Firefox"...

wolkow70
05-04-2011, 07:32
Ребята, помогите опять..
делаю инсталлятор XnView из скрипта hb860 вытянул такие строки. Собрал установщик, а ассоциации с файлами так и не происходят, они остаются за ACDSee.
В чем может быть дело?
Section "Ассоциация файлов" Sec06
;
!macro RegisterExtension extenstion ContentType PerceivedType ClassName DefaultIcon OpenCommand
WriteRegStr HKCR "${extenstion}" "" "${ClassName}"
WriteRegStr HKCR "${extenstion}" "PerceivedType" "${PerceivedType}"
WriteRegStr HKCR "${extenstion}" "Content Type" "${ContentType}"
WriteRegStr HKCR "${ClassName}\DefaultIcon" "" "${DefaultIcon}"
WriteRegStr HKCR "${ClassName}\shell\open\command" "" "${OpenCommand}"
!macroend
var /GLOBAL OpenCommand
StrCpy $OpenCommand "$\"$OUTDIR\${PRODUCT_NAME}.exe$\" $\"%1$\""
!insertmacro RegisterExtension ".jpg" "image/jpeg" "image" "XnView.jpg" "$OUTDIR\${PRODUCT_NAME}.exe,2" $OpenCommand
!insertmacro RegisterExtension ".bmp" "image/bmp" "image" "XnView.bmp" "$OUTDIR\${PRODUCT_NAME}.exe,2" $OpenCommand
!insertmacro RegisterExtension ".gif" "image/gif" "image" "XnView.gif" "$OUTDIR\${PRODUCT_NAME}.exe,3" $OpenCommand
!insertmacro RegisterExtension ".iff" "image/iff" "image" "XnView.iff" "$OUTDIR\${PRODUCT_NAME}.exe,4" $OpenCommand
!insertmacro RegisterExtension ".jpe" "image/jpeg" "image" "XnView.jpeg" "$OUTDIR\${PRODUCT_NAME}.exe,5" $OpenCommand
!insertmacro RegisterExtension ".jpeg" "image/jpeg" "image" "XnView.jpeg" "$OUTDIR\${PRODUCT_NAME}.exe,5" $OpenCommand
!insertmacro RegisterExtension ".jpg" "image/jpeg" "image" "XnView.jpeg" "$OUTDIR\${PRODUCT_NAME}.exe,5" $OpenCommand
!insertmacro RegisterExtension ".pcx" "image/pcx" "image" "XnView.pcx" "$OUTDIR\${PRODUCT_NAME}.exe,7" $OpenCommand
!insertmacro RegisterExtension ".png" "image/png" "image" "XnView.png" "$OUTDIR\${PRODUCT_NAME}.exe,8" $OpenCommand
!insertmacro RegisterExtension ".tga" "image/tga" "image" "XnView.tga" "$OUTDIR\${PRODUCT_NAME}.exe,9" $OpenCommand
!insertmacro RegisterExtension ".tif" "image/tif" "image" "XnView.tif" "$OUTDIR\${PRODUCT_NAME}.exe,10" $OpenCommand
!insertmacro RegisterExtension ".emf" "image/emf" "image" "XnView.emf" "$OUTDIR\${PRODUCT_NAME}.exe,11" $OpenCommand
!insertmacro RegisterExtension ".wmf" "image/wmf" "image" "XnView.wmf" "$OUTDIR\${PRODUCT_NAME}.exe,12" $OpenCommand
!insertmacro RegisterExtension ".pic" "image/pic" "image" "XnView.Image" "$OUTDIR\${PRODUCT_NAME}.exe,1" $OpenCommand
!insertmacro RegisterExtension ".dib" "image/dib" "image" "XnView.Image" "$OUTDIR\${PRODUCT_NAME}.exe,1" $OpenCommand
WriteRegStr HKCR "Applications\xnview.exe\shell\open\command" "" $OpenCommand
${RefreshShellIcons}
SectionEnd

kotkovets
05-04-2011, 11:48
wolkow70,
А справка для чего? где это вы видели, чтобы макрокоманды в секции прописывались, если уж вытянули чужой макрос - вера, что ли не позволяет посмотреть скрипт, где и в каком месте макросы нарисованы и как они работают? и для чего они нужны то?
Примерно можно упрощенно сделать вот так:
!include "FileFunc.nsh"

!define Register "!insertmacro RegisterExtension"
!macro RegisterExtension extenstion ClassName DefaultIcon OpenCommand
WriteRegStr HKLM "SOFTWARE\Classes\${extenstion}" "" "${ClassName}"
WriteRegStr HKLM "SOFTWARE\Classes\${ClassName}\DefaultIcon" "" "${DefaultIcon}"
WriteRegStr HKLM "SOFTWARE\Classes\${ClassName}\shell\open\command" "" "${OpenCommand}"
!macroend

Section Main
SetOutPath "$INSTDIR\XnView" #помещает путь распаковки в $OUTDIR
${Register} ".bmp" "XnView.bmp" "$OUTDIR\XnView.exe,2" "$\"$OUTDIR\XnView.exe$\" $\"%1$\""
#---#
${RefreshShellIcons}
SectionEnd
/*
получается в макросе вот такая запись структуры:
WriteRegStr HKLM "SOFTWARE\Classes\.bmp" "" "XnView.bmp"
WriteRegStr HKLM "SOFTWARE\Classes\XnView.bmp\DefaultIcon" "" "$OUTDIR\XnView.exe,2"
WriteRegStr HKLM "SOFTWARE\Classes\.bmp\shell\open\command" "" "$\"$OUTDIR\XnView.exe$\" $\"%1$\""
*/

XCV
05-04-2011, 12:01
может кто встречал конвертор cmd файлов в nsis скрипт, поделитесь пожалуйста....

wolkow70
05-04-2011, 17:45
А справка для чего? »

Я справку читаю, правда многое там не понятно, потому как в английском не силен...
Учусь в основном на готовых скриптах.

wolkow70
05-04-2011, 18:18
де это вы видели, чтобы макрокоманды в секции прописывались »
Переместил я макрос за пределы секции, ничего это не изменило.
Суть такова: Если графические файлы (bmp, jpg) не зарегистрированы ни за какой программой, то при установке они ассоциируются за XNView. Но, если их предварительно зарегистрировать за ACDSee или за программой просмотра изображений и факсов Windows, то при установке они остаются за ними и зарегистрированными, но не за XNView.

kotkovets
05-04-2011, 21:27
wolkow70,
Справочник по NSIS (http://forum.oszone.net/showpost.php?p=1569008) там есть разбор ассоциаций реестра, предыдущий пример ассоциаций отлично работает, правда проверял на другом расширении файла, т.е для XNView может быть нужно подкорректировать записи, но макет таков и он работает иначе я бы не выкладывал не работающий пример, а готовое решение за Вами. посмотрите скрипт AIMP'а , там есть отличное решение для ассоциаций.
может кто встречал конвертор cmd файлов в nsis скрипт, поделитесь пожалуйста.... »
такого конвертера нет, но если есть голова и руки и знать, что cmd делает и плюс по надобности, пару вызовов API - то конвертер совершенно ник чему...

XCV
06-04-2011, 10:22
такого конвертера нет, но если есть голова и руки и знать, что cmd делает и плюс по надобности, пару вызовов API - то конвертер совершенно ник чему... »
ну это как сказать, если Вы пишите скрипты 3-5 строчек и раз в месяц, то Вам ни к чему, а у меня возникает частенько желание переделать cmd файл (в котором 100-200 строк) в nsis скрипт и вот тут такой конвертер ох как нужен (лень - двигатель прогресса, а я очень ленивый =))

kotkovets
06-04-2011, 12:23
лень - двигатель прогресса, а я очень ленивый »
Это я понял, что за cmd? что делает? я иногда батники скриптом NSIS делаю (через FileWrite) и запускаю скрытно, т.е батник создается в процессе работы установщика.
Возьмите Visual Studio или Delphi и сварганьте конвертер, если не лень конечно...:biggrin:

XCV
06-04-2011, 18:51
Возьмите Visual Studio или Delphi и сварганьте конвертер, если не лень конечно... »
в том то и дело что лень, я думал может кто сделал уже такое до меня, тогда дабы не изобретать велосипед можно было бы воспользоватся чужими наработками =)
ЗЫ: инсталятор то тоже можно самому написать ;)

a--e
06-04-2011, 23:22
Доброго вечера, уважаемые.
Прошу помощи в следующем вопросе:
имеются файлы с расширениями .tmp.patchFile и файл VPatch.dll
как реализовать функцию патченья при помощи данных файлов средствами zip2exe в классической оболочке с автоматическим поиском папки назначения?

За помощь буду очень благодарен и признателен. Заранее спасибо.

wolkow70
07-04-2011, 09:21
Уважаемый kotkovets, подскажите почему не компилируется такая строка?

WriteRegBin HKEY_CLASSES_ROOT ".bmp\OpenWithProgids" "Paint.Picture"

Получена с помощью конвертера рег-файлов.....

kotkovets
07-04-2011, 10:05
Получена с помощью конвертера рег-файлов..... »
Ну нельзя доверять полностью таким утилитам, у нее полно багов...
а запись бинарных данных записывается так:
WriteRegBin [root_key] [subkey] [key_name] [valuedata] т.е так выходит:
WriteRegBin HKLM "Software\My Company\My Software" "Binary Value" DEADBEEF01223211151
и к тому же записи такого типа полно в реестре, несложно посмотреь, но редактор бывает их сохраняет строковые значения как бинарные, утилитка это видит и делает по своему, как хозяин прописал...
В вашем случае. как то так: WriteRegStr HKCR ".bmp" "OpenWithProgids" "Paint.Picture"
как реализовать функцию патченья »
Вот пример, и патчить можно практически любой файл
пример (http://forum.oszone.net/post-1475178-603.html)

MKN
07-04-2011, 10:44
И у меня вопрос по поводу записи бинарных значений в реестр.

Запись в реестр значения этого рабочего reg-файла :
[HKEY_CURRENT_USER\Software\ACD Systems\ACDSee Pro\40\en\Settings\Browser\BCGPDockManager--1]
"DockingCBAndSliders"=hex:00,00,00,00,0b,00,00,00,00,00,00,00,00,20,00,00,00,\
00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,04,00,00,00,04,00,\
00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,\
00,88,56,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,\
88,56,00,00,01,00,00,00,88,56,00,00,00,00,00,00,00,80,00,00,00,00,00,00,ff,\
ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,04,00,00,00,04,00,00,00,00,00,\
00,00,01,00,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,d8,07,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,d8,07,00,00,\
01,00,00,00,d8,07,00,00,00,00,00,00,00,40,00,00,00,00,00,00,ff,ff,ff,ff,ff,\
ff,ff,ff,b2,03,00,00,37,00,00,00,b6,03,00,00,b1,03,00,00,00,00,00,00,02,00,\
00,10,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,ff,04,00,00,\
00,d2,07,00,00,cf,07,00,00,d3,07,00,00,d7,07,00,00,ff,ff,02,00,14,00,43,41,\
43,44,54,61,62,62,65,64,43,6f,6e,74,72,6f,6c,42,61,72,00,40,00,00,00,00,00,\
00,bb,03,00,00,56,00,00,00,05,05,00,00,cd,03,00,00,b6,03,00,00,37,00,00,00,\
00,05,00,00,b1,03,00,00,00,00,00,00,01,00,00,00,40,41,00,46,04,00,00,00,ff,\
fe,ff,08,4f,00,72,00,67,00,61,00,6e,00,69,00,7a,00,65,00,00,00,00,00,d2,07,\
00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,fe,ff,09,54,00,61,00,73,00,6b,\
00,20,00,50,00,61,00,6e,00,65,00,00,00,00,00,cf,07,00,00,01,00,00,00,ff,ff,\
ff,ff,ff,ff,ff,ff,ff,fe,ff,0a,50,00,72,00,6f,00,70,00,65,00,72,00,74,00,69,\
00,65,00,73,00,00,00,00,00,d3,07,00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,\
ff,fe,ff,06,53,00,65,00,61,00,72,00,63,00,68,00,00,00,00,00,d7,07,00,00,01,\
00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,01,00,00,00,ff,ff,ff,ff,d2,07,00,00,01,00,00,\
00,ff,ff,ff,ff,d2,07,00,00,00,00,00,00,00,10,00,00,01,00,00,00,ff,ff,ff,ff,\
ff,ff,ff,ff,e2,00,00,00,37,00,00,00,e6,00,00,00,ae,03,00,00,01,00,00,00,02,\
00,00,10,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,01,00,00,00,ff,ff,ff,ff,04,00,00,00,d1,07,00,00,d5,07,00,\
00,cd,07,00,00,ce,07,00,00,01,80,00,10,00,00,01,00,00,00,05,00,00,00,56,00,\
00,00,e7,00,00,00,12,02,00,00,00,00,00,00,37,00,00,00,e2,00,00,00,f3,01,00,\
00,00,00,00,00,01,00,00,00,40,14,00,56,04,00,00,00,ff,fe,ff,07,46,00,6f,00,\
6c,00,64,00,65,00,72,00,73,00,01,00,00,00,d1,07,00,00,01,00,00,00,ff,ff,ff,\
ff,ff,ff,ff,ff,ff,fe,ff,08,43,00,61,00,6c,00,65,00,6e,00,64,00,61,00,72,00,\
01,00,00,00,d5,07,00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,fe,ff,09,46,\
00,61,00,76,00,6f,00,72,00,69,00,74,00,65,00,73,00,01,00,00,00,cd,07,00,00,\
01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,fe,ff,0e,50,00,72,00,69,00,76,00,61,\
00,74,00,65,00,20,00,46,00,6f,00,6c,00,64,00,65,00,72,00,00,00,00,00,ce,07,\
00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,d6,07,00,\
00,01,00,00,00,00,00,00,00,01,00,00,00,01,00,00,00,ff,ff,ff,ff,00,00,00,00,\
f3,01,00,00,e2,00,00,00,f7,01,00,00,01,00,00,00,01,00,00,10,04,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,\
00,00,ff,ff,ff,ff,d1,07,00,00,d6,07,00,00,01,00,00,00,d6,07,00,00,01,00,00,\
00,ff,ff,ff,ff,d1,07,00,00,00,00,00,00,00,80,00,00,00,00,00,00,ff,ff,ff,ff,\
ff,ff,ff,ff,00,00,00,00,02,00,00,00,04,00,00,00,06,00,00,00,00,00,00,00,01,\
00,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,d0,07,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,d0,07,00,00,01,00,00,\
00,d0,07,00,00,00,00,00,00,00,00,00,00,00,00,00,00
необходимо реализовать посредством NSIS

Классический способ записи WriteRegBin [root_key] [subkey] [key_name] [valuedata] - почему то не срабатывает... Может значение слишком велико по объёму ?

Пробую Registry плагин :
Name "Bin"
OutFile testbin.exe

!include "Registry.nsh"

Section

${registry::StrToHex} "00,00,00,00,0b,00,00,00,00,00,00,00,00,20,00,00,00,\
00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,04,00,00,00,04,00,\
00,00,00,00,00,00,01,00,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,\
00,88,56,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,\
88,56,00,00,01,00,00,00,88,56,00,00,00,00,00,00,00,80,00,00,00,00,00,00,ff,\
ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,04,00,00,00,04,00,00,00,00,00,\
00,00,01,00,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,d8,07,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,d8,07,00,00,\
01,00,00,00,d8,07,00,00,00,00,00,00,00,40,00,00,00,00,00,00,ff,ff,ff,ff,ff,\
ff,ff,ff,b2,03,00,00,37,00,00,00,b6,03,00,00,b1,03,00,00,00,00,00,00,02,00,\
00,10,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,ff,ff,ff,ff,04,00,00,\
00,d2,07,00,00,cf,07,00,00,d3,07,00,00,d7,07,00,00,ff,ff,02,00,14,00,43,41,\
43,44,54,61,62,62,65,64,43,6f,6e,74,72,6f,6c,42,61,72,00,40,00,00,00,00,00,\
00,bb,03,00,00,56,00,00,00,05,05,00,00,cd,03,00,00,b6,03,00,00,37,00,00,00,\
00,05,00,00,b1,03,00,00,00,00,00,00,01,00,00,00,40,41,00,46,04,00,00,00,ff,\
fe,ff,08,4f,00,72,00,67,00,61,00,6e,00,69,00,7a,00,65,00,00,00,00,00,d2,07,\
00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,fe,ff,09,54,00,61,00,73,00,6b,\
00,20,00,50,00,61,00,6e,00,65,00,00,00,00,00,cf,07,00,00,01,00,00,00,ff,ff,\
ff,ff,ff,ff,ff,ff,ff,fe,ff,0a,50,00,72,00,6f,00,70,00,65,00,72,00,74,00,69,\
00,65,00,73,00,00,00,00,00,d3,07,00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,\
ff,fe,ff,06,53,00,65,00,61,00,72,00,63,00,68,00,00,00,00,00,d7,07,00,00,01,\
00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,01,00,00,00,ff,ff,ff,ff,d2,07,00,00,01,00,00,\
00,ff,ff,ff,ff,d2,07,00,00,00,00,00,00,00,10,00,00,01,00,00,00,ff,ff,ff,ff,\
ff,ff,ff,ff,e2,00,00,00,37,00,00,00,e6,00,00,00,ae,03,00,00,01,00,00,00,02,\
00,00,10,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,01,00,00,00,ff,ff,ff,ff,04,00,00,00,d1,07,00,00,d5,07,00,\
00,cd,07,00,00,ce,07,00,00,01,80,00,10,00,00,01,00,00,00,05,00,00,00,56,00,\
00,00,e7,00,00,00,12,02,00,00,00,00,00,00,37,00,00,00,e2,00,00,00,f3,01,00,\
00,00,00,00,00,01,00,00,00,40,14,00,56,04,00,00,00,ff,fe,ff,07,46,00,6f,00,\
6c,00,64,00,65,00,72,00,73,00,01,00,00,00,d1,07,00,00,01,00,00,00,ff,ff,ff,\
ff,ff,ff,ff,ff,ff,fe,ff,08,43,00,61,00,6c,00,65,00,6e,00,64,00,61,00,72,00,\
01,00,00,00,d5,07,00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,fe,ff,09,46,\
00,61,00,76,00,6f,00,72,00,69,00,74,00,65,00,73,00,01,00,00,00,cd,07,00,00,\
01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,fe,ff,0e,50,00,72,00,69,00,76,00,61,\
00,74,00,65,00,20,00,46,00,6f,00,6c,00,64,00,65,00,72,00,00,00,00,00,ce,07,\
00,00,01,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,00,00,00,00,d6,07,00,\
00,01,00,00,00,00,00,00,00,01,00,00,00,01,00,00,00,ff,ff,ff,ff,00,00,00,00,\
f3,01,00,00,e2,00,00,00,f7,01,00,00,01,00,00,00,01,00,00,10,04,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,\
00,00,ff,ff,ff,ff,d1,07,00,00,d6,07,00,00,01,00,00,00,d6,07,00,00,01,00,00,\
00,ff,ff,ff,ff,d1,07,00,00,00,00,00,00,00,80,00,00,00,00,00,00,ff,ff,ff,ff,\
ff,ff,ff,ff,00,00,00,00,02,00,00,00,04,00,00,00,06,00,00,00,00,00,00,00,01,\
00,00,00,04,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,d0,07,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,d0,07,00,00,01,00,00,\
00,d0,07,00,00,00,00,00,00,00,00,00,00,00,00,00,00" $0

${registry::Write} "HKCU\Software\ACD Systems\ACDSee Pro\40\en\Settings\Browser\BCGPDockManager--1" "DockingCBAndSliders" "$0" "REG_BINARY" $R0

MessageBox MB_OK "registry::StrToHex$\n$\n\
К сожалению, при данном варианте скрипта, в реестр записалось значение, $\n$\n\
не соответствующее значению исходного REG-файла..."
SectionEnd

Значение записывается, но... не верное ! Соответственно нет результата. (точнее, происходит ряд изменений совершенно не нужных...) В чём я ошибся ?

ps Проверяю, экспортируя из реестра, ключ записанный посредством NSIS. Значение в нём другое, отличное от исходного рабочего reg-файла... Что за чертовщина ?!

kotkovets
07-04-2011, 11:21
MKN, дело в стандартном NSIS у которого размер передачи и хранения данных ограничен 1024 байтами, поэтому обрезается значение до этой длины, скачай специальную версию NSIS Large strings (http://nsis.sourceforge.net/Special_Builds) , где размер увеличен до 8192 байта, замени все файлы из скачанного архива.Сейчас проверил, работает как нужно, сравнил значения до и после - индетичны.
WriteRegbin HKCU "Software\ACD Systems\ACDSee Pro\40\en\Settings\Browser\BCGPDockManager--1" "DockingCBAndSliders" \
000000000b000000000000000020000000000000ffffffffffffffff00000000000000000400000004000000000000000100 0000040000000100\
0000000000000000000088560000000000000000000000000000000000000100000088560000010000008856000000000000 0080000000000000\
ffffffffffffffff00000000000000000400000004000000000000000100000004000000010000000000000000000000d807 0000000000000000\
0000000000000000000001000000d807000001000000d8070000000000000040000000000000ffffffffffffffffb2030000 37000000b6030000\
b1030000000000000200001004000000010000000000000000000000ffffffff04000000d2070000cf070000d3070000d707 0000ffff02001400\
43414344546162626564436f6e74726f6c4261720040000000000000bb0300005600000005050000cd030000b60300003700 000000050000b103\
000000000000010000004041004604000000fffeff084f007200670061006e0069007a00650000000000d207000001000000 ffffffffffffffff\
fffeff095400610073006b002000500061006e00650000000000cf07000001000000fffffffffffffffffffeff0a50007200 6f00700065007200\
740069006500730000000000d307000001000000fffffffffffffffffffeff0653006500610072006300680000000000d707 000001000000ffff\
ffffffffffffffffffff000000000000000000000000000000000000000001000000ffffffffd207000001000000ffffffff d207000000000000\
0010000001000000ffffffffffffffffe200000037000000e6000000ae030000010000000200001004000000010000000000 0000000000000000\
0000000000000000000001000000ffffffff04000000d1070000d5070000cd070000ce070000018000100000010000000500 000056000000e700\
0000120200000000000037000000e2000000f301000000000000010000004014005604000000fffeff0746006f006c006400 6500720073000100\
0000d107000001000000fffffffffffffffffffeff08430061006c0065006e0064006100720001000000d507000001000000 ffffffffffffffff\
fffeff094600610076006f007200690074006500730001000000cd07000001000000fffffffffffffffffffeff0e50007200 6900760061007400\
6500200046006f006c0064006500720000000000ce07000001000000ffffffffffffffff0000000000000000d60700000100 0000000000000100\
000001000000ffffffff00000000f3010000e2000000f7010000010000000100001004000000000000000000000000000000 0000000000000000\
0000000002000000ffffffffd1070000d607000001000000d607000001000000ffffffffd107000000000000008000000000 0000ffffffffffff\
ffff00000000020000000400000006000000000000000100000004000000010000000000000000000000d007000000000000 0000000000000000\
0000000001000000d007000001000000d0070000000000000000000000000000

a--e
07-04-2011, 12:03
kotkovets, это конечно хорошо и спасибо за оперативную помощь, но к сожаленю в nsis я полнейший профан.
В вашем примере есть 2 различных файла, а в моём случае есть оригинальный файл и файл (надеюсь правильно выразиться) разницы с расширением tmp.patchfile который не является модифицированным, а лишь содержит информацию о модификации.
Я пробовал: сначала применить патч, затем утилитами извлечь повторно эту информацию (GenPat.exe, nsisPatchGen.exe, VPatchGUI) но в итогде потерпел с ними фиаско. Первые две файл *.pat вообще не создавали. Проверяли файлы (долго и упорно), проверили и все. VpatchGUI справлялся, но полученный на выходе файл ехе, dll и pat никоим образом в скрипт NSISa не прикрутился. (

возможно косяк в размере файлов. Всего должно пропатчиться 15 файлов среди которых 1 весит примерно 900мб.

GenPat.exe "*.gam" "*_new.gam" "Path.pat" применимо для конкретного файла, а для директорий?

kotkovets
07-04-2011, 13:21
a--e, я стандартным в поставке nsis пользуюсь,без глюков работает и для каждого файла нужен свой патчик,
прежде, чем патчить файл, плагин сверяет сумму файла, который нужно патчить по алгоритму MD5
должны быть: оригинал файла и патченный вариант оригинального файла - патченный файл создаете любыми средствами. GenPat.exe - генерит файл изменений на основе сравнения оригинального файла и патченного.
Предварительная подготовка, создаем батник:
GenPat.exe "путь\оригинальный файл" "путь\патченный файл" "Path.pat" т.е на выходе получается Path.pat - файл изменений относительно оригинала и патченного файла.
Далее в скрипте прописываем:

OutFile "test.exe"
InstDir "C:\Test"

Section
SetOutPath "$INSTDIR"
File "путь к оригинальному файлу\file" ;засовываем файл в установщик
InitPluginsDir
File /oname=$PLUGINSDIR\path.pat "путь к path.pat" ;засовываем файл path.pat в установщик
vpatch::vpatchfile "$PLUGINSDIR\path.pat" "путь к оригинальному файлу\file" "путь сохранения измененого оригинального файла\file_path"
Delete "путь к оригинальному файлу\file" ;удаляем оригинальный файл
Rename "путь сохранения измененного оригинального файла\file_path" "путь сохранения измененого оригинального файла\file" ;переименовываем патченый файл в оригинальное имя файла
SectionEnd
...среди которых 1 весит примерно 900м»
)))) не делал такое, наверно долго файл .pat создаваться будет.




© OSzone.net 2001-2012