Показать полную графическую версию : [архив].: NSIS - все вопросы :.
добро счас бду колдовать)
Догнал....я чето думал что будет запускаться глобальный деинстал...а запускаться будет локальные...
Пришел собрать полезняшки :tongue:
Обновился Справочник по NSIS (http://forum.oszone.net/thread-168287.html)
Подскажите пожалуйста :
как удалить (или переместить) из папки все файлы (файлов много и они разные по типу и расширению), исключая - далее перечисление этих тоже разных конкретных файлов, которые должны остаться в папке.
Что то наподобие действия : File /r /x *.res /x *.obj /x *.pch source\*.* (Manual 4.9.1.5. File ) но для операции удаления
MKN, используй функцию Locate для поиска всех файлов и далее в callback функции Locate у тебя получится что-то типа такого:
Function Locate_callback
${GetFileExt} "$R7" $R0
StrCmp $R0 "exe" noDelete 0
StrCmp $R0 "dll" noDelete 0
StrCmp $R0 "txt" noDelete 0
Delete "$R9"
noDelete:
FunctionEnd
Если встретятся файлы с указанными расширениями - их не удалять и пропускать, остальные файлы будут удалены
Добрый день господа! Такой вопрос назрел после установки Ashampoo HDD Control запускаются два процесса AHDDC2_Service.exe и DfSdkS.exe и соответствующие им службы AHDDC2 и DfSdkS
http://s019.radikal.ru/i640/1208/a4/fe46345950ba.png
http://s019.radikal.ru/i644/1208/b9/b0bf8f6609f9.png
http://s018.radikal.ru/i502/1208/09/a56088ad54a8.png
Как реализовать это в НСИС пробовал как то так
nsSCM::Install /NOUNLOAD "AHDDC2_Service.exe" "AHDDC2_Service.exe" 16 2 \ "$INSTDIR\AHDDC2_Service.exe" "" "" "" ""
nsSCM::Install /NOUNLOAD "mst Defrag SDK Service.exe" "mst Defrag SDK Service.exe" 16 2 \ "$INSTDIR\DfSdkS.exe" "" "" "" ""
НЕ получается...подскажите...
diakov, Вас что именно смущает то? То, что описание разное или что? Объясните проблему более понятно, в чем у вас проблема
Как я понял из описания плагина nsSCM, он не умеет устанавливать описание создаваемой службе
Лучше используйте плагин NSIS Simple Service Plugin (http://nsis.sourceforge.net/NSIS_Simple_Service_Plugin)
Да нет просто при таком коде
nsSCM::Install /NOUNLOAD "AHDDC2_Service.exe" "AHDDC2_Service.exe" 16 2 \ "$INSTDIR\AHDDC2_Service.exe" "" "" "" "" nsSCM::Install /NOUNLOAD "mst Defrag SDK Service.exe" "mst Defrag SDK Service.exe" 16 2 \ "$INSTDIR\DfSdkS.exe" "" "" "" ""
Службы (процессы) вообще не запускаются и Ashampoo HDD Control выдает ошибку что службы не запущены...
То есть если использовать NSIS Simple Service Plugin:
SimpleSC::InstallService [name_of_service] [display_name] [service_type] [start_type] [binary_path] [dependencies] [account] [password]
То делать так:
2 - SERVICE_AUTO_START - Service auto start
SimpleSC::InstallService "AHDDC2_Service.exe" "AHDDC2_Service" "16""2" "$INSTDIR\AHDDC2_Service.exe" """" ""
Так будет правильно или что то нада поправить что бы заработало?
Ashampoo HDD Control выдает ошибку что службы не запущены... »
Так правильно будет
nsSCM::Install /NOUNLOAD "AHDDC2" "AHDDC2_Service.exe" 16 2 \ "$INSTDIR\AHDDC2_Service.exe" "" "" "" ""
nsSCM::Install /NOUNLOAD "DfSdkS" "mst Defrag SDK Service.exe" 16 2 \ "$INSTDIR\DfSdkS.exe" "" "" "" ""
Имя службы и отображаемое имя - не одно и то же
Программа обращается к службам AHDDC2 и DfSdkS чтобы узнать их статус, и правильно говорит, что они не запущены, их же не существует в системе...
Спасибо...счас опробую...туплю потому что еще не разу не работал с службами...
K.A.V., чето не то если писать так
nsSCM::Install /NOUNLOAD "AHDDC2" "AHDDC2_Service.exe" 16 2 \ "$INSTDIR\AHDDC2_Service.exe" "" "" "" ""
nsSCM::Install /NOUNLOAD "DfSdkS" "mst Defrag SDK Service.exe" 16 2 \ "$INSTDIR\DfSdkS.exe" "" "" "" ""
То тогда в службах появляються соотв. надписи
http://s53.radikal.ru/i139/1208/40/6984a8bd123e.png
Но обе службы остановлены и при попытки их запустить вручную (правая кнопка) выдает
http://s15.radikal.ru/i188/1208/6c/bf61ff00bb96.png
Хотя в папка $INSTDIR у меня c:\Program Files\Ashampoo HDD Control оба файла AHDDC2_Service.exe и DfSdkS.exe присутствуют!
Что не так делаю?
nsSCM::Install /NOUNLOAD "AHDDC2" "AHDDC2_Service.exe" 16 2 \ "$INSTDIR\AHDDC2_Service.exe" "" "" "" ""
nsSCM::Install /NOUNLOAD "DfSdkS" "mst Defrag SDK Service.exe" 16 2 \ "$INSTDIR\DfSdkS.exe" "" "" "" ""
Символ слеша пишется только для перевода длинных строк на новую строку, для удобности чтения, вот пример:
nsSCM::Install /NOUNLOAD "XXX" "XXX driver" 1 3 \
"$SYSDIR\drivers\XXX.sys" "" "" "" ""
Если у вас эти 2 команды на создание службы написаны на 2 строки (одна команда - одна строка), то удалите из строк символы слеша, выделенные красным цветом (плагин за параметр исполняемой службы принимает символ слеша)
Убрал слеш получилось
nsSCM::Install /NOUNLOAD "AHDDC2" "AHDDC2_Service.exe" 16 2 "$INSTDIR\AHDDC2_Service.exe" "" "" "" ""
nsSCM::Install /NOUNLOAD "DfSdkS" "mst Defrag SDK Service.exe" 16 2 "$INSTDIR\DfSdkS.exe" "" "" "" ""
Но все равно тоже самое, службы остановлены и не запускаются :durak:
Может есть какой то другой вариант или как?
Но все равно тоже самое »
Код ошибки какой при запуске службы?
Может есть какой то другой вариант или как? »
Вариант с другим плагином разве что. Я со службами не работал, возможно службы запускаются с ключами, посмотрите конфигурацию служб, когда они установлены оригинальной программой установки
Так же могу посоветовать посмотреть соответствующие разделы служб в реестре, можете импортировать настройки с живой службы (сохранив ваш путь запускаемого файла) и посмотрите разницу, будет ли работать
Настройки служб хранятся здесь:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
Код ошибки какой при запуске службы? »
http://s15.radikal.ru/i188/1208/6c/bf61ff00bb96.png
При попитки запуска вручную и фсе...
возможно службы запускаются с ключами »
Отлавливал ProcMonом нет ключей...
diakov, ну вам же ясно говорят...Значит проверяйте, как инсталлятор прописывает путь к исполняемому файлу службы
Либо смотрите в реестре, в той ветке где я вам выше написал, либо через оснастку mmc services.msc (Пуск => Выполнить) смотрите пути исполняемых файлов, возможно что-то не так прописываете, либо распаковывается у вас не туда...
Добро счас бду смотреть...
Разобрался спасибо! Дело было именно в реестре оказалось при конвертации рег файлы в скрипт путь к самому файлу был бинарником) поправил..но теперь такие вопросы
SimpleSC::InstallService "AHDDC2" "Ashampoo servise" 16 2 "$INSTDIR\AHDDC2_Service.exe" "" "" ""
SimpleSC::InstallService "DfSdkS" "mst Defrag SDK Service.exe" 16 2 "$INSTDIR\DfSdkS.exe" "" "" ""
1. При установке службы ставятся все харашо но их статус (остановлена) (Эт на скорость не влияет так как при запуске проги она их запускает сама) но все же интеренсно как их запустить еще до старта самой программы, читал есть параметр
service_status - one of the following codes
1 - SERVICE_STOPPED
2 - SERVICE_START_PENDING
3 - SERVICE_STOP_PENDING
4 - SERVICE_RUNNING
5 - SERVICE_CONTINUE_PENDING
6 - SERVICE_PAUSE_PENDING
7 - SERVICE_PAUSED
Но куда его всунуть не пойму так как в примере нет такого поля
SimpleSC::InstallService [name_of_service] [display_name] [service_type] [start_type]
[binary_path] [dependencies] [account] [password]
2 Как эти службы убить при удалении, потому как эти службы запущены пишу в секции деинсталляции
SimpleSC::RemoveService "AHDDC2"
SimpleSC::RemoveService "DfSdkS"
но они не убиваются, а продолжают работать вместе с процессами в следствии чего файлы в папке остаются после отработки
Есть вариант канечно такой
Function un.onInit
ExecWait 'TASKKILL /F /IM DfSdkS.exe'
ExecWait 'TASKKILL /F /IM AHDDC2.exe'
FunctionEnd
Но мне кажется это не совсем правильно...
Все с первым разобрался просто дописал после строк установки сервиса это:
SimpleSC::StartService "AHDDC2"
SimpleSC::StartService "DfSdkS"
Разобрался и со вторым дописав:
SimpleSC::StopService "AHDDC2" 1 30
SimpleSC::StopService "DfSdkS" 1 30
Объясните что означают цифры 1 30
kotkovets
09-08-2012, 20:51
MKN спасибо за ссылку!
---
С позволения автора, Полякова Андрей Валерьевича, в шапке разместил ссылку:
Руководство пользователя по NSIS (Перевод – Поляков А.В)
Хороший и качественный перевод.
MKN , kotkovets спасибо! Теперь можно осваивать на родном:rupor:
Руководство пользователя по NSIS (Перевод – Поляков А.В) »
Может стоит объеденить наш справочник с этим документом, да распространять в одном архиве?
Изменить шапку темы Справочник по NSIS (http://forum.oszone.net/thread-168287.html) и вложить только PDF документ вместе с нашим справочником в один архив
Для совсем новичков будет очень полезно почитать
И ещё, было бы лучше, на мой взгляд, делать в CHM формате, удобней просматривать и передвигаться по командам, нежели в PDF формате
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC