PDA

Показать полную графическую версию : SFX Creator 4 Alpha - создаём SFX архивы


Страниц : 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

K.A.V.
03-08-2011, 21:36
Здравствуйте, HiddeN_Ra
Как мне прописать, чтоб перед установкой файла сделать проверку запущен он или нет и если он уже исполнятся, пропустить его установку и запуск. »
У SFX Creator'а существует возможность исполнить собственные NSIS функции только перед и после запуска процесса распаковки файлов, если такой вариант вам подходит, могу написать для вас код

HiddeN_Ra
04-08-2011, 00:50
K.A.V.,
Очень бы был Вам признателен ;) за код
я писал команду taskkill /im test.exe /f
перед распаковкой файла, это вызывает ошибку.

Добиться хотел следующего:
Добавить два файла допустим test.exe и test.log в %ProgramFiles%\test после распаковки назначить атрибут
attrib +h %ProgramFiles%\test.exe и запустить test.exe c ключом -startclient -nogui
И один файл test.bin поместить в %allusersprofile%

Компилю всё работает прекрасно, но при повторном запуске возникает ошибка test.exe уже выполняется, Вот как бы или заново его стартануть или проверять, что он исполняется и пропустить его установку, знаний не хватает :(

Большое спасибо за программу и за помощь!!!

K.A.V.
04-08-2011, 08:33
Распакуйте прикреплённый архив "Plugins.rar" в папку "<SFX Creator>\NSIS\Plugins"
Распакуйте прикреплённый архив "Code.rar" в папку "<SFX Creator>\NSIS\Include\custom"

В папке "<SFX Creator>\NSIS\Include\custom" будет 2 файла:

KillProcess.nsh - при указании данного файла в проекте, SFX Creator сначала завершит указанный вами процесс, затем запустит новый и дождётся его завершения

FindProcess.nsh - при указании данного файла в проекте, SFX Creator проверит, исполняется ли указанный процесс, и, если он НЕ ЗАПУЩЕН, исполняется указанное вами приложение

Эти 2 файла необходимо отредактировать перед включением в проект!
Выбирайте 1 любой, какой метод вам нужен.

Чтобы включить данные файлы в проект, сделайте следующее:
1. В "Дполнительных возможностях" выберите пункт "Выполнить собственные функции"
2. В поле "Include файл" пропишите либо "KillProcess" либо "FindProcess"
3. В поле "Функция" аналогично, либо "KillProcess" либо "FindProcess"
4. Ну и выберите, когда хотите выполнить указанную вами функцию

Я добавил там описание, если чего не поймёте - пишите сюда, поможем ;)

HiddeN_Ra
04-08-2011, 21:30
Спасибо огромное, отпишусь как чего :Beer:

HiddeN_Ra
13-08-2011, 16:34
K.A.V.,
Делаю всё по инструкции но при компиляции выдаёт ошибку. Пробывал по всякому пути прописывать но всё одно, не компилит. Думал сначала что в семёрке глючит мож чего, но в хр тоже самое. Вроде всё правильно делаю. Отсутствовал неделю, вот два дня сижу все варианты испробовал пока не получается...
Вот прикрепляю требуемые файлы для определения ошибки описанные в шапке

K.A.V.
13-08-2011, 18:46
HiddeN_Ra, вы файлы редактировали перед упаковкой? У меня сомнения в оригинальности файлов...
Есть одна строчка, которая у вас прописана не так, как прописывает её программа...Почему?

В файле <SFXCreator>\NSIS\Include\SoftInclude.nsh
Ваша строка выглядит так:
!include "custom\KillProcess"
а должна иметь вид:
!include "custom\KillProcess.nsh"

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


Но я нашел и 1 ошибку в программе (не в ту позицию в коде прописывается тип сжатия), она будет устранена позже, а пока, чтобы её обойти нужно подредактировать файл <SFXCreator>\NSIS\Source.nsh

Откройте его и переместите нижеуказанные строки в самый верх, сохраните файл

SetCompressor LZMA
SetCompressorDictSize 3

После чего для компиляции запустите <SFXCreator>\NSIS\compile.bat

HiddeN_Ra
13-08-2011, 19:28
K.A.V.,
Огромное СПАСИБО!!!
После описанных Вами операций всё скомпелилось и работает, и самое главное никаких ошибок не вылетает, Ваш скрипт который убивает процесс работает на все 100. Тут тоже никаких больше ошибок!!!
Ещё раз спасибо, удачи во всём.... :Beer:

One THE darK
14-08-2011, 02:45
K.A.V., можно ли с помощью вашей программы установить скринсейверы для установки их с дистрибутива windows хр? И какие нужны параметры для реестра? Хочу попробовать именно с помощью вашей программы это сделать, спасибо.

K.A.V.
14-08-2011, 08:55
K.A.V., можно ли с помощью вашей программы установить скринсейверы для установки их с дистрибутива windows хр? И какие нужны параметры для реестра? »
One THE darK, ну здесь ведь ничего сверхъестественного нет...
1. Чтобы система приняла заставку, достаточно файл заставки *.SCR скопировать в каталог System32
2. Чтобы скопированная заставка была установлена у пользователя в качестве заставки по-умолчанию, достаточно прописать в реестр 1 параметр:

HKEY_CURRENT_USER\Control Panel\Desktop
Имя параметра SCRNSAVE.EXE, значение устанавливаем как полный путь к файлу

Для записи в реестр вы можете использовать метод RunOnce с файлом реестра, либо исполнением команды reg add

HiddeN_Ra
14-08-2011, 11:06
Рано обрадовался, звука небыло и окон море открыто было не увидел ошибу :(
Правильно я отредактировал файл, пробывал и с кавычками и без, что то неправильно делаю...

Function KillProcess
KillProcDLL::KillProc test.exe ; укажите образ процесса
execwait $PROGRAMFILES\test.exe ; Ждём завершения исполнения файла
FunctionEnd

Программа у меня запускается с ключом test.exe -startclient -nogui и нормально закрыть удается только через батник

taskkill /im test.exe /f

Закидываю это всё в SFX Creator, компилю с исправлением Source.nsh

Но test.exe -startclient -nogui запускается раньше чем выполняется команда taskkill /im test.exe /f
Ну вернее инструкции выполняются одна за другой не дожидаясь завершения taskkill /im test.exe /f начинает выполняться test.exe -startclient -nogui
И естественно вылетает ошибка. При повторном запуске ошибки нет. Вобщем через раз ошибка....

Наверняка где то ошибаюсь, не могу понять где....

One THE darK
14-08-2011, 11:10
дело вот в чем пробовал с помощью winrar sfx внести "хранители экрана", но как то без результатно, да к тому же пропадают заставки которые должны установиться с аддона. (все происходит во время установки os) вот и хочу добавить пару других заставок.

K.A.V., а спомощью вашей программы вот такого можно добиться? http://www.oszone.net/6477
Если да, то помогите сделать....

K.A.V.
14-08-2011, 11:25
HiddeN_Ra, как я понял написанная мной функция не ждёт завершения? Т.е. именно в ней отработка "не правильная"?
Можно попробовать добавить проверку после снятия процесса, вот так:

Function KillProcess
KillProcDLL::KillProc test.exe ; укажите образ процесса
FindProcDLL::FindProc "test.exe" ; укажите образ процесса
StrCmp $R0 "1" -2 0
execwait $PROGRAMFILES\test.exe ; Ждём завершения исполнения файла
FunctionEnd
Если процесс будет найден, будет повторная попытка его снятия

все происходит во время установки os »
One THE darK, на Т-12/Т-13 могу с уверенностью сказать, что созданный EXE файл отработает как нужно, на NSIS я писал T-12 Installer (http://forum.oszone.net/thread-150151.html) и она работает на ура
На Т-39 не тестировал

HiddeN_Ra
16-08-2011, 00:23
K.A.V.
Всё норм зашуршало ;)

silione
26-08-2011, 21:15
Скачал, установил, попользовался.
Удобно :)
Хотелось бы несколько пожеланий - процесс вставки дополнительных возможностей сделать бы попрозрачнее, в смысле чтобы можно было посмотреть из главного меню программы какие возможности и с какими параметрами были уже добавлены в проект. Расширить справку, в плане работы для "чайников", например добавить всплывающие подсказки для всех пунктов, даже кажущихся очевидными. В идеале еще было бы здорово добавить возможность менять шкурку инсталлятора. И, чуть не забыл, как-то процесс компиляции более наглядным сделать, в процентах чтоли, а то сидишь и не знаешь когда она там закончится если файл большой.

И вопрос - Для чего нужно второе поле $ для задания переменных? Если всего одна папка в инсталлятор входит нужно там указывать туже переменную что и директории для установки?

ZverBY
26-08-2011, 21:57
K.A.V., а когда релиз SFX Creator 2.2 ???

K.A.V.
27-08-2011, 01:05
Хотелось бы несколько пожеланий - процесс вставки дополнительных возможностей сделать бы попрозрачнее, в смысле чтобы можно было посмотреть из главного меню программы какие возможности и с какими параметрами были уже добавлены в проект »
Сейчас голова болит о другом, более нужном функционале, поэтому насчет этого пока ничего говорить не буду

например добавить всплывающие подсказки для всех пунктов, даже кажущихся очевидными »
Это уже в разработке, уже добавлены всплывающие подсказки для элементов главного окна программы (при наведении мышки). Думаю в отдельных диалогах они так же появятся.

В идеале еще было бы здорово добавить возможность менять шкурку инсталлятора »
Это вы про саму программу SFX Creator? Я что-то не понял О_о

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

Для чего нужно второе поле $ для задания переменных? Если всего одна папка в инсталлятор входит нужно там указывать туже переменную что и директории для установки? »
Директрия установки будет храниться в переменной $INSTDIR, поэтому указывайте её
Для чего? А если вам с самой программой нужно распаковать библиотеку в System32 каталог...вот здесь то вы и укажите переменную $SYSDIR, это как небольшой пример...

K.A.V., а когда релиз SFX Creator 2.2 ??? »
Сам не в курсе :dont-know

silione
27-08-2011, 12:06
Это вы про саму программу SFX Creator? Я что-то не понял О_о »
Ну да, хотя это уже эстетика и ясен пень что не важно.
Максимум что могу сделать - показать процесс обработки компилятором строк кода, т.е. не скрывать окно самого компилятора, но нужно ли это...Возможно здесь будет реализована настройка, которая будет контролировать показ/скрытие окна компилятора »
Ну хотя бы так, чтобы компиляция проходила в отдельном окне которое свернуть/развернуть можно, а то ж ее запускаешь, и мало того что непонятно когда она закончится, так еще потом и все окна приходится сворачивать чтобы просто полюбоваться на надпись что компиляция еще в процессе.

По поводу дополнительных функций...
У меня что-то не работает запуск файлов после извлечения.
Решил попробовать сделать для себя инсталлятор 2010 офиса. Выбрал чтобы после распаковки запускался файл setup.exe, но он так и не запускается. Может нужно абсолютный путь к файлу указывать? Нигде про это не уточняется просто. Да и размер инсталлятора почему-то почти на 100 метров больше чем созданный 7z самораспаковывающийся архив с той же функцией запуска.

Ах да, и еще мне для этого инсталлятора явно не хватило функции удаления распакованных файлов после окончания установки, думаю что стоит ее добавить в общий список дополнительных функций, дабы чистить за собой временные папки.

K.A.V.
27-08-2011, 13:09
Выбрал чтобы после распаковки запускался файл setup.exe, но он так и не запускается. Может нужно абсолютный путь к файлу указывать? »
Ну вооьще то да...откуда распаковщик знает, в какой папке расположен ваш файл, указывайте путь с переменной, например если распаковываете в каталог $TEMP, то и указывайте путь для запуска как $TEMP\setup.exe

Да и размер инсталлятора почему-то почти на 100 метров больше »
Возможно стоит использовать опцию "SOLID архив" и указать побольше значение "Размер словаря"?
Только вы можете получить ощибку после изменения при выборе параметров сжатия, об этой ошибке я писал пару постов назад (http://forum.oszone.net/post-1731162.html#post1731162)

Ах да, и еще мне для этого инсталлятора явно не хватило функции удаления распакованных файлов после окончания установки, думаю что стоит ее добавить в общий список дополнительных функций, дабы чистить за собой временные папки. »
Ну пока для этого есть возможность "Добавить файловую операцию" или "Выполнить собственные NSIS функции", также можно использовать скрытый запуск BAT файла после распаковки файлов (предварительно его распаковав), как вариант.
Над реализацией данной возможности подумаю

Smith_Wesson
21-11-2011, 16:12
т.к. проект кроме вас больше никто не обсуждает, и идеи новые приносите только вы, такое ощущение, что программу только для вас пишу »
ну, напрасно Вы так. Активно юзаю вашу прграмулину, в повседневной жизнь. Главное преимущество (как для меня), это то, что созданные "SFX Creator"-ом инсталляторы, ни кто кроме меня не сможет расковырять (по крайней мере, рядовые криворукие юзера) и внести в них изменения. Проблему само удаления инсталлятора и файлов, решил через добавления записи в ветку реестра RunOnсeEx, с последующим ребутом системы.

K.A.V.
24-11-2011, 18:51
Если у кого появились пожелания относительно новой версии кроме тех, которые уже озвучены в этой теме - пишем




© OSzone.net 2001-2012