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

K.A.V.
19-02-2010, 00:38
XCV, я привёл вам код, но его не тестировал, нет, он конечно работает, когда "вытаскивает" лог из текущей установки, а когда данный код используется для "вытаскивания" из другого окна инсталлера - почему-то не работает... :(
Хотя я проверял, дескрипторы окон одинаковые (когда вызывается вытаскивающий EXE и тот, в котором хранится лог), в чем проблема я не разбирался...да ведь и не особо нужно... ;)

XCV
19-02-2010, 01:41
да ведь и не особо нужно »
ну мне эт очень нужно, я перепаковываю инсталяторы (к примеру для добавления возможности тихой установки, или выбрасывания лишнего, или наоборот добавления компонентов.....), и многие собраны в нсис, и вместо того чтобы долго сидеть разбираться что куда надо кинуть, что зарегить, что дополнительно установить и т.д., намного проще было бы взять лог и исходя из него писать свой скрипт... Но видать не судьба, прийдется самому разбираться с каждой прогой в отдельности... хорошо в этом плане с инновскими инсталяторами, с них можно вырвать часть основную скрипта, жаль в нсис этого не сделать...

XCV
19-02-2010, 17:36
ещё один вопрос господа профессионалы, в нсис скрипте команда Exec "files.exe" запускает какой либо процесс, как сделать чтобы инсталятор дождался конца выполнения этого процесса и только после этого продолжил свою работу?
ЗЫ: ExecWait "files.exe" тоже не ждет окончания работы запущенного процесса :(

K.A.V.
19-02-2010, 17:53
Вообще ExecWait должен ждать...Посмотрите, PID процесса не меняется? Может запускаемый файл сам себя перезапускает :dont-know

XCV
19-02-2010, 22:08
Вообще ExecWait должен ждать...Посмотрите, PID процесса не меняется? »
да действительно, файл перезапускает себя, с этим можно бороться? (тоесть заставить нсис ждать окончания второго процесса)

XCV
20-02-2010, 00:01
проблемму эту обошел, но все равно интересно на будущее

K.A.V.
20-02-2010, 01:31
с этим можно бороться? »
Средствами только NSIS маловероятно...
Я бы сделал примерно следующее: написал бы DLL, которая получает список процессов, запущенных в данный момент, и, если полный путь процесса совпадает с файлом, который мы запускали, снова определяем запущенные процессы...когда процесс завершит свою работу, продолжаем... :)

XCV
20-02-2010, 13:22
написал бы DLL »
не, для меня это слишком....

K.A.V.
20-02-2010, 14:02
не, для меня это слишком.... »
Ну тогда, например, можно искать запущенный процесс только по образу (если вы уверены в уникальности имени процесса :) ), а не по полному пути (например notepad.exe), наличие процесса может определить плагин Processes plug-in (http://nsis.sourceforge.net/Processes_plug-in)

XCV
20-02-2010, 23:11
наличие процесса может определить плагин Processes plug-in »
во, эт самое то...

andreyl
22-02-2010, 15:30
Есть исходник библиотеки, нужно dll пересобрать как плагин для nsis.
Кто сталкивался, знает как и что нужно делать?

K.A.V.
22-02-2010, 17:57
andreyl, там добавляется буквально 1 "h" файл, и вызывается функция (для инициализации с NSIS), ну ещё и заголовок функции меняется, ну и ещё 2 функции для передачи параметров из NSIS скрипта и получение данных из DLL :)

Пример пустой функции в прикреплённом архиве
В dllmain.c

#include "exdll.h"
Нужный файл :)

EXDLL_INIT();
Инициализация, без этой функции вы не сможете принимать/отдавать параметры

popstring(tmp);
Получаем данные из NSIS скрипта

pushstring(tmp);
Отправляем данные в NSIS скрипт

Переменная tmp должна быть типа Char

tiylar
22-02-2010, 23:21
Всем привет раскажите про NSIS можно ли спомощью него перепокавать любую прогу и как? У меня есть пару програм которые просто не хотят устанавливатся с помошью обычных ключей. И плиз скажите как правельно покавать в SFX архивы. Заранеее спасибо.

Habetdin
23-02-2010, 00:17
tiylar, NSIS [...] как? »
Создание своего инсталлятора на NSIS. Первые шаги (http://winreview.ru/news.php?extend.33.11)
Ссылки на остальные уроки - в шапке ;)

SFX »
Создание SFX-архива (http://www.oszone.net/3171), SFX Creator - для создания SFX архивов (http://forum.oszone.net/thread-151756.html)

It4a
24-02-2010, 22:39
Добрый вечер/день. Подскажите почему после компиляции иконка у скомпилированного файла не меняется(размер больше 1Gb) на указанную.

K.A.V.
25-02-2010, 01:46
Проблема известна и это проблема Windows. На больших SFX архивах или любых .exe файлах иконка "из файла" не отображается. Решения проблемы нет. »
Может из-за этого? А вообще, я не в курсе...ибо инсталляторы вообще не пишу :)

It4a
25-02-2010, 22:56
Да именно так и есть из-за ограничения размера выполняемого файла иконка не отображается. Да я тоже не писАл инсталляторы, но вот пришлось, после, приблизительно, месяца я избавил себя от кучи проблем и беготни.

CyberMaster
02-03-2010, 14:18
Подскажите пожалуйста, можно ли добавить в инсталлятор сразу все файлы и подпапки из директории pkgdir? (я имею ввиду одной командой, а не прописывать в скрипте каждый файл, который нужно включить в инсталлятор) и чтоб при распаковке инсталлятора, была сохранена структура папок, как в папке pkgdir?

K.A.V.
02-03-2010, 14:51
CyberMaster

SetOutPath "Куда распаковать файлы"
File "Папка для упаковки\*.*"

CyberMaster
02-03-2010, 22:42
K.A.V., да эт понятно :) вот только если папок штук 150 очень надоест прописывать пускай не каждый файл, но каждую папку. Поэтому я спрашивал можно ли добавить в инсталлятор сразу все файлы и подпапки из директории pkgdir?




© OSzone.net 2001-2012