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

silione
20-08-2011, 15:33
Проверку по реестру я делать умею.
Я ищу способ автоматического нахождения пути когда записей в реестре вообще нет (например если винда была переустановлена, а игра осталась).
Пример:
Есть 10 человек. трое установили игру с одного репака (запись в реестре по Uninstall одна), 7 с другого (запись по Uninstall другая), при этом двое из них переустановили винду (записи в реестре нет вообще). Каждый устанавливал игру в разные папки. Нужен такой патч, который находил бы правильный путь установки во всех случаях не напрягая пользователя вводом пути вручную.
Я вижу только один способ, поиск по всем локальным дискам исполняемого файла игры, при нахождении - считывание пути к нему и указание этого пути в качестве пути для установки, в случае отсутсвия пути - выбор пути вручную. Но я нигде не нахожу способов поиска пути к произвольному файлу методами NSIS :(

И еще, не понимаю как работает CRCCheck, можете объяснить?

kotkovets
20-08-2011, 16:04
И еще, не понимаю как работает CRCCheck, можете объяснить? »
CRCCheck on|off|force
Команда записывается вне секции и функции.
если CRCCheck on - будет проверятся целостность инсталлера, т.е уже никто не может изменить инсталлер,
например, вы поменяли иконку инсталлера с помощью редактора ресурсов,
то при запуске инсталлера вы получите крах инсталлера и критическое сообщение.
По умолчанию проверка на целостность инсталлера включена.
если CRCCheck off - целостность инсталлера не будет проверяться.

kotkovets
20-08-2011, 18:21
Я вижу только один способ, поиск по всем локальным дискам исполняемого файла игры, при нахождении - считывание пути к нему и указание этого пути в качестве пути для установки, в случае отсутсвия пути - выбор пути вручную. Но я нигде не нахожу способов поиска пути к произвольному файлу методами NSIS »
В оригинальной справке введите поиск по указателю: Locate
Задействуйте макрос Lосаte из хидера FileFunc.nsh, не забудьте включить хидер в тело скрипта
!include "FileFunc.nsh"
Поиск по всем локальным дискам займет наверно много времени... :o
И вам для начала нужно перечислить все локальные диски на компьютере.
С помощью NSIS это решаемо.
OutFile Locate.exe
!include "FileFunc.nsh"

Section
${GetDrives} "HDD" "GetDrives" ;перечисляем все HDD диски
MessageBox MB_OK "$R0" IDOK
SectionEnd

Function GetDrives
${Locate} "$9" "/L=F /M=*.exe" "Locate" ;в переменной $9 буква диска, поиск по маске *.exe
StrCmp `$R1` "файл.exe" 0 +2
Push "StopGetDrives"
Push $0
FunctionEnd

Function Locate
StrCmp `$R7` "файл.exe" 0 +4 ;если $R7 равно "файл.exe", то...
StrCpy `$R0` `$R9` ;в переменной $R0 - путь к исполняемому файлу игры
StrCpy `$R1` `$R7`
Push "StopLocate" ;останавливаем поиск
Push $0
FunctionEnd

silione
20-08-2011, 18:54
Поиск по всем локальным дискам займет наверно много времени... »
Нда, действительно много времени занимает, потестил.
Тогда можно попробовать решить проблему так: исключим из задачи людей с отсутствующими записями в реестре.
Можно ли тогда задать $INSTDIR просто указав несколько путей InstallDirRegKey? или тогда как задать поиск нужного ключа по реестру?

kotkovets
20-08-2011, 19:05
тогда как задать поиск нужного ключа по реестру »
EnumRegKey - по индексу(указателю) в оригинальной справке, перечисление ключей.
А вообще, по всем делам с поиском в реестре ключей будет скоро в новой версии справочника, пока все секреты не буду говорить..:)
Вы потестите скрипт по локали (поиск по маске *.exe - значительно ускоряет поиск), у меня 5 дисков - поиск нужного файла у меня заняло около минуты - засунул тестовый файл поглубже.

K.A.V.
20-08-2011, 19:22
В оригинальной справке введите поиск по указателю: Locate »
И вам для начала нужно перечислить все локальные диски на компьютере. »
Я уже было хотел выложить переведённые команды из новой версии справочника :drug:
Но т.к. вариант не подошел, не буду :tongue:
скоро в новой версии справочника, пока все секреты не буду говорить.. »
И мне пора заканчивать ;)

Ну а по вопросу:
Можно ли тогда задать $INSTDIR просто указав несколько путей InstallDirRegKey? или тогда как задать поиск нужного ключа по реестру? »
Registry plug-in (http://nsis.sourceforge.net/Registry_plug-in)

Вы потестите скрипт по локали (поиск по маске *.exe »
Как правило имя EXE файла у игр не меняют, можно впринципе и полное имя указать, "пойдёт" ещё быстрее ;)

silione
20-08-2011, 19:25
Я указывал полное имя, у меня поиск занял минуту, но надо помнить, что у кого-то может быть ноут с одним диском С и установлеными прогами типа фотошопа и т.п., да еще и не очень мощный, тогда поиск может и на 10 минут затянуться. так что не вариант. буду пока с реестром эксперементировать, а те у кого в реестре пусто - не облезут, ручками путь укажут :)

kotkovets
20-08-2011, 19:30
Я уже было хотел выложить переведённые команды из новой версии справочника »
K.A.V у меня будет библиотека полностью на API - стандартные команды не блещут универсальностью...
Получилось почти аналог Registry
Могу скинуть либу в PM c описанием...

K.A.V.
20-08-2011, 19:38
стандартные команды не блещут универсальностью... »
Ну это не повод их хронить, забывать про их существование и не переводить справку ;)
Одна API библиотека это хорошо, но, например мне проще использовать уже знакомые команды, к тому же, мне их вполне хватает даже для написание софта, не говоряю уже про инсталляторы :biggrin:
Ну а некоторые специфические функции, конечно, стоит уже писать на API как специальные плагины, но для инсталляторов это дело редкое...

kotkovets
20-08-2011, 19:46
Ну это не повод их хронить, забывать про их существование »
Я имел в виду, что в макросах не эффективно использовать, директивы работы с реестром, дело в том что, эти директивы не принимают корневую ветку, как значение переменной, а как константу - а это сильно усложняет написание библиотеки и скорость работы.

хватает даже для написание софта »
я бы не отважился писать серьезный софт на NSIS......уж слишком медленно он работает с переменными,
а стек - самое слабое место, его очень легко повредить.

K.A.V.
20-08-2011, 20:05
Я имел в виду, что в макросах не эффективно использовать, директивы работы с реестром »
А я подумал про стандартные команды NSIS :lol:
Ну тогда Да, с этим я соглашусь ;)

я бы не отважился писать серьезный софт на NSIS »
А я отважился :biggrin:
Да не в рекламу будет написано, но функциональность, согласитесь, приличная, если узнать все возможности программ...

Настройка Windows XP (http://soft.oszone.net/program/3356/Nastroika_Windows_XP/)
SFX Creator (http://forum.oszone.net/thread-151756.html)
T-12 Installer (http://forum.oszone.net/thread-150151.html)
KillProc (http://winxpregp.narod.ru/killproc/index.html)

kotkovets
20-08-2011, 20:18
функциональность, согласитесь, приличная »
Я не спорю :) функциональности, более чем достаточно, я просто подумал чем больше функции добавляешь в софт написанный на NSIS, тем страшнее наверно становится разработчику софта... :)

K.A.V.
20-08-2011, 20:45
тем страшнее наверно становится разработчику софта... »
ну это зависит от разработчика, у меня в коде порядок и никаких проблем ;)

Исходник программы "Настройка Windows XP" содержит в себе 79961 строк NSIS кода (только главный файл)...И ниче так, порядок :biggrin:


P.S.
Оффтопим

kotkovets
20-08-2011, 20:54
Исходник программы "Настройка Windows XP" содержит в себе 79961 строк »
Боже упаси!!!!! :o

sawe
20-08-2011, 23:07
Исходник программы "Настройка Windows XP" содержит в себе 79961 строк NSIS кода (только главный файл)...И ниче так, порядок »
Вы наверно где то в середине 79961 забыли поставить запятую. :closed-to

--

K.A.V.
20-08-2011, 23:21
Вы наверно где то в середине 79961 забыли поставить запятую. »
Знаете, я никому ничего доказывать не собираюсь, я уже давно привык к тому, что мне не верят в том, что именно я это делаю и это на самом деле...что говорить о вас, когда даже мои друзья не верят :lol:
Типа не забыл поставить запятую (http://img810.imageshack.us/img810/7930/41931124.png)

Если вы скачаете программу, прочитаете справку к ней и полностью ознакомитесь со всеми её возможностями, то я думаю вас не удивит данное количество строк в коде

sawe
21-08-2011, 03:33
Знаете, я никому ничего доказывать не собираюсь, я уже давно привык к тому, что мне не верят в том, что именно я это делаю »
Я просто немного пошутил, мне трудно даже было представить, сколько же весит этот скрипт в м-байтах.
Если вы такой ранимый человек, значит вы творческий человек, а это в наше время уже становится редкостью.
Программы ваши я уже давно скачал, мне только не понятна особенность SFX Creator.
Практически каждый приличный архиватор имеет функцию SFX и сжимают многие из них получше NSIS.

K.A.V.
21-08-2011, 09:41
сколько же весит этот скрипт в м-байтах »
3,53 МБ

Если вы такой ранимый человек, значит вы творческий человек »
Творческий, но не ранимый ;)

мне только не понятна особенность SFX Creator »
Практически каждый приличный архиватор имеет функцию SFX и сжимают многие из них получше NSIS »
Дело вовсе не в степени сжатия файлов, а что можно сделать из SFX архива, если вы сравните возможности создания SFX архива с помощью WinRAR, 7-ZIP и т.д. с SFX Creator, вы увидите что "те" очень многого не умеют ;)

sawe
21-08-2011, 13:22
вы увидите что "те" очень многого не умеют »
Так вкратце опишите, если не трудно!

MKN
21-08-2011, 18:59
Цитата K.A.V.:вы увидите что "те" очень многого не умеют »
sawe, - Так вкратце опишите, если не трудно!
Это же совершенно разные программы - WinRAR, 7-ZIP и т.д. и SFX Creator
SFX Creator создан для "облегчения труда" NSIS пользователям. А вышеназванные архиваторы, они и в Африке архиваторы, никакого отношения к созданию инсталляторов не имеющие (а то, что с их помощью кое что примитивное установочное можно сделать, всерьёз принимать нельзя.)

PS
K.A.V., всё же название программы - SFX Creator, сбивает с толку и не отражает действительной её сути и оригинального назначения...
Может стОит "окрестить" её как то по другому ? NSIS Wizard, NSIS Helper, Easy NSIS Setup Builder и т.п. ?
Без "SFX". Ведь самораспаковкой созданного сценария дистрибутива, дело не ограничится, а "вырастет" в создание полноценного инсталлятора ?




© OSzone.net 2001-2012