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

vsk77
05-02-2014, 17:48
K.A.V., спасибо.

The_Immortal
07-02-2014, 01:41
K.A.V., скажите, пожалуйста, можно ли каким-то образом извлечь из собранного sfx-архива, так называемый конфигурационный файл? Я пробовал для этих целей 7ZSplit, но он не подходит :-(

Дело в том, что я пытаюсь создать свой конфигурационный файл, но некоторые функции (http://forum.oszone.net/post-2304501.html#post2304501) реализовать не могу - хотелось бы подсмотреть, как это реализовано у Вас.

Спасибо!

K.A.V.
07-02-2014, 07:47
K.A.V., скажите, пожалуйста, можно ли каким-то образом извлечь из собранного sfx-архива, так называемый конфигурационный файл? »
Никак, его не существует при создании SFX архива. Вы, как и некоторые, путаете SFX Creator с оболочкой для создания SFX архивов с помощью 7-zip, но на самом деле SFX Creator создаёт архивы с помощью системы создания инсталляций NSIS, поэтому никаких конфигурационных файлов SFX Creator не использует.
В справке на страничке "О программме" рассказан принцип, по которому SFX Creator создаёт архивы:
Принцип работы SFX Creator заключается в том, чтобы в зависимости от настроек вашего проекта создать скрипт на языке NSIS и затем запустить на исполнение компиляцию созданного NSIS-скрипта.

valsitsor0
18-02-2014, 01:15
А можно в
- проверка установленного ПО
-ручной выбор ключа реестра
вставить логическое ИЛИ?
---------
т.есть чтобы проверка шла по нескольким путям и значениям?

K.A.V.
18-02-2014, 14:33
А можно в
- проверка установленного ПО
-ручной выбор ключа реестра
вставить логическое ИЛИ? »
Нет.
Что это за приложение, которое не может определиться, где хранить данные о себе?

mamont1
19-02-2014, 01:21
как правильно вписать в графы "проверка установленного ПО"
заполняю (скрин1) (http://s1.directupload.net/images/140218/as6elqjq.gif), параметр в реестре (скрин2) (http://s14.directupload.net/images/140218/6h2o28lj.gif)
собираю/запускаю - error1 - отлично.
удаляю ветку реестра HKEY_CURRENT_USER\Software\DownloadManager
запускаю - error1 - не хорошо.

[Определение ПО]
1=null
1_type=hand
1_rootkey=HKCU
1_key=Software\DownloadManager
1_value=bHDIShwd
1_if=Полностью совпадает с
1_if2=
1_onlyValueEx=1
1_showEcho=1
1_echotype=Стоп-иконка
1_echo=error1
1_continueInstall=no

K.A.V.
19-02-2014, 01:40
как правильно вписать в графы "проверка установленного ПО" »
Моё упущение, забыл в файле справке указать, что проверка работает только при "Строковых параметрах", т.е. тип параметра должен быть REG_SZ, возможно, потом решим данную проблему и будет поддержка и DWORD-параметров

mamont1
19-02-2014, 02:01
тип параметра должен быть REG_SZ »
дык, ветки-то нет, а оно еррорит, вот главный вопрос.

K.A.V.
19-02-2014, 13:03
дык, ветки-то нет, а оно еррорит, вот главный вопрос. »
А чего вы хотите? Правильно всё отрабатывает, вы указываете проверку существования параметра, но даже ветки не существует => ошибка, ПО не считается установленным
Или вы хотите, чтобы при отсутствии раздела был положительный результат проверки?

mamont1
19-02-2014, 16:39
Или вы хотите, чтобы при отсутствии раздела был положительный результат проверки? »
ну, да.
нет ветки реестра - только тогда продолжить.
я так понял
Только проверить наличие параметра
Иногда не важно, какое значение имеет проверяемый параметр, поэтому я решил добавить данный переключатель
Если вы его отметите, то SFX Creator не будет читать значение параметра, а всего лишь проверит, существует указанный вами параметр или нет.
Если параметр существует - ПО будет считаться определённым в скрипте установщика

ну и логично:-
Если параметр не существует - ПО не будет считаться определённым в скрипте установщика

мене надо проверить ветки реестра, и если чисто (нет записей) - продолжить.
если есть - прекратить установку. (жутко матерясь...)
Сиё возможно? Если да, то как, мне заполнить поля?

K.A.V.
19-02-2014, 16:55
ну, да. »
Ну, тогда пишите собственную функцию
Какой смысл в проверке существования раздела, если вы проверяете наличие параметра? А если и раздела не существует, само собой - софт не установлен

Если параметр существует - ПО будет считаться определённым в скрипте установщика »
Не только параметра не существует, но и ветки тоже, значит и проверка софта будет заканчиваться отрицательным результатом.

Странную логику вы хотите построить:
Есть раздел, но нет параметра - софт не установлен
Нет раздела - софт установлен

Данная возможность была реализована для одной задачи: к примеру, вы устанавливаете программу, для работы которой требуется стороннее ПО (типа Framework), делаете проверку, нет Framework - ошибка, есть - продолжение установки.
Были ещё у меня задумки на расширение функционала данной возможности, но говорить о них нет смысла, т.к. за неё браться пока не хочу, сомневаюсь, что данной возможностью много кто пользуется, учитывая то, что SFX Creator в первую очередь предназначен для создания silent SFX архивов...

K.A.V.
19-02-2014, 17:59
Сиё возможно? Если да, то как, мне заполнить поля? »
Данным функционалом SFX Creator не обладает, но это возможно сделать при написании своей NSIS функции

1. Скачайте прикреплённый файл, распакуйте на рабочий стол
2. Откройте данный файл и введите свой путь для ветки реестра, там и отредактируйте ваше сообщение
3. Дополнительные возможности => Выполнение собственных NSIS функций
4. Переместите файл с рабочего стола на окно диалога "Выполнение собственных NSIS функций", после чего файл скрипта будет скопирован в папку вашего проекта и вы получите уведомление от SFX Creator
5. В выпадающем списке под текстом "Include файл" выберите добавленный файл: GetRegistryKeyExists.nsh
6. Поставьте переключатель в положение "Выполнить до распаковки файлов"
7. В поле "Имя функции для выполнения" введите GetRegistryKeyExists
8. Жмём кнопку "Добавить" и создаём SFX архив

mamont1
20-02-2014, 01:25
1. Скачайте прикреплённый файл, распакуйте на рабочий стол...
8. Жмём кнопку "Добавить" и создаём SFX архив »
Ооо..., заработало!!! :yahoo:

если ветки нет - ругается (скрин) (http://s7.directupload.net/images/140219/t9v6q73g.gif) и прекращает установку.
если ветка реестра есть - продолжает установку.

но..., всё-же хотелось-бы:
проверить ветки реестра, и если чисто (нет записей) - продолжить.
если есть - прекратить установку. »
может, где-нить, поправить можно?

K.A.V.
20-02-2014, 01:55
но..., всё-же хотелось-бы: »
ой, это что-то я неправильное условие написал в скрипте, извиняюсь :)
Вот так должно быть?

p.s.
В диалоге Выполнения NSIS функций удалите уже существующую запись и повторите шаги, начиная с копирования файла

mamont1
20-02-2014, 14:36
Вот так должно быть?»
Оно!!! :up
так..., идём дальше:
мене надо проверить ветки реестра, и если чисто (нет записей) - продолжить.
если есть - прекратить установку. »
т.е. ветка не одна - а несколько.
HKCU "Software\DownloadManager"
HKLM "SOFTWARE\Internet Download Manager"
HKLM "SYSTEM\CurrentControlSet\Services\IDMTDI"
и т.д.

и ещё,
а не проще искать не EnumRegValue, а EnumRegKey,
ведь мне нужна только ветка, а сколько в ей параметров не важно.

K.A.V.
20-02-2014, 22:37
В файле продублируйте строки:
${GetRegistryKeyExists} "HKCU" "Software" "2"
указав ваши данные

1ый параметр - раздел, HKCU, HKLM или HKCR
2ой параметр - ветка, в которой будет происходить поиск
3ий параметр - имя раздела, который определяется

Если хоть 1 из указанных разделов существует - пользователь получит сообщение с ошибкой

mamont1
20-02-2014, 23:51
K.A.V., гляньте на (скрин) (http://s7.directupload.net/images/140220/vn65yx8x.gif),
менял только - строка 15 (отмечена), если всё правильно, то:
сообщение, о ошибке, не показывает - сразу идет распаковка.

K.A.V.
21-02-2014, 00:25
K.A.V., гляньте на (скрин),
менял только - строка 15 (отмечена) »
"Ну вы блин даёте"
Вы меня просили что сделать? Написать проверку существования нескольких разделов, т.к. проверка по существованию параметров (которая доступна в "Определении ПО") вам не подходит, так ведь?
Я вам дал скрипт с комментариями, а вы опять пытаетесь там указать проверку параметра :)

т.е. ветка не одна - а несколько.
HKCU "Software\DownloadManager"
HKLM "SOFTWARE\Internet Download Manager"
HKLM "SYSTEM\CurrentControlSet\Services\IDMTDI" »

В скрипте замените строки:
${GetRegistryKeyExists} "HKLM" "Software" "1"
${GetRegistryKeyExists} "HKCU" "Software" "2"
на эти:
${GetRegistryKeyExists} "HKCU" "Software" "DownloadManager"
${GetRegistryKeyExists} "HKLM" "SOFTWARE" "Internet Download Manager"
${GetRegistryKeyExists} "HKLM" "SYSTEM\CurrentControlSet\Services" "IDMTDI"
И будет у вас проверка существования указанных разделов в реестре, я же вам написал в сообщении выше:
2ой параметр - ветка, в которой будет происходить поиск
3ий параметр - имя раздела, который определяется

mamont1
21-02-2014, 01:04
В скрипте замените строки:...
на эти:...
И будет у вас проверка существования указанных разделов в реестре »
лЮче, один раз увидеть, чем 100 раз объяснить.
короче, :mail1: рапортую - эта хрень, что вы мне дали, отрабатывает на всё 100,
в любых вариантах, и так надо, и так ка было задумано. :rupor:
Спасибо огромное.
попожа, с папками, выясняться прийду.

wad69
24-02-2014, 18:28
Дайте пример использования коротенький хотя бы упаковать текстовый документ и создать для него ярлыки в контекстном меню, на рабочем столе и в пуск, а то пол дня убил, где то ошибка выходит, не хочет распаковывать.




© OSzone.net 2001-2012